@ttdk-design-system/library-react 0.0.0-stage → 1.0.0

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.
Files changed (184) hide show
  1. package/AI_GUIDE.md +6518 -0
  2. package/llms.txt +6518 -0
  3. package/package.json +1098 -4
  4. package/src/core/index.ts +2 -0
  5. package/src/core/tailwind-preset.cjs +62 -0
  6. package/src/core/tailwind-preset.ts +85 -0
  7. package/src/core/theme/tokens.css +663 -0
  8. package/src/core/types.ts +836 -0
  9. package/src/index.ts +17 -0
  10. package/src/tailwind-preset.cjs +62 -0
  11. package/src/tailwind-preset.ts +85 -0
  12. package/src/types.ts +1 -0
  13. package/src/web/accordion/AI_GUIDE.md +149 -0
  14. package/src/web/accordion/accordion.css +1 -0
  15. package/src/web/accordion/accordion.tsx +430 -0
  16. package/src/web/accordion/index.ts +3 -0
  17. package/src/web/accordion/manifest.json +351 -0
  18. package/src/web/alert/AI_GUIDE.md +139 -0
  19. package/src/web/alert/alert.css +1 -0
  20. package/src/web/alert/alert.tsx +318 -0
  21. package/src/web/alert/index.ts +3 -0
  22. package/src/web/alert/manifest.json +240 -0
  23. package/src/web/avatar/AI_GUIDE.md +118 -0
  24. package/src/web/avatar/avatar.css +1 -0
  25. package/src/web/avatar/avatar.tsx +233 -0
  26. package/src/web/avatar/index.ts +3 -0
  27. package/src/web/avatar/manifest.json +195 -0
  28. package/src/web/badge/AI_GUIDE.md +94 -0
  29. package/src/web/badge/badge.css +1 -0
  30. package/src/web/badge/badge.tsx +140 -0
  31. package/src/web/badge/index.ts +2 -0
  32. package/src/web/badge/manifest.json +141 -0
  33. package/src/web/banner/AI_GUIDE.md +130 -0
  34. package/src/web/banner/banner.css +1 -0
  35. package/src/web/banner/banner.tsx +334 -0
  36. package/src/web/banner/index.ts +3 -0
  37. package/src/web/banner/manifest.json +240 -0
  38. package/src/web/breadcrumb/AI_GUIDE.md +120 -0
  39. package/src/web/breadcrumb/breadcrumb.css +1 -0
  40. package/src/web/breadcrumb/breadcrumb.tsx +306 -0
  41. package/src/web/breadcrumb/index.ts +3 -0
  42. package/src/web/breadcrumb/manifest.json +225 -0
  43. package/src/web/button/AI_GUIDE.md +121 -0
  44. package/src/web/button/button.css +1 -0
  45. package/src/web/button/button.tsx +287 -0
  46. package/src/web/button/index.ts +2 -0
  47. package/src/web/button/manifest.json +177 -0
  48. package/src/web/calendar/AI_GUIDE.md +151 -0
  49. package/src/web/calendar/calendar.css +1 -0
  50. package/src/web/calendar/calendar.tsx +1611 -0
  51. package/src/web/calendar/index.ts +3 -0
  52. package/src/web/calendar/manifest.json +470 -0
  53. package/src/web/card/AI_GUIDE.md +133 -0
  54. package/src/web/card/card.css +1 -0
  55. package/src/web/card/card.tsx +408 -0
  56. package/src/web/card/index.ts +4 -0
  57. package/src/web/card/manifest.json +357 -0
  58. package/src/web/checkbox/AI_GUIDE.md +146 -0
  59. package/src/web/checkbox/checkbox.css +1 -0
  60. package/src/web/checkbox/checkbox.tsx +307 -0
  61. package/src/web/checkbox/index.ts +2 -0
  62. package/src/web/checkbox/manifest.json +294 -0
  63. package/src/web/chip/AI_GUIDE.md +186 -0
  64. package/src/web/chip/chip.css +1 -0
  65. package/src/web/chip/chip.tsx +230 -0
  66. package/src/web/chip/index.ts +2 -0
  67. package/src/web/chip/manifest.json +186 -0
  68. package/src/web/dropdown/AI_GUIDE.md +167 -0
  69. package/src/web/dropdown/dropdown.css +1 -0
  70. package/src/web/dropdown/dropdown.tsx +1274 -0
  71. package/src/web/dropdown/index.ts +3 -0
  72. package/src/web/dropdown/manifest.json +576 -0
  73. package/src/web/flex/AI_GUIDE.md +113 -0
  74. package/src/web/flex/flex-item.tsx +97 -0
  75. package/src/web/flex/flex.css +1 -0
  76. package/src/web/flex/flex.tsx +108 -0
  77. package/src/web/flex/index.ts +5 -0
  78. package/src/web/flex/manifest.json +162 -0
  79. package/src/web/form/index.ts +7 -0
  80. package/src/web/grid/AI_GUIDE.md +112 -0
  81. package/src/web/grid/grid-item.tsx +112 -0
  82. package/src/web/grid/grid.css +1 -0
  83. package/src/web/grid/grid.tsx +99 -0
  84. package/src/web/grid/index.ts +5 -0
  85. package/src/web/grid/manifest.json +153 -0
  86. package/src/web/index.ts +86 -0
  87. package/src/web/input/AI_GUIDE.md +159 -0
  88. package/src/web/input/index.ts +3 -0
  89. package/src/web/input/input.css +1 -0
  90. package/src/web/input/input.tsx +537 -0
  91. package/src/web/input/manifest.json +465 -0
  92. package/src/web/input-number/AI_GUIDE.md +164 -0
  93. package/src/web/input-number/index.ts +3 -0
  94. package/src/web/input-number/input-number.css +1 -0
  95. package/src/web/input-number/input-number.tsx +1193 -0
  96. package/src/web/input-number/manifest.json +575 -0
  97. package/src/web/modal/AI_GUIDE.md +171 -0
  98. package/src/web/modal/index.ts +3 -0
  99. package/src/web/modal/manifest.json +375 -0
  100. package/src/web/modal/modal.css +1 -0
  101. package/src/web/modal/modal.tsx +571 -0
  102. package/src/web/pagination/AI_GUIDE.md +148 -0
  103. package/src/web/pagination/index.ts +21 -0
  104. package/src/web/pagination/manifest.json +432 -0
  105. package/src/web/pagination/pagination-content.tsx +45 -0
  106. package/src/web/pagination/pagination-ellipsis.tsx +54 -0
  107. package/src/web/pagination/pagination-first.tsx +155 -0
  108. package/src/web/pagination/pagination-item.tsx +45 -0
  109. package/src/web/pagination/pagination-last.tsx +155 -0
  110. package/src/web/pagination/pagination-link.tsx +121 -0
  111. package/src/web/pagination/pagination-next.tsx +158 -0
  112. package/src/web/pagination/pagination-previous.tsx +158 -0
  113. package/src/web/pagination/pagination.css +1 -0
  114. package/src/web/pagination/pagination.tsx +687 -0
  115. package/src/web/popover/AI_GUIDE.md +163 -0
  116. package/src/web/popover/index.ts +3 -0
  117. package/src/web/popover/manifest.json +396 -0
  118. package/src/web/popover/popover.css +1 -0
  119. package/src/web/popover/popover.tsx +702 -0
  120. package/src/web/radio/AI_GUIDE.md +155 -0
  121. package/src/web/radio/index.ts +2 -0
  122. package/src/web/radio/manifest.json +294 -0
  123. package/src/web/radio/radio.css +1 -0
  124. package/src/web/radio/radio.tsx +290 -0
  125. package/src/web/selectbox/AI_GUIDE.md +216 -0
  126. package/src/web/selectbox/index.ts +3 -0
  127. package/src/web/selectbox/manifest.json +477 -0
  128. package/src/web/selectbox/selectbox.css +1 -0
  129. package/src/web/selectbox/selectbox.tsx +1048 -0
  130. package/src/web/sonner/AI_GUIDE.md +98 -0
  131. package/src/web/sonner/index.ts +114 -0
  132. package/src/web/sonner/manifest.json +132 -0
  133. package/src/web/sonner/sonner.css +1 -0
  134. package/src/web/sonner/sonner.tsx +177 -0
  135. package/src/web/table/AI_GUIDE.md +145 -0
  136. package/src/web/table/index.ts +35 -0
  137. package/src/web/table/manifest.json +168 -0
  138. package/src/web/table/table-body.tsx +45 -0
  139. package/src/web/table/table-caption.tsx +45 -0
  140. package/src/web/table/table-cell.tsx +74 -0
  141. package/src/web/table/table-empty.tsx +108 -0
  142. package/src/web/table/table-footer.tsx +45 -0
  143. package/src/web/table/table-head.tsx +80 -0
  144. package/src/web/table/table-header.tsx +45 -0
  145. package/src/web/table/table-row.tsx +69 -0
  146. package/src/web/table/table.css +1 -0
  147. package/src/web/table/table.tsx +305 -0
  148. package/src/web/tabs/AI_GUIDE.md +150 -0
  149. package/src/web/tabs/index.ts +3 -0
  150. package/src/web/tabs/manifest.json +315 -0
  151. package/src/web/tabs/tabs.css +1 -0
  152. package/src/web/tabs/tabs.tsx +332 -0
  153. package/src/web/text/AI_GUIDE.md +129 -0
  154. package/src/web/text/index.ts +3 -0
  155. package/src/web/text/manifest.json +195 -0
  156. package/src/web/text/text.css +1 -0
  157. package/src/web/text/text.tsx +689 -0
  158. package/src/web/textarea/AI_GUIDE.md +141 -0
  159. package/src/web/textarea/index.ts +3 -0
  160. package/src/web/textarea/manifest.json +438 -0
  161. package/src/web/textarea/textarea.css +1 -0
  162. package/src/web/textarea/textarea.tsx +467 -0
  163. package/src/web/tooltip/AI_GUIDE.md +110 -0
  164. package/src/web/tooltip/index.ts +3 -0
  165. package/src/web/tooltip/manifest.json +222 -0
  166. package/src/web/tooltip/tooltip.css +1 -0
  167. package/src/web/tooltip/tooltip.tsx +423 -0
  168. package/src/webview/bottomsheet/AI_GUIDE.md +141 -0
  169. package/src/webview/bottomsheet/bottomsheet.css +1 -0
  170. package/src/webview/bottomsheet/bottomsheet.tsx +603 -0
  171. package/src/webview/bottomsheet/index.ts +4 -0
  172. package/src/webview/bottomsheet/manifest.json +377 -0
  173. package/src/webview/button/AI_GUIDE.md +79 -0
  174. package/src/webview/button/button-ios.css +1 -0
  175. package/src/webview/button/button-ios.tsx +138 -0
  176. package/src/webview/button/button-material.css +1 -0
  177. package/src/webview/button/button-material.tsx +138 -0
  178. package/src/webview/button/index.ts +7 -0
  179. package/src/webview/button/manifest.json +148 -0
  180. package/src/webview/index.ts +7 -0
  181. package/tailwind-preset.cjs +62 -0
  182. package/tailwind-preset.js +62 -0
  183. package/ttdk-manifest.json +10188 -0
  184. package/README.md +0 -3
