ui-svelte 0.2.11 → 0.2.12

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 (204) hide show
  1. package/dist/charts/ArcChart.svelte +9 -13
  2. package/dist/charts/ArcChart.svelte.d.ts +3 -3
  3. package/dist/charts/AreaChart.svelte +347 -118
  4. package/dist/charts/AreaChart.svelte.d.ts +33 -4
  5. package/dist/charts/BarChart.svelte +288 -66
  6. package/dist/charts/BarChart.svelte.d.ts +26 -1
  7. package/dist/charts/Candlestick.svelte +53 -50
  8. package/dist/charts/Candlestick.svelte.d.ts +8 -8
  9. package/dist/charts/LineChart.svelte +391 -91
  10. package/dist/charts/LineChart.svelte.d.ts +26 -3
  11. package/dist/charts/PieChart.svelte +333 -92
  12. package/dist/charts/PieChart.svelte.d.ts +33 -5
  13. package/dist/charts/css/arc-chart.css +3 -3
  14. package/dist/charts/css/area-chart.css +127 -29
  15. package/dist/charts/css/bar-chart.css +114 -8
  16. package/dist/charts/css/candlestick.css +2 -0
  17. package/dist/charts/css/line-chart.css +111 -13
  18. package/dist/charts/css/pie-chart.css +92 -20
  19. package/dist/control/Audio.svelte +86 -44
  20. package/dist/control/Audio.svelte.d.ts +4 -1
  21. package/dist/control/Button.svelte +18 -27
  22. package/dist/control/Button.svelte.d.ts +3 -2
  23. package/dist/control/IconButton.svelte +17 -27
  24. package/dist/control/IconButton.svelte.d.ts +3 -3
  25. package/dist/control/Image.svelte +123 -0
  26. package/dist/control/Image.svelte.d.ts +13 -0
  27. package/dist/control/Record.svelte +144 -98
  28. package/dist/control/Record.svelte.d.ts +2 -1
  29. package/dist/control/ToggleGroup.svelte +22 -8
  30. package/dist/control/ToggleGroup.svelte.d.ts +2 -1
  31. package/dist/control/ToggleTheme.svelte +13 -11
  32. package/dist/control/ToggleTheme.svelte.d.ts +3 -2
  33. package/dist/control/Video.svelte +55 -29
  34. package/dist/control/Video.svelte.d.ts +1 -0
  35. package/dist/control/css/btn.css +200 -152
  36. package/dist/control/css/image.css +56 -0
  37. package/dist/control/css/media.css +95 -30
  38. package/dist/control/css/toggle-group.css +269 -84
  39. package/dist/control/css/video.css +1 -14
  40. package/dist/css/animations.css +5 -9
  41. package/dist/css/base.css +13 -347
  42. package/dist/css/decorations.css +402 -0
  43. package/dist/css/rich-text.css +485 -0
  44. package/dist/css/transitions.css +158 -0
  45. package/dist/css/typography.css +291 -0
  46. package/dist/display/Accordion.svelte +28 -4
  47. package/dist/display/Accordion.svelte.d.ts +2 -1
  48. package/dist/display/Alert.svelte +32 -12
  49. package/dist/display/Alert.svelte.d.ts +2 -3
  50. package/dist/display/Avatar.svelte +23 -18
  51. package/dist/display/Avatar.svelte.d.ts +4 -1
  52. package/dist/display/AvatarGroup.svelte +20 -18
  53. package/dist/display/AvatarGroup.svelte.d.ts +6 -3
  54. package/dist/display/Badge.svelte +11 -4
  55. package/dist/display/Badge.svelte.d.ts +2 -1
  56. package/dist/display/Card.svelte +15 -14
  57. package/dist/display/Card.svelte.d.ts +2 -3
  58. package/dist/display/Carousel.svelte +130 -99
  59. package/dist/display/Carousel.svelte.d.ts +6 -4
  60. package/dist/display/ChatBox.svelte +245 -106
  61. package/dist/display/ChatBox.svelte.d.ts +32 -5
  62. package/dist/display/Chip.svelte +31 -17
  63. package/dist/display/Chip.svelte.d.ts +3 -2
  64. package/dist/display/Code.svelte +6 -3
  65. package/dist/display/Code.svelte.d.ts +1 -0
  66. package/dist/display/Collapsible.svelte +30 -4
  67. package/dist/display/Collapsible.svelte.d.ts +2 -1
  68. package/dist/display/Empty.svelte +37 -3
  69. package/dist/display/Empty.svelte.d.ts +3 -0
  70. package/dist/display/Item.svelte +30 -11
  71. package/dist/display/Item.svelte.d.ts +2 -2
  72. package/dist/display/Map.svelte +488 -0
  73. package/dist/display/Map.svelte.d.ts +44 -0
  74. package/dist/display/Section.svelte +14 -12
  75. package/dist/display/Section.svelte.d.ts +2 -3
  76. package/dist/display/Skeleton.svelte +32 -0
  77. package/dist/display/Skeleton.svelte.d.ts +10 -0
  78. package/dist/display/Table.svelte +94 -132
  79. package/dist/display/Table.svelte.d.ts +10 -1
  80. package/dist/display/css/accordion.css +349 -52
  81. package/dist/display/css/alert.css +18 -25
  82. package/dist/display/css/avatar-group.css +38 -75
  83. package/dist/display/css/avatar.css +139 -121
  84. package/dist/display/css/badge.css +50 -27
  85. package/dist/display/css/card.css +51 -71
  86. package/dist/display/css/carousel.css +25 -5
  87. package/dist/display/css/chat-box.css +158 -26
  88. package/dist/display/css/chip.css +142 -68
  89. package/dist/display/css/code.css +2 -6
  90. package/dist/display/css/collapsible.css +349 -45
  91. package/dist/display/css/divider.css +8 -6
  92. package/dist/display/css/empty.css +7 -0
  93. package/dist/display/css/item.css +311 -89
  94. package/dist/display/css/map.css +164 -0
  95. package/dist/display/css/section.css +78 -33
  96. package/dist/display/css/skeleton.css +58 -0
  97. package/dist/display/css/table.css +320 -189
  98. package/dist/form/Checkbox.svelte +11 -5
  99. package/dist/form/Checkbox.svelte.d.ts +2 -1
  100. package/dist/form/ColorField.svelte +543 -0
  101. package/dist/form/ColorField.svelte.d.ts +29 -0
  102. package/dist/form/ComboBox.svelte +24 -9
  103. package/dist/form/ComboBox.svelte.d.ts +2 -2
  104. package/dist/form/CsvField.svelte +62 -136
  105. package/dist/form/CsvField.svelte.d.ts +2 -2
  106. package/dist/form/DateField.svelte +33 -15
  107. package/dist/form/DateField.svelte.d.ts +2 -1
  108. package/dist/form/DateRange.svelte +436 -0
  109. package/dist/form/DateRange.svelte.d.ts +24 -0
  110. package/dist/form/DragDrop.svelte +348 -0
  111. package/dist/form/DragDrop.svelte.d.ts +32 -0
  112. package/dist/form/Dropzone.svelte +28 -8
  113. package/dist/form/Dropzone.svelte.d.ts +2 -2
  114. package/dist/form/Editor.svelte +626 -0
  115. package/dist/form/Editor.svelte.d.ts +50 -0
  116. package/dist/form/ImageCropper.svelte +291 -61
  117. package/dist/form/ImageCropper.svelte.d.ts +15 -1
  118. package/dist/form/{PasswordStrength.svelte → PasswordField.svelte} +58 -24
  119. package/dist/form/{PasswordStrength.svelte.d.ts → PasswordField.svelte.d.ts} +6 -5
  120. package/dist/form/PhoneField.svelte +26 -14
  121. package/dist/form/PhoneField.svelte.d.ts +4 -3
  122. package/dist/form/PinField.svelte +39 -31
  123. package/dist/form/PinField.svelte.d.ts +3 -3
  124. package/dist/form/RadioGroup.svelte +4 -4
  125. package/dist/form/RadioGroup.svelte.d.ts +1 -1
  126. package/dist/form/Select.svelte +20 -19
  127. package/dist/form/Select.svelte.d.ts +2 -2
  128. package/dist/form/Slider.svelte +4 -2
  129. package/dist/form/Slider.svelte.d.ts +1 -0
  130. package/dist/form/TextField.svelte +16 -7
  131. package/dist/form/TextField.svelte.d.ts +2 -2
  132. package/dist/form/Textarea.svelte +15 -6
  133. package/dist/form/Textarea.svelte.d.ts +2 -2
  134. package/dist/form/Toggle.svelte +1 -1
  135. package/dist/form/css/checkbox.css +18 -2
  136. package/dist/form/css/color-field.css +141 -0
  137. package/dist/form/css/control.css +193 -82
  138. package/dist/form/css/csv-field.css +226 -0
  139. package/dist/form/css/date-range.css +122 -0
  140. package/dist/form/css/date.css +24 -2
  141. package/dist/form/css/drag-drop.css +271 -0
  142. package/dist/form/css/dropzone.css +153 -34
  143. package/dist/form/css/editor.css +367 -0
  144. package/dist/form/css/field.css +4 -0
  145. package/dist/form/css/image-cropper.css +223 -22
  146. package/dist/form/css/radio-group.css +1 -1
  147. package/dist/form/css/select.css +2 -2
  148. package/dist/form/css/slider.css +1 -0
  149. package/dist/form/css/textarea.css +178 -75
  150. package/dist/form/css/toggle.css +3 -3
  151. package/dist/hooks/use-table.svelte.d.ts +1 -0
  152. package/dist/hooks/use-table.svelte.js +6 -0
  153. package/dist/icons/index.d.ts +30 -2
  154. package/dist/icons/index.js +32 -4
  155. package/dist/index.css +16 -1
  156. package/dist/index.d.ts +12 -4
  157. package/dist/index.js +11 -3
  158. package/dist/layout/AppBar.svelte +22 -14
  159. package/dist/layout/AppBar.svelte.d.ts +2 -1
  160. package/dist/layout/Footer.svelte +19 -11
  161. package/dist/layout/Footer.svelte.d.ts +2 -1
  162. package/dist/layout/Provider.svelte +27 -4
  163. package/dist/layout/Provider.svelte.d.ts +3 -1
  164. package/dist/layout/css/app-bar.css +63 -66
  165. package/dist/layout/css/footer.css +62 -65
  166. package/dist/navigation/BottomNav.svelte +41 -13
  167. package/dist/navigation/FooterGroup.svelte +1 -1
  168. package/dist/navigation/NavMenu.svelte +47 -23
  169. package/dist/navigation/NavMenu.svelte.d.ts +29 -0
  170. package/dist/navigation/Pagination.svelte +158 -0
  171. package/dist/navigation/Pagination.svelte.d.ts +18 -0
  172. package/dist/navigation/SideNav.svelte +30 -25
  173. package/dist/navigation/SideNav.svelte.d.ts +2 -3
  174. package/dist/navigation/Tabs.svelte +17 -7
  175. package/dist/navigation/Tabs.svelte.d.ts +2 -2
  176. package/dist/navigation/css/bottom-nav.css +279 -257
  177. package/dist/navigation/css/footer-group.css +1 -1
  178. package/dist/navigation/css/footer-nav.css +1 -1
  179. package/dist/navigation/css/nav-menu.css +332 -106
  180. package/dist/navigation/css/pagination.css +74 -0
  181. package/dist/navigation/css/side-nav.css +515 -75
  182. package/dist/navigation/css/tabs.css +246 -52
  183. package/dist/overlay/Command.svelte +340 -0
  184. package/dist/overlay/Command.svelte.d.ts +24 -25
  185. package/dist/overlay/Drawer.svelte +49 -21
  186. package/dist/overlay/Drawer.svelte.d.ts +2 -2
  187. package/dist/overlay/Dropdown.svelte +3 -3
  188. package/dist/overlay/Modal.svelte +51 -16
  189. package/dist/overlay/Modal.svelte.d.ts +3 -3
  190. package/dist/overlay/Toast.svelte +41 -17
  191. package/dist/overlay/Toast.svelte.d.ts +1 -1
  192. package/dist/overlay/Tooltip.svelte +40 -26
  193. package/dist/overlay/Tooltip.svelte.d.ts +2 -2
  194. package/dist/overlay/css/command.css +80 -0
  195. package/dist/overlay/css/drawer.css +63 -24
  196. package/dist/overlay/css/dropdown.css +1 -1
  197. package/dist/overlay/css/hovercard.css +1 -1
  198. package/dist/overlay/css/modal.css +27 -27
  199. package/dist/overlay/css/toast.css +17 -29
  200. package/dist/overlay/css/tooltip.css +83 -66
  201. package/dist/stores/theme.svelte.js +26 -1
  202. package/dist/stores/toast.svelte.d.ts +4 -4
  203. package/dist/stores/toast.svelte.js +2 -2
  204. package/package.json +1 -1
