Skip to content

Commit 78cb8ef

Browse files
authored
Merge pull request #17 from YAPP-Github/design/NDGL-53
[NDGL-53] 내 여행 템플릿 화면 UI/UX
2 parents 712805c + 1640f1c commit 78cb8ef

File tree

22 files changed

+2763
-4
lines changed

22 files changed

+2763
-4
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package com.yapp.ndgl.core.ui.designsystem
2+
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.foundation.layout.ColumnScope
5+
import androidx.compose.foundation.layout.fillMaxWidth
6+
import androidx.compose.foundation.layout.padding
7+
import androidx.compose.foundation.shape.RoundedCornerShape
8+
import androidx.compose.material3.BottomSheetDefaults
9+
import androidx.compose.material3.ExperimentalMaterial3Api
10+
import androidx.compose.material3.ModalBottomSheet
11+
import androidx.compose.material3.Text
12+
import androidx.compose.material3.rememberModalBottomSheetState
13+
import androidx.compose.runtime.Composable
14+
import androidx.compose.ui.Modifier
15+
import androidx.compose.ui.tooling.preview.Preview
16+
import androidx.compose.ui.unit.dp
17+
import com.yapp.ndgl.core.ui.theme.NDGLTheme
18+
19+
@OptIn(ExperimentalMaterial3Api::class)
20+
@Composable
21+
fun NDGLBottomSheet(
22+
modifier: Modifier = Modifier,
23+
onDismissRequest: () -> Unit,
24+
showDragHandle: Boolean = true,
25+
content: @Composable ColumnScope.() -> Unit,
26+
) {
27+
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
28+
29+
ModalBottomSheet(
30+
modifier = modifier,
31+
onDismissRequest = onDismissRequest,
32+
sheetState = sheetState,
33+
dragHandle = if (showDragHandle) {
34+
{ BottomSheetDefaults.DragHandle() }
35+
} else {
36+
null
37+
},
38+
containerColor = NDGLTheme.colors.white,
39+
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
40+
content = content,
41+
)
42+
}
43+
44+
@Preview(showBackground = true)
45+
@Composable
46+
private fun NDGLBottomSheetWithHandlePreview() {
47+
NDGLTheme {
48+
NDGLBottomSheet(
49+
onDismissRequest = {},
50+
showDragHandle = true,
51+
) {
52+
Column(
53+
modifier = Modifier
54+
.fillMaxWidth()
55+
.padding(24.dp),
56+
) {
57+
Text(
58+
text = "바텀시트 제목",
59+
style = NDGLTheme.typography.subtitleLgSemiBold,
60+
color = NDGLTheme.colors.black900,
61+
)
62+
Text(
63+
text = "바텀시트 내용입니다.",
64+
modifier = Modifier.padding(top = 16.dp),
65+
style = NDGLTheme.typography.bodyLgMedium,
66+
color = NDGLTheme.colors.black500,
67+
)
68+
}
69+
}
70+
}
71+
}
72+
73+
@Preview(showBackground = true)
74+
@Composable
75+
private fun NDGLBottomSheetWithoutHandlePreview() {
76+
NDGLTheme {
77+
NDGLBottomSheet(
78+
onDismissRequest = {},
79+
showDragHandle = false,
80+
) {
81+
Column(
82+
modifier = Modifier
83+
.fillMaxWidth()
84+
.padding(24.dp),
85+
) {
86+
Text(
87+
text = "바텀시트 제목",
88+
style = NDGLTheme.typography.subtitleLgSemiBold,
89+
color = NDGLTheme.colors.black900,
90+
)
91+
Text(
92+
text = "바텀시트 내용입니다.",
93+
modifier = Modifier.padding(top = 16.dp),
94+
style = NDGLTheme.typography.bodyLgMedium,
95+
color = NDGLTheme.colors.black500,
96+
)
97+
}
98+
}
99+
}
100+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.yapp.ndgl.core.ui.designsystem
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.border
5+
import androidx.compose.foundation.clickable
6+
import androidx.compose.foundation.layout.Box
7+
import androidx.compose.foundation.layout.size
8+
import androidx.compose.foundation.shape.RoundedCornerShape
9+
import androidx.compose.material3.Icon
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.ui.Alignment
12+
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.draw.clip
14+
import androidx.compose.ui.graphics.Color
15+
import androidx.compose.ui.graphics.vector.ImageVector
16+
import androidx.compose.ui.res.vectorResource
17+
import androidx.compose.ui.tooling.preview.Preview
18+
import androidx.compose.ui.unit.dp
19+
import com.yapp.ndgl.core.ui.R
20+
import com.yapp.ndgl.core.ui.theme.NDGLTheme
21+
22+
@Composable
23+
fun NDGLCheckbox(
24+
checked: Boolean,
25+
onClick: () -> Unit,
26+
) {
27+
Box(
28+
modifier = Modifier
29+
.size(24.dp)
30+
.clip(RoundedCornerShape(4.dp))
31+
.background(
32+
if (checked) NDGLTheme.colors.green500 else NDGLTheme.colors.white,
33+
)
34+
.border(
35+
width = 1.25.dp,
36+
color = if (checked) Color.Unspecified else NDGLTheme.colors.black400,
37+
shape = RoundedCornerShape(4.dp),
38+
)
39+
.clickable { onClick() },
40+
contentAlignment = Alignment.Center,
41+
) {
42+
if (checked) {
43+
Icon(
44+
imageVector = ImageVector.vectorResource(R.drawable.ic_20_check),
45+
contentDescription = null,
46+
tint = NDGLTheme.colors.white,
47+
)
48+
}
49+
}
50+
}
51+
52+
@Preview
53+
@Composable
54+
private fun NDGLCheckboxPreview() {
55+
NDGLTheme {
56+
NDGLCheckbox(
57+
checked = false,
58+
onClick = {},
59+
)
60+
}
61+
}
62+
63+
@Preview
64+
@Composable
65+
private fun NDGLCheckboxCheckedPreview() {
66+
NDGLTheme {
67+
NDGLCheckbox(
68+
checked = true,
69+
onClick = {},
70+
)
71+
}
72+
}

0 commit comments

Comments
 (0)