@@ -0,0 +1,155 @@
1
+ # <Radio /> — TTDK Component Reference
2
+
3
+ TTDK Radio 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/radio/radio.css";`
8
+
9
+ ## 2. Subpath Component Import
10
+ ```ts
11
+ // React
12
+ import Radio from "@ttdk-design-system/library-react/web/radio";
13
+
14
+ // Vue 3
15
+ import Radio from "@ttdk-design-system/library-vue/web/radio";
16
+
17
+ // Svelte
18
+ import Radio from "@ttdk-design-system/library-svelte/web/radio";
19
+ ```
20
+
21
+ ## 3. Props & API Reference
22
+
23
+ | Prop | Type | Default | Description |
24
+ | :--- | :--- | :--- | :--- |
25
+ | `checked?` | `boolean` | `false` | Status apakah radio button sedang dalam kondisi terpilih (checked). |
26
+ | `label?` | `string` | `-` | Teks label utama yang ditampilkan di samping lingkaran radio. |
27
+ | `description?` | `string` | `-` | Deskripsi atau teks bantuan yang ditampilkan di bawah label. |
28
+ | `helperText?` | `string` | `-` | Teks bantuan atau keterangan di bawah label (dapat digunakan bergantian dengan description). |
29
+ | `error?` | `boolean | string` | `-` | Status error visual atau string pesan error. |
30
+ | `errorMessage?` | `string` | `-` | Pesan error yang ditampilkan jika validasi form gagal. |
31
+ | `size?` | `'sm' | 'md' | 'lg'` | `md` | Skala ukuran radio button: - `'sm'`: Lingkaran 16px, font 13px. - `'md'`: Lingkaran 18px, font 14px (standar). - `'lg'`: Lingkaran 22px, font 16px. |
32
+ | `variant?` | `'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral'` | `primary` | Varian warna semantik saat radio button dipilih: - `'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). |
33
+ | `disabled?` | `boolean` | `false` | Menonaktifkan interaksi pada radio button. |
34
+ | `required?` | `boolean` | `false` | Menandakan bahwa field radio wajib diisi (required) pada formulir. |
35
+ | `name?` | `string` | `-` | Name atribut untuk elemen HTML `<input type="radio">`. Digunakan untuk mengelompokkan radio button dalam satu grup. |
36
+ | `value?` | `string` | `-` | Value atribut untuk elemen HTML input. |
37
+ | `id?` | `string` | `-` | Identifier unik elemen radio button (untuk kaitan dengan label form). |
38
+ | `ui?` | `UiProps` | `-` | Kustomisasi visual granular melalui style-like object (+ support pseudo-class: hover, active). |
39
+ | `style?` | `any` | `-` | Inline CSS style object native. |
40
+ | `controlStyle?` | `UiProps` | `-` | Style kustom untuk lingkaran kontrol radio (UiProps). |
41
+ | `controlClass?` | `string` | `-` | Class CSS kustom untuk lingkaran kontrol radio (Tailwind / class kustom). |
42
+ | `dotStyle?` | `UiProps` | `-` | Style kustom untuk titik (dot) di dalam radio button saat checked (UiProps). |
43
+ | `dotClass?` | `string` | `-` | Class CSS kustom untuk titik (dot) di dalam radio button saat checked (Tailwind / class kustom). |
44
+ | `labelStyle?` | `UiProps` | `-` | Style kustom untuk teks label radio (UiProps). |
45
+ | `labelClass?` | `string` | `-` | Class CSS kustom untuk teks label radio (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 radio button 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 Radio from "@ttdk-design-system/library-react/web/radio";
62
+ import "@ttdk-design-system/library-react/web/radio/radio.css";
63
+
64
+ export function Example() {
65
+ const [selected, setSelected] = useState("bpjs");
66
+
67
+ return (
68
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
69
+ <Radio
70
+ checked={selected === "bpjs"}
71
+ label="BPJS Kesehatan"
72
+ description="Jaminan kesehatan nasional terdaftar."
73
+ onChange={() => setSelected("bpjs")}
74
+ />
75
+ <Radio
76
+ checked={selected === "umum"}
77
+ label="Pasien Umum / Mandiri"
78
+ description="Pembayaran biaya perawatan mandiri."
79
+ onChange={() => setSelected("umum")}
80
+ />
81
+ <Radio
82
+ checked={selected === "asuransi"}
83
+ label="Asuransi Swasta"
84
+ description="Klaim penjaminan asuransi rekanan faskes."
85
+ onChange={() => setSelected("asuransi")}
86
+ />
87
+ </div>
88
+ );
89
+ }
90
+ ```
91
+
92
+ ### Vue 3 Example
93
+ ```vue
94
+ <script setup lang="ts">
95
+ import { ref } from "vue";
96
+ import Radio from "@ttdk-design-system/library-vue/web/radio";
97
+ import "@ttdk-design-system/library-vue/web/radio/radio.css";
98
+
99
+ const selected = ref("bpjs");
100
+ </script>
101
+
102
+ <template>
103
+ <div style="display: flex; flex-direction: column; gap: 12px;">
104
+ <Radio
105
+ :checked="selected === 'bpjs'"
106
+ label="BPJS Kesehatan"
107
+ description="Jaminan kesehatan nasional terdaftar."
108
+ @change="() => (selected = 'bpjs')"
109
+ />
110
+ <Radio
111
+ :checked="selected === 'umum'"
112
+ label="Pasien Umum / Mandiri"
113
+ description="Pembayaran biaya perawatan mandiri."
114
+ @change="() => (selected = 'umum')"
115
+ />
116
+ <Radio
117
+ :checked="selected === 'asuransi'"
118
+ label="Asuransi Swasta"
119
+ description="Klaim penjaminan asuransi rekanan faskes."
120
+ @change="() => (selected = 'asuransi')"
121
+ />
122
+ </div>
123
+ </template>
124
+ ```
125
+
126
+ ### Svelte Example
127
+ ```svelte
128
+ <script lang="ts">
129
+ import Radio from "@ttdk-design-system/library-svelte/web/radio";
130
+ import "@ttdk-design-system/library-svelte/web/radio/radio.css";
131
+
132
+ let selected = "bpjs";
133
+ </script>
134
+
135
+ <div style="display: flex; flex-direction: column; gap: 12px;">
136
+ <Radio
137
+ checked={selected === "bpjs"}
138
+ label="BPJS Kesehatan"
139
+ description="Jaminan kesehatan nasional terdaftar."
140
+ on:change={() => (selected = "bpjs")}
141
+ />
142
+ <Radio
143
+ checked={selected === "umum"}
144
+ label="Pasien Umum / Mandiri"
145
+ description="Pembayaran biaya perawatan mandiri."
146
+ on:change={() => (selected = "umum")}
147
+ />
148
+ <Radio
149
+ checked={selected === "asuransi"}
150
+ label="Asuransi Swasta"
151
+ description="Klaim penjaminan asuransi rekanan faskes."
152
+ on:change={() => (selected = "asuransi")}
153
+ />
154
+ </div>
155
+ ```
@@ -0,0 +1,2 @@
1
+ export { default as Radio } from './radio';
2
+ export { default } from "./radio"
@@ -0,0 +1,294 @@
1
+ {
2
+ "name": "@ttdk-design-system/radio",
3
+ "component": "Radio",
4
+ "folder": "radio",
5
+ "description": "TTDK Radio component with multi-theme support.",
6
+ "stylesheets": [
7
+ {
8
+ "theme": "common",
9
+ "file": "radio.css",
10
+ "importPath": "web/radio/radio.css"
11
+ }
12
+ ],
13
+ "props": {
14
+ "checked": {
15
+ "name": "checked",
16
+ "type": "boolean",
17
+ "optional": true,
18
+ "default": "false",
19
+ "description": "Status apakah radio button sedang dalam kondisi terpilih (checked).",
20
+ "example": null,
21
+ "param": null
22
+ },
23
+ "label": {
24
+ "name": "label",
25
+ "type": "string",
26
+ "optional": true,
27
+ "default": null,
28
+ "description": "Teks label utama yang ditampilkan di samping lingkaran radio.",
29
+ "example": null,
30
+ "param": null
31
+ },
32
+ "description": {
33
+ "name": "description",
34
+ "type": "string",
35
+ "optional": true,
36
+ "default": null,
37
+ "description": "Deskripsi atau teks bantuan yang ditampilkan di bawah label.",
38
+ "example": null,
39
+ "param": null
40
+ },
41
+ "helperText": {
42
+ "name": "helperText",
43
+ "type": "string",
44
+ "optional": true,
45
+ "default": null,
46
+ "description": "Teks bantuan atau keterangan di bawah label (dapat digunakan bergantian dengan description).",
47
+ "example": null,
48
+ "param": null
49
+ },
50
+ "error": {
51
+ "name": "error",
52
+ "type": "boolean | string",
53
+ "optional": true,
54
+ "default": null,
55
+ "description": "Status error visual atau string pesan error.",
56
+ "example": null,
57
+ "param": null
58
+ },
59
+ "errorMessage": {
60
+ "name": "errorMessage",
61
+ "type": "string",
62
+ "optional": true,
63
+ "default": null,
64
+ "description": "Pesan error yang ditampilkan jika validasi form gagal.",
65
+ "example": null,
66
+ "param": null
67
+ },
68
+ "size": {
69
+ "name": "size",
70
+ "type": "'sm' | 'md' | 'lg'",
71
+ "optional": true,
72
+ "default": "md",
73
+ "description": "Skala ukuran radio button: - `'sm'`: Lingkaran 16px, font 13px. - `'md'`: Lingkaran 18px, font 14px (standar). - `'lg'`: Lingkaran 22px, font 16px.",
74
+ "example": null,
75
+ "param": null
76
+ },
77
+ "variant": {
78
+ "name": "variant",
79
+ "type": "'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral'",
80
+ "optional": true,
81
+ "default": "primary",
82
+ "description": "Varian warna semantik saat radio button dipilih: - `'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).",
83
+ "example": null,
84
+ "param": null
85
+ },
86
+ "disabled": {
87
+ "name": "disabled",
88
+ "type": "boolean",
89
+ "optional": true,
90
+ "default": "false",
91
+ "description": "Menonaktifkan interaksi pada radio button.",
92
+ "example": null,
93
+ "param": null
94
+ },
95
+ "required": {
96
+ "name": "required",
97
+ "type": "boolean",
98
+ "optional": true,
99
+ "default": "false",
100
+ "description": "Menandakan bahwa field radio wajib diisi (required) pada formulir.",
101
+ "example": null,
102
+ "param": null
103
+ },
104
+ "name": {
105
+ "name": "name",
106
+ "type": "string",
107
+ "optional": true,
108
+ "default": null,
109
+ "description": "Name atribut untuk elemen HTML `<input type=\"radio\">`. Digunakan untuk mengelompokkan radio button dalam satu grup.",
110
+ "example": null,
111
+ "param": null
112
+ },
113
+ "value": {
114
+ "name": "value",
115
+ "type": "string",
116
+ "optional": true,
117
+ "default": null,
118
+ "description": "Value atribut untuk elemen HTML input.",
119
+ "example": null,
120
+ "param": null
121
+ },
122
+ "id": {
123
+ "name": "id",
124
+ "type": "string",
125
+ "optional": true,
126
+ "default": null,
127
+ "description": "Identifier unik elemen radio button (untuk kaitan dengan label form).",
128
+ "example": null,
129
+ "param": null
130
+ },
131
+ "ui": {
132
+ "name": "ui",
133
+ "type": "UiProps",
134
+ "optional": true,
135
+ "default": null,
136
+ "description": "Kustomisasi visual granular melalui style-like object (+ support pseudo-class: hover, active).",
137
+ "example": null,
138
+ "param": null
139
+ },
140
+ "style": {
141
+ "name": "style",
142
+ "type": "any",
143
+ "optional": true,
144
+ "default": null,
145
+ "description": "Inline CSS style object native.",
146
+ "example": null,
147
+ "param": null
148
+ },
149
+ "controlStyle": {
150
+ "name": "controlStyle",
151
+ "type": "UiProps",
152
+ "optional": true,
153
+ "default": null,
154
+ "description": "Style kustom untuk lingkaran kontrol radio (UiProps).",
155
+ "example": null,
156
+ "param": null
157
+ },
158
+ "controlClass": {
159
+ "name": "controlClass",
160
+ "type": "string",
161
+ "optional": true,
162
+ "default": null,
163
+ "description": "Class CSS kustom untuk lingkaran kontrol radio (Tailwind / class kustom).",
164
+ "example": null,
165
+ "param": null
166
+ },
167
+ "dotStyle": {
168
+ "name": "dotStyle",
169
+ "type": "UiProps",
170
+ "optional": true,
171
+ "default": null,
172
+ "description": "Style kustom untuk titik (dot) di dalam radio button saat checked (UiProps).",
173
+ "example": null,
174
+ "param": null
175
+ },
176
+ "dotClass": {
177
+ "name": "dotClass",
178
+ "type": "string",
179
+ "optional": true,
180
+ "default": null,
181
+ "description": "Class CSS kustom untuk titik (dot) di dalam radio button saat checked (Tailwind / class kustom).",
182
+ "example": null,
183
+ "param": null
184
+ },
185
+ "labelStyle": {
186
+ "name": "labelStyle",
187
+ "type": "UiProps",
188
+ "optional": true,
189
+ "default": null,
190
+ "description": "Style kustom untuk teks label radio (UiProps).",
191
+ "example": null,
192
+ "param": null
193
+ },
194
+ "labelClass": {
195
+ "name": "labelClass",
196
+ "type": "string",
197
+ "optional": true,
198
+ "default": null,
199
+ "description": "Class CSS kustom untuk teks label radio (Tailwind / class kustom).",
200
+ "example": null,
201
+ "param": null
202
+ },
203
+ "descStyle": {
204
+ "name": "descStyle",
205
+ "type": "UiProps",
206
+ "optional": true,
207
+ "default": null,
208
+ "description": "Style kustom untuk teks deskripsi bantuan (UiProps).",
209
+ "example": null,
210
+ "param": null
211
+ },
212
+ "descClass": {
213
+ "name": "descClass",
214
+ "type": "string",
215
+ "optional": true,
216
+ "default": null,
217
+ "description": "Class CSS kustom untuk teks deskripsi bantuan (Tailwind / class kustom).",
218
+ "example": null,
219
+ "param": null
220
+ },
221
+ "helperTextStyle": {
222
+ "name": "helperTextStyle",
223
+ "type": "UiProps",
224
+ "optional": true,
225
+ "default": null,
226
+ "description": "Style kustom untuk elemen helper text (UiProps).",
227
+ "example": null,
228
+ "param": null
229
+ },
230
+ "helperTextClass": {
231
+ "name": "helperTextClass",
232
+ "type": "string",
233
+ "optional": true,
234
+ "default": null,
235
+ "description": "Class CSS kustom untuk elemen helper text.",
236
+ "example": null,
237
+ "param": null
238
+ },
239
+ "errorMessageStyle": {
240
+ "name": "errorMessageStyle",
241
+ "type": "UiProps",
242
+ "optional": true,
243
+ "default": null,
244
+ "description": "Style kustom untuk teks pesan error validasi (UiProps).",
245
+ "example": null,
246
+ "param": null
247
+ },
248
+ "errorMessageClass": {
249
+ "name": "errorMessageClass",
250
+ "type": "string",
251
+ "optional": true,
252
+ "default": null,
253
+ "description": "Class CSS kustom untuk teks pesan error validasi (Tailwind / class kustom).",
254
+ "example": null,
255
+ "param": null
256
+ },
257
+ "onChange": {
258
+ "name": "onChange",
259
+ "type": "(checked: boolean, event?: any) => void",
260
+ "optional": true,
261
+ "default": null,
262
+ "description": "Event handler yang dipanggil saat nilai radio button berubah. Mengembalikan `(checked: boolean, event: Event)`.",
263
+ "example": null,
264
+ "param": null
265
+ },
266
+ "className": {
267
+ "name": "className",
268
+ "type": "string",
269
+ "optional": true,
270
+ "default": null,
271
+ "description": "Class CSS kustom.",
272
+ "example": null,
273
+ "param": null
274
+ },
275
+ "children": {
276
+ "name": "children",
277
+ "type": "any",
278
+ "optional": true,
279
+ "default": null,
280
+ "description": "Slot konten label kustom yang menggantikan prop `label`.",
281
+ "example": null,
282
+ "param": null
283
+ }
284
+ },
285
+ "subInterfaces": {},
286
+ "supportedFrameworks": [
287
+ "react",
288
+ "vue",
289
+ "svelte"
290
+ ],
291
+ "themes": [
292
+ "tw"
293
+ ]
294
+ }
@@ -0,0 +1 @@
1
+ :root,.dark,[data-mode=dark],[data-theme=dark],.ttdk-radio-wrapper,.ttdk-radio-root{--ttdk-radio-bg:var(--ttdk-bg-base-primary);--ttdk-radio-border:var(--ttdk-stroke-subtle);--ttdk-radio-border-hover:var(--ttdk-stroke-strong);--ttdk-radio-ring:color-mix(in oklab, var(--ttdk-brand-default) 25%, transparent);--ttdk-radio-active:var(--ttdk-brand-default);--ttdk-radio-active-hover:var(--ttdk-brand-strong);--ttdk-radio-primary:var(--ttdk-brand-default);--ttdk-radio-primary-hover:var(--ttdk-brand-strong);--ttdk-radio-neutral:var(--ttdk-stroke-strong);--ttdk-radio-neutral-hover:var(--ttdk-color-neutral-700);--ttdk-radio-danger:var(--ttdk-bg-status-error);--ttdk-radio-danger-hover:var(--ttdk-bg-status-error-strong);--ttdk-radio-success:var(--ttdk-bg-status-success);--ttdk-radio-success-hover:var(--ttdk-color-green-700);--ttdk-radio-warning:var(--ttdk-bg-status-warning);--ttdk-radio-warning-hover:var(--ttdk-color-orange-600);--ttdk-radio-info:var(--ttdk-bg-status-info);--ttdk-radio-info-hover:var(--ttdk-color-blue-600);--ttdk-radio-text-title:var(--ttdk-text-icon-primary);--ttdk-radio-text-subtitle:var(--ttdk-text-icon-primary);--ttdk-radio-text-disabled:var(--ttdk-text-icon-disabled);--ttdk-radio-text-error:var(--ttdk-text-icon-status-error);--ttdk-radio-disabled-bg:var(--ttdk-bg-secondary-disabled)}.dark,[data-mode=dark],[data-theme=dark]{--ttdk-radio-neutral-hover:var(--ttdk-color-neutral-600)}.ttdk-radio-wrapper,.ttdk-radio-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-radio-wrapper[data-has-description=true],.ttdk-radio-root[data-has-description=true]{align-items:flex-start}.ttdk-radio-native,.ttdk-radio-input{opacity:0;pointer-events:none;width:0;height:0;margin:0;padding:0;position:absolute}.ttdk-radio-control{background-color:var(--ttdk-radio-bg);border:1.5px solid var(--ttdk-radio-border);box-sizing:border-box;cursor:pointer;pointer-events:auto;border-radius:9999px;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-radio-wrapper[data-has-description=true] .ttdk-radio-control,.ttdk-radio-root[data-has-description=true] .ttdk-radio-control{margin-top:2px}.ttdk-radio-wrapper:not([data-disabled=true]) .ttdk-radio-control:hover,.ttdk-radio-root:not([data-disabled=true]) .ttdk-radio-control:hover{border-color:var(--ttdk-radio-active)}.ttdk-radio-native:focus-visible+.ttdk-radio-control,.ttdk-radio-input:focus-visible+.ttdk-radio-control{box-shadow:0 0 0 3px var(--ttdk-radio-ring)}.ttdk-radio-wrapper[data-checked=true] .ttdk-radio-control,.ttdk-radio-wrapper[data-state=checked] .ttdk-radio-control,.ttdk-radio-root[data-checked=true] .ttdk-radio-control,.ttdk-radio-root[data-state=checked] .ttdk-radio-control{background-color:var(--ttdk-radio-bg);border-color:var(--ttdk-radio-active);border-width:1.5px}.ttdk-radio-wrapper:not([data-disabled=true])[data-checked=true] .ttdk-radio-control:hover,.ttdk-radio-wrapper:not([data-disabled=true])[data-state=checked] .ttdk-radio-control:hover,.ttdk-radio-root:not([data-disabled=true])[data-checked=true] .ttdk-radio-control:hover,.ttdk-radio-root:not([data-disabled=true])[data-state=checked] .ttdk-radio-control:hover{border-color:var(--ttdk-radio-active-hover)}.ttdk-radio-dot{background-color:var(--ttdk-radio-active);border-radius:9999px;flex-shrink:0;animation:.12s ease-out forwards ttdk-radio-pop;display:block}@keyframes ttdk-radio-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.ttdk-radio-wrapper[data-variant=danger],.ttdk-radio-wrapper[data-color=danger],.ttdk-radio-root[data-variant=danger],.ttdk-radio-root[data-color=danger]{--ttdk-radio-active:var(--ttdk-radio-danger);--ttdk-radio-active-hover:var(--ttdk-radio-danger-hover);--ttdk-radio-ring:color-mix(in oklab, var(--ttdk-radio-danger) 25%, transparent)}.ttdk-radio-wrapper[data-variant=success],.ttdk-radio-wrapper[data-color=success],.ttdk-radio-root[data-variant=success],.ttdk-radio-root[data-color=success]{--ttdk-radio-active:var(--ttdk-radio-success);--ttdk-radio-active-hover:var(--ttdk-radio-success-hover);--ttdk-radio-ring:color-mix(in oklab, var(--ttdk-radio-success) 25%, transparent)}.ttdk-radio-wrapper[data-variant=warning],.ttdk-radio-wrapper[data-color=warning],.ttdk-radio-root[data-variant=warning],.ttdk-radio-root[data-color=warning]{--ttdk-radio-active:var(--ttdk-radio-warning);--ttdk-radio-active-hover:var(--ttdk-radio-warning-hover);--ttdk-radio-ring:color-mix(in oklab, var(--ttdk-radio-warning) 25%, transparent)}.ttdk-radio-wrapper[data-variant=info],.ttdk-radio-wrapper[data-color=info],.ttdk-radio-root[data-variant=info],.ttdk-radio-root[data-color=info]{--ttdk-radio-active:var(--ttdk-radio-info);--ttdk-radio-active-hover:var(--ttdk-radio-info-hover);--ttdk-radio-ring:color-mix(in oklab, var(--ttdk-radio-info) 25%, transparent)}.ttdk-radio-wrapper[data-variant=neutral],.ttdk-radio-wrapper[data-color=neutral],.ttdk-radio-root[data-variant=neutral],.ttdk-radio-root[data-color=neutral]{--ttdk-radio-active:var(--ttdk-radio-neutral);--ttdk-radio-active-hover:var(--ttdk-radio-neutral-hover);--ttdk-radio-ring:color-mix(in oklab, var(--ttdk-radio-neutral) 25%, transparent)}.ttdk-radio-wrapper[data-disabled=true],.ttdk-radio-root[data-disabled=true]{pointer-events:none;cursor:not-allowed!important}.ttdk-radio-wrapper[data-disabled=true] .ttdk-radio-control,.ttdk-radio-root[data-disabled=true] .ttdk-radio-control{background-color:var(--ttdk-radio-disabled-bg)!important;border:1.5px solid var(--ttdk-radio-border)!important;box-shadow:none!important}.ttdk-radio-wrapper[data-disabled=true] .ttdk-radio-dot,.ttdk-radio-root[data-disabled=true] .ttdk-radio-dot{background-color:var(--ttdk-radio-text-disabled)!important}.ttdk-radio-wrapper[data-disabled=true] .ttdk-radio-label,.ttdk-radio-root[data-disabled=true] .ttdk-radio-label,.ttdk-radio-wrapper[data-disabled=true] .ttdk-radio-desc,.ttdk-radio-root[data-disabled=true] .ttdk-radio-desc{color:var(--ttdk-radio-text-disabled)!important}.ttdk-radio-wrapper[data-error=true] .ttdk-radio-control,.ttdk-radio-root[data-error=true] .ttdk-radio-control,.ttdk-radio-wrapper[data-error=true]:not([data-disabled=true]) .ttdk-radio-control:hover,.ttdk-radio-root[data-error=true]:not([data-disabled=true]) .ttdk-radio-control:hover{border-color:var(--ttdk-radio-text-error)}.ttdk-radio-wrapper[data-error=true] .ttdk-radio-native:focus-visible+.ttdk-radio-control,.ttdk-radio-wrapper[data-error=true] .ttdk-radio-input:focus-visible+.ttdk-radio-control,.ttdk-radio-root[data-error=true] .ttdk-radio-native:focus-visible+.ttdk-radio-control,.ttdk-radio-root[data-error=true] .ttdk-radio-input:focus-visible+.ttdk-radio-control{box-shadow:0 0 0 3px color-mix(in oklab, var(--ttdk-radio-danger) 25%, transparent)}.ttdk-radio-wrapper[data-error=true] .ttdk-radio-label,.ttdk-radio-root[data-error=true] .ttdk-radio-label{color:var(--ttdk-radio-text-error)}.ttdk-radio-label-wrapper{pointer-events:auto;flex-direction:column;gap:2px;display:flex}.ttdk-radio-label{color:var(--ttdk-ui-color,var(--ttdk-radio-text-title));letter-spacing:.5px;cursor:pointer;pointer-events:auto;font-size:14px;font-weight:600;line-height:1.25;transition:color .15s}.ttdk-radio-desc,.ttdk-radio-helper-text{color:var(--ttdk-ui-color,var(--ttdk-radio-text-subtitle));letter-spacing:.25px;cursor:default;pointer-events:auto;font-size:14px;font-weight:400;line-height:1.5;transition:color .15s}.ttdk-radio-error-msg{color:var(--ttdk-radio-text-error);cursor:default;pointer-events:auto;margin-top:2px;font-size:12px;font-weight:500;line-height:1.4}.ttdk-radio-wrapper[data-size=sm] .ttdk-radio-control,.ttdk-radio-root[data-size=sm] .ttdk-radio-control{width:16px;height:16px}.ttdk-radio-wrapper[data-size=sm] .ttdk-radio-dot,.ttdk-radio-root[data-size=sm] .ttdk-radio-dot{width:6px;height:6px}.ttdk-radio-wrapper[data-size=sm] .ttdk-radio-label,.ttdk-radio-root[data-size=sm] .ttdk-radio-label{font-size:13px;line-height:1.25}.ttdk-radio-wrapper[data-size=sm] .ttdk-radio-desc,.ttdk-radio-root[data-size=sm] .ttdk-radio-desc{font-size:12px;line-height:1.4}.ttdk-radio-wrapper[data-size=md] .ttdk-radio-control,.ttdk-radio-root[data-size=md] .ttdk-radio-control{width:18px;height:18px}.ttdk-radio-wrapper[data-size=md] .ttdk-radio-dot,.ttdk-radio-root[data-size=md] .ttdk-radio-dot{width:8px;height:8px}.ttdk-radio-wrapper[data-size=md] .ttdk-radio-label,.ttdk-radio-root[data-size=md] .ttdk-radio-label{letter-spacing:.5px;font-size:14px;font-weight:600;line-height:1.25}.ttdk-radio-wrapper[data-size=md] .ttdk-radio-desc,.ttdk-radio-root[data-size=md] .ttdk-radio-desc{letter-spacing:.25px;font-size:14px;font-weight:400;line-height:1.5}.ttdk-radio-wrapper[data-size=lg] .ttdk-radio-control,.ttdk-radio-root[data-size=lg] .ttdk-radio-control{width:22px;height:22px}.ttdk-radio-wrapper[data-size=lg][data-has-description=true] .ttdk-radio-control,.ttdk-radio-root[data-size=lg][data-has-description=true] .ttdk-radio-control{margin-top:2px}.ttdk-radio-wrapper[data-size=lg] .ttdk-radio-dot,.ttdk-radio-root[data-size=lg] .ttdk-radio-dot{width:10px;height:10px}.ttdk-radio-wrapper[data-size=lg] .ttdk-radio-label,.ttdk-radio-root[data-size=lg] .ttdk-radio-label{font-size:16px;line-height:1.3}.ttdk-radio-wrapper[data-size=lg] .ttdk-radio-desc,.ttdk-radio-root[data-size=lg] .ttdk-radio-desc{font-size:15px;line-height:1.5}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-background]:hover,.ttdk-radio-root[style*=--ttdk-ui-hover-background]:hover{background:var(--ttdk-ui-hover-background)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-color]:hover,.ttdk-radio-root[style*=--ttdk-ui-hover-color]:hover,.ttdk-radio-wrapper[style*=--ttdk-ui-hover-color]:hover .ttdk-radio-label,.ttdk-radio-root[style*=--ttdk-ui-hover-color]:hover .ttdk-radio-label{color:var(--ttdk-ui-hover-color)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-color]:hover .ttdk-radio-control,.ttdk-radio-root[style*=--ttdk-ui-hover-color]:hover .ttdk-radio-control{border-color:var(--ttdk-ui-hover-color)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-border-color]:hover,.ttdk-radio-root[style*=--ttdk-ui-hover-border-color]:hover{border-color:var(--ttdk-ui-hover-border-color)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-border\:]:hover,.ttdk-radio-root[style*=--ttdk-ui-hover-border\:]:hover{border:var(--ttdk-ui-hover-border)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-box-shadow]:hover,.ttdk-radio-root[style*=--ttdk-ui-hover-box-shadow]:hover{box-shadow:var(--ttdk-ui-hover-box-shadow)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-opacity]:hover,.ttdk-radio-root[style*=--ttdk-ui-hover-opacity]:hover{opacity:var(--ttdk-ui-hover-opacity)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-hover-transform]:hover,.ttdk-radio-root[style*=--ttdk-ui-hover-transform]:hover{transform:var(--ttdk-ui-hover-transform)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-active-background]:active,.ttdk-radio-root[style*=--ttdk-ui-active-background]:active{background:var(--ttdk-ui-active-background)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-active-color]:active,.ttdk-radio-root[style*=--ttdk-ui-active-color]:active{color:var(--ttdk-ui-active-color)!important}.ttdk-radio-wrapper[style*=--ttdk-ui-active-opacity]:active,.ttdk-radio-root[style*=--ttdk-ui-active-opacity]:active{opacity:var(--ttdk-ui-active-opacity)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-background]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-background],.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-background]{background:var(--ttdk-ui-hover-background)!important;background-color:var(--ttdk-ui-hover-background)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-border-color]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-border-color],.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-border-color]{border-color:var(--ttdk-ui-hover-border-color)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-border\:]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-border\:],.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-border\:]{border:var(--ttdk-ui-hover-border)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-box-shadow]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-box-shadow],.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-box-shadow]{box-shadow:var(--ttdk-ui-hover-box-shadow)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-opacity]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-opacity],.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-opacity]{opacity:var(--ttdk-ui-hover-opacity)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-transform]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-transform],.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-transform]{transform:var(--ttdk-ui-hover-transform)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-color]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-color],.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-color]{color:var(--ttdk-ui-hover-color)!important}.ttdk-radio-control[style*=--ttdk-ui-hover-color]:hover .ttdk-radio-dot,.ttdk-radio-wrapper:hover .ttdk-radio-control[style*=--ttdk-ui-hover-color] .ttdk-radio-dot,.ttdk-radio-root:hover .ttdk-radio-control[style*=--ttdk-ui-hover-color] .ttdk-radio-dot{background-color:var(--ttdk-ui-hover-color)!important}.ttdk-radio-control:hover .ttdk-radio-dot[style*=--ttdk-ui-hover-background],.ttdk-radio-wrapper:hover .ttdk-radio-dot[style*=--ttdk-ui-hover-background],.ttdk-radio-root:hover .ttdk-radio-dot[style*=--ttdk-ui-hover-background]{background-color:var(--ttdk-ui-hover-background)!important}.ttdk-radio-control:hover .ttdk-radio-dot[style*=--ttdk-ui-hover-color],.ttdk-radio-wrapper:hover .ttdk-radio-dot[style*=--ttdk-ui-hover-color],.ttdk-radio-root:hover .ttdk-radio-dot[style*=--ttdk-ui-hover-color]{background-color:var(--ttdk-ui-hover-color)!important}.ttdk-radio-label[style*=--ttdk-ui-hover-color]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-label[style*=--ttdk-ui-hover-color],.ttdk-radio-root:hover .ttdk-radio-label[style*=--ttdk-ui-hover-color]{color:var(--ttdk-ui-hover-color)!important}.ttdk-radio-label[style*=--ttdk-ui-hover-opacity]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-label[style*=--ttdk-ui-hover-opacity],.ttdk-radio-root:hover .ttdk-radio-label[style*=--ttdk-ui-hover-opacity]{opacity:var(--ttdk-ui-hover-opacity)!important}.ttdk-radio-label[style*=--ttdk-ui-active-color]:active,.ttdk-radio-wrapper:active .ttdk-radio-label[style*=--ttdk-ui-active-color],.ttdk-radio-root:active .ttdk-radio-label[style*=--ttdk-ui-active-color]{color:var(--ttdk-ui-active-color)!important}.ttdk-radio-desc[style*=--ttdk-ui-hover-color],.ttdk-radio-helper-text[style*=--ttdk-ui-hover-color]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-desc[style*=--ttdk-ui-hover-color],.ttdk-radio-helper-text[style*=--ttdk-ui-hover-color],.ttdk-radio-root:hover .ttdk-radio-desc[style*=--ttdk-ui-hover-color],.ttdk-radio-helper-text[style*=--ttdk-ui-hover-color]{color:var(--ttdk-ui-hover-color)!important}.ttdk-radio-desc[style*=--ttdk-ui-hover-opacity],.ttdk-radio-helper-text[style*=--ttdk-ui-hover-opacity]:hover,.ttdk-radio-wrapper:hover .ttdk-radio-desc[style*=--ttdk-ui-hover-opacity],.ttdk-radio-helper-text[style*=--ttdk-ui-hover-opacity],.ttdk-radio-root:hover .ttdk-radio-desc[style*=--ttdk-ui-hover-opacity],.ttdk-radio-helper-text[style*=--ttdk-ui-hover-opacity]{opacity:var(--ttdk-ui-hover-opacity)!important}