@@ -12,17 +12,18 @@
12
12
  dialCode?: string;
13
13
  placeholder?: string;
14
14
  onchange?: (value: string) => void;
15
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
15
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
16
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
16
17
  size?: 'sm' | 'md' | 'lg';
17
18
  name?: string;
18
19
  dialCodeName?: string;
19
- class?: string;
20
+ rootClass?: string;
21
+ controlClass?: string;
20
22
  label?: string;
21
23
  isLabelActive?: boolean;
22
24
  helpText?: string;
23
25
  errorText?: string;
24
26
  isFloatLabel?: boolean;
25
- isSolid?: boolean;
26
27
  priorityCountries?: string[];
27
28
  searchPlaceholder?: string;
28
29
  emptyText?: string;
@@ -30,13 +31,15 @@
30
31
  };
31
32
 
32
33
  let {
33
- class: className,
34
+ rootClass,
35
+ controlClass,
34
36
  value = $bindable(''),
35
37
  countryCode = $bindable(''),
36
38
  dialCode = $bindable(''),
37
39
  placeholder = 'Enter phone number',
38
40
  onchange,
39
41
  variant = 'outlined',
42
+ color = 'muted',
40
43
  size = 'md',
41
44
  name,
42
45
  dialCodeName = 'dialCode',
@@ -45,17 +48,25 @@
45
48
  helpText,
46
49
  errorText,
47
50
  isFloatLabel,
48
- isSolid,
49
51
  priorityCountries = [],
50
52
  searchPlaceholder = 'Search country...',
51
53
  emptyText = 'No countries found',
52
54
  loadingText = 'Loading...'
53
55
  }: Props = $props();
