ui-svelte 0.2.11 → 0.2.13

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 (225) hide show
  1. package/README.md +2 -2
  2. package/dist/charts/ArcChart.svelte +9 -14
  3. package/dist/charts/ArcChart.svelte.d.ts +3 -3
  4. package/dist/charts/AreaChart.svelte +347 -118
  5. package/dist/charts/AreaChart.svelte.d.ts +33 -4
  6. package/dist/charts/BarChart.svelte +288 -66
  7. package/dist/charts/BarChart.svelte.d.ts +26 -1
  8. package/dist/charts/Candlestick.svelte +53 -50
  9. package/dist/charts/Candlestick.svelte.d.ts +8 -8
  10. package/dist/charts/LineChart.svelte +391 -91
  11. package/dist/charts/LineChart.svelte.d.ts +26 -3
  12. package/dist/charts/PieChart.svelte +333 -92
  13. package/dist/charts/PieChart.svelte.d.ts +33 -5
  14. package/dist/charts/css/arc-chart.css +3 -3
  15. package/dist/charts/css/area-chart.css +127 -29
  16. package/dist/charts/css/bar-chart.css +114 -8
  17. package/dist/charts/css/candlestick.css +2 -0
  18. package/dist/charts/css/line-chart.css +111 -13
  19. package/dist/charts/css/pie-chart.css +92 -20
  20. package/dist/control/Audio.svelte +86 -44
  21. package/dist/control/Audio.svelte.d.ts +4 -1
  22. package/dist/control/Button.svelte +18 -27
  23. package/dist/control/Button.svelte.d.ts +3 -2
  24. package/dist/control/Fab.svelte +103 -0
  25. package/dist/control/Fab.svelte.d.ts +25 -0
  26. package/dist/control/IconButton.svelte +17 -27
  27. package/dist/control/IconButton.svelte.d.ts +3 -3
  28. package/dist/control/Image.svelte +123 -0
  29. package/dist/control/Image.svelte.d.ts +13 -0
  30. package/dist/control/Record.svelte +141 -98
  31. package/dist/control/Record.svelte.d.ts +2 -1
  32. package/dist/control/ToggleGroup.svelte +22 -8
  33. package/dist/control/ToggleGroup.svelte.d.ts +2 -1
  34. package/dist/control/ToggleTheme.svelte +13 -11
  35. package/dist/control/ToggleTheme.svelte.d.ts +3 -2
  36. package/dist/control/Video.svelte +57 -29
  37. package/dist/control/Video.svelte.d.ts +1 -0
  38. package/dist/control/css/btn.css +200 -152
  39. package/dist/control/css/fab.css +84 -0
  40. package/dist/control/css/image.css +56 -0
  41. package/dist/control/css/media.css +95 -30
  42. package/dist/control/css/toggle-group.css +253 -84
  43. package/dist/control/css/video.css +1 -14
  44. package/dist/css/animations.css +5 -9
  45. package/dist/css/base.css +13 -347
  46. package/dist/css/decorations.css +561 -0
  47. package/dist/css/rich-text.css +485 -0
  48. package/dist/css/transitions.css +158 -0
  49. package/dist/css/typography.css +291 -0
  50. package/dist/css/utilities.css +0 -4
  51. package/dist/display/Accordion.svelte +28 -4
  52. package/dist/display/Accordion.svelte.d.ts +2 -1
  53. package/dist/display/Alert.svelte +32 -12
  54. package/dist/display/Alert.svelte.d.ts +2 -3
  55. package/dist/display/Avatar.svelte +23 -18
  56. package/dist/display/Avatar.svelte.d.ts +4 -1
  57. package/dist/display/AvatarGroup.svelte +20 -18
  58. package/dist/display/AvatarGroup.svelte.d.ts +6 -3
  59. package/dist/display/Badge.svelte +11 -4
  60. package/dist/display/Badge.svelte.d.ts +2 -1
  61. package/dist/display/Card.svelte +15 -14
  62. package/dist/display/Card.svelte.d.ts +2 -3
  63. package/dist/display/Carousel.svelte +130 -99
  64. package/dist/display/Carousel.svelte.d.ts +6 -4
  65. package/dist/display/ChatBox.svelte +245 -106
  66. package/dist/display/ChatBox.svelte.d.ts +32 -5
  67. package/dist/display/Chip.svelte +31 -17
  68. package/dist/display/Chip.svelte.d.ts +3 -2
  69. package/dist/display/Code.svelte +7 -4
  70. package/dist/display/Code.svelte.d.ts +1 -0
  71. package/dist/display/Collapsible.svelte +30 -4
  72. package/dist/display/Collapsible.svelte.d.ts +2 -1
  73. package/dist/display/Countdown.svelte +169 -0
  74. package/dist/display/Countdown.svelte.d.ts +21 -0
  75. package/dist/display/Empty.svelte +37 -3
  76. package/dist/display/Empty.svelte.d.ts +3 -0
  77. package/dist/display/Item.svelte +42 -11
  78. package/dist/display/Item.svelte.d.ts +4 -2
  79. package/dist/display/Map.svelte +488 -0
  80. package/dist/display/Map.svelte.d.ts +44 -0
  81. package/dist/display/Marquee.svelte +0 -2
  82. package/dist/display/Section.svelte +14 -12
  83. package/dist/display/Section.svelte.d.ts +2 -3
  84. package/dist/display/Skeleton.svelte +32 -0
  85. package/dist/display/Skeleton.svelte.d.ts +10 -0
  86. package/dist/display/Table.svelte +94 -132
  87. package/dist/display/Table.svelte.d.ts +10 -1
  88. package/dist/display/css/accordion.css +349 -52
  89. package/dist/display/css/alert.css +38 -18
  90. package/dist/display/css/avatar-group.css +38 -75
  91. package/dist/display/css/avatar.css +139 -121
  92. package/dist/display/css/badge.css +50 -27
  93. package/dist/display/css/card.css +123 -71
  94. package/dist/display/css/carousel.css +25 -5
  95. package/dist/display/css/chat-box.css +158 -26
  96. package/dist/display/css/chip.css +142 -68
  97. package/dist/display/css/code.css +2 -6
  98. package/dist/display/css/collapsible.css +349 -45
  99. package/dist/display/css/countdown.css +206 -0
  100. package/dist/display/css/divider.css +8 -6
  101. package/dist/display/css/empty.css +7 -0
  102. package/dist/display/css/item.css +330 -84
  103. package/dist/display/css/map.css +164 -0
  104. package/dist/display/css/marquee.css +0 -3
  105. package/dist/display/css/section.css +89 -65
  106. package/dist/display/css/skeleton.css +58 -0
  107. package/dist/display/css/table.css +309 -193
  108. package/dist/form/Checkbox.svelte +11 -5
  109. package/dist/form/Checkbox.svelte.d.ts +2 -1
  110. package/dist/form/ColorField.svelte +601 -0
  111. package/dist/form/ColorField.svelte.d.ts +29 -0
  112. package/dist/form/ComboBox.svelte +24 -9
  113. package/dist/form/ComboBox.svelte.d.ts +2 -2
  114. package/dist/form/CsvField.svelte +62 -136
  115. package/dist/form/CsvField.svelte.d.ts +2 -2
  116. package/dist/form/DateField.svelte +33 -15
  117. package/dist/form/DateField.svelte.d.ts +2 -1
  118. package/dist/form/DateRange.svelte +436 -0
  119. package/dist/form/DateRange.svelte.d.ts +24 -0
  120. package/dist/form/DragDrop.svelte +578 -0
  121. package/dist/form/DragDrop.svelte.d.ts +33 -0
  122. package/dist/form/Dropzone.svelte +28 -8
  123. package/dist/form/Dropzone.svelte.d.ts +2 -2
  124. package/dist/form/Editor.svelte +626 -0
  125. package/dist/form/Editor.svelte.d.ts +50 -0
  126. package/dist/form/ImageCropper.svelte +422 -61
  127. package/dist/form/ImageCropper.svelte.d.ts +15 -1
  128. package/dist/form/{PasswordStrength.svelte → PasswordField.svelte} +58 -24
  129. package/dist/form/{PasswordStrength.svelte.d.ts → PasswordField.svelte.d.ts} +6 -5
  130. package/dist/form/PhoneField.svelte +26 -14
  131. package/dist/form/PhoneField.svelte.d.ts +4 -3
  132. package/dist/form/PinField.svelte +39 -31
  133. package/dist/form/PinField.svelte.d.ts +3 -3
  134. package/dist/form/RadioGroup.svelte +9 -5
  135. package/dist/form/RadioGroup.svelte.d.ts +1 -1
  136. package/dist/form/Select.svelte +20 -19
  137. package/dist/form/Select.svelte.d.ts +2 -2
  138. package/dist/form/Slider.svelte +10 -4
  139. package/dist/form/Slider.svelte.d.ts +2 -1
  140. package/dist/form/TextField.svelte +29 -11
  141. package/dist/form/TextField.svelte.d.ts +5 -4
  142. package/dist/form/Textarea.svelte +15 -6
  143. package/dist/form/Textarea.svelte.d.ts +2 -2
  144. package/dist/form/Toggle.svelte +7 -3
  145. package/dist/form/Toggle.svelte.d.ts +1 -1
  146. package/dist/form/css/checkbox.css +18 -2
  147. package/dist/form/css/color-field.css +141 -0
  148. package/dist/form/css/control.css +193 -82
  149. package/dist/form/css/csv-field.css +221 -0
  150. package/dist/form/css/date-range.css +122 -0
  151. package/dist/form/css/date.css +24 -2
  152. package/dist/form/css/drag-drop.css +234 -0
  153. package/dist/form/css/dropzone.css +153 -34
  154. package/dist/form/css/editor.css +367 -0
  155. package/dist/form/css/field.css +4 -0
  156. package/dist/form/css/image-cropper.css +242 -20
  157. package/dist/form/css/radio-group.css +26 -1
  158. package/dist/form/css/select.css +2 -2
  159. package/dist/form/css/slider.css +37 -0
  160. package/dist/form/css/textarea.css +178 -75
  161. package/dist/form/css/toggle.css +15 -3
  162. package/dist/hooks/use-chat.svelte.js +1 -1
  163. package/dist/hooks/use-form.svelte.js +3 -3
  164. package/dist/hooks/use-search.svelte.js +0 -3
  165. package/dist/hooks/use-table.svelte.d.ts +1 -0
  166. package/dist/hooks/use-table.svelte.js +6 -0
  167. package/dist/icons/index.d.ts +34 -2
  168. package/dist/icons/index.js +36 -4
  169. package/dist/index.css +44 -49
  170. package/dist/index.d.ts +14 -4
  171. package/dist/index.js +13 -3
  172. package/dist/layout/AppBar.svelte +22 -14
  173. package/dist/layout/AppBar.svelte.d.ts +2 -1
  174. package/dist/layout/Footer.svelte +19 -11
  175. package/dist/layout/Footer.svelte.d.ts +2 -1
  176. package/dist/layout/Provider.svelte +32 -9
  177. package/dist/layout/Provider.svelte.d.ts +3 -1
  178. package/dist/layout/Sidebar.svelte +17 -8
  179. package/dist/layout/Sidebar.svelte.d.ts +2 -1
  180. package/dist/layout/css/app-bar.css +63 -66
  181. package/dist/layout/css/footer.css +62 -65
  182. package/dist/layout/css/sidebar.css +120 -59
  183. package/dist/navigation/BottomNav.svelte +51 -14
  184. package/dist/navigation/FooterGroup.svelte +1 -1
  185. package/dist/navigation/NavMenu.svelte +47 -23
  186. package/dist/navigation/NavMenu.svelte.d.ts +29 -0
  187. package/dist/navigation/Pagination.svelte +158 -0
  188. package/dist/navigation/Pagination.svelte.d.ts +18 -0
  189. package/dist/navigation/SideNav.svelte +30 -25
  190. package/dist/navigation/SideNav.svelte.d.ts +2 -3
  191. package/dist/navigation/Tabs.svelte +17 -7
  192. package/dist/navigation/Tabs.svelte.d.ts +2 -2
  193. package/dist/navigation/css/bottom-nav.css +319 -257
  194. package/dist/navigation/css/footer-group.css +1 -1
  195. package/dist/navigation/css/footer-nav.css +1 -1
  196. package/dist/navigation/css/nav-menu.css +331 -106
  197. package/dist/navigation/css/pagination.css +74 -0
  198. package/dist/navigation/css/side-nav.css +514 -75
  199. package/dist/navigation/css/tabs.css +246 -52
  200. package/dist/overlay/AlertDialog.svelte +58 -0
  201. package/dist/overlay/AlertDialog.svelte.d.ts +14 -25
  202. package/dist/overlay/Command.svelte +347 -0
  203. package/dist/overlay/Command.svelte.d.ts +33 -25
  204. package/dist/overlay/Drawer.svelte +49 -21
  205. package/dist/overlay/Drawer.svelte.d.ts +2 -2
  206. package/dist/overlay/Dropdown.svelte +3 -3
  207. package/dist/overlay/Modal.svelte +51 -16
  208. package/dist/overlay/Modal.svelte.d.ts +3 -3
  209. package/dist/overlay/Toast.svelte +41 -17
  210. package/dist/overlay/Toast.svelte.d.ts +1 -1
  211. package/dist/overlay/Tooltip.svelte +36 -27
  212. package/dist/overlay/Tooltip.svelte.d.ts +2 -2
  213. package/dist/overlay/css/command.css +68 -0
  214. package/dist/overlay/css/drawer.css +63 -24
  215. package/dist/overlay/css/dropdown.css +1 -1
  216. package/dist/overlay/css/hovercard.css +1 -1
  217. package/dist/overlay/css/modal.css +79 -27
  218. package/dist/overlay/css/toast.css +40 -24
  219. package/dist/overlay/css/tooltip.css +110 -67
  220. package/dist/stores/theme.svelte.js +44 -12
  221. package/dist/stores/toast.svelte.d.ts +4 -4
  222. package/dist/stores/toast.svelte.js +2 -2
  223. package/package.json +1 -1
  224. package/dist/utils/charts.d.ts +0 -27
  225. package/dist/utils/charts.js +0 -140
