@ttdk-design-system/library-svelte 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 (270) hide show
  1. package/AI_GUIDE.md +6518 -0
  2. package/dist/core/index.d.ts +2 -0
  3. package/dist/core/index.js +2 -0
  4. package/dist/core/tailwind-preset.cjs +62 -0
  5. package/dist/core/tailwind-preset.d.cts +63 -0
  6. package/dist/core/tailwind-preset.d.ts +74 -0
  7. package/dist/core/tailwind-preset.js +79 -0
  8. package/dist/core/theme/tokens.css +663 -0
  9. package/dist/core/types.d.ts +152 -0
  10. package/dist/core/types.js +735 -0
  11. package/dist/index.d.ts +14 -0
  12. package/dist/index.js +15 -0
  13. package/dist/tailwind-preset.cjs +62 -0
  14. package/dist/tailwind-preset.d.cts +63 -0
  15. package/dist/tailwind-preset.d.ts +74 -0
  16. package/dist/tailwind-preset.js +79 -0
  17. package/dist/types.d.ts +1 -0
  18. package/dist/types.js +1 -0
  19. package/dist/web/accordion/AI_GUIDE.md +149 -0
  20. package/dist/web/accordion/accordion.css +1 -0
  21. package/dist/web/accordion/accordion.svelte +217 -0
  22. package/dist/web/accordion/accordion.svelte.d.ts +224 -0
  23. package/dist/web/accordion/index.d.ts +2 -0
  24. package/dist/web/accordion/index.js +2 -0
  25. package/dist/web/accordion/manifest.json +351 -0
  26. package/dist/web/alert/AI_GUIDE.md +139 -0
  27. package/dist/web/alert/alert.css +1 -0
  28. package/dist/web/alert/alert.svelte +175 -0
  29. package/dist/web/alert/alert.svelte.d.ts +165 -0
  30. package/dist/web/alert/index.d.ts +2 -0
  31. package/dist/web/alert/index.js +2 -0
  32. package/dist/web/alert/manifest.json +240 -0
  33. package/dist/web/avatar/AI_GUIDE.md +118 -0
  34. package/dist/web/avatar/avatar.css +1 -0
  35. package/dist/web/avatar/avatar.svelte +108 -0
  36. package/dist/web/avatar/avatar.svelte.d.ts +147 -0
  37. package/dist/web/avatar/index.d.ts +2 -0
  38. package/dist/web/avatar/index.js +2 -0
  39. package/dist/web/avatar/manifest.json +195 -0
  40. package/dist/web/badge/AI_GUIDE.md +94 -0
  41. package/dist/web/badge/badge.css +1 -0
  42. package/dist/web/badge/badge.svelte +50 -0
  43. package/dist/web/badge/badge.svelte.d.ts +111 -0
  44. package/dist/web/badge/index.d.ts +2 -0
  45. package/dist/web/badge/index.js +2 -0
  46. package/dist/web/badge/manifest.json +141 -0
  47. package/dist/web/banner/AI_GUIDE.md +130 -0
  48. package/dist/web/banner/banner.css +1 -0
  49. package/dist/web/banner/banner.svelte +180 -0
  50. package/dist/web/banner/banner.svelte.d.ts +172 -0
  51. package/dist/web/banner/index.d.ts +2 -0
  52. package/dist/web/banner/index.js +2 -0
  53. package/dist/web/banner/manifest.json +240 -0
  54. package/dist/web/breadcrumb/AI_GUIDE.md +120 -0
  55. package/dist/web/breadcrumb/breadcrumb.css +1 -0
  56. package/dist/web/breadcrumb/breadcrumb.svelte +168 -0
  57. package/dist/web/breadcrumb/breadcrumb.svelte.d.ts +141 -0
  58. package/dist/web/breadcrumb/index.d.ts +2 -0
  59. package/dist/web/breadcrumb/index.js +2 -0
  60. package/dist/web/breadcrumb/manifest.json +225 -0
  61. package/dist/web/button/AI_GUIDE.md +121 -0
  62. package/dist/web/button/button.css +1 -0
  63. package/dist/web/button/button.svelte +154 -0
  64. package/dist/web/button/button.svelte.d.ts +159 -0
  65. package/dist/web/button/index.d.ts +2 -0
  66. package/dist/web/button/index.js +2 -0
  67. package/dist/web/button/manifest.json +177 -0
  68. package/dist/web/calendar/AI_GUIDE.md +151 -0
  69. package/dist/web/calendar/calendar.css +1 -0
  70. package/dist/web/calendar/calendar.svelte +1091 -0
  71. package/dist/web/calendar/calendar.svelte.d.ts +268 -0
  72. package/dist/web/calendar/index.d.ts +2 -0
  73. package/dist/web/calendar/index.js +2 -0
  74. package/dist/web/calendar/manifest.json +470 -0
  75. package/dist/web/card/AI_GUIDE.md +133 -0
  76. package/dist/web/card/card.css +1 -0
  77. package/dist/web/card/card.svelte +217 -0
  78. package/dist/web/card/card.svelte.d.ts +242 -0
  79. package/dist/web/card/index.d.ts +2 -0
  80. package/dist/web/card/index.js +2 -0
  81. package/dist/web/card/manifest.json +357 -0
  82. package/dist/web/checkbox/AI_GUIDE.md +146 -0
  83. package/dist/web/checkbox/checkbox.css +1 -0
  84. package/dist/web/checkbox/checkbox.svelte +131 -0
  85. package/dist/web/checkbox/checkbox.svelte.d.ts +199 -0
  86. package/dist/web/checkbox/index.d.ts +2 -0
  87. package/dist/web/checkbox/index.js +2 -0
  88. package/dist/web/checkbox/manifest.json +294 -0
  89. package/dist/web/chip/AI_GUIDE.md +186 -0
  90. package/dist/web/chip/chip.css +1 -0
  91. package/dist/web/chip/chip.svelte +113 -0
  92. package/dist/web/chip/chip.svelte.d.ts +145 -0
  93. package/dist/web/chip/index.d.ts +2 -0
  94. package/dist/web/chip/index.js +2 -0
  95. package/dist/web/chip/manifest.json +186 -0
  96. package/dist/web/dropdown/AI_GUIDE.md +167 -0
  97. package/dist/web/dropdown/dropdown.css +1 -0
  98. package/dist/web/dropdown/dropdown.svelte +844 -0
  99. package/dist/web/dropdown/dropdown.svelte.d.ts +361 -0
  100. package/dist/web/dropdown/index.d.ts +2 -0
  101. package/dist/web/dropdown/index.js +2 -0
  102. package/dist/web/dropdown/manifest.json +576 -0
  103. package/dist/web/flex/AI_GUIDE.md +113 -0
  104. package/dist/web/flex/flex-item.svelte +37 -0
  105. package/dist/web/flex/flex-item.svelte.d.ts +96 -0
  106. package/dist/web/flex/flex.css +1 -0
  107. package/dist/web/flex/flex.svelte +39 -0
  108. package/dist/web/flex/flex.svelte.d.ts +104 -0
  109. package/dist/web/flex/index.d.ts +3 -0
  110. package/dist/web/flex/index.js +3 -0
  111. package/dist/web/flex/manifest.json +162 -0
  112. package/dist/web/form/index.d.ts +1 -0
  113. package/dist/web/form/index.js +2 -0
  114. package/dist/web/grid/AI_GUIDE.md +112 -0
  115. package/dist/web/grid/grid-item.svelte +41 -0
  116. package/dist/web/grid/grid-item.svelte.d.ts +112 -0
  117. package/dist/web/grid/grid.css +1 -0
  118. package/dist/web/grid/grid.svelte +37 -0
  119. package/dist/web/grid/grid.svelte.d.ts +96 -0
  120. package/dist/web/grid/index.d.ts +3 -0
  121. package/dist/web/grid/index.js +3 -0
  122. package/dist/web/grid/manifest.json +153 -0
  123. package/dist/web/index.d.ts +58 -0
  124. package/dist/web/index.js +57 -0
  125. package/dist/web/input/AI_GUIDE.md +159 -0
  126. package/dist/web/input/index.d.ts +2 -0
  127. package/dist/web/input/index.js +2 -0
  128. package/dist/web/input/input.css +1 -0
  129. package/dist/web/input/input.svelte +283 -0
  130. package/dist/web/input/input.svelte.d.ts +283 -0
  131. package/dist/web/input/manifest.json +465 -0
  132. package/dist/web/input-number/AI_GUIDE.md +164 -0
  133. package/dist/web/input-number/index.d.ts +2 -0
  134. package/dist/web/input-number/index.js +2 -0
  135. package/dist/web/input-number/input-number.css +1 -0
  136. package/dist/web/input-number/input-number.svelte +783 -0
  137. package/dist/web/input-number/input-number.svelte.d.ts +352 -0
  138. package/dist/web/input-number/manifest.json +575 -0
  139. package/dist/web/modal/AI_GUIDE.md +171 -0
  140. package/dist/web/modal/index.d.ts +2 -0
  141. package/dist/web/modal/index.js +2 -0
  142. package/dist/web/modal/manifest.json +375 -0
  143. package/dist/web/modal/modal.css +1 -0
  144. package/dist/web/modal/modal.svelte +333 -0
  145. package/dist/web/modal/modal.svelte.d.ts +231 -0
  146. package/dist/web/pagination/AI_GUIDE.md +148 -0
  147. package/dist/web/pagination/index.d.ts +19 -0
  148. package/dist/web/pagination/index.js +19 -0
  149. package/dist/web/pagination/manifest.json +432 -0
  150. package/dist/web/pagination/pagination-content.svelte +25 -0
  151. package/dist/web/pagination/pagination-content.svelte.d.ts +36 -0
  152. package/dist/web/pagination/pagination-ellipsis.svelte +38 -0
  153. package/dist/web/pagination/pagination-ellipsis.svelte.d.ts +35 -0
  154. package/dist/web/pagination/pagination-first.svelte +105 -0
  155. package/dist/web/pagination/pagination-first.svelte.d.ts +74 -0
  156. package/dist/web/pagination/pagination-item.svelte +25 -0
  157. package/dist/web/pagination/pagination-item.svelte.d.ts +36 -0
  158. package/dist/web/pagination/pagination-last.svelte +105 -0
  159. package/dist/web/pagination/pagination-last.svelte.d.ts +74 -0
  160. package/dist/web/pagination/pagination-link.svelte +67 -0
  161. package/dist/web/pagination/pagination-link.svelte.d.ts +69 -0
  162. package/dist/web/pagination/pagination-next.svelte +99 -0
  163. package/dist/web/pagination/pagination-next.svelte.d.ts +75 -0
  164. package/dist/web/pagination/pagination-previous.svelte +99 -0
  165. package/dist/web/pagination/pagination-previous.svelte.d.ts +75 -0
  166. package/dist/web/pagination/pagination.css +1 -0
  167. package/dist/web/pagination/pagination.svelte +471 -0
  168. package/dist/web/pagination/pagination.svelte.d.ts +256 -0
  169. package/dist/web/popover/AI_GUIDE.md +163 -0
  170. package/dist/web/popover/index.d.ts +3 -0
  171. package/dist/web/popover/index.js +3 -0
  172. package/dist/web/popover/manifest.json +396 -0
  173. package/dist/web/popover/popover.css +1 -0
  174. package/dist/web/popover/popover.svelte +497 -0
  175. package/dist/web/popover/popover.svelte.d.ts +116 -0
  176. package/dist/web/radio/AI_GUIDE.md +155 -0
  177. package/dist/web/radio/index.d.ts +2 -0
  178. package/dist/web/radio/index.js +2 -0
  179. package/dist/web/radio/manifest.json +294 -0
  180. package/dist/web/radio/radio.css +1 -0
  181. package/dist/web/radio/radio.svelte +123 -0
  182. package/dist/web/radio/radio.svelte.d.ts +192 -0
  183. package/dist/web/selectbox/AI_GUIDE.md +216 -0
  184. package/dist/web/selectbox/index.d.ts +2 -0
  185. package/dist/web/selectbox/index.js +2 -0
  186. package/dist/web/selectbox/manifest.json +477 -0
  187. package/dist/web/selectbox/selectbox.css +1 -0
  188. package/dist/web/selectbox/selectbox.svelte +704 -0
  189. package/dist/web/selectbox/selectbox.svelte.d.ts +296 -0
  190. package/dist/web/sonner/AI_GUIDE.md +98 -0
  191. package/dist/web/sonner/index.d.ts +46 -0
  192. package/dist/web/sonner/index.js +64 -0
  193. package/dist/web/sonner/manifest.json +132 -0
  194. package/dist/web/sonner/sonner.css +1 -0
  195. package/dist/web/sonner/sonner.svelte +85 -0
  196. package/dist/web/sonner/sonner.svelte.d.ts +105 -0
  197. package/dist/web/table/AI_GUIDE.md +145 -0
  198. package/dist/web/table/index.d.ts +21 -0
  199. package/dist/web/table/index.js +22 -0
  200. package/dist/web/table/manifest.json +168 -0
  201. package/dist/web/table/table-body.svelte +23 -0
  202. package/dist/web/table/table-body.svelte.d.ts +36 -0
  203. package/dist/web/table/table-caption.svelte +23 -0
  204. package/dist/web/table/table-caption.svelte.d.ts +36 -0
  205. package/dist/web/table/table-cell.svelte +35 -0
  206. package/dist/web/table/table-cell.svelte.d.ts +57 -0
  207. package/dist/web/table/table-empty.svelte +56 -0
  208. package/dist/web/table/table-empty.svelte.d.ts +65 -0
  209. package/dist/web/table/table-footer.svelte +23 -0
  210. package/dist/web/table/table-footer.svelte.d.ts +36 -0
  211. package/dist/web/table/table-head.svelte +39 -0
  212. package/dist/web/table/table-head.svelte.d.ts +58 -0
  213. package/dist/web/table/table-header.svelte +23 -0
  214. package/dist/web/table/table-header.svelte.d.ts +36 -0
  215. package/dist/web/table/table-row.svelte +33 -0
  216. package/dist/web/table/table-row.svelte.d.ts +52 -0
  217. package/dist/web/table/table.css +1 -0
  218. package/dist/web/table/table.svelte +178 -0
  219. package/dist/web/table/table.svelte.d.ts +120 -0
  220. package/dist/web/tabs/AI_GUIDE.md +150 -0
  221. package/dist/web/tabs/index.d.ts +2 -0
  222. package/dist/web/tabs/index.js +2 -0
  223. package/dist/web/tabs/manifest.json +315 -0
  224. package/dist/web/tabs/tabs.css +1 -0
  225. package/dist/web/tabs/tabs.svelte +138 -0
  226. package/dist/web/tabs/tabs.svelte.d.ts +204 -0
  227. package/dist/web/text/AI_GUIDE.md +129 -0
  228. package/dist/web/text/index.d.ts +2 -0
  229. package/dist/web/text/index.js +2 -0
  230. package/dist/web/text/manifest.json +195 -0
  231. package/dist/web/text/text.css +1 -0
  232. package/dist/web/text/text.svelte +515 -0
  233. package/dist/web/text/text.svelte.d.ts +168 -0
  234. package/dist/web/textarea/AI_GUIDE.md +141 -0
  235. package/dist/web/textarea/index.d.ts +2 -0
  236. package/dist/web/textarea/index.js +2 -0
  237. package/dist/web/textarea/manifest.json +438 -0
  238. package/dist/web/textarea/textarea.css +1 -0
  239. package/dist/web/textarea/textarea.svelte +224 -0
  240. package/dist/web/textarea/textarea.svelte.d.ts +274 -0
  241. package/dist/web/tooltip/AI_GUIDE.md +110 -0
  242. package/dist/web/tooltip/index.d.ts +2 -0
  243. package/dist/web/tooltip/index.js +2 -0
  244. package/dist/web/tooltip/manifest.json +222 -0
  245. package/dist/web/tooltip/tooltip.css +1 -0
  246. package/dist/web/tooltip/tooltip.svelte +292 -0
  247. package/dist/web/tooltip/tooltip.svelte.d.ts +140 -0
  248. package/dist/webview/bottomsheet/AI_GUIDE.md +141 -0
  249. package/dist/webview/bottomsheet/bottomsheet.css +1 -0
  250. package/dist/webview/bottomsheet/bottomsheet.svelte +462 -0
  251. package/dist/webview/bottomsheet/bottomsheet.svelte.d.ts +200 -0
  252. package/dist/webview/bottomsheet/index.d.ts +4 -0
  253. package/dist/webview/bottomsheet/index.js +3 -0
  254. package/dist/webview/bottomsheet/manifest.json +377 -0
  255. package/dist/webview/button/AI_GUIDE.md +79 -0
  256. package/dist/webview/button/button-ios.css +1 -0
  257. package/dist/webview/button/button-ios.svelte +58 -0
  258. package/dist/webview/button/button-ios.svelte.d.ts +114 -0
  259. package/dist/webview/button/button-material.css +1 -0
  260. package/dist/webview/button/button-material.svelte +58 -0
  261. package/dist/webview/button/button-material.svelte.d.ts +114 -0
  262. package/dist/webview/button/index.d.ts +6 -0
  263. package/dist/webview/button/index.js +4 -0
  264. package/dist/webview/button/manifest.json +148 -0
  265. package/dist/webview/index.d.ts +6 -0
  266. package/dist/webview/index.js +6 -0
  267. package/llms.txt +6518 -0
  268. package/package.json +709 -4
  269. package/ttdk-manifest.json +10188 -0
  270. package/README.md +0 -3
