1+ package com.chat.designsystem.component.checkbox
2+
3+ import androidx.compose.foundation.border
4+ import androidx.compose.foundation.layout.Column
5+ import androidx.compose.foundation.layout.Spacer
6+ import androidx.compose.foundation.layout.height
7+ import androidx.compose.foundation.layout.size
8+ import androidx.compose.foundation.shape.RoundedCornerShape
9+ import androidx.compose.material3.Checkbox
10+ import androidx.compose.material3.CheckboxDefaults
11+ import androidx.compose.runtime.Composable
12+ import androidx.compose.runtime.getValue
13+ import androidx.compose.runtime.mutableStateOf
14+ import androidx.compose.runtime.remember
15+ import androidx.compose.runtime.setValue
16+ import androidx.compose.ui.Modifier
17+ import androidx.compose.ui.draw.clip
18+ import androidx.compose.ui.tooling.preview.Preview
19+ import androidx.compose.ui.unit.dp
20+ import com.chat.designsystem.theme.N3
21+ import com.chat.designsystem.theme.P1
22+ import com.chat.designsystem.util.clickableNoRipple
23+
24+ @Composable
25+ fun GoSocketCheckbox (
26+ modifier : Modifier = Modifier ,
27+ checked : Boolean ,
28+ onCheckedChange : (Boolean ) -> Unit ,
29+ ) {
30+ var isChecked by remember { mutableStateOf(checked) }
31+
32+ Checkbox (
33+ modifier = modifier
34+ .size(20 .dp)
35+ .clip(RoundedCornerShape (8 .dp))
36+ .border(
37+ width = 2 .dp,
38+ color = if (isChecked) P1 else N3 ,
39+ shape = RoundedCornerShape (8 .dp)
40+ )
41+ .clickableNoRipple {
42+ isChecked = ! isChecked
43+ onCheckedChange(isChecked)
44+ },
45+ checked = isChecked,
46+ onCheckedChange = null ,
47+ colors = CheckboxDefaults .colors(checkedColor = P1 )
48+ )
49+ }
50+
51+ @Preview
52+ @Composable
53+ fun GoSocketCheckboxPreview () {
54+ Column {
55+ GoSocketCheckbox (checked = true ) {}
56+ Spacer (modifier = Modifier .height(10 .dp))
57+ GoSocketCheckbox (checked = false ) {}
58+ }
59+ }
0 commit comments