@@ -9,9 +9,10 @@
9
9
  onchange?: (value: number) => void;
10
10
  size?: 'sm' | 'md' | 'lg';
11
11
  label?: string;
12
- color?: 'primary' | 'secondary' | 'muted';
12
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger';
13
13
  name?: string;
14
14
  hideLabel?: boolean;
15
+ class?: string;
15
16
  };
16
17
  let {
17
18
  value = $bindable(),
@@ -23,7 +24,8 @@
23
24
  size = 'md',
24
25
  color = 'primary',
25
26
  name,
26
- hideLabel
27
+ hideLabel,
28
+ class: className
27
29
  }: Props = $props();
28
30
 
29
31
  let progressPercentage = $derived(((value! - min) / (max - min)) * 100);
@@ -31,7 +33,11 @@
31
33
  const colors = {
32
34
  primary: 'is-primary',
33
35
  secondary: 'is-secondary',
34
- muted: 'is-muted'
36
+ muted: 'is-muted',
37
+ success: 'is-success',
38
+ info: 'is-info',
39
+ warning: 'is-warning',
40
+ danger: 'is-danger'
35
41
  };
36
42
 
37
43
  const sizes = {
@@ -41,7 +47,7 @@
41
47
  };
42
48
  </script>
43
49
 
44
- <div class="slider-wrapper">
50
+ <div class={cn('slider-wrapper', className)}>
45
51
  <div class="slider-info" hidden={hideLabel}>
