ui-svelte 0.1.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 (238) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +118 -0
  3. package/dist/charts/ArcChart.svelte +320 -0
  4. package/dist/charts/ArcChart.svelte.d.ts +26 -0
  5. package/dist/charts/AreaChart.svelte +495 -0
  6. package/dist/charts/AreaChart.svelte.d.ts +32 -0
  7. package/dist/charts/BarChart.svelte +504 -0
  8. package/dist/charts/BarChart.svelte.d.ts +38 -0
  9. package/dist/charts/Candlestick.svelte +527 -0
  10. package/dist/charts/Candlestick.svelte.d.ts +38 -0
  11. package/dist/charts/LineChart.svelte +365 -0
  12. package/dist/charts/LineChart.svelte.d.ts +36 -0
  13. package/dist/charts/PieChart.svelte +311 -0
  14. package/dist/charts/PieChart.svelte.d.ts +28 -0
  15. package/dist/charts/css/arc-chart.css +237 -0
  16. package/dist/charts/css/area-chart.css +289 -0
  17. package/dist/charts/css/bar-chart.css +167 -0
  18. package/dist/charts/css/candlestick.css +197 -0
  19. package/dist/charts/css/line-chart.css +202 -0
  20. package/dist/charts/css/pie-chart.css +199 -0
  21. package/dist/control/Audio.svelte +212 -0
  22. package/dist/control/Audio.svelte.d.ts +8 -0
  23. package/dist/control/Button.svelte +116 -0
  24. package/dist/control/Button.svelte.d.ts +22 -0
  25. package/dist/control/IconButton.svelte +104 -0
  26. package/dist/control/IconButton.svelte.d.ts +17 -0
  27. package/dist/control/Record.svelte +430 -0
  28. package/dist/control/Record.svelte.d.ts +11 -0
  29. package/dist/control/ToggleTheme.svelte +21 -0
  30. package/dist/control/ToggleTheme.svelte.d.ts +8 -0
  31. package/dist/control/Video.svelte +222 -0
  32. package/dist/control/Video.svelte.d.ts +10 -0
  33. package/dist/control/css/btn.css +206 -0
  34. package/dist/control/css/media.css +78 -0
  35. package/dist/control/css/video.css +58 -0
  36. package/dist/css/animations.css +27 -0
  37. package/dist/css/base.css +192 -0
  38. package/dist/css/utilities.css +136 -0
  39. package/dist/display/Accordion.svelte +98 -0
  40. package/dist/display/Accordion.svelte.d.ts +20 -0
  41. package/dist/display/Alert.svelte +65 -0
  42. package/dist/display/Alert.svelte.d.ts +15 -0
  43. package/dist/display/Avatar.svelte +80 -0
  44. package/dist/display/Avatar.svelte.d.ts +13 -0
  45. package/dist/display/Badge.svelte +46 -0
  46. package/dist/display/Badge.svelte.d.ts +11 -0
  47. package/dist/display/Card.svelte +94 -0
  48. package/dist/display/Card.svelte.d.ts +21 -0
  49. package/dist/display/Carousel.svelte +359 -0
  50. package/dist/display/Carousel.svelte.d.ts +25 -0
  51. package/dist/display/ChatBox.svelte +249 -0
  52. package/dist/display/ChatBox.svelte.d.ts +18 -0
  53. package/dist/display/Chip.svelte +67 -0
  54. package/dist/display/Chip.svelte.d.ts +17 -0
  55. package/dist/display/Code.svelte +56 -0
  56. package/dist/display/Code.svelte.d.ts +9 -0
  57. package/dist/display/Collapsible.svelte +71 -0
  58. package/dist/display/Collapsible.svelte.d.ts +15 -0
  59. package/dist/display/Divider.svelte +32 -0
  60. package/dist/display/Divider.svelte.d.ts +10 -0
  61. package/dist/display/Empty.svelte +462 -0
  62. package/dist/display/Empty.svelte.d.ts +11 -0
  63. package/dist/display/Icon.svelte +20 -0
  64. package/dist/display/Icon.svelte.d.ts +11 -0
  65. package/dist/display/Item.svelte +119 -0
  66. package/dist/display/Item.svelte.d.ts +24 -0
  67. package/dist/display/Loading.svelte +8 -0
  68. package/dist/display/Loading.svelte.d.ts +26 -0
  69. package/dist/display/Marquee.svelte +164 -0
  70. package/dist/display/Marquee.svelte.d.ts +21 -0
  71. package/dist/display/Section.svelte +63 -0
  72. package/dist/display/Section.svelte.d.ts +16 -0
  73. package/dist/display/Table.svelte +407 -0
  74. package/dist/display/Table.svelte.d.ts +32 -0
  75. package/dist/display/TypeWriter.svelte +23 -0
  76. package/dist/display/TypeWriter.svelte.d.ts +11 -0
  77. package/dist/display/User.svelte +0 -0
  78. package/dist/display/User.svelte.d.ts +26 -0
  79. package/dist/display/css/accordion.css +98 -0
  80. package/dist/display/css/alert.css +51 -0
  81. package/dist/display/css/avatar.css +158 -0
  82. package/dist/display/css/badge.css +47 -0
  83. package/dist/display/css/card.css +231 -0
  84. package/dist/display/css/carousel.css +156 -0
  85. package/dist/display/css/chat-box.css +188 -0
  86. package/dist/display/css/chip.css +91 -0
  87. package/dist/display/css/code.css +19 -0
  88. package/dist/display/css/collapsible.css +86 -0
  89. package/dist/display/css/divider.css +54 -0
  90. package/dist/display/css/empty.css +8 -0
  91. package/dist/display/css/item.css +149 -0
  92. package/dist/display/css/listbox.css +24 -0
  93. package/dist/display/css/marquee.css +138 -0
  94. package/dist/display/css/section.css +85 -0
  95. package/dist/display/css/table.css +361 -0
  96. package/dist/form/Checkbox.svelte +45 -0
  97. package/dist/form/Checkbox.svelte.d.ts +13 -0
  98. package/dist/form/ComboBox.svelte +448 -0
  99. package/dist/form/ComboBox.svelte.d.ts +29 -0
  100. package/dist/form/CsvField.svelte +389 -0
  101. package/dist/form/CsvField.svelte.d.ts +21 -0
  102. package/dist/form/DateField.svelte +292 -0
  103. package/dist/form/DateField.svelte.d.ts +18 -0
  104. package/dist/form/Dropzone.svelte +196 -0
  105. package/dist/form/Dropzone.svelte.d.ts +30 -0
  106. package/dist/form/ImageCropper.svelte +254 -0
  107. package/dist/form/ImageCropper.svelte.d.ts +14 -0
  108. package/dist/form/PasswordField.svelte +170 -0
  109. package/dist/form/PasswordField.svelte.d.ts +28 -0
  110. package/dist/form/PhoneField.svelte +485 -0
  111. package/dist/form/PhoneField.svelte.d.ts +25 -0
  112. package/dist/form/PinField.svelte +139 -0
  113. package/dist/form/PinField.svelte.d.ts +17 -0
  114. package/dist/form/RadioGroup.svelte +70 -0
  115. package/dist/form/RadioGroup.svelte.d.ts +19 -0
  116. package/dist/form/Select.svelte +350 -0
  117. package/dist/form/Select.svelte.d.ts +26 -0
  118. package/dist/form/Slider.svelte +60 -0
  119. package/dist/form/Slider.svelte.d.ts +15 -0
  120. package/dist/form/TextField.svelte +154 -0
  121. package/dist/form/TextField.svelte.d.ts +31 -0
  122. package/dist/form/Textarea.svelte +137 -0
  123. package/dist/form/Textarea.svelte.d.ts +27 -0
  124. package/dist/form/Toggle.svelte +45 -0
  125. package/dist/form/Toggle.svelte.d.ts +13 -0
  126. package/dist/form/css/checkbox.css +46 -0
  127. package/dist/form/css/combo-box.css +69 -0
  128. package/dist/form/css/control.css +177 -0
  129. package/dist/form/css/csv-field.css +0 -0
  130. package/dist/form/css/date.css +56 -0
  131. package/dist/form/css/dropzone.css +133 -0
  132. package/dist/form/css/field.css +17 -0
  133. package/dist/form/css/image-cropper.css +155 -0
  134. package/dist/form/css/password.css +35 -0
  135. package/dist/form/css/radio-group.css +57 -0
  136. package/dist/form/css/select.css +18 -0
  137. package/dist/form/css/slider.css +80 -0
  138. package/dist/form/css/textarea.css +130 -0
  139. package/dist/form/css/toggle.css +27 -0
  140. package/dist/form/js/countries.d.ts +13 -0
  141. package/dist/form/js/countries.js +307 -0
  142. package/dist/form/js/phone-examples.d.ts +248 -0
  143. package/dist/form/js/phone-examples.js +247 -0
  144. package/dist/hooks/use-auth.svelte.d.ts +11 -0
  145. package/dist/hooks/use-auth.svelte.js +59 -0
  146. package/dist/hooks/use-chat.svelte.d.ts +40 -0
  147. package/dist/hooks/use-chat.svelte.js +265 -0
  148. package/dist/hooks/use-clipboard.svelte.d.ts +9 -0
  149. package/dist/hooks/use-clipboard.svelte.js +52 -0
  150. package/dist/hooks/use-fetch.svelte.d.ts +11 -0
  151. package/dist/hooks/use-fetch.svelte.js +38 -0
  152. package/dist/hooks/use-form.svelte.d.ts +31 -0
  153. package/dist/hooks/use-form.svelte.js +110 -0
  154. package/dist/hooks/use-localstorage.svelte.d.ts +3 -0
  155. package/dist/hooks/use-localstorage.svelte.js +26 -0
  156. package/dist/hooks/use-scroll.svelte.d.ts +6 -0
  157. package/dist/hooks/use-scroll.svelte.js +34 -0
  158. package/dist/hooks/use-search.svelte.d.ts +49 -0
  159. package/dist/hooks/use-search.svelte.js +229 -0
  160. package/dist/hooks/use-table.svelte.d.ts +85 -0
  161. package/dist/hooks/use-table.svelte.js +362 -0
  162. package/dist/hooks/use-websocket.svelte.d.ts +18 -0
  163. package/dist/hooks/use-websocket.svelte.js +79 -0
  164. package/dist/icons/index.d.ts +132 -0
  165. package/dist/icons/index.js +132 -0
  166. package/dist/index.css +115 -0
  167. package/dist/index.d.ts +76 -0
  168. package/dist/index.js +76 -0
  169. package/dist/layout/AppBar.svelte +94 -0
  170. package/dist/layout/AppBar.svelte.d.ts +17 -0
  171. package/dist/layout/Footer.svelte +94 -0
  172. package/dist/layout/Footer.svelte.d.ts +17 -0
  173. package/dist/layout/FooterLinks.svelte +28 -0
  174. package/dist/layout/FooterLinks.svelte.d.ts +11 -0
  175. package/dist/layout/Provider.svelte +52 -0
  176. package/dist/layout/Provider.svelte.d.ts +10 -0
  177. package/dist/layout/Scaffold.svelte +46 -0
  178. package/dist/layout/Scaffold.svelte.d.ts +15 -0
  179. package/dist/layout/Sidebar.svelte +40 -0
  180. package/dist/layout/Sidebar.svelte.d.ts +13 -0
  181. package/dist/layout/css/app-bar.css +35 -0
  182. package/dist/layout/css/bottom-bar.css +12 -0
  183. package/dist/layout/css/footer-links.css +17 -0
  184. package/dist/layout/css/footer.css +35 -0
  185. package/dist/layout/css/scaffold.css +15 -0
  186. package/dist/layout/css/sidebar.css +17 -0
  187. package/dist/navigation/BottomNav.svelte +0 -0
  188. package/dist/navigation/BottomNav.svelte.d.ts +26 -0
  189. package/dist/navigation/NavMenu.svelte +254 -0
  190. package/dist/navigation/SideNav.svelte +249 -0
  191. package/dist/navigation/Tabs.svelte +79 -0
  192. package/dist/navigation/Tabs.svelte.d.ts +19 -0
  193. package/dist/navigation/css/bottom-nav.css +0 -0
  194. package/dist/navigation/css/nav-menu.css +168 -0
  195. package/dist/navigation/css/side-nav.css +244 -0
  196. package/dist/navigation/css/tabs.css +118 -0
  197. package/dist/overlay/AlertDialog.svelte +0 -0
  198. package/dist/overlay/AlertDialog.svelte.d.ts +26 -0
  199. package/dist/overlay/Command.svelte +0 -0
  200. package/dist/overlay/Command.svelte.d.ts +26 -0
  201. package/dist/overlay/Drawer.svelte +129 -0
  202. package/dist/overlay/Drawer.svelte.d.ts +20 -0
  203. package/dist/overlay/Dropdown.svelte +140 -0
  204. package/dist/overlay/Modal.svelte +102 -0
  205. package/dist/overlay/Modal.svelte.d.ts +19 -0
  206. package/dist/overlay/PopoverStack.svelte +0 -0
  207. package/dist/overlay/PopoverStack.svelte.d.ts +26 -0
  208. package/dist/overlay/Toast.svelte +83 -0
  209. package/dist/overlay/Toast.svelte.d.ts +9 -0
  210. package/dist/overlay/Tooltip.svelte +140 -0
  211. package/dist/overlay/Tooltip.svelte.d.ts +12 -0
  212. package/dist/overlay/css/drawer.css +75 -0
  213. package/dist/overlay/css/dropdown.css +24 -0
  214. package/dist/overlay/css/hovercard.css +11 -0
  215. package/dist/overlay/css/modal.css +51 -0
  216. package/dist/overlay/css/toast.css +80 -0
  217. package/dist/overlay/css/tooltip.css +89 -0
  218. package/dist/stores/i18n.svelte.d.ts +16 -0
  219. package/dist/stores/i18n.svelte.js +137 -0
  220. package/dist/stores/theme.svelte.d.ts +5 -0
  221. package/dist/stores/theme.svelte.js +55 -0
  222. package/dist/stores/toast.svelte.d.ts +19 -0
  223. package/dist/stores/toast.svelte.js +38 -0
  224. package/dist/types.d.ts +75 -0
  225. package/dist/types.js +1 -0
  226. package/dist/utils/charts.d.ts +27 -0
  227. package/dist/utils/charts.js +140 -0
  228. package/dist/utils/class-names.d.ts +1 -0
  229. package/dist/utils/class-names.js +3 -0
  230. package/dist/utils/click-outside.d.ts +3 -0
  231. package/dist/utils/click-outside.js +9 -0
  232. package/dist/utils/popover.d.ts +3 -0
  233. package/dist/utils/popover.js +17 -0
  234. package/dist/utils/ulid.d.ts +1 -0
  235. package/dist/utils/ulid.js +22 -0
  236. package/dist/utils/validate-schema.d.ts +2 -0
  237. package/dist/utils/validate-schema.js +97 -0
  238. package/package.json +69 -0
