Skip to content

Commit 65b3dbf

Browse files
committed
[BOOK-147] feat: ReedDialog 구현
1 parent 7b6f808 commit 65b3dbf

File tree

1 file changed

+123
-0
lines changed
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component

1 file changed

+123
-0
lines changed
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package com.ninecraft.booket.core.designsystem.component
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.Row
6+
import androidx.compose.foundation.layout.Spacer
7+
import androidx.compose.foundation.layout.fillMaxWidth
8+
import androidx.compose.foundation.layout.height
9+
import androidx.compose.foundation.layout.padding
10+
import androidx.compose.foundation.layout.width
11+
import androidx.compose.foundation.shape.RoundedCornerShape
12+
import androidx.compose.material3.Text
13+
import androidx.compose.runtime.Composable
14+
import androidx.compose.ui.Alignment
15+
import androidx.compose.ui.Modifier
16+
import androidx.compose.ui.text.style.TextAlign
17+
import androidx.compose.ui.tooling.preview.Preview
18+
import androidx.compose.ui.window.Dialog
19+
import com.ninecraft.booket.core.designsystem.component.button.ReedButton
20+
import com.ninecraft.booket.core.designsystem.component.button.ReedButtonColorStyle
21+
import com.ninecraft.booket.core.designsystem.component.button.largeButtonStyle
22+
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
23+
24+
@Composable
25+
fun ReedDialog(
26+
title: String = "",
27+
subtext: String? = null,
28+
confirmButtonText: String = "",
29+
dismissButtonText: String? = null,
30+
onConfirmRequest: () -> Unit = {},
31+
onDismissRequest: () -> Unit = {},
32+
) {
33+
Dialog(
34+
onDismissRequest = {
35+
onDismissRequest()
36+
},
37+
) {
38+
Column(
39+
modifier = Modifier
40+
.fillMaxWidth()
41+
.background(
42+
color = ReedTheme.colors.basePrimary,
43+
shape = RoundedCornerShape(
44+
ReedTheme.radius.lg,
45+
),
46+
)
47+
.padding(
48+
start = ReedTheme.spacing.spacing5,
49+
top = ReedTheme.spacing.spacing8,
50+
end = ReedTheme.spacing.spacing5,
51+
bottom = ReedTheme.spacing.spacing5,
52+
),
53+
horizontalAlignment = Alignment.CenterHorizontally,
54+
) {
55+
Text(
56+
text = title,
57+
color = ReedTheme.colors.contentPrimary,
58+
textAlign = TextAlign.Center,
59+
style = ReedTheme.typography.headline1SemiBold,
60+
)
61+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing2))
62+
subtext?.let {
63+
Text(
64+
text = subtext,
65+
color = ReedTheme.colors.contentSecondary,
66+
textAlign = TextAlign.Center,
67+
style = ReedTheme.typography.body2Medium,
68+
)
69+
}
70+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing6))
71+
Row(
72+
modifier = Modifier.fillMaxWidth(),
73+
) {
74+
dismissButtonText?.let {
75+
ReedButton(
76+
onClick = {
77+
onDismissRequest()
78+
},
79+
sizeStyle = largeButtonStyle,
80+
colorStyle = ReedButtonColorStyle.SECONDARY,
81+
modifier = Modifier.weight(1f),
82+
text = dismissButtonText,
83+
)
84+
Spacer(modifier = Modifier.width(ReedTheme.spacing.spacing2))
85+
}
86+
ReedButton(
87+
onClick = {
88+
onConfirmRequest()
89+
},
90+
sizeStyle = largeButtonStyle,
91+
colorStyle = ReedButtonColorStyle.PRIMARY,
92+
modifier = Modifier.weight(1f),
93+
text = confirmButtonText,
94+
)
95+
}
96+
}
97+
}
98+
}
99+
100+
@Preview
101+
@Composable
102+
fun ReedConfirmDialogPreview() {
103+
ReedTheme {
104+
ReedDialog(
105+
title = "Title",
106+
subtext = "subtext",
107+
confirmButtonText = "확인",
108+
)
109+
}
110+
}
111+
112+
@Preview
113+
@Composable
114+
fun ReedChoiceDialogPreview() {
115+
ReedTheme {
116+
ReedDialog(
117+
title = "Title",
118+
subtext = "subtext",
119+
confirmButtonText = "확인",
120+
dismissButtonText = "취소",
121+
)
122+
}
123+
}

0 commit comments

Comments
 (0)