46
52
  <span>{label}</span>
47
53
  <span>{value}</span>
@@ -6,9 +6,10 @@ type Props = {
6
6
  onchange?: (value: number) => void;
7
7
  size?: 'sm' | 'md' | 'lg';
8
8
  label?: string;
9
- color?: 'primary' | 'secondary' | 'muted';
9
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger';
10
10
  name?: string;
11
11
  hideLabel?: boolean;
12
+ class?: string;
12
13
  };
13
14
  declare const Slider: import("svelte").Component<Props, {}, "value">;
14
15
  type Slider = ReturnType<typeof Slider>;
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { Icon, type IconData } from '../index.js';
3
3
  import { cn } from '../utils/class-names.js';
4
+ import type { Snippet } from 'svelte';
4
5
  import type { HTMLInputAttributes } from 'svelte/elements';
5
6
 
6
7
  type Props = {
@@ -13,11 +14,12 @@
13
14
  controlClass?: string;
14
15
  startIcon?: IconData;
15
16
  endIcon?: IconData;
16
- startText?: string;
17
- endText?: string;
17
+ startText?: string | Snippet;
18
+ endText?: string | Snippet;
18
19
  onchange?: (value: unknown) => void;
19
20
  oninput?: (value: unknown) => void;
20
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
21
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
22
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
21
23
  size?: 'sm' | 'md' | 'lg';
22
24
  name?: string;
23
25
  label?: string;
@@ -29,7 +31,6 @@
29
31
  max?: HTMLInputAttributes['max'];
30
32
  maxlength?: HTMLInputAttributes['maxlength'];
31
33
  isFloatLabel?: boolean;
32
- isSolid?: boolean;
33
34
  };