@@ -0,0 +1,361 @@
1
+ @layer components {
2
+ .table-container {
3
+ @apply relative w-full overflow-x-auto;
4
+
5
+ .table {
6
+ @apply relative w-full text-left rtl:text-right;
7
+
8
+ .table-header {
9
+ @apply bg-muted whitespace-nowrap text-sm font-semibold rounded-ui;
10
+ th {
11
+ &:first-child {
12
+ @apply rounded-l-ui pl-6;
13
+ }
14
+
15
+ &:last-child {
16
+ @apply rounded-r-ui;
17
+ }
18
+ }
19
+
20
+ .table-head {
21
+ @apply py-3 px-4 text-left text-sm font-semibold text-on-muted;
22
+ }
23
+ }
24
+
25
+ .table-body {
26
+ tr {
27
+ @apply transition-colors duration-150;
28
+ }
29
+
30
+ td {
31
+ @apply px-4 py-4 text-sm whitespace-nowrap;
32
+
33
+ &:first-child {
34
+ @apply pl-6;
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ .table.has-dividers {
42
+ .table-body {
43
+ @apply divide-y divide-muted/40;
44
+ }
45
+ }
46
+
47
+ .table.is-striped {
48
+ tbody {
49
+ tr {
50
+ &:nth-child(even) {
51
+ @apply bg-muted/50;
52
+
53
+ td {
54
+ &:first-child {
55
+ @apply rounded-l-ui;
56
+ }
57
+
58
+ &:last-child {
59
+ @apply rounded-r-ui;
60
+ }
61
+ }
62
+ }
63
+
64
+ &:hover {
65
+ @apply bg-muted/70;
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ .table.is-bordered {
72
+ @apply border border-muted/40 rounded-lg overflow-hidden;
73
+
74
+ .table-body {
75
+ tr {
76
+ td {
77
+ @apply border-r border-muted/40;
78
+
79
+ &:last-child {
80
+ @apply border-r-0;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ .table.is-sm {
88
+ .table-header {
89
+ .table-head {
90
+ @apply text-xs py-2 px-3;
91
+ }
92
+ }
93
+
94
+ .table-body {
95
+ td {
96
+ @apply text-xs py-2 px-3;
97
+
98
+ &:first-child {
99
+ @apply pl-4;
100
+ }
101
+ }
102
+ }
103
+ }
104
+
105
+ .table.is-md {
106
+ .table-header {
107
+ .table-head {
108
+ @apply text-sm py-3 px-4;
109
+ }
110
+ }
111
+
112
+ .table-body {
113
+ td {
114
+ @apply text-sm py-4 px-4;
115
+
116
+ &:first-child {
117
+ @apply pl-6;
118
+ }
119
+ }
120
+ }
121
+ }
122
+
123
+ .table.is-lg {
124
+ .table-header {
125
+ .table-head {
126
+ @apply text-base py-4 px-5;
127
+ }
128
+ }
129
+
130
+ .table-body {
131
+ td {
132
+ @apply text-base py-5 px-5;
133
+
134
+ &:first-child {
135
+ @apply pl-7;
136
+ }
137
+ }
138
+ }
139
+ }
140
+
141
+ .table-loading-row {
142
+ @apply animate-pulse;
143
+ }
144
+
145
+ .skeleton-loader {
146
+ @apply h-4 bg-muted/50 rounded-md animate-pulse;
147
+ }
148
+
149
+ .table-empty-row {
150
+ @apply border-0;
151
+ }
152
+
153
+ .table-empty-cell {
154
+ @apply border-0 py-12;
155
+ }
156
+
157
+ .empty-state {
158
+ @apply flex flex-col items-center justify-center gap-4 text-center;
159
+ }
160
+
161
+ .empty-icon {
162
+ @apply text-on-muted/40;
163
+
164
+ .empty-state-icon {
165
+ @apply w-16 h-16;
166
+ }
167
+ }
168
+
169
+ .empty-content {
170
+ @apply flex flex-col gap-1;
171
+ }
172
+
173
+ .empty-title {
174
+ @apply text-lg font-semibold text-on-background;
175
+ }
176
+
177
+ .empty-description {
178
+ @apply text-sm text-on-muted;
179
+ }
180
+
181
+ .table-toolbar {
182
+ @apply flex items-center justify-between gap-4 py-3 flex-wrap;
183
+ }
184
+
185
+ .table-toolbar-start {
186
+ @apply flex items-center gap-3 flex-1 min-w-[200px];
187
+ }
188
+
189
+ .table-toolbar-end {
190
+ @apply flex items-center gap-3;
191
+ }
192
+
193
+ .table-search {
194
+ @apply min-w-full max-w-full md:min-w-xs md:max-w-xs;
195
+ }
196
+
197
+ .table-rows-per-page {
198
+ @apply flex items-center gap-2;
199
+ }
200
+
201
+ .table-rows-per-page-label {
202
+ @apply text-sm text-on-muted whitespace-nowrap;
203
+ }
204
+
205
+ .table-rows-per-page-select {
206
+ @apply min-w-[70px];
207
+ }
208
+
209
+ @media (max-width: 640px) {
210
+ .table-toolbar {
211
+ @apply flex-col items-stretch;
212
+ }
213
+
214
+ .table-toolbar-start,
215
+ .table-toolbar-end {
216
+ @apply w-full justify-between;
217
+ }
218
+ }
219
+
220
+ .table-selection-bar {
221
+ @apply flex items-center justify-between gap-4 px-4 py-3 bg-primary/10 border border-primary/20 rounded-ui mb-3;
222
+
223
+ @media (max-width: 640px) {
224
+ @apply flex-col items-start gap-3;
225
+ }
226
+ }
227
+
228
+ .table-selection-info {
229
+ @apply flex items-center gap-4;
230
+ }
231
+
232
+ .table-selection-count {
233
+ @apply text-sm font-medium text-primary;
234
+ }
235
+
236
+ .table-selection-clear {
237
+ @apply text-sm text-primary bg-transparent border-0 cursor-pointer underline p-0;
238
+
239
+ &:hover {
240
+ @apply text-primary/80;
241
+ }
242
+ }
243
+
244
+ .table-selection-actions {
245
+ @apply flex items-center gap-2;
246
+
247
+ @media (max-width: 640px) {
248
+ @apply w-full justify-start;
249
+ }
250
+ }
251
+
252
+ .table-checkbox-cell {
253
+ @apply w-12 pl-4 pr-2;
254
+ }
255
+
256
+ .table-checkbox {
257
+ @apply m-0;
258
+
259
+ &.is-indeterminate input {
260
+ @apply opacity-60;
261
+ }
262
+ }
263
+
264
+ .skeleton-checkbox {
265
+ @apply w-4 h-4 rounded-sm;
266
+ }
267
+
268
+ .table-row-selected {
269
+ @apply bg-primary/10;
270
+
271
+ &:hover {
272
+ @apply bg-primary/15;
273
+ }
274
+ }
275
+
276
+ .table-wrapper {
277
+ @apply flex flex-col gap-2;
278
+ }
279
+
280
+ .table-footer-info {
281
+ @apply flex items-center justify-between gap-4 px-2 py-3;
282
+
283
+ @media (max-width: 640px) {
284
+ @apply flex-col items-stretch gap-3;
285
+ }
286
+ }
287
+
288
+ .pagination-container {
289
+ @apply flex w-full py-2 items-center justify-between gap-4;
290
+
291
+ @media (max-width: 640px) {
292
+ @apply flex-col items-stretch;
293
+ }
294
+ }
295
+
296
+ .pagination {
297
+ @apply flex items-center gap-1;
298
+ }
299
+
300
+ .pagination-btn {
301
+ @apply flex items-center justify-center min-w-9 h-9 px-2 rounded-ui border border-transparent bg-transparent text-sm font-medium cursor-pointer transition-all duration-150;
302
+
303
+ .icon {
304
+ @apply h-5 w-auto;
305
+ }
306
+
307
+ &:hover:not(:disabled):not(.active) {
308
+ @apply bg-muted;
309
+ }
310
+
311
+ &.active {
312
+ @apply bg-primary text-on-primary;
313
+ }
314
+
315
+ &:disabled {
316
+ @apply opacity-50 cursor-not-allowed;
317
+ }
318
+ }
319
+
320
+ .pagination-ellipsis {
321
+ @apply flex items-center justify-center min-w-9 h-9 text-sm opacity-60;
322
+ }
323
+
324
+ .table-total {
325
+ @apply text-sm text-on-muted whitespace-nowrap;
326
+ }
327
+
328
+ .table-head-content {
329
+ @apply flex items-center gap-1;
330
+ }
331
+
332
+ .table-head-label {
333
+ @apply shrink-0;
334
+ }
335
+
336
+ .table-head.sortable {
337
+ @apply cursor-pointer select-none;
338
+
339
+ &:hover {
340
+ .table-sort-btn {
341
+ @apply opacity-80;
342
+ }
343
+ }
344
+ }
345
+
346
+ .table-head.sorted {
347
+ @apply text-primary;
348
+ }
349
+
350
+ .table-sort-btn {
351
+ @apply opacity-40 transition-opacity duration-150 shrink-0;
352
+
353
+ &:hover {
354
+ @apply opacity-80;
355
+ }
356
+
357
+ &.is-active {
358
+ @apply opacity-100 text-primary;
359
+ }
360
+ }
361
+ }
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import { cn } from '../utils/class-names.js';
3
+
4
+ type Props = {
5
+ checked?: boolean;
6
+ defaultChecked?: boolean;
7
+ onchange?: (checked: boolean) => void;
8
+ disabled?: boolean;
9
+ class?: string;
10
+ label?: string;
11
+ name?: string;
12
+ color?: 'primary' | 'secondary' | 'muted';
13
+ };
14
+ let {
15
+ checked = $bindable(),
16
+ defaultChecked,
17
+ onchange,
18
+ disabled = false,
19
+ class: className,
20
+ label,
21
+ name,
22
+ color = 'primary'
23
+ }: Props = $props();
24
+
25
+ const colors = {
26
+ primary: 'is-primary',
27
+ secondary: 'is-secondary',
28
+ muted: 'is-muted'
29
+ };
30
+ </script>
31
+
32
+ <label class={cn('checkbox', className)}>
33
+ <input
34
+ type="checkbox"
35
+ class={cn('checkbox-input', colors[color])}
36
+ {name}
37
+ bind:checked
38
+ {defaultChecked}
39
+ {disabled}
40
+ onchange={() => onchange && onchange(checked!)}
41
+ />
42
+ {#if label}
43
+ <span class="label">{label}</span>
44
+ {/if}
45
+ </label>
@@ -0,0 +1,13 @@
1
+ type Props = {
2
+ checked?: boolean;
3
+ defaultChecked?: boolean;
4
+ onchange?: (checked: boolean) => void;
5
+ disabled?: boolean;
6
+ class?: string;
7
+ label?: string;
8
+ name?: string;
9
+ color?: 'primary' | 'secondary' | 'muted';
10
+ };
11
+ declare const Checkbox: import("svelte").Component<Props, {}, "checked">;
12
+ type Checkbox = ReturnType<typeof Checkbox>;
13
+ export default Checkbox;