54
56
 
55
- const variantClasses = {
57
+ const colors = {
56
58
  primary: 'is-primary',
57
59
  secondary: 'is-secondary',
58
60
  muted: 'is-muted',
61
+ success: 'is-success',
62
+ info: 'is-info',
63
+ danger: 'is-danger',
64
+ warning: 'is-warning'
65
+ };
66
+
67
+ const variants = {
68
+ solid: 'is-solid',
69
+ soft: 'is-soft',
59
70
  outlined: 'is-outlined',
60
71
  line: 'is-line'
61
72
  };
@@ -66,11 +77,11 @@
66
77
  lg: 'is-lg'
67
78
  };
68
79
 
69
- const avatarSizes = {
80
+ const avatarSizes: any = {
70
81
  sm: 'xs',
71
82
  md: 'sm',
72
83
  lg: 'md'
73
- } as const;
84
+ };
74
85
 
75
86
  let displayedCountries = $state<Country[]>([]);
76
87
  let allSortedCountries = $state<Country[]>([]);
@@ -359,7 +370,7 @@
359
370
  });
360
371
  </script>
361
372
 
362
- <div class={cn('field', className)}>
373
+ <div class={cn('field', rootClass)}>
363
374
  <input type="hidden" name={dialCodeName} bind:value={dialCode} />
