@ttdk-design-system/library-react 0.0.0-stage → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI_GUIDE.md +6518 -0
- package/README.md +106 -2
- package/llms.txt +6518 -0
- package/package.json +1099 -4
- package/src/core/index.ts +2 -0
- package/src/core/tailwind-preset.cjs +62 -0
- package/src/core/tailwind-preset.ts +85 -0
- package/src/core/theme/tokens.css +663 -0
- package/src/core/types.ts +836 -0
- package/src/index.ts +17 -0
- package/src/tailwind-preset.cjs +62 -0
- package/src/tailwind-preset.ts +85 -0
- package/src/types.ts +1 -0
- package/src/web/accordion/AI_GUIDE.md +149 -0
- package/src/web/accordion/accordion.css +1 -0
- package/src/web/accordion/accordion.tsx +430 -0
- package/src/web/accordion/index.ts +3 -0
- package/src/web/accordion/manifest.json +351 -0
- package/src/web/alert/AI_GUIDE.md +139 -0
- package/src/web/alert/alert.css +1 -0
- package/src/web/alert/alert.tsx +318 -0
- package/src/web/alert/index.ts +3 -0
- package/src/web/alert/manifest.json +240 -0
- package/src/web/avatar/AI_GUIDE.md +118 -0
- package/src/web/avatar/avatar.css +1 -0
- package/src/web/avatar/avatar.tsx +233 -0
- package/src/web/avatar/index.ts +3 -0
- package/src/web/avatar/manifest.json +195 -0
- package/src/web/badge/AI_GUIDE.md +94 -0
- package/src/web/badge/badge.css +1 -0
- package/src/web/badge/badge.tsx +140 -0
- package/src/web/badge/index.ts +2 -0
- package/src/web/badge/manifest.json +141 -0
- package/src/web/banner/AI_GUIDE.md +130 -0
- package/src/web/banner/banner.css +1 -0
- package/src/web/banner/banner.tsx +334 -0
- package/src/web/banner/index.ts +3 -0
- package/src/web/banner/manifest.json +240 -0
- package/src/web/breadcrumb/AI_GUIDE.md +120 -0
- package/src/web/breadcrumb/breadcrumb.css +1 -0
- package/src/web/breadcrumb/breadcrumb.tsx +306 -0
- package/src/web/breadcrumb/index.ts +3 -0
- package/src/web/breadcrumb/manifest.json +225 -0
- package/src/web/button/AI_GUIDE.md +121 -0
- package/src/web/button/button.css +1 -0
- package/src/web/button/button.tsx +287 -0
- package/src/web/button/index.ts +2 -0
- package/src/web/button/manifest.json +177 -0
- package/src/web/calendar/AI_GUIDE.md +151 -0
- package/src/web/calendar/calendar.css +1 -0
- package/src/web/calendar/calendar.tsx +1611 -0
- package/src/web/calendar/index.ts +3 -0
- package/src/web/calendar/manifest.json +470 -0
- package/src/web/card/AI_GUIDE.md +133 -0
- package/src/web/card/card.css +1 -0
- package/src/web/card/card.tsx +408 -0
- package/src/web/card/index.ts +4 -0
- package/src/web/card/manifest.json +357 -0
- package/src/web/checkbox/AI_GUIDE.md +146 -0
- package/src/web/checkbox/checkbox.css +1 -0
- package/src/web/checkbox/checkbox.tsx +307 -0
- package/src/web/checkbox/index.ts +2 -0
- package/src/web/checkbox/manifest.json +294 -0
- package/src/web/chip/AI_GUIDE.md +186 -0
- package/src/web/chip/chip.css +1 -0
- package/src/web/chip/chip.tsx +230 -0
- package/src/web/chip/index.ts +2 -0
- package/src/web/chip/manifest.json +186 -0
- package/src/web/dropdown/AI_GUIDE.md +167 -0
- package/src/web/dropdown/dropdown.css +1 -0
- package/src/web/dropdown/dropdown.tsx +1274 -0
- package/src/web/dropdown/index.ts +3 -0
- package/src/web/dropdown/manifest.json +576 -0
- package/src/web/flex/AI_GUIDE.md +113 -0
- package/src/web/flex/flex-item.tsx +97 -0
- package/src/web/flex/flex.css +1 -0
- package/src/web/flex/flex.tsx +108 -0
- package/src/web/flex/index.ts +5 -0
- package/src/web/flex/manifest.json +162 -0
- package/src/web/form/index.ts +7 -0
- package/src/web/grid/AI_GUIDE.md +112 -0
- package/src/web/grid/grid-item.tsx +112 -0
- package/src/web/grid/grid.css +1 -0
- package/src/web/grid/grid.tsx +99 -0
- package/src/web/grid/index.ts +5 -0
- package/src/web/grid/manifest.json +153 -0
- package/src/web/index.ts +86 -0
- package/src/web/input/AI_GUIDE.md +159 -0
- package/src/web/input/index.ts +3 -0
- package/src/web/input/input.css +1 -0
- package/src/web/input/input.tsx +537 -0
- package/src/web/input/manifest.json +465 -0
- package/src/web/input-number/AI_GUIDE.md +164 -0
- package/src/web/input-number/index.ts +3 -0
- package/src/web/input-number/input-number.css +1 -0
- package/src/web/input-number/input-number.tsx +1193 -0
- package/src/web/input-number/manifest.json +575 -0
- package/src/web/modal/AI_GUIDE.md +171 -0
- package/src/web/modal/index.ts +3 -0
- package/src/web/modal/manifest.json +375 -0
- package/src/web/modal/modal.css +1 -0
- package/src/web/modal/modal.tsx +571 -0
- package/src/web/pagination/AI_GUIDE.md +148 -0
- package/src/web/pagination/index.ts +21 -0
- package/src/web/pagination/manifest.json +432 -0
- package/src/web/pagination/pagination-content.tsx +45 -0
- package/src/web/pagination/pagination-ellipsis.tsx +54 -0
- package/src/web/pagination/pagination-first.tsx +155 -0
- package/src/web/pagination/pagination-item.tsx +45 -0
- package/src/web/pagination/pagination-last.tsx +155 -0
- package/src/web/pagination/pagination-link.tsx +121 -0
- package/src/web/pagination/pagination-next.tsx +158 -0
- package/src/web/pagination/pagination-previous.tsx +158 -0
- package/src/web/pagination/pagination.css +1 -0
- package/src/web/pagination/pagination.tsx +687 -0
- package/src/web/popover/AI_GUIDE.md +163 -0
- package/src/web/popover/index.ts +3 -0
- package/src/web/popover/manifest.json +396 -0
- package/src/web/popover/popover.css +1 -0
- package/src/web/popover/popover.tsx +702 -0
- package/src/web/radio/AI_GUIDE.md +155 -0
- package/src/web/radio/index.ts +2 -0
- package/src/web/radio/manifest.json +294 -0
- package/src/web/radio/radio.css +1 -0
- package/src/web/radio/radio.tsx +290 -0
- package/src/web/selectbox/AI_GUIDE.md +216 -0
- package/src/web/selectbox/index.ts +3 -0
- package/src/web/selectbox/manifest.json +477 -0
- package/src/web/selectbox/selectbox.css +1 -0
- package/src/web/selectbox/selectbox.tsx +1048 -0
- package/src/web/sonner/AI_GUIDE.md +98 -0
- package/src/web/sonner/index.ts +114 -0
- package/src/web/sonner/manifest.json +132 -0
- package/src/web/sonner/sonner.css +1 -0
- package/src/web/sonner/sonner.tsx +177 -0
- package/src/web/table/AI_GUIDE.md +145 -0
- package/src/web/table/index.ts +35 -0
- package/src/web/table/manifest.json +168 -0
- package/src/web/table/table-body.tsx +45 -0
- package/src/web/table/table-caption.tsx +45 -0
- package/src/web/table/table-cell.tsx +74 -0
- package/src/web/table/table-empty.tsx +108 -0
- package/src/web/table/table-footer.tsx +45 -0
- package/src/web/table/table-head.tsx +80 -0
- package/src/web/table/table-header.tsx +45 -0
- package/src/web/table/table-row.tsx +69 -0
- package/src/web/table/table.css +1 -0
- package/src/web/table/table.tsx +305 -0
- package/src/web/tabs/AI_GUIDE.md +150 -0
- package/src/web/tabs/index.ts +3 -0
- package/src/web/tabs/manifest.json +315 -0
- package/src/web/tabs/tabs.css +1 -0
- package/src/web/tabs/tabs.tsx +332 -0
- package/src/web/text/AI_GUIDE.md +129 -0
- package/src/web/text/index.ts +3 -0
- package/src/web/text/manifest.json +195 -0
- package/src/web/text/text.css +1 -0
- package/src/web/text/text.tsx +689 -0
- package/src/web/textarea/AI_GUIDE.md +141 -0
- package/src/web/textarea/index.ts +3 -0
- package/src/web/textarea/manifest.json +438 -0
- package/src/web/textarea/textarea.css +1 -0
- package/src/web/textarea/textarea.tsx +467 -0
- package/src/web/tooltip/AI_GUIDE.md +110 -0
- package/src/web/tooltip/index.ts +3 -0
- package/src/web/tooltip/manifest.json +222 -0
- package/src/web/tooltip/tooltip.css +1 -0
- package/src/web/tooltip/tooltip.tsx +423 -0
- package/src/webview/bottomsheet/AI_GUIDE.md +141 -0
- package/src/webview/bottomsheet/bottomsheet.css +1 -0
- package/src/webview/bottomsheet/bottomsheet.tsx +603 -0
- package/src/webview/bottomsheet/index.ts +4 -0
- package/src/webview/bottomsheet/manifest.json +377 -0
- package/src/webview/button/AI_GUIDE.md +79 -0
- package/src/webview/button/button-ios.css +1 -0
- package/src/webview/button/button-ios.tsx +138 -0
- package/src/webview/button/button-material.css +1 -0
- package/src/webview/button/button-material.tsx +138 -0
- package/src/webview/button/index.ts +7 -0
- package/src/webview/button/manifest.json +148 -0
- package/src/webview/index.ts +7 -0
- package/tailwind-preset.cjs +62 -0
- package/tailwind-preset.js +62 -0
- package/ttdk-manifest.json +10188 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ttdk-design-system/card",
|
|
3
|
+
"component": "Card",
|
|
4
|
+
"folder": "card",
|
|
5
|
+
"description": "TTDK Card component with multi-theme support.",
|
|
6
|
+
"stylesheets": [
|
|
7
|
+
{
|
|
8
|
+
"theme": "common",
|
|
9
|
+
"file": "card.css",
|
|
10
|
+
"importPath": "web/card/card.css"
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"props": {
|
|
14
|
+
"variant": {
|
|
15
|
+
"name": "variant",
|
|
16
|
+
"type": "'bordered' | 'elevated' | 'flat' | 'ghost'",
|
|
17
|
+
"optional": true,
|
|
18
|
+
"default": "default",
|
|
19
|
+
"description": "Gaya varian visual kartu. - 'bordered': Kartu dengan border halus dan background card standar. - 'elevated': Kartu dengan bayangan elevasi bertingkat (shadow). - 'flat': Kartu dengan latar netral subtle tanpa bayangan. - 'ghost': Kartu transparan minimalis tanpa border atau bayangan.",
|
|
20
|
+
"example": null,
|
|
21
|
+
"param": null
|
|
22
|
+
},
|
|
23
|
+
"size": {
|
|
24
|
+
"name": "size",
|
|
25
|
+
"type": "'sm' | 'md' | 'lg'",
|
|
26
|
+
"optional": true,
|
|
27
|
+
"default": "md",
|
|
28
|
+
"description": "Kepadatan padding internal kartu. - 'sm': Padding kompak (12px / 16px). - 'md': Padding proporsional standar (20px / 24px). - 'lg': Padding lapang / hero (28px / 32px).",
|
|
29
|
+
"example": null,
|
|
30
|
+
"param": null
|
|
31
|
+
},
|
|
32
|
+
"cardWidth": {
|
|
33
|
+
"name": "cardWidth",
|
|
34
|
+
"type": "'auto' | 'full' | '1-1' | '1-2' | '1-3' | '1-4' | 'mobile'",
|
|
35
|
+
"optional": true,
|
|
36
|
+
"default": "auto",
|
|
37
|
+
"description": "Preset batas lebar kartu sesuai standar token TTDK. - 'auto': Fleksibel mengikuti lebar kontainer parent. - 'full': Lebar penuh 100%. - '1-1': 1128px (Grid Desktop Maksimal). - '1-2': 552px (Grid 1/2). - '1-3': 360px (Grid 1/3). - '1-4': 264px (Grid 1/4). - 'mobile': 328px (Optimal Layar Seluler).",
|
|
38
|
+
"example": null,
|
|
39
|
+
"param": null
|
|
40
|
+
},
|
|
41
|
+
"rounded": {
|
|
42
|
+
"name": "rounded",
|
|
43
|
+
"type": "'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full'",
|
|
44
|
+
"optional": true,
|
|
45
|
+
"default": "md",
|
|
46
|
+
"description": "Sudut kelengkungan radius kartu.",
|
|
47
|
+
"example": null,
|
|
48
|
+
"param": null
|
|
49
|
+
},
|
|
50
|
+
"hoverable": {
|
|
51
|
+
"name": "hoverable",
|
|
52
|
+
"type": "boolean",
|
|
53
|
+
"optional": true,
|
|
54
|
+
"default": "false",
|
|
55
|
+
"description": "Menambahkan efek hover interaktif (elevasi bayangan naik + border highlight + pointer kursor).",
|
|
56
|
+
"example": null,
|
|
57
|
+
"param": null
|
|
58
|
+
},
|
|
59
|
+
"clickable": {
|
|
60
|
+
"name": "clickable",
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"optional": true,
|
|
63
|
+
"default": "false",
|
|
64
|
+
"description": "Menjadikan kartu sebagai elemen interaktif yang dapat diklik.",
|
|
65
|
+
"example": null,
|
|
66
|
+
"param": null
|
|
67
|
+
},
|
|
68
|
+
"loading": {
|
|
69
|
+
"name": "loading",
|
|
70
|
+
"type": "boolean",
|
|
71
|
+
"optional": true,
|
|
72
|
+
"default": "false",
|
|
73
|
+
"description": "Menampilkan efek placeholder shimmer / skeleton loader saat kartu dalam proses memuat data.",
|
|
74
|
+
"example": null,
|
|
75
|
+
"param": null
|
|
76
|
+
},
|
|
77
|
+
"disabled": {
|
|
78
|
+
"name": "disabled",
|
|
79
|
+
"type": "boolean",
|
|
80
|
+
"optional": true,
|
|
81
|
+
"default": "false",
|
|
82
|
+
"description": "Menonaktifkan interaksi kartu dan meredupkan opacity.",
|
|
83
|
+
"example": null,
|
|
84
|
+
"param": null
|
|
85
|
+
},
|
|
86
|
+
"title": {
|
|
87
|
+
"name": "title",
|
|
88
|
+
"type": "any",
|
|
89
|
+
"optional": true,
|
|
90
|
+
"default": null,
|
|
91
|
+
"description": "Judul kartu pada area header.",
|
|
92
|
+
"example": null,
|
|
93
|
+
"param": null
|
|
94
|
+
},
|
|
95
|
+
"subtitle": {
|
|
96
|
+
"name": "subtitle",
|
|
97
|
+
"type": "any",
|
|
98
|
+
"optional": true,
|
|
99
|
+
"default": null,
|
|
100
|
+
"description": "Subjudul atau teks deskripsi singkat di bawah judul.",
|
|
101
|
+
"example": null,
|
|
102
|
+
"param": null
|
|
103
|
+
},
|
|
104
|
+
"extra": {
|
|
105
|
+
"name": "extra",
|
|
106
|
+
"type": "any",
|
|
107
|
+
"optional": true,
|
|
108
|
+
"default": null,
|
|
109
|
+
"description": "Konten pelengkap di sudut kanan atas header kartu (badge, menu tombol, link aksi).",
|
|
110
|
+
"example": null,
|
|
111
|
+
"param": null
|
|
112
|
+
},
|
|
113
|
+
"cover": {
|
|
114
|
+
"name": "cover",
|
|
115
|
+
"type": "any",
|
|
116
|
+
"optional": true,
|
|
117
|
+
"default": null,
|
|
118
|
+
"description": "Media gambar cover atau banner visual kartu (berupa URL string gambar atau elemen/node kustom).",
|
|
119
|
+
"example": null,
|
|
120
|
+
"param": null
|
|
121
|
+
},
|
|
122
|
+
"coverAlt": {
|
|
123
|
+
"name": "coverAlt",
|
|
124
|
+
"type": "string",
|
|
125
|
+
"optional": true,
|
|
126
|
+
"default": null,
|
|
127
|
+
"description": "Alt text untuk gambar cover jika `cover` berupa URL string.",
|
|
128
|
+
"example": null,
|
|
129
|
+
"param": null
|
|
130
|
+
},
|
|
131
|
+
"coverPosition": {
|
|
132
|
+
"name": "coverPosition",
|
|
133
|
+
"type": "'top' | 'bottom'",
|
|
134
|
+
"optional": true,
|
|
135
|
+
"default": "top",
|
|
136
|
+
"description": "Posisi media cover pada kartu ('top' atau 'bottom').",
|
|
137
|
+
"example": null,
|
|
138
|
+
"param": null
|
|
139
|
+
},
|
|
140
|
+
"actions": {
|
|
141
|
+
"name": "actions",
|
|
142
|
+
"type": "any",
|
|
143
|
+
"optional": true,
|
|
144
|
+
"default": null,
|
|
145
|
+
"description": "Grup tombol aksi terstruktur di area footer kartu.",
|
|
146
|
+
"example": null,
|
|
147
|
+
"param": null
|
|
148
|
+
},
|
|
149
|
+
"footer": {
|
|
150
|
+
"name": "footer",
|
|
151
|
+
"type": "any",
|
|
152
|
+
"optional": true,
|
|
153
|
+
"default": null,
|
|
154
|
+
"description": "Konten kustom untuk area footer kartu.",
|
|
155
|
+
"example": null,
|
|
156
|
+
"param": null
|
|
157
|
+
},
|
|
158
|
+
"headerBorder": {
|
|
159
|
+
"name": "headerBorder",
|
|
160
|
+
"type": "boolean",
|
|
161
|
+
"optional": true,
|
|
162
|
+
"default": "true",
|
|
163
|
+
"description": "Menampilkan garis pembatas divider di bawah header kartu.",
|
|
164
|
+
"example": null,
|
|
165
|
+
"param": null
|
|
166
|
+
},
|
|
167
|
+
"footerBorder": {
|
|
168
|
+
"name": "footerBorder",
|
|
169
|
+
"type": "boolean",
|
|
170
|
+
"optional": true,
|
|
171
|
+
"default": "true",
|
|
172
|
+
"description": "Menampilkan garis pembatas divider di atas footer kartu.",
|
|
173
|
+
"example": null,
|
|
174
|
+
"param": null
|
|
175
|
+
},
|
|
176
|
+
"onClick": {
|
|
177
|
+
"name": "onClick",
|
|
178
|
+
"type": "(event: any) => void",
|
|
179
|
+
"optional": true,
|
|
180
|
+
"default": null,
|
|
181
|
+
"description": "Callback event saat kartu diklik.",
|
|
182
|
+
"example": null,
|
|
183
|
+
"param": null
|
|
184
|
+
},
|
|
185
|
+
"ui": {
|
|
186
|
+
"name": "ui",
|
|
187
|
+
"type": "UiProps",
|
|
188
|
+
"optional": true,
|
|
189
|
+
"default": null,
|
|
190
|
+
"description": "Kustomisasi visual granular root kontainer kartu (UiProps).",
|
|
191
|
+
"example": null,
|
|
192
|
+
"param": null
|
|
193
|
+
},
|
|
194
|
+
"style": {
|
|
195
|
+
"name": "style",
|
|
196
|
+
"type": "any",
|
|
197
|
+
"optional": true,
|
|
198
|
+
"default": null,
|
|
199
|
+
"description": "Inline CSS style object native.",
|
|
200
|
+
"example": null,
|
|
201
|
+
"param": null
|
|
202
|
+
},
|
|
203
|
+
"className": {
|
|
204
|
+
"name": "className",
|
|
205
|
+
"type": "string",
|
|
206
|
+
"optional": true,
|
|
207
|
+
"default": null,
|
|
208
|
+
"description": "Class CSS kustom untuk root kontainer kartu.",
|
|
209
|
+
"example": null,
|
|
210
|
+
"param": null
|
|
211
|
+
},
|
|
212
|
+
"headerStyle": {
|
|
213
|
+
"name": "headerStyle",
|
|
214
|
+
"type": "UiProps",
|
|
215
|
+
"optional": true,
|
|
216
|
+
"default": null,
|
|
217
|
+
"description": "Style kustom untuk area header kartu (UiProps).",
|
|
218
|
+
"example": null,
|
|
219
|
+
"param": null
|
|
220
|
+
},
|
|
221
|
+
"headerClass": {
|
|
222
|
+
"name": "headerClass",
|
|
223
|
+
"type": "string",
|
|
224
|
+
"optional": true,
|
|
225
|
+
"default": null,
|
|
226
|
+
"description": "Class CSS kustom untuk area header kartu.",
|
|
227
|
+
"example": null,
|
|
228
|
+
"param": null
|
|
229
|
+
},
|
|
230
|
+
"titleStyle": {
|
|
231
|
+
"name": "titleStyle",
|
|
232
|
+
"type": "UiProps",
|
|
233
|
+
"optional": true,
|
|
234
|
+
"default": null,
|
|
235
|
+
"description": "Style kustom untuk teks judul kartu (UiProps).",
|
|
236
|
+
"example": null,
|
|
237
|
+
"param": null
|
|
238
|
+
},
|
|
239
|
+
"titleClass": {
|
|
240
|
+
"name": "titleClass",
|
|
241
|
+
"type": "string",
|
|
242
|
+
"optional": true,
|
|
243
|
+
"default": null,
|
|
244
|
+
"description": "Class CSS kustom untuk teks judul kartu.",
|
|
245
|
+
"example": null,
|
|
246
|
+
"param": null
|
|
247
|
+
},
|
|
248
|
+
"subtitleStyle": {
|
|
249
|
+
"name": "subtitleStyle",
|
|
250
|
+
"type": "UiProps",
|
|
251
|
+
"optional": true,
|
|
252
|
+
"default": null,
|
|
253
|
+
"description": "Style kustom untuk teks subjudul / deskripsi header (UiProps).",
|
|
254
|
+
"example": null,
|
|
255
|
+
"param": null
|
|
256
|
+
},
|
|
257
|
+
"subtitleClass": {
|
|
258
|
+
"name": "subtitleClass",
|
|
259
|
+
"type": "string",
|
|
260
|
+
"optional": true,
|
|
261
|
+
"default": null,
|
|
262
|
+
"description": "Class CSS kustom untuk teks subjudul / deskripsi header.",
|
|
263
|
+
"example": null,
|
|
264
|
+
"param": null
|
|
265
|
+
},
|
|
266
|
+
"extraStyle": {
|
|
267
|
+
"name": "extraStyle",
|
|
268
|
+
"type": "UiProps",
|
|
269
|
+
"optional": true,
|
|
270
|
+
"default": null,
|
|
271
|
+
"description": "Style kustom untuk elemen extra di sudut kanan header (UiProps).",
|
|
272
|
+
"example": null,
|
|
273
|
+
"param": null
|
|
274
|
+
},
|
|
275
|
+
"extraClass": {
|
|
276
|
+
"name": "extraClass",
|
|
277
|
+
"type": "string",
|
|
278
|
+
"optional": true,
|
|
279
|
+
"default": null,
|
|
280
|
+
"description": "Class CSS kustom untuk elemen extra di sudut kanan header.",
|
|
281
|
+
"example": null,
|
|
282
|
+
"param": null
|
|
283
|
+
},
|
|
284
|
+
"bodyStyle": {
|
|
285
|
+
"name": "bodyStyle",
|
|
286
|
+
"type": "UiProps",
|
|
287
|
+
"optional": true,
|
|
288
|
+
"default": null,
|
|
289
|
+
"description": "Style kustom untuk area body / konten utama kartu (UiProps).",
|
|
290
|
+
"example": null,
|
|
291
|
+
"param": null
|
|
292
|
+
},
|
|
293
|
+
"bodyClass": {
|
|
294
|
+
"name": "bodyClass",
|
|
295
|
+
"type": "string",
|
|
296
|
+
"optional": true,
|
|
297
|
+
"default": null,
|
|
298
|
+
"description": "Class CSS kustom untuk area body / konten utama kartu.",
|
|
299
|
+
"example": null,
|
|
300
|
+
"param": null
|
|
301
|
+
},
|
|
302
|
+
"footerStyle": {
|
|
303
|
+
"name": "footerStyle",
|
|
304
|
+
"type": "UiProps",
|
|
305
|
+
"optional": true,
|
|
306
|
+
"default": null,
|
|
307
|
+
"description": "Style kustom untuk area footer kartu (UiProps).",
|
|
308
|
+
"example": null,
|
|
309
|
+
"param": null
|
|
310
|
+
},
|
|
311
|
+
"footerClass": {
|
|
312
|
+
"name": "footerClass",
|
|
313
|
+
"type": "string",
|
|
314
|
+
"optional": true,
|
|
315
|
+
"default": null,
|
|
316
|
+
"description": "Class CSS kustom untuk area footer kartu.",
|
|
317
|
+
"example": null,
|
|
318
|
+
"param": null
|
|
319
|
+
},
|
|
320
|
+
"coverStyle": {
|
|
321
|
+
"name": "coverStyle",
|
|
322
|
+
"type": "UiProps",
|
|
323
|
+
"optional": true,
|
|
324
|
+
"default": null,
|
|
325
|
+
"description": "Style kustom untuk area media cover kartu (UiProps).",
|
|
326
|
+
"example": null,
|
|
327
|
+
"param": null
|
|
328
|
+
},
|
|
329
|
+
"coverClass": {
|
|
330
|
+
"name": "coverClass",
|
|
331
|
+
"type": "string",
|
|
332
|
+
"optional": true,
|
|
333
|
+
"default": null,
|
|
334
|
+
"description": "Class CSS kustom untuk area media cover kartu.",
|
|
335
|
+
"example": null,
|
|
336
|
+
"param": null
|
|
337
|
+
},
|
|
338
|
+
"children": {
|
|
339
|
+
"name": "children",
|
|
340
|
+
"type": "any",
|
|
341
|
+
"optional": true,
|
|
342
|
+
"default": null,
|
|
343
|
+
"description": "Konten anak atau slot kustom (children).",
|
|
344
|
+
"example": null,
|
|
345
|
+
"param": null
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
"subInterfaces": {},
|
|
349
|
+
"supportedFrameworks": [
|
|
350
|
+
"react",
|
|
351
|
+
"vue",
|
|
352
|
+
"svelte"
|
|
353
|
+
],
|
|
354
|
+
"themes": [
|
|
355
|
+
"tw"
|
|
356
|
+
]
|
|
357
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# <Checkbox /> — TTDK Component Reference
|
|
2
|
+
|
|
3
|
+
TTDK Checkbox component with multi-theme support.
|
|
4
|
+
|
|
5
|
+
## 1. Stylesheets & Theming (Pure CSS)
|
|
6
|
+
Import the corresponding stylesheet for the theme you wish to use:
|
|
7
|
+
- **COMMON Theme**: `import "@ttdk-design-system/library-<react|vue|svelte>/web/checkbox/checkbox.css";`
|
|
8
|
+
|
|
9
|
+
## 2. Subpath Component Import
|
|
10
|
+
```ts
|
|
11
|
+
// React
|
|
12
|
+
import Checkbox from "@ttdk-design-system/library-react/web/checkbox";
|
|
13
|
+
|
|
14
|
+
// Vue 3
|
|
15
|
+
import Checkbox from "@ttdk-design-system/library-vue/web/checkbox";
|
|
16
|
+
|
|
17
|
+
// Svelte
|
|
18
|
+
import Checkbox from "@ttdk-design-system/library-svelte/web/checkbox";
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 3. Props & API Reference
|
|
22
|
+
|
|
23
|
+
| Prop | Type | Default | Description |
|
|
24
|
+
| :--- | :--- | :--- | :--- |
|
|
25
|
+
| `checked?` | `boolean` | `false` | Status apakah checkbox sedang dalam kondisi terpilih (checked). |
|
|
26
|
+
| `indeterminate?` | `boolean` | `false` | Status apakah checkbox dalam kondisi parsial / indeterminate (menampilkan tanda strip '-'). |
|
|
27
|
+
| `label?` | `string` | `-` | Teks label utama yang ditampilkan di samping kotak checkbox. |
|
|
28
|
+
| `description?` | `string` | `-` | Deskripsi atau teks bantuan yang ditampilkan di bawah label. |
|
|
29
|
+
| `helperText?` | `string` | `-` | Teks bantuan atau keterangan di bawah label (dapat digunakan bergantian dengan description). |
|
|
30
|
+
| `error?` | `boolean | string` | `-` | Status error visual atau string pesan error. |
|
|
31
|
+
| `errorMessage?` | `string` | `-` | Pesan error yang ditampilkan jika validasi form gagal. |
|
|
32
|
+
| `size?` | `'sm' | 'md' | 'lg'` | `md` | Skala ukuran checkbox: - `'sm'`: Kotak 16px, font 12px. - `'md'`: Kotak 18px, font 14px (standar). - `'lg'`: Kotak 22px, font 16px. |
|
|
33
|
+
| `variant?` | `'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral'` | `primary` | Varian warna semantik saat checkbox dicentang: - `'primary'`: Aksen toska aksi (#16b3ac, standar). - `'info'`: Aksen biru informasi (#2196f3). - `'success'`: Warna hijau sukses (#047b5d). - `'warning'`: Warna peringatan kuning/oranye (#fb8c00). - `'danger'`: Warna bahaya merah (#c50a24). - `'neutral'`: Warna abu-abu netral (#4a4f53). |
|
|
34
|
+
| `rounded?` | `'none' | 'sm' | 'md' | 'full'` | `md` | Sudut kelengkungan kotak checkbox: - `'none'`: Kotak tajam 0px. - `'sm'`: Radius halus 2px. - `'md'`: Radius sedang 4px (standar). - `'full'`: Lingkaran penuh 9999px. |
|
|
35
|
+
| `disabled?` | `boolean` | `false` | Menonaktifkan interaksi pada checkbox. |
|
|
36
|
+
| `required?` | `boolean` | `false` | Menandakan bahwa field checkbox wajib diisi (required) pada formulir. |
|
|
37
|
+
| `name?` | `string` | `-` | Name atribut untuk elemen HTML `<input type="checkbox">`. |
|
|
38
|
+
| `value?` | `string` | `-` | Value atribut untuk elemen HTML input. |
|
|
39
|
+
| `id?` | `string` | `-` | Identifier unik elemen checkbox (untuk kaitan dengan label form). |
|
|
40
|
+
| `ui?` | `UiProps` | `-` | Kustomisasi visual granular melalui style-like object (+ support pseudo-class: hover, active). |
|
|
41
|
+
| `style?` | `any` | `-` | Inline CSS style object native. |
|
|
42
|
+
| `controlStyle?` | `UiProps` | `-` | Style kustom untuk kotak kontrol checkbox (UiProps). |
|
|
43
|
+
| `controlClass?` | `string` | `-` | Class CSS kustom untuk kotak kontrol checkbox (Tailwind / class kustom). |
|
|
44
|
+
| `labelStyle?` | `UiProps` | `-` | Style kustom untuk teks label checkbox (UiProps). |
|
|
45
|
+
| `labelClass?` | `string` | `-` | Class CSS kustom untuk teks label checkbox (Tailwind / class kustom). |
|
|
46
|
+
| `descStyle?` | `UiProps` | `-` | Style kustom untuk teks deskripsi bantuan (UiProps). |
|
|
47
|
+
| `descClass?` | `string` | `-` | Class CSS kustom untuk teks deskripsi bantuan (Tailwind / class kustom). |
|
|
48
|
+
| `helperTextStyle?` | `UiProps` | `-` | Style kustom untuk elemen helper text (UiProps). |
|
|
49
|
+
| `helperTextClass?` | `string` | `-` | Class CSS kustom untuk elemen helper text. |
|
|
50
|
+
| `errorMessageStyle?` | `UiProps` | `-` | Style kustom untuk teks pesan error validasi (UiProps). |
|
|
51
|
+
| `errorMessageClass?` | `string` | `-` | Class CSS kustom untuk teks pesan error validasi (Tailwind / class kustom). |
|
|
52
|
+
| `onChange?` | `(checked: boolean, event?: any) => void` | `-` | Event handler yang dipanggil saat nilai checkbox berubah. Mengembalikan `(checked: boolean, event: Event)`. |
|
|
53
|
+
| `className?` | `string` | `-` | Class CSS kustom. |
|
|
54
|
+
| `children?` | `any` | `-` | Slot konten label kustom yang menggantikan prop `label`. |
|
|
55
|
+
|
|
56
|
+
## 4. Usage Examples
|
|
57
|
+
|
|
58
|
+
### React Example
|
|
59
|
+
```tsx
|
|
60
|
+
import { useState } from "react";
|
|
61
|
+
import Checkbox from "@ttdk-design-system/library-react/web/checkbox";
|
|
62
|
+
import "@ttdk-design-system/library-react/web/checkbox/checkbox.css";
|
|
63
|
+
|
|
64
|
+
export function Example() {
|
|
65
|
+
const [agreed, setAgreed] = useState(false);
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
|
|
69
|
+
<Checkbox
|
|
70
|
+
checked={agreed}
|
|
71
|
+
label="Saya menyetujui syarat & ketentuan data"
|
|
72
|
+
description="Data akan diproses sesuai standar kepatuhan SATUSEHAT."
|
|
73
|
+
onChange={(val) => setAgreed(val)}
|
|
74
|
+
/>
|
|
75
|
+
<Checkbox
|
|
76
|
+
checked={true}
|
|
77
|
+
variant="success"
|
|
78
|
+
label="Aktifkan sinkronisasi otomatis"
|
|
79
|
+
/>
|
|
80
|
+
<Checkbox
|
|
81
|
+
indeterminate={true}
|
|
82
|
+
label="Pilih sebagian fasilitas kesehatan"
|
|
83
|
+
/>
|
|
84
|
+
</div>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Vue 3 Example
|
|
90
|
+
```vue
|
|
91
|
+
<script setup lang="ts">
|
|
92
|
+
import { ref } from "vue";
|
|
93
|
+
import Checkbox from "@ttdk-design-system/library-vue/web/checkbox";
|
|
94
|
+
import "@ttdk-design-system/library-vue/web/checkbox/checkbox.css";
|
|
95
|
+
|
|
96
|
+
const agreed = ref(false);
|
|
97
|
+
</script>
|
|
98
|
+
|
|
99
|
+
<template>
|
|
100
|
+
<div style="display: flex; flex-direction: column; gap: 12px;">
|
|
101
|
+
<Checkbox
|
|
102
|
+
:checked="agreed"
|
|
103
|
+
label="Saya menyetujui syarat & ketentuan data"
|
|
104
|
+
description="Data akan diproses sesuai standar kepatuhan SATUSEHAT."
|
|
105
|
+
@change="(val: boolean) => (agreed = val)"
|
|
106
|
+
/>
|
|
107
|
+
<Checkbox
|
|
108
|
+
:checked="true"
|
|
109
|
+
variant="success"
|
|
110
|
+
label="Aktifkan sinkronisasi otomatis"
|
|
111
|
+
/>
|
|
112
|
+
<Checkbox
|
|
113
|
+
:indeterminate="true"
|
|
114
|
+
label="Pilih sebagian fasilitas kesehatan"
|
|
115
|
+
/>
|
|
116
|
+
</div>
|
|
117
|
+
</template>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Svelte Example
|
|
121
|
+
```svelte
|
|
122
|
+
<script lang="ts">
|
|
123
|
+
import Checkbox from "@ttdk-design-system/library-svelte/web/checkbox";
|
|
124
|
+
import "@ttdk-design-system/library-svelte/web/checkbox/checkbox.css";
|
|
125
|
+
|
|
126
|
+
let agreed = false;
|
|
127
|
+
</script>
|
|
128
|
+
|
|
129
|
+
<div style="display: flex; flex-direction: column; gap: 12px;">
|
|
130
|
+
<Checkbox
|
|
131
|
+
checked={agreed}
|
|
132
|
+
label="Saya menyetujui syarat & ketentuan data"
|
|
133
|
+
description="Data akan diproses sesuai standar kepatuhan SATUSEHAT."
|
|
134
|
+
on:change={(e) => (agreed = e.detail)}
|
|
135
|
+
/>
|
|
136
|
+
<Checkbox
|
|
137
|
+
checked={true}
|
|
138
|
+
variant="success"
|
|
139
|
+
label="Aktifkan sinkronisasi otomatis"
|
|
140
|
+
/>
|
|
141
|
+
<Checkbox
|
|
142
|
+
indeterminate={true}
|
|
143
|
+
label="Pilih sebagian fasilitas kesehatan"
|
|
144
|
+
/>
|
|
145
|
+
</div>
|
|
146
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root,.dark,[data-mode=dark],[data-theme=dark],.ttdk-checkbox-wrapper,.ttdk-checkbox-root{--ttdk-checkbox-radius-none:var(--ttdk-radius-input-none);--ttdk-checkbox-radius-sm:var(--ttdk-radius-input-sm);--ttdk-checkbox-radius-md:var(--ttdk-radius-input-md);--ttdk-checkbox-radius-lg:var(--ttdk-radius-input-lg);--ttdk-checkbox-radius-full:var(--ttdk-radius-input-full);--ttdk-checkbox-bg:var(--ttdk-bg-base-primary);--ttdk-checkbox-border:var(--ttdk-stroke-subtle);--ttdk-checkbox-border-hover:var(--ttdk-stroke-strong);--ttdk-checkbox-color-check:var(--ttdk-color-white);--ttdk-checkbox-ring:color-mix(in oklab, var(--ttdk-brand-default) 25%, transparent);--ttdk-checkbox-primary:var(--ttdk-brand-default);--ttdk-checkbox-primary-hover:var(--ttdk-brand-strong);--ttdk-checkbox-neutral:var(--ttdk-stroke-strong);--ttdk-checkbox-neutral-hover:var(--ttdk-color-neutral-700);--ttdk-checkbox-danger:var(--ttdk-bg-status-error);--ttdk-checkbox-danger-hover:var(--ttdk-bg-status-error-strong);--ttdk-checkbox-success:var(--ttdk-bg-status-success);--ttdk-checkbox-success-hover:var(--ttdk-color-green-700);--ttdk-checkbox-warning:var(--ttdk-bg-status-warning);--ttdk-checkbox-warning-hover:var(--ttdk-color-orange-600);--ttdk-checkbox-info:var(--ttdk-bg-status-info);--ttdk-checkbox-info-hover:var(--ttdk-color-blue-600);--ttdk-checkbox-text-title:var(--ttdk-text-icon-primary);--ttdk-checkbox-text-subtitle:var(--ttdk-text-icon-primary);--ttdk-checkbox-text-disabled:var(--ttdk-text-icon-disabled);--ttdk-checkbox-text-error:var(--ttdk-text-icon-status-error);--ttdk-checkbox-disabled-bg:var(--ttdk-bg-secondary-disabled);--ttdk-checkbox-disabled-border:var(--ttdk-stroke-subtle)}.dark,[data-mode=dark],[data-theme=dark]{--ttdk-checkbox-neutral-hover:var(--ttdk-color-neutral-600)}.ttdk-checkbox-wrapper,.ttdk-checkbox-root{cursor:default;user-select:none;font-family:var(--ttdk-font-sans);box-sizing:border-box;pointer-events:none;align-items:center;gap:10px;display:inline-flex;position:relative}.ttdk-checkbox-wrapper[data-has-description=true],.ttdk-checkbox-root[data-has-description=true]{align-items:flex-start}.ttdk-checkbox-native,.ttdk-checkbox-input{opacity:0;pointer-events:none;width:0;height:0;margin:0;padding:0;position:absolute}.ttdk-checkbox-control{background-color:var(--ttdk-checkbox-bg);border:1px solid var(--ttdk-checkbox-border);border-radius:var(--ttdk-checkbox-radius-sm);box-sizing:border-box;cursor:pointer;pointer-events:auto;flex-shrink:0;justify-content:center;align-items:center;margin-top:0;transition:all .15s cubic-bezier(.4,0,.2,1);display:inline-flex}.ttdk-checkbox-wrapper[data-has-description=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-has-description=true] .ttdk-checkbox-control{margin-top:2px}.ttdk-checkbox-wrapper:not([data-disabled=true]) .ttdk-checkbox-control:hover,.ttdk-checkbox-root:not([data-disabled=true]) .ttdk-checkbox-control:hover{border-color:var(--ttdk-checkbox-border-hover)}.ttdk-checkbox-native:focus-visible+.ttdk-checkbox-control,.ttdk-checkbox-input:focus-visible+.ttdk-checkbox-control{box-shadow:0 0 0 3px var(--ttdk-checkbox-ring)}.ttdk-checkbox-wrapper[data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-state=indeterminate] .ttdk-checkbox-control,.ttdk-checkbox-root[data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-state=indeterminate] .ttdk-checkbox-control{background-color:var(--ttdk-checkbox-primary);border-color:var(--ttdk-checkbox-primary);color:var(--ttdk-checkbox-color-check)}.ttdk-checkbox-wrapper:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover,.ttdk-checkbox-root:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-root:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-root:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover{background-color:var(--ttdk-checkbox-primary-hover);border-color:var(--ttdk-checkbox-primary-hover)}.ttdk-checkbox-wrapper[data-variant=danger][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-variant=danger][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=danger][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=danger][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=danger][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=danger][data-state=indeterminate] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=danger][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=danger][data-state=indeterminate] .ttdk-checkbox-control{background-color:var(--ttdk-checkbox-danger);border-color:var(--ttdk-checkbox-danger)}.ttdk-checkbox-wrapper[data-variant=danger]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-variant=danger]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=danger]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=danger]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=danger]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=danger]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=danger]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=danger]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover{background-color:var(--ttdk-checkbox-danger-hover);border-color:var(--ttdk-checkbox-danger-hover)}.ttdk-checkbox-wrapper[data-variant=success][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-variant=success][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=success][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=success][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=success][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=success][data-state=indeterminate] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=success][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=success][data-state=indeterminate] .ttdk-checkbox-control{background-color:var(--ttdk-checkbox-success);border-color:var(--ttdk-checkbox-success)}.ttdk-checkbox-wrapper[data-variant=success]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-variant=success]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=success]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=success]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=success]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=success]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=success]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=success]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover{background-color:var(--ttdk-checkbox-success-hover);border-color:var(--ttdk-checkbox-success-hover)}.ttdk-checkbox-wrapper[data-variant=warning][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-variant=warning][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=warning][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=warning][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=warning][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=warning][data-state=indeterminate] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=warning][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=warning][data-state=indeterminate] .ttdk-checkbox-control{background-color:var(--ttdk-checkbox-warning);border-color:var(--ttdk-checkbox-warning);color:var(--ttdk-color-black)}.ttdk-checkbox-wrapper[data-variant=warning]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-variant=warning]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=warning]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=warning]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=warning]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=warning]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=warning]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=warning]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover{background-color:var(--ttdk-checkbox-warning-hover);border-color:var(--ttdk-checkbox-warning-hover)}.ttdk-checkbox-wrapper[data-variant=info][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-variant=info][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=info][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=info][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=info][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=info][data-state=indeterminate] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=info][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=info][data-state=indeterminate] .ttdk-checkbox-control{background-color:var(--ttdk-checkbox-info);border-color:var(--ttdk-checkbox-info)}.ttdk-checkbox-wrapper[data-variant=info]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-variant=info]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=info]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=info]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=info]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=info]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=info]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=info]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover{background-color:var(--ttdk-checkbox-info-hover);border-color:var(--ttdk-checkbox-info-hover)}.ttdk-checkbox-wrapper[data-variant=neutral][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-variant=neutral][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=neutral][data-checked=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-color=neutral][data-indeterminate=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=neutral][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-variant=neutral][data-state=indeterminate] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=neutral][data-state=checked] .ttdk-checkbox-control,.ttdk-checkbox-root[data-color=neutral][data-state=indeterminate] .ttdk-checkbox-control{background-color:var(--ttdk-checkbox-neutral);border-color:var(--ttdk-checkbox-neutral)}.ttdk-checkbox-wrapper[data-variant=neutral]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-variant=neutral]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=neutral]:not([data-disabled=true])[data-checked=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-wrapper[data-color=neutral]:not([data-disabled=true])[data-indeterminate=true] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=neutral]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-variant=neutral]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=neutral]:not([data-disabled=true])[data-state=checked] .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-color=neutral]:not([data-disabled=true])[data-state=indeterminate] .ttdk-checkbox-control:hover{background-color:var(--ttdk-checkbox-neutral-hover);border-color:var(--ttdk-checkbox-neutral-hover)}.ttdk-checkbox-wrapper[data-disabled=true],.ttdk-checkbox-root[data-disabled=true]{pointer-events:none;cursor:not-allowed!important}.ttdk-checkbox-wrapper[data-disabled=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-disabled=true] .ttdk-checkbox-control{background-color:var(--ttdk-checkbox-disabled-bg)!important;border:1px solid var(--ttdk-checkbox-border)!important;color:var(--ttdk-checkbox-text-disabled)!important;box-shadow:none!important}.ttdk-checkbox-wrapper[data-disabled=true] .ttdk-checkbox-label,.ttdk-checkbox-root[data-disabled=true] .ttdk-checkbox-label,.ttdk-checkbox-wrapper[data-disabled=true] .ttdk-checkbox-desc,.ttdk-checkbox-root[data-disabled=true] .ttdk-checkbox-desc{color:var(--ttdk-checkbox-text-disabled)!important}.ttdk-checkbox-wrapper[data-error=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-error=true] .ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-error=true]:not([data-disabled=true]) .ttdk-checkbox-control:hover,.ttdk-checkbox-root[data-error=true]:not([data-disabled=true]) .ttdk-checkbox-control:hover{border-color:var(--ttdk-checkbox-text-error)}.ttdk-checkbox-wrapper[data-error=true] .ttdk-checkbox-native:focus-visible+.ttdk-checkbox-control,.ttdk-checkbox-wrapper[data-error=true] .ttdk-checkbox-input:focus-visible+.ttdk-checkbox-control,.ttdk-checkbox-root[data-error=true] .ttdk-checkbox-native:focus-visible+.ttdk-checkbox-control,.ttdk-checkbox-root[data-error=true] .ttdk-checkbox-input:focus-visible+.ttdk-checkbox-control{box-shadow:0 0 0 3px color-mix(in oklab, var(--ttdk-checkbox-danger) 25%, transparent)}.ttdk-checkbox-wrapper[data-error=true] .ttdk-checkbox-label,.ttdk-checkbox-root[data-error=true] .ttdk-checkbox-label{color:var(--ttdk-checkbox-text-error)}.ttdk-checkbox-label-wrapper{pointer-events:auto;flex-direction:column;gap:2px;display:flex}.ttdk-checkbox-label{color:var(--ttdk-ui-color,var(--ttdk-checkbox-text-title));letter-spacing:.5px;cursor:pointer;pointer-events:auto;font-size:14px;font-weight:600;line-height:1.25;transition:color .15s}.ttdk-checkbox-desc,.ttdk-checkbox-helper-text{color:var(--ttdk-ui-color,var(--ttdk-checkbox-text-subtitle));letter-spacing:.25px;cursor:default;pointer-events:auto;font-size:14px;font-weight:400;line-height:1.5;transition:color .15s}.ttdk-checkbox-error-msg{color:var(--ttdk-checkbox-text-error);cursor:default;pointer-events:auto;margin-top:2px;font-size:12px;font-weight:500;line-height:1.4}.ttdk-checkbox-wrapper[data-size=sm] .ttdk-checkbox-control,.ttdk-checkbox-root[data-size=sm] .ttdk-checkbox-control{width:16px;height:16px}.ttdk-checkbox-wrapper[data-size=sm] .ttdk-checkbox-icon,.ttdk-checkbox-root[data-size=sm] .ttdk-checkbox-icon{width:11px;height:11px}.ttdk-checkbox-wrapper[data-size=sm] .ttdk-checkbox-label,.ttdk-checkbox-root[data-size=sm] .ttdk-checkbox-label{font-size:13px;line-height:1.25}.ttdk-checkbox-wrapper[data-size=sm] .ttdk-checkbox-desc,.ttdk-checkbox-root[data-size=sm] .ttdk-checkbox-desc{font-size:12px;line-height:1.4}.ttdk-checkbox-wrapper[data-size=md] .ttdk-checkbox-control,.ttdk-checkbox-root[data-size=md] .ttdk-checkbox-control{width:18px;height:18px}.ttdk-checkbox-wrapper[data-size=md] .ttdk-checkbox-icon,.ttdk-checkbox-root[data-size=md] .ttdk-checkbox-icon{width:13px;height:13px}.ttdk-checkbox-wrapper[data-size=md] .ttdk-checkbox-label,.ttdk-checkbox-root[data-size=md] .ttdk-checkbox-label{letter-spacing:.5px;font-size:14px;font-weight:600;line-height:1.25}.ttdk-checkbox-wrapper[data-size=md] .ttdk-checkbox-desc,.ttdk-checkbox-root[data-size=md] .ttdk-checkbox-desc{letter-spacing:.25px;font-size:14px;font-weight:400;line-height:1.5}.ttdk-checkbox-wrapper[data-size=lg] .ttdk-checkbox-control,.ttdk-checkbox-root[data-size=lg] .ttdk-checkbox-control{width:22px;height:22px}.ttdk-checkbox-wrapper[data-size=lg][data-has-description=true] .ttdk-checkbox-control,.ttdk-checkbox-root[data-size=lg][data-has-description=true] .ttdk-checkbox-control{margin-top:2px}.ttdk-checkbox-wrapper[data-size=lg] .ttdk-checkbox-icon,.ttdk-checkbox-root[data-size=lg] .ttdk-checkbox-icon{width:15px;height:15px}.ttdk-checkbox-wrapper[data-size=lg] .ttdk-checkbox-label,.ttdk-checkbox-root[data-size=lg] .ttdk-checkbox-label{font-size:16px;line-height:1.3}.ttdk-checkbox-wrapper[data-size=lg] .ttdk-checkbox-desc,.ttdk-checkbox-root[data-size=lg] .ttdk-checkbox-desc{font-size:15px;line-height:1.5}.ttdk-checkbox-wrapper[data-rounded=none] .ttdk-checkbox-control,.ttdk-checkbox-root[data-rounded=none] .ttdk-checkbox-control{border-radius:var(--ttdk-checkbox-radius-none)}.ttdk-checkbox-wrapper[data-rounded=sm] .ttdk-checkbox-control,.ttdk-checkbox-root[data-rounded=sm] .ttdk-checkbox-control{border-radius:var(--ttdk-checkbox-radius-sm)}.ttdk-checkbox-wrapper[data-rounded=md] .ttdk-checkbox-control,.ttdk-checkbox-root[data-rounded=md] .ttdk-checkbox-control{border-radius:var(--ttdk-checkbox-radius-md)}.ttdk-checkbox-wrapper[data-rounded=lg] .ttdk-checkbox-control,.ttdk-checkbox-root[data-rounded=lg] .ttdk-checkbox-control{border-radius:var(--ttdk-checkbox-radius-lg)}.ttdk-checkbox-wrapper[data-rounded=full] .ttdk-checkbox-control,.ttdk-checkbox-root[data-rounded=full] .ttdk-checkbox-control{border-radius:var(--ttdk-checkbox-radius-full)}.ttdk-checkbox-icon{fill:none;stroke:currentColor;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;animation:.12s ease-out forwards ttdk-check-pop;display:block}[data-variant=warning] .ttdk-checkbox-icon,[data-color=warning] .ttdk-checkbox-icon{stroke:var(--ttdk-color-black)}[data-variant=warning] .ttdk-checkbox-control,[data-color=warning] .ttdk-checkbox-control{color:var(--ttdk-color-black)}@keyframes ttdk-check-pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}
|