@@ -0,0 +1,477 @@
1
+ {
2
+ "name": "@ttdk-design-system/selectbox",
3
+ "component": "Selectbox",
4
+ "folder": "selectbox",
5
+ "description": "Komponen Selectbox TTDK sesuai spesifikasi Desain: - Single Select dengan Checkmark indicator dan Active Teal border (#00A3A6) - Multi-Select dengan Checkbox list, Chip tags (Label ✕), dan Action footer (Reset & Terapkan) - Searchable filter bar dengan input Cari 🔍 - Visual States: Default, Active/Open, Filled, Error (#FF3A39), Disabled (#E4E5E7)",
6
+ "stylesheets": [
7
+ {
8
+ "theme": "common",
9
+ "file": "selectbox.css",
10
+ "importPath": "web/selectbox/selectbox.css"
11
+ }
12
+ ],
13
+ "props": {
14
+ "label": {
15
+ "name": "label",
16
+ "type": "string",
17
+ "optional": true,
18
+ "default": null,
19
+ "description": "Teks label judul field yang ditampilkan di atas selectbox (14px Semibold, #141313).",
20
+ "example": null,
21
+ "param": null
22
+ },
23
+ "labelStyle": {
24
+ "name": "labelStyle",
25
+ "type": "UiProps",
26
+ "optional": true,
27
+ "default": null,
28
+ "description": "Style kustom untuk elemen label judul field (UiProps).",
29
+ "example": null,
30
+ "param": null
31
+ },
32
+ "labelClass": {
33
+ "name": "labelClass",
34
+ "type": "string",
35
+ "optional": true,
36
+ "default": null,
37
+ "description": "Class CSS kustom untuk elemen label judul field.",
38
+ "example": null,
39
+ "param": null
40
+ },
41
+ "controlStyle": {
42
+ "name": "controlStyle",
43
+ "type": "UiProps",
44
+ "optional": true,
45
+ "default": null,
46
+ "description": "Style kustom untuk elemen trigger kontrol selectbox (UiProps).",
47
+ "example": null,
48
+ "param": null
49
+ },
50
+ "controlClass": {
51
+ "name": "controlClass",
52
+ "type": "string",
53
+ "optional": true,
54
+ "default": null,
55
+ "description": "Class CSS kustom untuk elemen trigger kontrol selectbox.",
56
+ "example": null,
57
+ "param": null
58
+ },
59
+ "menuStyle": {
60
+ "name": "menuStyle",
61
+ "type": "UiProps",
62
+ "optional": true,
63
+ "default": null,
64
+ "description": "Style kustom untuk elemen menu dropdown popover (UiProps).",
65
+ "example": null,
66
+ "param": null
67
+ },
68
+ "menuClass": {
69
+ "name": "menuClass",
70
+ "type": "string",
71
+ "optional": true,
72
+ "default": null,
73
+ "description": "Class CSS kustom untuk elemen menu dropdown popover.",
74
+ "example": null,
75
+ "param": null
76
+ },
77
+ "listStyle": {
78
+ "name": "listStyle",
79
+ "type": "UiProps",
80
+ "optional": true,
81
+ "default": null,
82
+ "description": "Alias untuk menuStyle (konsistensi dengan Dropdown listStyle).",
83
+ "example": null,
84
+ "param": null
85
+ },
86
+ "listClass": {
87
+ "name": "listClass",
88
+ "type": "string",
89
+ "optional": true,
90
+ "default": null,
91
+ "description": "Class CSS kustom untuk opsi list dropdown (atau alias menuClass).",
92
+ "example": null,
93
+ "param": null
94
+ },
95
+ "errorMessageStyle": {
96
+ "name": "errorMessageStyle",
97
+ "type": "UiProps",
98
+ "optional": true,
99
+ "default": null,
100
+ "description": "Style kustom untuk elemen pesan error validasi (UiProps).",
101
+ "example": null,
102
+ "param": null
103
+ },
104
+ "errorMessageClass": {
105
+ "name": "errorMessageClass",
106
+ "type": "string",
107
+ "optional": true,
108
+ "default": null,
109
+ "description": "Class CSS kustom untuk elemen pesan error validasi.",
110
+ "example": null,
111
+ "param": null
112
+ },
113
+ "helperTextStyle": {
114
+ "name": "helperTextStyle",
115
+ "type": "UiProps",
116
+ "optional": true,
117
+ "default": null,
118
+ "description": "Style kustom untuk elemen helper text (UiProps).",
119
+ "example": null,
120
+ "param": null
121
+ },
122
+ "helperTextClass": {
123
+ "name": "helperTextClass",
124
+ "type": "string",
125
+ "optional": true,
126
+ "default": null,
127
+ "description": "Class CSS kustom untuk elemen helper text.",
128
+ "example": null,
129
+ "param": null
130
+ },
131
+ "optional": {
132
+ "name": "optional",
133
+ "type": "boolean",
134
+ "optional": true,
135
+ "default": "false",
136
+ "description": "Menandai field sebagai opsi opsional dengan menambahkan teks '(Opsional)' (12px Regular, #9698A2).",
137
+ "example": null,
138
+ "param": null
139
+ },
140
+ "optionalText": {
141
+ "name": "optionalText",
142
+ "type": "string",
143
+ "optional": true,
144
+ "default": "(Opsional)",
145
+ "description": "Kustomisasi teks keterangan opsional.",
146
+ "example": null,
147
+ "param": null
148
+ },
149
+ "placeholder": {
150
+ "name": "placeholder",
151
+ "type": "string",
152
+ "optional": true,
153
+ "default": "Pilih dropdown menu",
154
+ "description": "Teks petunjuk saat belum ada opsi yang dipilih.",
155
+ "example": null,
156
+ "param": null
157
+ },
158
+ "value": {
159
+ "name": "value",
160
+ "type": "any",
161
+ "optional": true,
162
+ "default": null,
163
+ "description": "Nilai terpilih saat ini (single string/number atau array nilai untuk mode multiple).",
164
+ "example": null,
165
+ "param": null
166
+ },
167
+ "defaultValue": {
168
+ "name": "defaultValue",
169
+ "type": "any",
170
+ "optional": true,
171
+ "default": null,
172
+ "description": "Nilai awal tidak terkontrol (uncontrolled initial value).",
173
+ "example": null,
174
+ "param": null
175
+ },
176
+ "options": {
177
+ "name": "options",
178
+ "type": "Array<SelectboxOption | string>",
179
+ "optional": true,
180
+ "default": null,
181
+ "description": "Daftar pilihan opsi dropdown. Dapat berupa array of object `{ label, value }` atau array of string.",
182
+ "example": null,
183
+ "param": null
184
+ },
185
+ "multiple": {
186
+ "name": "multiple",
187
+ "type": "boolean",
188
+ "optional": true,
189
+ "default": "false",
190
+ "description": "Mode pemilihan jamak (multi-select) dengan tampilan chips/tag dan daftar checkbox.",
191
+ "example": null,
192
+ "param": null
193
+ },
194
+ "searchable": {
195
+ "name": "searchable",
196
+ "type": "boolean",
197
+ "optional": true,
198
+ "default": "false",
199
+ "description": "Mengaktifkan kotak pencarian (search input) di dalam menu dropdown.",
200
+ "example": null,
201
+ "param": null
202
+ },
203
+ "searchPlaceholder": {
204
+ "name": "searchPlaceholder",
205
+ "type": "string",
206
+ "optional": true,
207
+ "default": "Cari",
208
+ "description": "Placeholder pada kotak pencarian di dalam dropdown.",
209
+ "example": null,
210
+ "param": null
211
+ },
212
+ "applyText": {
213
+ "name": "applyText",
214
+ "type": "string",
215
+ "optional": true,
216
+ "default": "Terapkan",
217
+ "description": "Teks tombol terapkan pada footer multi-select.",
218
+ "example": null,
219
+ "param": null
220
+ },
221
+ "resetText": {
222
+ "name": "resetText",
223
+ "type": "string",
224
+ "optional": true,
225
+ "default": "Reset",
226
+ "description": "Teks tombol reset pada footer multi-select.",
227
+ "example": null,
228
+ "param": null
229
+ },
230
+ "name": {
231
+ "name": "name",
232
+ "type": "string",
233
+ "optional": true,
234
+ "default": null,
235
+ "description": "Nama form field HTML.",
236
+ "example": null,
237
+ "param": null
238
+ },
239
+ "id": {
240
+ "name": "id",
241
+ "type": "string",
242
+ "optional": true,
243
+ "default": null,
244
+ "description": "Identifier unik elemen selectbox.",
245
+ "example": null,
246
+ "param": null
247
+ },
248
+ "error": {
249
+ "name": "error",
250
+ "type": "boolean",
251
+ "optional": true,
252
+ "default": "false",
253
+ "description": "Status apakah selectbox sedang dalam kondisi error / tidak valid.",
254
+ "example": null,
255
+ "param": null
256
+ },
257
+ "errorMessage": {
258
+ "name": "errorMessage",
259
+ "type": "string",
260
+ "optional": true,
261
+ "default": null,
262
+ "description": "Pesan teks penjelasan kesalahan validasi di bawah field.",
263
+ "example": null,
264
+ "param": null
265
+ },
266
+ "helperText": {
267
+ "name": "helperText",
268
+ "type": "string",
269
+ "optional": true,
270
+ "default": null,
271
+ "description": "Teks petunjuk atau keterangan bantuan di bawah field (12px Regular, #3C4245).",
272
+ "example": null,
273
+ "param": null
274
+ },
275
+ "helperTextPosition": {
276
+ "name": "helperTextPosition",
277
+ "type": "'top' | 'bottom'",
278
+ "optional": true,
279
+ "default": null,
280
+ "description": "Posisi teks helper",
281
+ "example": null,
282
+ "param": null
283
+ },
284
+ "size": {
285
+ "name": "size",
286
+ "type": "'sm' | 'md' | 'lg'",
287
+ "optional": true,
288
+ "default": "md",
289
+ "description": "Skala ukuran selectbox. - `'sm'`: 36px - `'md'`: 48px (standar desain) - `'lg'`: 56px",
290
+ "example": null,
291
+ "param": null
292
+ },
293
+ "rounded": {
294
+ "name": "rounded",
295
+ "type": "'none' | 'sm' | 'md' | 'lg' | 'full'",
296
+ "optional": true,
297
+ "default": "md",
298
+ "description": "Bentuk sudut kelengkungan selectbox. - `'none'`: 0px - `'sm'`: 4px - `'md'`: 8px (standar desain) - `'lg'`: 12px - `'full'`: 9999px (kapsul)",
299
+ "example": null,
300
+ "param": null
301
+ },
302
+ "block": {
303
+ "name": "block",
304
+ "type": "boolean",
305
+ "optional": true,
306
+ "default": "false",
307
+ "description": "Menjadikan lebar field selectbox memenuhi kontainer penuh (full-width 100%).",
308
+ "example": null,
309
+ "param": null
310
+ },
311
+ "disabled": {
312
+ "name": "disabled",
313
+ "type": "boolean",
314
+ "optional": true,
315
+ "default": "false",
316
+ "description": "Status apakah selectbox dinonaktifkan (disabled).",
317
+ "example": null,
318
+ "param": null
319
+ },
320
+ "required": {
321
+ "name": "required",
322
+ "type": "boolean",
323
+ "optional": true,
324
+ "default": "false",
325
+ "description": "Menandai field sebagai input wajib diisi (menampilkan tanda bintang merah *).",
326
+ "example": null,
327
+ "param": null
328
+ },
329
+ "inputRef": {
330
+ "name": "inputRef",
331
+ "type": "any",
332
+ "optional": true,
333
+ "default": null,
334
+ "description": "Ref instance elemen control selectbox untuk akses DOM langsung.",
335
+ "example": null,
336
+ "param": null
337
+ },
338
+ "clearable": {
339
+ "name": "clearable",
340
+ "type": "boolean",
341
+ "optional": true,
342
+ "default": "false",
343
+ "description": "Menampilkan tombol × untuk menghapus pilihan yang sudah dipilih.",
344
+ "example": null,
345
+ "param": null
346
+ },
347
+ "loading": {
348
+ "name": "loading",
349
+ "type": "boolean",
350
+ "optional": true,
351
+ "default": "false",
352
+ "description": "Menampilkan spinner loading dan menonaktifkan interaksi selectbox.",
353
+ "example": null,
354
+ "param": null
355
+ },
356
+ "readOnly": {
357
+ "name": "readOnly",
358
+ "type": "boolean",
359
+ "optional": true,
360
+ "default": "false",
361
+ "description": "Menjadikan selectbox hanya-baca (tidak bisa dibuka/diubah).",
362
+ "example": null,
363
+ "param": null
364
+ },
365
+ "style": {
366
+ "name": "style",
367
+ "type": "any",
368
+ "optional": true,
369
+ "default": null,
370
+ "description": "Inline CSS style object native.",
371
+ "example": null,
372
+ "param": null
373
+ },
374
+ "ui": {
375
+ "name": "ui",
376
+ "type": "UiProps",
377
+ "optional": true,
378
+ "default": null,
379
+ "description": "Kustomisasi visual granular root / form-item (UiProps).",
380
+ "example": null,
381
+ "param": null
382
+ },
383
+ "onChange": {
384
+ "name": "onChange",
385
+ "type": "(value: any) => void",
386
+ "optional": true,
387
+ "default": null,
388
+ "description": "Callback event saat nilai pilihan berubah.",
389
+ "example": null,
390
+ "param": null
391
+ },
392
+ "onSearch": {
393
+ "name": "onSearch",
394
+ "type": "(query: string) => void",
395
+ "optional": true,
396
+ "default": null,
397
+ "description": "Callback event saat pengguna mengetik di kolom pencarian.",
398
+ "example": null,
399
+ "param": null
400
+ },
401
+ "onOpen": {
402
+ "name": "onOpen",
403
+ "type": "() => void",
404
+ "optional": true,
405
+ "default": null,
406
+ "description": "Callback event saat menu dropdown terbuka.",
407
+ "example": null,
408
+ "param": null
409
+ },
410
+ "className": {
411
+ "name": "className",
412
+ "type": "string",
413
+ "optional": true,
414
+ "default": null,
415
+ "description": "Class CSS kustom.",
416
+ "example": null,
417
+ "param": null
418
+ },
419
+ "disableShift": {
420
+ "name": "disableShift",
421
+ "type": "boolean",
422
+ "optional": true,
423
+ "default": "false",
424
+ "description": "Menonaktifkan middleware `shift` pada floating-ui sehingga posisi list popover tidak bergeser secara horizontal mengikuti tepi layar. Berguna saat ingin list tetap berada di tengah atau posisi placement yang ditentukan.",
425
+ "example": null,
426
+ "param": null
427
+ },
428
+ "onClose": {
429
+ "name": "onClose",
430
+ "type": "() => void",
431
+ "optional": true,
432
+ "default": null,
433
+ "description": "Callback event saat menu dropdown ditutup.",
434
+ "example": null,
435
+ "param": null
436
+ }
437
+ },
438
+ "subInterfaces": {
439
+ "SelectboxOption": {
440
+ "label": {
441
+ "name": "label",
442
+ "type": "string",
443
+ "optional": false,
444
+ "default": null,
445
+ "description": "Teks label tampilan pilihan dropdown.",
446
+ "example": null,
447
+ "param": null
448
+ },
449
+ "value": {
450
+ "name": "value",
451
+ "type": "string | number",
452
+ "optional": false,
453
+ "default": null,
454
+ "description": "Nilai unik (value) dari opsi pilihan.",
455
+ "example": null,
456
+ "param": null
457
+ },
458
+ "disabled": {
459
+ "name": "disabled",
460
+ "type": "boolean",
461
+ "optional": true,
462
+ "default": "false",
463
+ "description": "Status apakah opsi ini dinonaktifkan dari pemilihan.",
464
+ "example": null,
465
+ "param": null
466
+ }
467
+ }
468
+ },
469
+ "supportedFrameworks": [
470
+ "react",
471
+ "vue",
472
+ "svelte"
473
+ ],
474
+ "themes": [
475
+ "tw"
476
+ ]
477
+ }
@@ -0,0 +1 @@
1
+ .ttdk-form-item{gap:var(--ttdk-spacing-xxs);box-sizing:border-box;width:100%;font-family:var(--ttdk-font-sans);flex-direction:column;display:flex;position:relative}.ttdk-form-item:has([data-open=true]),.ttdk-form-item:has(.ttdk-selectbox-dropdown){z-index:50}.ttdk-form-item[data-block=true]{width:100%}.ttdk-form-label{font-size:var(--ttdk-font-size-14);font-weight:var(--ttdk-font-weight-semibold);line-height:var(--ttdk-font-size-20);color:var(--ttdk-ui-color,var(--ttdk-text-icon-primary));align-items:center;gap:var(--ttdk-spacing-xxs);user-select:none;display:flex}.dark .ttdk-form-label{color:var(--ttdk-ui-color,var(--ttdk-text-icon-primary))}.ttdk-form-required{color:var(--ttdk-stroke-status-error);font-weight:var(--ttdk-font-weight-bold)}.dark .ttdk-form-required{color:var(--ttdk-stroke-status-error)}.ttdk-form-optional{font-size:var(--ttdk-font-size-12);font-weight:var(--ttdk-font-weight-regular);color:var(--ttdk-text-icon-disabled)}.dark .ttdk-form-optional{color:var(--ttdk-text-icon-disabled)}.ttdk-selectbox-control{background:var(--ttdk-bg-base-primary);border:var(--ttdk-stroke-width-thin) solid var(--ttdk-stroke-subtle);border-radius:var(--ttdk-radius-input-lg);box-sizing:border-box;cursor:pointer;user-select:none;width:100%;height:auto;min-height:48px;font-family:var(--ttdk-font-sans);justify-content:space-between;align-items:center;gap:var(--ttdk-spacing-xs);color:var(--ttdk-ui-color,var(--ttdk-text-icon-primary));outline:none;padding:6px 12px;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex;position:relative}.dark .ttdk-selectbox-control{background:var(--ttdk-bg-base-primary);border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-ui-color,var(--ttdk-text-icon-primary))}.ttdk-selectbox-control[data-size=sm]{height:auto;min-height:36px;font-size:var(--ttdk-font-size-12);padding:3px 10px}.ttdk-selectbox-control[data-size=md]{height:auto;min-height:48px;font-size:var(--ttdk-font-size-14);padding:6px 12px}.ttdk-selectbox-control[data-size=lg]{height:auto;min-height:56px;font-size:var(--ttdk-font-size-16);padding:8px 14px}.ttdk-selectbox-control[data-rounded=none]{border-radius:var(--ttdk-radius-input-none)}.ttdk-selectbox-control[data-rounded=xs]{border-radius:var(--ttdk-radius-input-xs)}.ttdk-selectbox-control[data-rounded=sm]{border-radius:var(--ttdk-radius-input-sm)}.ttdk-selectbox-control[data-rounded=md]{border-radius:var(--ttdk-radius-input-md)}.ttdk-selectbox-control[data-rounded=lg]{border-radius:var(--ttdk-radius-input-lg)}.ttdk-selectbox-control[data-rounded=xl]{border-radius:var(--ttdk-radius-input-xl)}.ttdk-selectbox-control[data-rounded=full]{border-radius:var(--ttdk-radius-input-full)}.ttdk-selectbox-control:focus-visible,.ttdk-selectbox-control[data-open=true]{border-color:var(--ttdk-stroke-border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--ttdk-stroke-border-focus) 15%, transparent)}.dark .ttdk-selectbox-control:focus-visible,.dark .ttdk-selectbox-control[data-open=true]{border-color:var(--ttdk-stroke-border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--ttdk-stroke-border-focus) 25%, transparent)}.ttdk-selectbox-control[data-filled=true]:not([data-open=true]):not([data-error=true]),.dark .ttdk-selectbox-control[data-filled=true]:not([data-open=true]):not([data-error=true]){border-color:var(--ttdk-stroke-strong)}.ttdk-selectbox-control[data-error=true]{border-color:var(--ttdk-stroke-status-error)!important}.ttdk-selectbox-control[data-error=true]:focus-visible,.ttdk-selectbox-control[data-error=true][data-open=true]{box-shadow:0 0 0 3px color-mix(in srgb, var(--ttdk-stroke-status-error) 15%, transparent)}.dark .ttdk-selectbox-control[data-error=true]{border-color:var(--ttdk-stroke-status-error)!important}.ttdk-form-item[data-error=true] .ttdk-form-label,.dark .ttdk-form-item[data-error=true] .ttdk-form-label{color:var(--ttdk-text-icon-status-error)!important}.ttdk-selectbox-control[data-disabled=true]{background:var(--ttdk-bg-secondary-disabled)!important;border-color:var(--ttdk-stroke-subtle)!important;color:var(--ttdk-text-icon-disabled)!important;cursor:not-allowed!important;box-shadow:none!important}.dark .ttdk-selectbox-control[data-disabled=true]{background:var(--ttdk-bg-secondary-disabled)!important;border-color:var(--ttdk-stroke-subtle)!important;color:var(--ttdk-text-icon-disabled)!important}.ttdk-selectbox-display{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;padding:2px 0;display:flex}.ttdk-selectbox-value{color:inherit;font-size:var(--ttdk-font-size-14);line-height:var(--ttdk-font-size-20);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dark .ttdk-selectbox-value{color:inherit}.ttdk-selectbox-placeholder{color:var(--ttdk-text-icon-disabled);font-size:var(--ttdk-font-size-14);line-height:var(--ttdk-font-size-20);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dark .ttdk-selectbox-placeholder{color:var(--ttdk-text-icon-disabled)}.ttdk-selectbox-chips{flex-wrap:wrap;align-items:center;gap:6px;width:100%;display:flex}.ttdk-select-chip{align-items:center;gap:var(--ttdk-spacing-xxs);padding:2px var(--ttdk-spacing-xs);background:var(--ttdk-bg-secondary-disabled);border:var(--ttdk-stroke-width-thin) solid var(--ttdk-stroke-subtle);border-radius:var(--ttdk-radius-input-full);font-family:var(--ttdk-font-sans);font-size:var(--ttdk-font-size-12);font-weight:var(--ttdk-font-weight-medium);color:var(--ttdk-text-icon-primary);box-sizing:border-box;line-height:16px;display:inline-flex}.ttdk-select-chip-text{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.dark .ttdk-select-chip{background:var(--ttdk-bg-secondary-disabled);border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-primary)}.ttdk-select-chip-remove{width:var(--ttdk-font-size-16);height:var(--ttdk-font-size-16);color:var(--ttdk-text-icon-secondary);cursor:pointer;background:0 0;border:none;border-radius:50%;outline:none;flex-shrink:0;justify-content:center;align-items:center;margin:0 -2px 0 2px;padding:0;transition:all .15s;display:inline-flex}.ttdk-select-chip-remove:hover{background:color-mix(in srgb, var(--ttdk-stroke-status-error) 12%, transparent);color:var(--ttdk-stroke-status-error)}.dark .ttdk-select-chip-remove{color:var(--ttdk-text-icon-secondary)}.dark .ttdk-select-chip-remove:hover{background:color-mix(in srgb, var(--ttdk-stroke-status-error) 20%, transparent);color:var(--ttdk-stroke-status-error)}.ttdk-selectbox-clear{width:var(--ttdk-font-size-20);height:var(--ttdk-font-size-20);background:var(--ttdk-bg-secondary-disabled);border:var(--ttdk-stroke-width-thin) solid var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-secondary);cursor:pointer;border-radius:50%;outline:none;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;transition:all .15s;display:inline-flex}.ttdk-selectbox-clear:hover{background:var(--ttdk-stroke-subtle);border-color:var(--ttdk-stroke-strong);color:var(--ttdk-text-icon-primary);transform:scale(1.05)}.ttdk-selectbox-clear:active{background:var(--ttdk-stroke-strong);transform:scale(.95)}.ttdk-selectbox-clear:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--ttdk-stroke-border-focus) 40%, transparent)}.dark .ttdk-selectbox-clear{background:var(--ttdk-bg-secondary-disabled);border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-secondary)}.dark .ttdk-selectbox-clear:hover{background:var(--ttdk-stroke-subtle);border-color:var(--ttdk-stroke-strong);color:var(--ttdk-text-icon-primary)}.dark .ttdk-selectbox-clear:active{background:var(--ttdk-stroke-strong)}.ttdk-selectbox-arrow{color:var(--ttdk-text-icon-disabled);flex-shrink:0;justify-content:center;align-items:center;transition:transform .2s,color .15s;display:inline-flex}.dark .ttdk-selectbox-arrow{color:var(--ttdk-text-icon-disabled)}.ttdk-selectbox-arrow[data-open=true]{color:var(--ttdk-stroke-border-focus);transform:rotate(180deg)}.ttdk-selectbox-dropdown{background:var(--ttdk-bg-base-primary);border:var(--ttdk-stroke-width-thin) solid var(--ttdk-stroke-subtle);border-radius:var(--ttdk-radius-input-lg);width:max-content;min-width:100%;box-shadow:var(--ttdk-shadow-lg);box-sizing:border-box;font-family:var(--ttdk-font-sans);color:var(--ttdk-text-icon-primary);z-index:100;flex-direction:column;animation:.15s ease-out ttdk-dropdown-in;display:flex;position:absolute;top:0;left:0;overflow:hidden}.ttdk-selectbox-dropdown[data-placement^=top]{transform-origin:bottom}.ttdk-selectbox-dropdown[data-placement^=bottom]{transform-origin:top}.dark .ttdk-selectbox-dropdown{background:var(--ttdk-bg-base-primary);border-color:var(--ttdk-stroke-subtle);box-shadow:var(--ttdk-shadow-lg);color:var(--ttdk-text-icon-primary)}@keyframes ttdk-dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ttdk-selectbox-search{border-bottom:var(--ttdk-stroke-width-thin) solid var(--ttdk-stroke-subtle);background:var(--ttdk-bg-base-primary);align-items:center;gap:var(--ttdk-spacing-xs);flex-shrink:0;padding:10px 12px;display:flex}.dark .ttdk-selectbox-search{background:var(--ttdk-bg-base-primary);border-bottom-color:var(--ttdk-stroke-subtle)}.ttdk-selectbox-search-input{font-size:var(--ttdk-font-size-14);color:var(--ttdk-text-icon-primary);font-family:var(--ttdk-font-sans);background:0 0;border:none;outline:none;flex:1}.dark .ttdk-selectbox-search-input{color:var(--ttdk-text-icon-primary)}.ttdk-selectbox-search-input::placeholder,.dark .ttdk-selectbox-search-input::placeholder{color:var(--ttdk-text-icon-disabled)}.ttdk-selectbox-search-icon{color:var(--ttdk-text-icon-disabled);align-items:center;display:inline-flex}.dark .ttdk-selectbox-search-icon{color:var(--ttdk-text-icon-disabled)}.ttdk-selectbox-options-list{min-height:0;padding:var(--ttdk-spacing-xxs);scrollbar-width:thin;flex:auto;overflow-y:auto}.ttdk-selectbox-options-list::-webkit-scrollbar{width:var(--ttdk-spacing-xxs)}.ttdk-selectbox-options-list::-webkit-scrollbar-thumb{background:var(--ttdk-stroke-subtle);border-radius:var(--ttdk-radius-input-sm)}.dark .ttdk-selectbox-options-list::-webkit-scrollbar-thumb{background:var(--ttdk-stroke-subtle)}.ttdk-selectbox-option{border-radius:var(--ttdk-radius-input-md);font-size:var(--ttdk-font-size-14);font-family:var(--ttdk-font-sans);color:inherit;cursor:pointer;user-select:none;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;transition:background-color .12s,color .12s;display:flex}.dark .ttdk-selectbox-option{color:inherit}.ttdk-selectbox-option:hover{background:var(--ttdk-brand-subtle);color:var(--ttdk-brand-default)}.dark .ttdk-selectbox-option:hover{background:color-mix(in srgb, var(--ttdk-brand-default) 15%, transparent);color:var(--ttdk-stroke-border-focus)}.ttdk-selectbox-option[data-selected=true]{color:var(--ttdk-brand-default);font-weight:var(--ttdk-font-weight-semibold)}.dark .ttdk-selectbox-option[data-selected=true]{color:var(--ttdk-stroke-border-focus)}.ttdk-selectbox-option-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ttdk-selectbox-check-icon{color:currentColor;flex-shrink:0;align-items:center;display:inline-flex}.dark .ttdk-selectbox-check-icon{color:currentColor}.ttdk-selectbox-checkbox{width:var(--ttdk-font-size-16);height:var(--ttdk-font-size-16);border:var(--ttdk-stroke-width-thin) solid var(--ttdk-stroke-subtle);border-radius:var(--ttdk-radius-input-sm);background:var(--ttdk-bg-base-primary);flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.dark .ttdk-selectbox-checkbox{background:var(--ttdk-bg-base-primary);border-color:var(--ttdk-stroke-subtle)}.ttdk-selectbox-checkbox[data-checked=true]{background:var(--ttdk-brand-default);border-color:var(--ttdk-brand-default);color:var(--ttdk-text-icon-stay-white)}.ttdk-selectbox-empty{text-align:center;font-size:var(--ttdk-font-size-14);color:var(--ttdk-text-icon-disabled);padding:16px 12px}.dark .ttdk-selectbox-empty{color:var(--ttdk-text-icon-disabled)}.ttdk-selectbox-actions{border-top:var(--ttdk-stroke-width-thin) solid var(--ttdk-stroke-subtle);background:var(--ttdk-bg-secondary-disabled);justify-content:space-between;align-items:center;gap:var(--ttdk-spacing-xs);flex-shrink:0;padding:8px 12px;display:flex}.dark .ttdk-selectbox-actions{background:var(--ttdk-bg-secondary-disabled);border-top-color:var(--ttdk-stroke-subtle)}.ttdk-selectbox-btn-reset{color:var(--ttdk-brand-default);font-size:var(--ttdk-font-size-12);font-weight:var(--ttdk-font-weight-semibold);font-family:var(--ttdk-font-sans);cursor:pointer;border-radius:var(--ttdk-radius-input-sm);background:0 0;border:none;align-items:center;gap:6px;padding:6px 8px;transition:color .15s,background-color .15s;display:inline-flex}.ttdk-selectbox-btn-reset:hover{background:color-mix(in srgb, var(--ttdk-brand-default) 8%, transparent);color:var(--ttdk-brand-strong)}.dark .ttdk-selectbox-btn-reset{color:var(--ttdk-stroke-border-focus)}.dark .ttdk-selectbox-btn-reset:hover{background:color-mix(in srgb, var(--ttdk-brand-default) 15%, transparent);color:var(--ttdk-stroke-border-focus)}.ttdk-selectbox-btn-apply{background:var(--ttdk-brand-default);color:var(--ttdk-text-icon-stay-white);font-size:var(--ttdk-font-size-12);font-weight:var(--ttdk-font-weight-semibold);font-family:var(--ttdk-font-sans);cursor:pointer;border-radius:var(--ttdk-radius-input-md);border:none;align-items:center;gap:6px;padding:6px 16px;transition:background-color .15s,transform .1s;display:inline-flex}.ttdk-selectbox-btn-apply:hover{background:var(--ttdk-brand-strong)}.ttdk-selectbox-btn-apply:active{transform:scale(.98)}.ttdk-form-helper{font-size:var(--ttdk-font-size-12);line-height:var(--ttdk-font-size-18);color:var(--ttdk-text-icon-secondary);font-family:var(--ttdk-font-sans)}.dark .ttdk-form-helper{color:var(--ttdk-text-icon-secondary)}.ttdk-form-error{font-size:var(--ttdk-font-size-12);line-height:var(--ttdk-font-size-18);color:var(--ttdk-text-icon-status-error);font-weight:var(--ttdk-font-weight-medium);font-family:var(--ttdk-font-sans)}.dark .ttdk-form-error{color:var(--ttdk-text-icon-status-error)}.ttdk-select-chip-remove-icon,.ttdk-selectbox-clear-icon,.ttdk-selectbox-spinner-icon,.ttdk-selectbox-arrow-icon,.ttdk-selectbox-search-svg,.ttdk-selectbox-checkbox-icon,.ttdk-selectbox-check-svg,.ttdk-selectbox-btn-reset-icon,.ttdk-selectbox-btn-apply-icon{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.ttdk-select-chip-remove-icon{width:var(--ttdk-font-size-12);height:var(--ttdk-font-size-12);stroke-width:var(--ttdk-stroke-width-med)}.ttdk-selectbox-clear-icon{width:var(--ttdk-font-size-14);height:var(--ttdk-font-size-14);stroke-width:var(--ttdk-stroke-width-med)}.ttdk-selectbox-spinner{color:var(--ttdk-text-icon-disabled);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ttdk-selectbox-spinner-icon{stroke-width:2.2px;width:20px;height:20px;animation:1.2s steps(12,end) infinite ttdk-spin}.ttdk-selectbox-control[data-size=sm] .ttdk-selectbox-spinner,.ttdk-selectbox-control[data-size=sm] .ttdk-selectbox-spinner-icon{width:16px;height:16px}.ttdk-selectbox-control[data-size=md] .ttdk-selectbox-spinner,.ttdk-selectbox-control[data-size=md] .ttdk-selectbox-spinner-icon{width:20px;height:20px}.ttdk-selectbox-control[data-size=lg] .ttdk-selectbox-spinner,.ttdk-selectbox-control[data-size=lg] .ttdk-selectbox-spinner-icon{width:24px;height:24px}.ttdk-selectbox-arrow-icon{width:var(--ttdk-font-size-18);height:var(--ttdk-font-size-18);stroke-width:var(--ttdk-stroke-width-med)}.ttdk-selectbox-search-svg{width:var(--ttdk-font-size-16);height:var(--ttdk-font-size-16);stroke-width:var(--ttdk-stroke-width-med)}.ttdk-selectbox-checkbox-icon{width:var(--ttdk-font-size-12);height:var(--ttdk-font-size-12);stroke-width:var(--ttdk-stroke-width-med)}.ttdk-selectbox-check-svg{width:var(--ttdk-font-size-16);height:var(--ttdk-font-size-16);stroke-width:var(--ttdk-stroke-width-med)}.ttdk-selectbox-btn-reset-icon,.ttdk-selectbox-btn-apply-icon{width:var(--ttdk-font-size-14);height:var(--ttdk-font-size-14);stroke-width:var(--ttdk-stroke-width-med)}@keyframes ttdk-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}