364
375
 
365
376
  {#if !isFloatLabel && label}
@@ -371,11 +382,12 @@
371
382
  bind:this={controlElement}
372
383
  class={cn(
373
384
  'control',
374
- variantClasses[variant],
385
+ colors[color],
386
+ variants[variant],
375
387
  sizeClasses[size],
376
388
  isFloatLabel && 'is-float',
377
- isSolid && 'is-solid',
378
- (isActive || isFocused || isOpen) && 'is-active'
389
+ (isActive || isFocused || isOpen) && 'is-active',
390
+ controlClass
379
391
  )}
380
392
  class:is-error={errorText}
381
393
  onmouseenter={() => (isActive = true)}
@@ -433,7 +445,7 @@
433
445
  {/if}
434
446
 
435
447
  <div class:is-active={isOpen} class="combo-box-popover" bind:this={contentEl} {style}>
436
- <div class={cn('combo-box-search', variantClasses[variant])}>
448
+ <div class={cn('combo-box-search', variants[variant])}>
437
449
  <Icon icon={Search24RegularIcon} class="combo-box-search-icon" />
438
450
  <input
439
451
  bind:this={searchInputEl}
@@ -459,7 +471,7 @@
459
471
  onclick={() => handleSelect(item)}
460
472
  isActive={countryCode === item.id}
461
473
  isFocused={focusedIndex === index}
462
- variant="primary"
474
+ {color}
463
475
  size="sm"
464
476
  isCompact
465
477
  />
@@ -4,17 +4,18 @@ type Props = {
4
4
  dialCode?: string;
5
5
  placeholder?: string;
6
6
  onchange?: (value: string) => void;
7
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
7
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
8
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
8
9
  size?: 'sm' | 'md' | 'lg';
9
10
  name?: string;
10
11
  dialCodeName?: string;
11
- class?: string;
12
+ rootClass?: string;
13
+ controlClass?: string;
12
14
  label?: string;
13
15
  isLabelActive?: boolean;
14
16
  helpText?: string;
15
17
  errorText?: string;
16
18
  isFloatLabel?: boolean;
17
- isSolid?: boolean;
18
19
  priorityCountries?: string[];
19
20
  searchPlaceholder?: string;
20
21
  emptyText?: string;
@@ -5,9 +5,9 @@
5
5
  length?: number;
6
6
  values?: string[];
7
7
  class?: string;
8
- variant?: 'solid' | 'outlined' | 'soft' | 'line';
9
- color?: 'primary' | 'secondary' | 'muted';
10
- inputSize?: 'small' | 'medium' | 'large';
8
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
9
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
10
+ size?: 'sm' | 'md' | 'lg';
11
11
  type?: 'text' | 'password' | 'number';
12
12
  name?: string;
13
13
  label?: string;
@@ -18,35 +18,41 @@
18
18
 
19
19
  let {
20
20
  class: className,
21
- variant = 'soft',
22
- color = 'primary',
23
- inputSize = 'medium',
21
+ variant = 'outlined',
22
+ color = 'muted',
23
+ size = 'md',
24
24
  label,
25
25
  name,
26
26
  type = 'text',
27
27
  helpText,
28
28
  errorText,
29
29
  length = 6,
30
+ // svelte-ignore state_referenced_locally
30
31
  values = Array.from({ length }).map(() => ''),
31
32
  oncomplete
32
33
  }: Props = $props();
33
34
 
34
- const variants = {
35
- solid: 'field-solid',
36
- outlined: 'field-outlined',
37
- soft: 'field-soft',
38
- line: 'field-line'
39
- };
40
35
  const colors = {
41
- primary: 'field-primary',
42
- secondary: 'field-secondary',
43
- muted: 'field-muted'
36
+ primary: 'is-primary',
37
+ secondary: 'is-secondary',
38
+ muted: 'is-muted',
39
+ success: 'is-success',
40
+ info: 'is-info',
41
+ danger: 'is-danger',
42
+ warning: 'is-warning'
43
+ };
44
+
45
+ const variants = {
46
+ solid: 'is-solid',
47
+ soft: 'is-soft',
48
+ outlined: 'is-outlined',
49
+ line: 'is-line'
44
50
  };
45
51
 
46
- const sizes = {
47
- small: 'field-small',
48
- medium: 'field-medium',
49
- large: 'field-large'
52
+ const sizeClasses = {
53
+ sm: 'is-sm',
54
+ md: 'is-md',
55
+ lg: 'is-lg'
50
56
  };
51
57
 
52
58
  const uid = $props.id();
@@ -63,7 +69,7 @@
63
69
  values = [...values];
64
70
 
65
71
  if (index < length - 1 && target.value) {
66
- const nextInput = document.getElementById(`input-${index + 1}`) as HTMLInputElement;
72
+ const nextInput = document.getElementById(`${uid}-${name}-${index + 1}`) as HTMLInputElement;
67
73
  if (nextInput) {
68
74
  nextInput.focus();
69
75
  }
@@ -72,7 +78,7 @@
72
78
 
73
79
  const handleKeydown = (event: KeyboardEvent, index: number) => {
74
80
  if (event.key === 'Backspace' && index > 0 && !values[index]) {
75
- const prevInput = document.getElementById(`input-${index - 1}`) as HTMLInputElement;
81
+ const prevInput = document.getElementById(`${uid}-${name}-${index - 1}`) as HTMLInputElement;
76
82
  if (prevInput) {
77
83
  prevInput.focus();
78
84
  }
@@ -87,7 +93,7 @@
87
93
  let lastUpdatedIndex = 0;
88
94
  pasteValues.forEach((char, i) => {
89
95
  values[i] = char;
90
- const input = document.getElementById(`input-${i}`) as HTMLInputElement;
96
+ const input = document.getElementById(`${uid}-${name}-${i}`) as HTMLInputElement;
91
97
  if (input) {
92
98
  input.value = char;
93
99
  }
@@ -95,7 +101,9 @@
95
101
  });
96
102
  values = [...values];
97
103
 
98
- const lastInput = document.getElementById(`input-${lastUpdatedIndex}`) as HTMLInputElement;
104
+ const lastInput = document.getElementById(
105
+ `${uid}-${name}-${lastUpdatedIndex}`
106
+ ) as HTMLInputElement;
99
107
  if (lastInput) {
100
108
  lastInput.focus();
101
109
  }
@@ -112,25 +120,25 @@
112
120
  <div class={cn('field', className)}>
113
121
  <input type="hidden" {name} value={values.join('')} />
114
122
  {#if label}
115
- <label for={`${uid}-{name}`} class="label">{label}</label>
123
+ <span class="field-label">{label}</span>
116
124
  {/if}
117
- <div class="pin-wrapper">
125
+ <div class="field-pin-wrapper">
118
126
  {#each Array.from({ length }) as _, i}
119
- <div
120
- class={cn('field-control', variants[variant], colors[color], sizes[inputSize])}
121
- class:is-error={errorText}
127
+ <label
128
+ class={cn('control', colors[color], variants[variant], sizeClasses[size])}
129
+ for={`${uid}-${name}-${i}`}
122
130
  >
123
131
  <input
124
132
  {type}
125
- id={`input-${i}`}
126
- class="field-pin"
133
+ id={`${uid}-${name}-${i}`}
134
+ class="control-pin"
127
135
  maxlength="1"
128
136
  oninput={(e) => handleInput(e, i)}
129
137
  onkeydown={(e) => handleKeydown(e, i)}
130
138
  onpaste={handlePaste}
131
139
  bind:value={values[i]}
132
140
  />
133
- </div>
141
+ </label>
134
142
  {/each}
135
143
  </div>
136
144
  {#if errorText || helpText}
@@ -2,9 +2,9 @@ type Props = {
2
2
  length?: number;
3
3
  values?: string[];
4
4
  class?: string;
5
- variant?: 'solid' | 'outlined' | 'soft' | 'line';
6
- color?: 'primary' | 'secondary' | 'muted';
7
- inputSize?: 'small' | 'medium' | 'large';
5
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
6
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
7
+ size?: 'sm' | 'md' | 'lg';
8
8
  type?: 'text' | 'password' | 'number';
9
9
  name?: string;
10
10
  label?: string;
@@ -15,7 +15,7 @@
15
15
  name?: string;
16
16
  info?: string;
17
17
  error?: string;
18
- variant?: 'primary' | 'secondary' | 'muted';
18
+ color?: 'primary' | 'secondary' | 'muted';
19
19
  size?: 'sm' | 'md' | 'lg';
20
20
  };
21
21
  let {
@@ -26,12 +26,12 @@
26
26
  name,
27
27
  info,
28
28
  error,
29
- variant = 'primary',
29
+ color = 'primary',
30
30
  size = 'md',
31
31
  value = $bindable()
32
32
  }: Props = $props();
33
33
 
34
- const variantClases = {
34
+ const colors = {
35
35
  primary: 'is-primary',
36
36
  secondary: 'is-secondary',
37
37
  muted: 'is-muted'
@@ -57,7 +57,7 @@
57
57
  type="radio"
58
58
  value={item.id}
59
59
  bind:group={value}
60
- class={cn('radio', variantClases[variant], sizes[size])}
60
+ class={cn('radio', colors[color], sizes[size])}
61
61
  />
62
62
  <span class="label">{item.label}</span>
63
63
  </label>
@@ -11,7 +11,7 @@ type Props = {
11
11
  name?: string;
12
12
  info?: string;
13
13
  error?: string;
14
- variant?: 'primary' | 'secondary' | 'muted';
14
+ color?: 'primary' | 'secondary' | 'muted';
15
15
  size?: 'sm' | 'md' | 'lg';
16
16
  };
17
17
  declare const RadioGroup: import("svelte").Component<Props, {}, "value">;
@@ -17,7 +17,8 @@
17
17
  selected?: Option;
18
18
  placeholder?: string;
19
19
  onchange?: (value: unknown) => void;
20
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
20
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
21
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
21
22
  size?: 'sm' | 'md' | 'lg';
22
23
  name?: string;
23
24
  rootClass?: string;
@@ -26,7 +27,6 @@
26
27
  helpText?: string;
27
28
  errorText?: string;
28
29
  isFloatLabel?: boolean;
29
- isSolid?: boolean;
30
30
  };
31
31
 
32
32
  let {
@@ -37,14 +37,14 @@
37
37
  placeholder = 'Select an option',
38
38
  onchange,
39
39
  variant = 'outlined',
40
+ color = 'muted',
40
41
  size = 'md',
41
42
  name,
42
43
  label,
43
44
  isLabelActive,
44
45
  helpText,
45
46
  errorText,
46
- isFloatLabel,
47
- isSolid
47
+ isFloatLabel
48
48
  }: Props = $props();
49
49
 
50
50
  let isOpen = $state(false);
@@ -68,22 +68,23 @@
68
68
  `top: ${position.top}px; left: ${position.left}px; width: ${position.width}px; transform-origin: ${position.isBottomHalf ? 'bottom' : 'top'} center;`
69
69
  );
70
70
 
71
- const variantClasses = {
71
+ const colors = {
72
72
  primary: 'is-primary',
73
73
  secondary: 'is-secondary',
74
74
  muted: 'is-muted',
75
+ success: 'is-success',
76
+ info: 'is-info',
77
+ danger: 'is-danger',
78
+ warning: 'is-warning'
79
+ };
80
+
81
+ const variants = {
82
+ solid: 'is-solid',
83
+ soft: 'is-soft',
75
84
  outlined: 'is-outlined',
76
85
  line: 'is-line'
77
86
  };
78
87
 
79
- const itemVariants = {
80
- primary: 'primary',
81
- secondary: 'secondary',
82
- muted: 'muted',
83
- outlined: 'primary',
84
- line: 'primary'
85
- } as const;
86
-
87
88
  const sizeClasses = {
88
89
  sm: 'is-sm',
89
90
  md: 'is-md',
@@ -252,7 +253,7 @@
252
253
  };
253
254
 
254
255
  onMount(() => {
255
- if (value && !selected) {
256
+ if (value !== undefined && !selected) {
256
257
  selected = options.find((opt) => opt.id === value);
257
258
  } else if (selected) {
258
259
  value = selected.id;
@@ -262,7 +263,7 @@
262
263
  });
263
264
 
264
265
  $effect(() => {
265
- if (!value) {
266
+ if (value === undefined) {
266
267
  selected = undefined;
267
268
  }
268
269
  });
@@ -280,10 +281,10 @@
280
281
  bind:this={controlElement}
281
282
  class={cn(
282
283
  'control',
283
- variantClasses[variant],
284
+ colors[color],
285
+ variants[variant],
284
286
  sizeClasses[size],
285
287
  isFloatLabel && 'is-float',
286
- isSolid && 'is-solid',
287
288
  (isActive || isFocused) && 'is-active'
288
289
  )}
289
290
  class:is-error={errorText}
@@ -295,7 +296,7 @@
295
296
  <span
296
297
  class={cn(
297
298
  'control-label',
298
- (isActive || isFocused || isLabelActive || isOpen || value !== '') && 'is-active'
299
+ (isActive || isFocused || isLabelActive || isOpen || value !== undefined) && 'is-active'
299
300
  )}
300
301
  >
301
302
  {label}
@@ -334,12 +335,12 @@
334
335
  <Item
335
336
  label={item.label}
336
337
  src={item.src}
338
+ {color}
337
339
  description={item.description}
338
340
  id={item.id}
339
341
  onclick={() => handleSelect(item)}
340
342
  isActive={value === item.id}
341
343
  isFocused={focusedIndex === index}
342
- variant={itemVariants[variant]}
343
344
  size="sm"
344
345
  isCompact
345
346
  />
@@ -10,7 +10,8 @@ type Props = {
10
10
  selected?: Option;
11
11
  placeholder?: string;
12
12
  onchange?: (value: unknown) => void;
13
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
13
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
14
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
14
15
  size?: 'sm' | 'md' | 'lg';
15
16
  name?: string;
16
17
  rootClass?: string;
@@ -19,7 +20,6 @@ type Props = {
19
20
  helpText?: string;
20
21
  errorText?: string;
21
22
  isFloatLabel?: boolean;
22
- isSolid?: boolean;
23
23
  };
24
24
  declare const Select: import("svelte").Component<Props, {}, "selected" | "value">;
25
25
  type Select = ReturnType<typeof Select>;
@@ -12,6 +12,7 @@
12
12
  color?: 'primary' | 'secondary' | 'muted';
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);
@@ -41,7 +43,7 @@
41
43
  };
42
44
  </script>
43
45
 
44
- <div class="slider-wrapper">
46
+ <div class={cn('slider-wrapper', className)}>
45
47
  <div class="slider-info" hidden={hideLabel}>
46
48
  <span>{label}</span>
47
49
  <span>{value}</span>
@@ -9,6 +9,7 @@ type Props = {
9
9
  color?: 'primary' | 'secondary' | 'muted';
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>;
@@ -17,7 +17,8 @@
17
17
  endText?: string;
18
18
  onchange?: (value: unknown) => void;
19
19
  oninput?: (value: unknown) => void;
20
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
20
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
21
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
21
22
  size?: 'sm' | 'md' | 'lg';
22
23
  name?: string;
23
24
  label?: string;
@@ -29,7 +30,6 @@
29
30
  max?: HTMLInputAttributes['max'];
30
31
  maxlength?: HTMLInputAttributes['maxlength'];
31
32
  isFloatLabel?: boolean;
32
- isSolid?: boolean;
33
33
  };
34
34
 
35
35
  let {
@@ -48,6 +48,7 @@
48
48
  onchange,
49
49
  oninput,
50
50
  variant = 'outlined',
51
+ color = 'muted',
51
52
  size = 'md',
52
53
  name,
53
54
  label,
@@ -56,8 +57,7 @@
56
57
  helpText,
57
58
  errorText,
58
59
  min,
59
- max,
60
- isSolid
60
+ max
61
61
  }: Props = $props();
62
62
 
63
63
  const uid = $props.id();
@@ -65,10 +65,19 @@
65
65
  let isActive = $state(false);
66
66
  let isFocused = $state(false);
67
67
 
68
- const variantClasses = {
68
+ const colors = {
69
69
  primary: 'is-primary',
70
70
  secondary: 'is-secondary',
71
71
  muted: 'is-muted',
72
+ success: 'is-success',
73
+ info: 'is-info',
74
+ danger: 'is-danger',
75
+ warning: 'is-warning'
76
+ };
77
+
78
+ const variants = {
79
+ solid: 'is-solid',
80
+ soft: 'is-soft',
72
81
  outlined: 'is-outlined',
73
82
  line: 'is-line'
74
83
  };
@@ -100,9 +109,9 @@
100
109
  <label
101
110
  class={cn(
102
111
  'control',
103
- variantClasses[variant],
112
+ colors[color],
113
+ variants[variant],
104
114
  sizeClasses[size],
105
- isSolid && 'is-solid',
106
115
  isFloatLabel && 'is-float',
107
116
  (isActive || isFocused) && 'is-active',
108
117
  controlClass
@@ -14,7 +14,8 @@ type Props = {
14
14
  endText?: string;
15
15
  onchange?: (value: unknown) => void;
16
16
  oninput?: (value: unknown) => void;
17
- variant?: 'primary' | 'secondary' | 'muted' | 'outlined' | 'line';
17
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
18
+ variant?: 'solid' | 'soft' | 'outlined' | 'line';
18
19
  size?: 'sm' | 'md' | 'lg';
19
20
  name?: string;
20
21
  label?: string;
@@ -26,7 +27,6 @@ type Props = {
26
27
  max?: HTMLInputAttributes['max'];
27
28
  maxlength?: HTMLInputAttributes['maxlength'];
28
29
  isFloatLabel?: boolean;
29
- isSolid?: boolean;
30
30
  };
31
31
  declare const TextField: import("svelte").Component<Props, {}, "value" | "el">;
32
32
  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">;