34
35
 
35
36
  let {
@@ -48,6 +49,7 @@
48
49
  onchange,
49
50
  oninput,
50
51
  variant = 'outlined',
52
+ color = 'muted',
51
53
  size = 'md',
52
54
  name,
53
55
  label,
@@ -56,8 +58,7 @@
56
58
  helpText,
57
59
  errorText,
58
60
  min,
59
- max,
60
- isSolid
61
+ max
61
62
  }: Props = $props();
62
63
 
63
64
  const uid = $props.id();
@@ -65,10 +66,19 @@
65
66
  let isActive = $state(false);
66
67
  let isFocused = $state(false);
67
68
 
68
- const variantClasses = {
69
+ const colors = {
69
70
  primary: 'is-primary',
70
71
  secondary: 'is-secondary',
71
72
  muted: 'is-muted',
73
+ success: 'is-success',
74
+ info: 'is-info',
75
+ danger: 'is-danger',
76
+ warning: 'is-warning'
77
+ };
78
+
79
+ const variants = {
80
+ solid: 'is-solid',
81
+ soft: 'is-soft',
72
82
  outlined: 'is-outlined',
73
83
  line: 'is-line'
74
84
  };
@@ -100,9 +110,9 @@
100
110
  <label
101
111
  class={cn(
102
112
  'control',
103
- variantClasses[variant],
113
+ colors[color],
114
+ variants[variant],
104
115
  sizeClasses[size],
105
- isSolid && 'is-solid',
106
116
  isFloatLabel && 'is-float',
107
117
  (isActive || isFocused) && 'is-active',
108
118
  controlClass
@@ -128,7 +138,11 @@
128
138
  {/if}
129
139
 
130
140
  {#if startText}
131
- <span class={textClasses}>{startText}</span>
141
+ {#if typeof startText === 'string'}
142
+ <span class={textClasses}>{startText}</span>
143
+ {:else}
144
+ {@render startText()}
145
+ {/if}
132
146
  {/if}
133
147
 
134
148
  <input
@@ -154,7 +168,11 @@
154
168
  />
155
169
 
156
170
  {#if endText}
157
- <span class={textClasses}>{endText}</span>
171
+ {#if typeof endText === 'string'}
172
+ <span class={textClasses}>{endText}</span>
173
+ {:else}
174
+ {@render endText()}
175
+ {/if}
158
176
  {/if}
159
177
 
160
178
  {#if endIcon}
@@ -1,4 +1,5 @@
1
1
  import { type IconData } from '../index.js';
2
+ import type { Snippet } from 'svelte';
2
3
  import type { HTMLInputAttributes } from 'svelte/elements';
3
4
  type Props = {
4
5
  el?: HTMLInputElement;
@@ -10,11 +11,12 @@ type Props = {
10
11
  controlClass?: string;
11
12
  startIcon?: IconData;
12
13
  endIcon?: IconData;
13
- startText?: string;
14
- endText?: string;
14
+ startText?: string | Snippet;
15
+ endText?: string | Snippet;
15
16
  onchange?: (value: unknown) => void;
16
17
  oninput?: (value: unknown) => void;
17
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
18
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
19
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
18
20
  size?: 'sm' | 'md' | 'lg';
19
21
  name?: string;
20
22
  label?: string;
@@ -26,7 +28,6 @@ type Props = {
26
28
  max?: HTMLInputAttributes['max'];
27
29
  maxlength?: HTMLInputAttributes['maxlength'];
28
30
  isFloatLabel?: boolean;
29
- isSolid?: boolean;
30
31
  };
31
32
  declare const TextField: import("svelte").Component<Props, {}, "value" | "el">;
32
33
  type TextField = ReturnType<typeof TextField>;
@@ -11,7 +11,8 @@
11
11
  controlClass?: string;
12
12
  onchange?: (value: string) => void;
13
13
  oninput?: (value: string) => void;
14
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
14
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
15
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
15
16
  size?: 'sm' | 'md' | 'lg';
16
17
  name?: string;
17
18
  label?: string;
@@ -22,7 +23,6 @@
22
23
  rows?: number;
23
24
  cols?: number;
24
25
  isFloatLabel?: boolean;
25
- isSolid?: boolean;
26
26
  isResize?: boolean;
27
27
  };
28
28
 
@@ -36,6 +36,7 @@
36
36
  onchange,
37
37
  oninput,
38
38
  variant = 'outlined',
39
+ color = 'muted',
39
40
  size = 'md',
40
41
  name,
41
42
  label,
@@ -46,7 +47,6 @@
46
47
  maxlength,
47
48
  rows = 4,
48
49
  cols,
49
- isSolid,
50
50
  isResize = false
51
51
  }: Props = $props();
52
52
 
@@ -55,10 +55,19 @@
55
55
  let isActive = $state(false);
56
56
  let isFocused = $state(false);
57
57
 
58
- const variantClasses = {
58
+ const colors = {
59
59
  primary: 'is-primary',
60
60
  secondary: 'is-secondary',
61
61
  muted: 'is-muted',
62
+ success: 'is-success',
63
+ info: 'is-info',
64
+ danger: 'is-danger',
65
+ warning: 'is-warning'
66
+ };
67
+
68
+ const variants = {
69
+ solid: 'is-solid',
70
+ soft: 'is-soft',
62
71
  outlined: 'is-outlined',
63
72
  line: 'is-line'
64
73
  };
@@ -83,9 +92,9 @@
83
92
  <label
84
93
  class={cn(
85
94
  'textarea-control',
86
- variantClasses[variant],
95
+ colors[color],
96
+ variants[variant],
87
97
  sizeClasses[size],
88
- isSolid && 'is-solid',
89
98
  isFloatLabel && 'is-float',
90
99
  (isActive || isFocused) && 'is-active',
91
100
  controlClass
@@ -8,7 +8,8 @@ type Props = {
8
8
  controlClass?: string;
9
9
  onchange?: (value: string) => void;
10
10
  oninput?: (value: string) => void;
11
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
11
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
12
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
12
13
  size?: 'sm' | 'md' | 'lg';
13
14
  name?: string;
14
15
  label?: string;
@@ -19,7 +20,6 @@ type Props = {
19
20
  rows?: number;
20
21
  cols?: number;
21
22
  isFloatLabel?: boolean;
22
- isSolid?: boolean;
23
23
  isResize?: boolean;
24
24
  };
25
25
  declare const Textarea: import("svelte").Component<Props, {}, "value" | "el">;
@@ -11,7 +11,7 @@
11
11
  labelLeft?: string;
12
12
  labelRight?: string;
13
13
  name?: string;
14
- color?: 'primary' | 'secondary' | 'muted';
14
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
15
15
  };
16
16
  let {
17
17
  checked = $bindable(),
@@ -29,7 +29,11 @@
29
29
  const colors = {
30
30
  primary: 'is-primary',
31
31
  secondary: 'is-secondary',
32
- muted: 'is-muted'
32
+ muted: 'is-muted',
33
+ success: 'is-success',
34
+ info: 'is-info',
35
+ danger: 'is-danger',
36
+ warning: 'is-warning'
33
37
  };
34
38
  </script>
35
39
 
@@ -50,6 +54,6 @@
50
54
  <span class={cn('toggle-label-right', checked && 'is-active')}>{labelRight}</span>
51
55
  {/if}
52
56
  {#if label}
53
- <span class="label">{label}</span>
57
+ <span class="label-md">{label}</span>
54
58
  {/if}
55
59
  </label>
@@ -8,7 +8,7 @@ type Props = {
8
8
  labelLeft?: string;
9
9
  labelRight?: string;
10
10
  name?: string;
11
- color?: 'primary' | 'secondary' | 'muted';
11
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
12
12
  };
13
13
  declare const Toggle: import("svelte").Component<Props, {}, "checked">;
14
14
  type Toggle = ReturnType<typeof Toggle>;
@@ -1,11 +1,15 @@
1
1
  @layer components {
2
2
  .checkbox {
3
- @apply flex justify-start items-center w-fit gap-2 cursor-pointer;
3
+ @apply relative flex justify-start items-center w-fit gap-2 cursor-pointer flex-nowrap;
4
4
 
5
5
  .checkbox-input {
6
6
  @apply relative appearance-none min-w-5 w-5 h-5 border-2 border-muted rounded-lg;
7
7
  @apply focus:outline-none;
8
- @apply transition-all duration-200 ease-in-out;
8
+ @apply transition-all duration-300 ease-in-out;
9
+
10
+ &.is-muted {
11
+ @apply border-on-muted;
12
+ }
9
13
 
10
14
  &::after {
11
15
  content: '';
@@ -36,6 +40,18 @@
36
40
  &.is-muted {
37
41
  @apply bg-on-muted border-on-muted;
38
42
  }
43
+ &.is-success {
44
+ @apply bg-success border-success;
45
+ }
46
+ &.is-info {
47
+ @apply bg-info border-info;
48
+ }
49
+ &.is-warning {
50
+ @apply bg-warning border-warning;
51
+ }
52
+ &.is-danger {
53
+ @apply bg-danger border-danger;
54
+ }
39
55
 
40
56
  &::after {
41
57
  transform: translate(-50%, -50%) scale(1);
@@ -0,0 +1,141 @@
1
+ @layer components {
2
+ .color-field-swatch {
3
+ @apply size-6 rounded shrink-0;
4
+ @apply inset-ring inset-ring-muted/30;
5
+ }
6
+
7
+ .color-field-swatch.is-sm {
8
+ @apply size-5;
9
+ }
10
+
11
+ .color-field-swatch.is-lg {
12
+ @apply size-8;
13
+ }
14
+
15
+ .color-field-value {
16
+ @apply flex-1 text-left font-mono text-sm uppercase truncate;
17
+ }
18
+
19
+ .color-picker-popover {
20
+ @apply flex flex-col gap-4 p-4 w-80 my-1;
21
+ @apply bg-background text-on-background rounded-box;
22
+ @apply invisible opacity-0 transition-opacity duration-300 ease-in-out;
23
+ @apply shadow shadow-muted;
24
+ position: fixed;
25
+ z-index: 9999;
26
+
27
+ &.is-active {
28
+ @apply visible opacity-100;
29
+ }
30
+ }
31
+
32
+ .color-picker-canvas-wrapper {
33
+ @apply relative w-full h-36 rounded-ui overflow-hidden cursor-crosshair;
34
+ }
35
+
36
+ .color-picker-canvas {
37
+ @apply absolute inset-0 w-full h-full;
38
+ }
39
+
40
+ .color-picker-cursor {
41
+ @apply absolute size-4 -translate-x-1/2 -translate-y-1/2 rounded-full;
42
+ @apply border-2 border-white shadow-md pointer-events-none;
43
+ }
44
+
45
+ .color-picker-slider-wrapper {
46
+ @apply flex flex-col gap-3;
47
+ }
48
+
49
+ .color-picker-slider {
50
+ @apply relative w-full h-4 rounded-full cursor-pointer;
51
+ }
52
+
53
+ .color-picker-hue {
54
+ background: linear-gradient(
55
+ to right,
56
+ hsl(0, 100%, 50%),
57
+ hsl(60, 100%, 50%),
58
+ hsl(120, 100%, 50%),
59
+ hsl(180, 100%, 50%),
60
+ hsl(240, 100%, 50%),
61
+ hsl(300, 100%, 50%),
62
+ hsl(360, 100%, 50%)
63
+ );
64
+ }
65
+
66
+ .color-picker-alpha {
67
+ background-image:
68
+ linear-gradient(45deg, #ccc 25%, transparent 25%),
69
+ linear-gradient(-45deg, #ccc 25%, transparent 25%),
70
+ linear-gradient(45deg, transparent 75%, #ccc 75%),
71
+ linear-gradient(-45deg, transparent 75%, #ccc 75%);
72
+ background-size: 8px 8px;
73
+ background-position:
74
+ 0 0,
75
+ 0 4px,
76
+ 4px -4px,
77
+ -4px 0px;
78
+ }
79
+
80
+ .color-picker-alpha-overlay {
81
+ @apply absolute inset-0 rounded-full;
82
+ }
83
+
84
+ .color-picker-slider-thumb {
85
+ @apply absolute top-1/2 -translate-y-1/2 -translate-x-1/2 size-5;
86
+ @apply bg-white rounded-full shadow-md border border-muted/30;
87
+ @apply pointer-events-none;
88
+ }
89
+
90
+ .color-picker-values {
91
+ @apply flex flex-col gap-2;
92
+ }
93
+
94
+ .color-picker-value-row {
95
+ @apply flex items-center gap-2;
96
+ }
97
+
98
+ .color-picker-value-label {
99
+ @apply text-xs font-semibold uppercase w-12 text-on-muted;
100
+ }
101
+
102
+ .color-picker-value-code {
103
+ @apply flex-1 font-mono text-xs px-2 py-1 rounded-ui bg-muted truncate;
104
+ }
105
+
106
+ .color-picker-preview {
107
+ @apply flex items-center gap-3;
108
+ }
109
+
110
+ .color-picker-preview-swatch {
111
+ @apply size-12 rounded-ui shrink-0;
112
+ @apply inset-ring inset-ring-muted/30;
113
+ background-image:
114
+ linear-gradient(45deg, #ccc 25%, transparent 25%),
115
+ linear-gradient(-45deg, #ccc 25%, transparent 25%),
116
+ linear-gradient(45deg, transparent 75%, #ccc 75%),
117
+ linear-gradient(-45deg, transparent 75%, #ccc 75%);
118
+ background-size: 8px 8px;
119
+ background-position:
120
+ 0 0,
121
+ 0 4px,
122
+ 4px -4px,
123
+ -4px 0px;
124
+ }
125
+
126
+ .color-picker-preview-color {
127
+ @apply absolute inset-0 rounded-ui;
128
+ }
129
+
130
+ .color-picker-preview-info {
131
+ @apply flex flex-col gap-1 flex-1 min-w-0;
132
+ }
133
+
134
+ .color-picker-preview-hex {
135
+ @apply font-mono text-base font-semibold uppercase;
136
+ }
137
+
138
+ .color-picker-preview-foreground {
139
+ @apply text-xs text-on-muted truncate;
140
+ }
141
+ }