ui-svelte 0.2.3 → 0.2.5

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 (55) hide show
  1. package/dist/assets/country-flags.d.ts +1 -0
  2. package/dist/assets/country-flags.js +1612 -0
  3. package/dist/charts/ArcChart.svelte +291 -48
  4. package/dist/charts/ArcChart.svelte.d.ts +32 -1
  5. package/dist/charts/Candlestick.svelte +663 -115
  6. package/dist/charts/Candlestick.svelte.d.ts +40 -0
  7. package/dist/charts/css/arc-chart.css +76 -6
  8. package/dist/charts/css/candlestick.css +234 -11
  9. package/dist/control/Audio.svelte +8 -12
  10. package/dist/control/Button.svelte +3 -1
  11. package/dist/control/Button.svelte.d.ts +1 -0
  12. package/dist/control/IconButton.svelte +3 -1
  13. package/dist/control/IconButton.svelte.d.ts +1 -0
  14. package/dist/control/ToggleGroup.svelte +82 -0
  15. package/dist/control/ToggleGroup.svelte.d.ts +20 -0
  16. package/dist/control/css/btn.css +1 -1
  17. package/dist/control/css/toggle-group.css +85 -0
  18. package/dist/css/base.css +23 -15
  19. package/dist/css/utilities.css +45 -0
  20. package/dist/display/AvatarGroup.svelte +59 -0
  21. package/dist/display/AvatarGroup.svelte.d.ts +17 -0
  22. package/dist/display/Code.svelte +9 -2
  23. package/dist/display/Code.svelte.d.ts +1 -0
  24. package/dist/display/Section.svelte +1 -1
  25. package/dist/display/css/avatar-group.css +46 -0
  26. package/dist/display/css/avatar.css +1 -10
  27. package/dist/display/css/card.css +0 -10
  28. package/dist/form/ComboBox.svelte.d.ts +1 -1
  29. package/dist/form/PhoneField.svelte +8 -4
  30. package/dist/form/Select.svelte.d.ts +1 -1
  31. package/dist/index.css +43 -21
  32. package/dist/index.d.ts +3 -1
  33. package/dist/index.js +3 -1
  34. package/dist/layout/AppBar.svelte +28 -1
  35. package/dist/layout/AppBar.svelte.d.ts +2 -0
  36. package/dist/layout/Footer.svelte +25 -1
  37. package/dist/layout/Footer.svelte.d.ts +1 -0
  38. package/dist/layout/Sidebar.svelte +33 -3
  39. package/dist/layout/Sidebar.svelte.d.ts +1 -0
  40. package/dist/layout/css/app-bar.css +63 -0
  41. package/dist/layout/css/bottom-bar.css +63 -0
  42. package/dist/layout/css/footer.css +63 -0
  43. package/dist/layout/css/sidebar.css +63 -0
  44. package/dist/navigation/NavMenu.svelte +3 -9
  45. package/dist/navigation/SideNav.svelte +0 -9
  46. package/dist/navigation/SideNav.svelte.d.ts +0 -1
  47. package/dist/navigation/css/footer-group.css +3 -4
  48. package/dist/navigation/css/nav-menu.css +90 -30
  49. package/dist/navigation/css/side-nav.css +127 -66
  50. package/dist/overlay/css/modal.css +2 -2
  51. package/package.json +2 -2
  52. /package/dist/{form/js → assets}/countries.d.ts +0 -0
  53. /package/dist/{form/js → assets}/countries.js +0 -0
  54. /package/dist/{form/js → assets}/phone-examples.d.ts +0 -0
  55. /package/dist/{form/js → assets}/phone-examples.js +0 -0
@@ -0,0 +1,85 @@
1
+ @layer components {
2
+ .toggle-group {
3
+ @apply flex w-fit rounded-ui bg-muted p-1;
4
+ }
5
+
6
+ .toggle-group.is-vertical {
7
+ @apply flex-col;
8
+ }
9
+
10
+ .toggle-group-item {
11
+ @apply relative flex items-center justify-center flex-nowrap;
12
+ @apply font-medium whitespace-nowrap;
13
+ @apply rounded-ui outline-none;
14
+ @apply cursor-pointer select-none;
15
+ @apply transition-all duration-200;
16
+ @apply disabled:cursor-not-allowed disabled:opacity-50;
17
+ }
18
+
19
+ .toggle-group-item.is-xs {
20
+ @apply h-6 gap-2 px-2 text-xs;
21
+
22
+ .icon {
23
+ @apply h-4 w-auto;
24
+ }
25
+ }
26
+
27
+ .toggle-group-item.is-sm {
28
+ @apply h-8 gap-2 px-2 text-xs;
29
+
30
+ .icon {
31
+ @apply h-4 w-auto;
32
+ }
33
+ }
34
+
35
+ .toggle-group-item.is-md {
36
+ @apply h-10 gap-3 px-3 text-sm;
37
+
38
+ .icon {
39
+ @apply h-5 w-auto;
40
+ }
41
+ }
42
+
43
+ .toggle-group-item.is-lg {
44
+ @apply h-12 gap-3 px-4 text-lg;
45
+
46
+ .icon {
47
+ @apply h-6 w-auto;
48
+ }
49
+ }
50
+
51
+ .toggle-group-item.is-active {
52
+ @apply bg-background text-on-background shadow-sm;
53
+ }
54
+
55
+ .toggle-group-item:not(.is-active) {
56
+ @apply text-on-muted hover:text-on-background;
57
+ }
58
+
59
+ .toggle-group.is-wide {
60
+ @apply w-full;
61
+ }
62
+
63
+ .toggle-group.is-wide .toggle-group-item {
64
+ @apply flex-1;
65
+ }
66
+
67
+ /* Primary variant */
68
+ .toggle-group.is-primary .toggle-group-item.is-active {
69
+ @apply bg-primary text-on-primary;
70
+ }
71
+
72
+ /* Secondary variant */
73
+ .toggle-group.is-secondary .toggle-group-item.is-active {
74
+ @apply bg-secondary text-on-secondary;
75
+ }
76
+
77
+ /* Outlined variant */
78
+ .toggle-group.is-outlined {
79
+ @apply bg-transparent inset-ring inset-ring-muted;
80
+ }
81
+
82
+ .toggle-group.is-outlined .toggle-group-item.is-active {
83
+ @apply bg-muted text-on-muted;
84
+ }
85
+ }
package/dist/css/base.css CHANGED
@@ -30,11 +30,13 @@
30
30
  @supports not selector(::-webkit-scrollbar) {
31
31
  * {
32
32
  scrollbar-width: thin;
33
- scrollbar-color: color-mix(in oklch, currentColor 80%, transparent) color-mix(in oklch, currentColor 20%, transparent);
33
+ scrollbar-color: color-mix(in oklch, currentColor 80%, transparent)
34
+ color-mix(in oklch, currentColor 20%, transparent);
34
35
  }
35
36
 
36
37
  body {
37
- scrollbar-color: color-mix(in oklch, currentColor 80%, transparent) color-mix(in oklch, currentColor 20%, transparent);
38
+ scrollbar-color: color-mix(in oklch, currentColor 80%, transparent)
39
+ color-mix(in oklch, currentColor 20%, transparent);
38
40
  }
39
41
  }
40
42
 
@@ -127,6 +129,12 @@
127
129
  @apply pl-4 md:pl-5 lg:pl-6;
128
130
  }
129
131
 
132
+ p code {
133
+ @apply relative rounded bg-muted text-on-muted font-mono font-semibold;
134
+ @apply px-[0.3rem] py-[0.2rem];
135
+ @apply text-[0.75rem] md:text-[0.875rem] lg:text-base;
136
+ }
137
+
130
138
  .prose {
131
139
  /* Base font size and line height - responsive */
132
140
  @apply text-sm md:text-base lg:text-lg;
@@ -181,9 +189,9 @@
181
189
  }
182
190
 
183
191
  /* Reset margins after headings */
184
- h2+*,
185
- h3+*,
186
- h4+* {
192
+ h2 + *,
193
+ h3 + *,
194
+ h4 + * {
187
195
  @apply mt-0;
188
196
  }
189
197
 
@@ -220,18 +228,18 @@
220
228
  @apply pl-1.5 md:pl-1.5 lg:pl-1.5;
221
229
  }
222
230
 
223
- >ul>li p,
224
- >ol>li p {
231
+ > ul > li p,
232
+ > ol > li p {
225
233
  @apply mt-2 md:mt-3 lg:mt-3 mb-2 md:mb-3 lg:mb-3;
226
234
  }
227
235
 
228
- >ul>li>p:first-child,
229
- >ol>li>p:first-child {
236
+ > ul > li > p:first-child,
237
+ > ol > li > p:first-child {
230
238
  @apply mt-4 md:mt-5 lg:mt-5;
231
239
  }
232
240
 
233
- >ul>li>p:last-child,
234
- >ol>li>p:last-child {
241
+ > ul > li > p:last-child,
242
+ > ol > li > p:last-child {
235
243
  @apply mb-4 md:mb-5 lg:mb-5;
236
244
  }
237
245
 
@@ -304,7 +312,7 @@
304
312
  @apply my-10 md:my-12 lg:my-12;
305
313
  }
306
314
 
307
- hr+* {
315
+ hr + * {
308
316
  @apply mt-0;
309
317
  }
310
318
 
@@ -316,7 +324,7 @@
316
324
  @apply rounded-ui;
317
325
  }
318
326
 
319
- picture>img {
327
+ picture > img {
320
328
  @apply mt-0 mb-0;
321
329
  }
322
330
 
@@ -325,7 +333,7 @@
325
333
  @apply mt-6 md:mt-8 lg:mt-8 mb-6 md:mb-8 lg:mb-8;
326
334
  }
327
335
 
328
- figure>* {
336
+ figure > * {
329
337
  @apply mt-0 mb-0;
330
338
  }
331
339
 
@@ -406,4 +414,4 @@
406
414
  .boxed {
407
415
  @apply container mx-auto;
408
416
  }
409
- }
417
+ }
@@ -60,10 +60,55 @@
60
60
  @apply grid grid-cols-12;
61
61
  }
62
62
 
63
+ @utility span-2 {
64
+ @apply col-span-2;
65
+ }
66
+
67
+ @utility span-3 {
68
+ @apply col-span-3;
69
+ }
70
+
71
+ @utility span-4 {
72
+ @apply col-span-4;
73
+ }
74
+
75
+ @utility span-5 {
76
+ @apply col-span-5;
77
+ }
78
+
79
+ @utility span-6 {
80
+ @apply col-span-6;
81
+ }
82
+
83
+ @utility span-7 {
84
+ @apply col-span-7;
85
+ }
86
+
87
+ @utility span-8 {
88
+ @apply col-span-8;
89
+ }
90
+
91
+ @utility span-9 {
92
+ @apply col-span-9;
93
+ }
94
+
95
+ @utility span-10 {
96
+ @apply col-span-10;
97
+ }
98
+
99
+ @utility span-11 {
100
+ @apply col-span-11;
101
+ }
102
+
103
+ @utility span-12 {
104
+ @apply col-span-12;
105
+ }
106
+
63
107
  /* Grid auto-fit (responsive) */
64
108
  @utility grid-auto-fit {
65
109
  @apply grid grid-cols-[repeat(auto-fit,minmax(250px,1fr))];
66
110
  }
111
+
67
112
  @utility grid-auto-fill {
68
113
  @apply grid grid-cols-[repeat(auto-fill,minmax(250px,1fr))];
69
114
  }
@@ -0,0 +1,59 @@
1
+ <script lang="ts">
2
+ import { cn } from '../utils/class-names.js';
3
+ import Avatar from './Avatar.svelte';
4
+
5
+ type AvatarItem = {
6
+ src?: string;
7
+ name?: string;
8
+ alt?: string;
9
+ };
10
+
11
+ type Props = {
12
+ items: AvatarItem[];
13
+ variant?:
14
+ | 'primary'
15
+ | 'secondary'
16
+ | 'muted'
17
+ | 'success'
18
+ | 'warning'
19
+ | 'danger'
20
+ | 'info'
21
+ | 'transparent';
22
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
23
+ max?: number;
24
+ stacked?: boolean;
25
+ isBordered?: boolean;
26
+ class?: string;
27
+ };
28
+
29
+ const {
30
+ items,
31
+ variant = 'primary',
32
+ size = 'lg',
33
+ max,
34
+ stacked = true,
35
+ isBordered = false,
36
+ class: className
37
+ }: Props = $props();
38
+
39
+ const visibleItems = $derived(max && max < items.length ? items.slice(0, max) : items);
40
+ const remainingCount = $derived(max && max < items.length ? items.length - max : 0);
41
+ </script>
42
+
43
+ <div class={cn('avatar-group', stacked && 'is-stacked', className)}>
44
+ {#each visibleItems as item, i}
45
+ <Avatar
46
+ src={item.src}
47
+ name={item.name}
48
+ alt={item.alt || `Avatar ${i + 1}`}
49
+ {variant}
50
+ {size}
51
+ {isBordered}
52
+ />
53
+ {/each}
54
+ {#if remainingCount > 0}
55
+ <div class={cn('avatar-group-counter', `is-${size}`)}>
56
+ +{remainingCount}
57
+ </div>
58
+ {/if}
59
+ </div>
@@ -0,0 +1,17 @@
1
+ type AvatarItem = {
2
+ src?: string;
3
+ name?: string;
4
+ alt?: string;
5
+ };
6
+ type Props = {
7
+ items: AvatarItem[];
8
+ variant?: 'primary' | 'secondary' | 'muted' | 'success' | 'warning' | 'danger' | 'info' | 'transparent';
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ max?: number;
11
+ stacked?: boolean;
12
+ isBordered?: boolean;
13
+ class?: string;
14
+ };
15
+ declare const AvatarGroup: import("svelte").Component<Props, {}, "">;
16
+ type AvatarGroup = ReturnType<typeof AvatarGroup>;
17
+ export default AvatarGroup;
@@ -4,6 +4,7 @@
4
4
  import { IconButton } from '../index.js';
5
5
  import { Checkmark24RegularIcon, Copy24RegularIcon } from '../icons/index.js';
6
6
  import { theme } from '../stores/theme.svelte.js';
7
+ import { cn } from '../utils/class-names.js';
7
8
 
8
9
  type Props = {
9
10
  code: string;
@@ -12,6 +13,7 @@
12
13
  darkTheme?: string;
13
14
  disableCopy?: boolean;
14
15
  hideLang?: boolean;
16
+ class?: string;
15
17
  };
16
18
 
17
19
  let {
@@ -20,7 +22,8 @@
20
22
  lightTheme = 'catppuccin-latte',
21
23
  darkTheme = 'catppuccin-frappe',
22
24
  disableCopy,
23
- hideLang
25
+ hideLang,
26
+ class: className
24
27
  }: Props = $props();
25
28
 
26
29
  let html: string = $state('');
@@ -48,7 +51,11 @@
48
51
  </script>
49
52
 
50
53
  <!-- svelte-ignore a11y_no_static_element_interactions -->
51
- <div class="code" onmouseenter={() => (hover = true)} onmouseleave={() => (hover = false)}>
54
+ <div
55
+ class={cn('code', className)}
56
+ onmouseenter={() => (hover = true)}
57
+ onmouseleave={() => (hover = false)}
58
+ >
52
59
  {#if open}
53
60
  {#if !hover && !hideLang}
54
61
  <div class="code-info">
@@ -5,6 +5,7 @@ type Props = {
5
5
  darkTheme?: string;
6
6
  disableCopy?: boolean;
7
7
  hideLang?: boolean;
8
+ class?: string;
8
9
  };
9
10
  declare const Code: import("svelte").Component<Props, {}, "">;
10
11
  type Code = ReturnType<typeof Code>;
@@ -24,7 +24,7 @@
24
24
  hasOverlay?: boolean;
25
25
  };
26
26
 
27
- const {
27
+ let {
28
28
  rootClass,
29
29
  bodyClass,
30
30
  coverClass,
@@ -0,0 +1,46 @@
1
+ @layer components {
2
+ .avatar-group {
3
+ @apply inline-flex items-center gap-2;
4
+ }
5
+
6
+ .avatar-group.is-stacked {
7
+ @apply gap-0;
8
+
9
+ &>.avatar {
10
+ @apply -ml-2 first:ml-0;
11
+ @apply outline-2 outline-background rounded-ui;
12
+ @apply transition-transform hover:z-10 hover:scale-110;
13
+ }
14
+
15
+ &>.avatar-group-counter {
16
+ @apply -ml-2;
17
+ }
18
+ }
19
+
20
+ .avatar-group-counter {
21
+ @apply flex items-center justify-center;
22
+ @apply bg-muted text-on-muted;
23
+ @apply rounded-ui font-medium;
24
+ @apply outline-2 outline-background;
25
+ }
26
+
27
+ .avatar-group-counter.is-xs {
28
+ @apply size-5 text-[10px];
29
+ }
30
+
31
+ .avatar-group-counter.is-sm {
32
+ @apply size-6 text-xs;
33
+ }
34
+
35
+ .avatar-group-counter.is-md {
36
+ @apply size-7 text-sm;
37
+ }
38
+
39
+ .avatar-group-counter.is-lg {
40
+ @apply size-10 text-base;
41
+ }
42
+
43
+ .avatar-group-counter.is-xl {
44
+ @apply size-14 text-lg;
45
+ }
46
+ }
@@ -146,13 +146,4 @@
146
146
  @apply size-3;
147
147
  }
148
148
  }
149
-
150
- .avatar-group {
151
- @apply inline-flex;
152
- & > .avatar {
153
- @apply -ml-2 first:ml-0;
154
- @apply outline-2 outline-muted;
155
- @apply transition-transform hover:z-10 hover:scale-110;
156
- }
157
- }
158
- }
149
+ }
@@ -72,16 +72,6 @@
72
72
  @apply bg-surface text-on-surface;
73
73
  }
74
74
 
75
- .card.is-surface.has-divider {
76
- .card-header {
77
- @apply border-on-surface;
78
- }
79
-
80
- .card-footer {
81
- @apply border-on-surface;
82
- }
83
- }
84
-
85
75
  .card.is-ghost {
86
76
  @apply bg-transparent;
87
77
  }
@@ -24,6 +24,6 @@ type Props = {
24
24
  isDisabled?: boolean;
25
25
  arrowIcon?: IconData;
26
26
  };
27
- declare const ComboBox: import("svelte").Component<Props, {}, "value" | "selected">;
27
+ declare const ComboBox: import("svelte").Component<Props, {}, "selected" | "value">;
28
28
  type ComboBox = ReturnType<typeof ComboBox>;
29
29
  export default ComboBox;
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
- import { Avatar, Icon, Item } from '../index.js';
2
+ import { Avatar, Icon, Item, type IconData } from '../index.js';
3
3
  import { cn } from '../utils/class-names.js';
4
4
  import { onMount, tick } from 'svelte';
5
- import { normalizedCountries, type Country } from './js/countries.js';
6
- import type { IconName } from '../types.js';
7
5
  import { ChevronDown24RegularIcon, DotsMoveIcon, Search24RegularIcon } from '../icons/index.js';
6
+ import { countryFlagsIcons } from '../assets/country-flags.js';
7
+ import { normalizedCountries, type Country } from '../assets/countries.js';
8
8
 
9
9
  type Props = {
10
10
  value?: string;
@@ -395,7 +395,10 @@
395
395
  aria-label="Select country"
396
396
  >
397
397
  {#if selectedCountry}
398
- <Avatar name={selectedCountry.name} {size} variant="transparent" />
398
+ <Icon
399
+ icon={countryFlagsIcons[`country-flags:${countryCode}`] as IconData}
400
+ class="h-5 w-5"
401
+ />
399
402
  <span class="phone-dial-code">+{dialCode}</span>
400
403
  {:else}
401
404
  <Avatar name="Select country" {size} variant="transparent" />
@@ -444,6 +447,7 @@
444
447
  <li>
445
448
  <Item
446
449
  label={item.name}
450
+ icon={countryFlagsIcons[`country-flags:${item.id}`] as IconData}
447
451
  description="+{item.dialCode}"
448
452
  id={item.id}
449
453
  onclick={() => handleSelect(item)}
@@ -21,6 +21,6 @@ type Props = {
21
21
  isFloatLabel?: boolean;
22
22
  isSolid?: boolean;
23
23
  };
24
- declare const Select: import("svelte").Component<Props, {}, "value" | "selected">;
24
+ declare const Select: import("svelte").Component<Props, {}, "selected" | "value">;
25
25
  type Select = ReturnType<typeof Select>;
26
26
  export default Select;
package/dist/index.css CHANGED
@@ -8,6 +8,7 @@
8
8
  @import './control/css/btn.css';
9
9
  @import './control/css/media.css';
10
10
  @import './control/css/video.css';
11
+ @import './control/css/toggle-group.css';
11
12
 
12
13
  @import './charts/css/arc-chart.css';
13
14
  @import './charts/css/area-chart.css';
@@ -19,6 +20,7 @@
19
20
  @import './display/css/accordion.css';
20
21
  @import './display/css/alert.css';
21
22
  @import './display/css/avatar.css';
23
+ @import './display/css/avatar-group.css';
22
24
  @import './display/css/badge.css';
23
25
  @import './display/css/carousel.css';
24
26
  @import './display/css/card.css';
@@ -69,48 +71,68 @@
69
71
  @import './overlay/css/tooltip.css';
70
72
 
71
73
  @theme {
72
- --color-primary: var(--primary, oklch(54.6% 0.245 262.881)); /* blue-600 */
73
- --color-on-primary: var(--on-primary, oklch(93.2% 0.032 255.585)); /* blue-100 */
74
+ --color-primary: var(--primary, oklch(54.6% 0.245 262.881));
75
+ /* blue-600 */
76
+ --color-on-primary: var(--on-primary, oklch(93.2% 0.032 255.585));
77
+ /* blue-100 */
74
78
 
75
- --color-secondary: var(--secondary, oklch(0.592 0.249 0.584)); /* pink-600 */
76
- --color-on-secondary: var(--on-secondary, oklch(0.948 0.028 342.258)); /* pink-100 */
79
+ --color-secondary: var(--secondary, oklch(0.592 0.249 0.584));
80
+ /* pink-600 */
81
+ --color-on-secondary: var(--on-secondary, oklch(0.948 0.028 342.258));
82
+ /* pink-100 */
77
83
 
78
- --color-muted: var(--muted, oklch(87.2% 0.01 258.338)); /* gray-300 */
79
- --color-on-muted: var(--on-muted, oklch(27.8% 0.033 256.848)); /* gray-700 */
84
+ --color-muted: var(--muted, oklch(87.2% 0.01 258.338));
85
+ /* gray-300 */
86
+ --color-on-muted: var(--on-muted, oklch(27.8% 0.033 256.848));
87
+ /* gray-700 */
80
88
 
81
89
  /* dark */
82
90
  /*--color-muted: var(--muted, oklch(37.3% 0.034 259.733)); /* gray-700 */
83
91
  /*--color-on-muted: var(--on-muted, oklch(87.2% 0.01 258.338)); /* gray-300 */
84
92
 
85
- --color-background: var(--background, oklch(98.5% 0.002 247.839)); /* gray-50 */
86
- --color-on-background: var(--on-background, oklch(21% 0.034 264.665)); /* gray-900 */
93
+ --color-background: var(--background, oklch(98.5% 0.002 247.839));
94
+ /* gray-50 */
95
+ --color-on-background: var(--on-background, oklch(21% 0.034 264.665));
96
+ /* gray-900 */
87
97
 
88
98
  /* dark */
89
99
  /*--color-background: var(--background, oklch(13% 0.028 261.692)); /* gray-950 */
90
100
  /*--color-on-background: var(--on-background, oklch(96.7% 0.003 264.542)); /* gray-100 */
91
101
 
92
- --color-surface: var(--surface, oklch(96.7% 0.003 264.542)); /* gray-100 */
93
- --color-on-surface: var(--on-surface, oklch(27.9% 0.041 260.031)); /* gray-800 */
102
+ --color-surface: var(--surface, oklch(96.7% 0.003 264.542));
103
+ /* gray-100 */
104
+ --color-on-surface: var(--on-surface, oklch(27.9% 0.041 260.031));
105
+ /* gray-800 */
94
106
 
95
107
  /* dark */
96
108
  /*--color-surface: var(--surface, oklch(21% 0.034 264.665)); /* gray-900 */
97
109
  /*--color-on-surface: var(--on-surface, oklch(92.8% 0.006 264.531)); /* gray-200 */
98
110
 
99
- --color-overlay: var(--overlay, oklch(0 0 0 / 60%)); /* black/60 */
100
- --color-on-overlay: var(--on-overlay, oklch(1 0 0)); /* white */
111
+ --color-overlay: var(--overlay, oklch(0 0 0 / 60%));
112
+ /* black/60 */
113
+ --color-on-overlay: var(--on-overlay, oklch(1 0 0));
114
+ /* white */
101
115
 
102
- --color-success: var(--success, oklch(62.7% 0.194 149.214)); /* green-600 */
103
- --color-on-success: var(--on-success, oklch(96.2% 0.044 156.743)); /* green-100 */
116
+ --color-success: var(--success, oklch(62.7% 0.194 149.214));
117
+ /* green-600 */
118
+ --color-on-success: var(--on-success, oklch(96.2% 0.044 156.743));
119
+ /* green-100 */
104
120
 
105
- --color-info: var(--info, oklch(58.8% 0.158 241.966)); /* sky-600 */
106
- --color-on-info: var(--on-info, oklch(95.1% 0.026 236.824)); /* sky-100 */
121
+ --color-info: var(--info, oklch(58.8% 0.158 241.966));
122
+ /* sky-600 */
123
+ --color-on-info: var(--on-info, oklch(95.1% 0.026 236.824));
124
+ /* sky-100 */
107
125
 
108
- --color-warning: var(--warning, oklch(68.1% 0.162 75.834)); /* yellow-600 */
109
- --color-on-warning: var(--on-warning, oklch(97.3% 0.071 103.193)); /* yellow-100 */
126
+ --color-warning: var(--warning, oklch(68.1% 0.162 75.834));
127
+ /* yellow-600 */
128
+ --color-on-warning: var(--on-warning, oklch(97.3% 0.071 103.193));
129
+ /* yellow-100 */
110
130
 
111
- --color-danger: var(--danger, oklch(57.7% 0.245 27.325)); /* red-600 */
112
- --color-on-danger: var(--on-danger, oklch(93.6% 0.032 17.717)); /* red-100 */
131
+ --color-danger: var(--danger, oklch(57.7% 0.245 27.325));
132
+ /* red-600 */
133
+ --color-on-danger: var(--on-danger, oklch(93.6% 0.032 17.717));
134
+ /* red-100 */
113
135
 
114
136
  --radius-ui: 0.75rem;
115
137
  --scrollbar-size: 6px;
116
- }
138
+ }
package/dist/index.d.ts CHANGED
@@ -9,10 +9,12 @@ import Button from './control/Button.svelte';
9
9
  import IconButton from './control/IconButton.svelte';
10
10
  import Record from './control/Record.svelte';
11
11
  import ToggleTheme from './control/ToggleTheme.svelte';
12
+ import ToggleGroup from './control/ToggleGroup.svelte';
12
13
  import Video from './control/Video.svelte';
13
14
  import Accordion from './display/Accordion.svelte';
14
15
  import Alert from './display/Alert.svelte';
15
16
  import Avatar from './display/Avatar.svelte';
17
+ import AvatarGroup from './display/AvatarGroup.svelte';
16
18
  import Badge from './display/Badge.svelte';
17
19
  import Carousel from './display/Carousel.svelte';
18
20
  import Card from './display/Card.svelte';
@@ -74,5 +76,5 @@ import { useAuth } from './hooks/use-auth.svelte.js';
74
76
  import { theme } from './stores/theme.svelte.js';
75
77
  import { useSearch } from './hooks/use-search.svelte.js';
76
78
  import { useChat } from './hooks/use-chat.svelte.js';
77
- export { AreaChart, ArcChart, BarChart, Candlestick, LineChart, PieChart, Alert, AlertDialog, AppBar, Accordion, Avatar, Audio, Badge, Button, BottomNav, Carousel, Card, ChatBox, Checkbox, Chip, Code, Collapsible, Command, ComboBox, CsvField, DateField, Drawer, Dropzone, Divider, Dropdown, Empty, Footer, FooterNav, FooterGroup, formatCurrency, formatDate, formatNumber, getWeekdays, i18n, Icon, IconButton, ImageCropper, Item, initLanguage, Modal, Marquee, NavMenu, PasswordField, PhoneField, PinField, plural, PopoverStack, Provider, RadioGroup, Record, Scaffold, Section, Select, setLanguage, Sidebar, SideNav, Slider, t, Table, Tabs, TextField, Textarea, theme, Toast, toast, Toggle, ToggleTheme, Tooltip, useAuth, useChat, useClipboard, useFetch, useForm, useLocalStorage, useScroll, useSearch, useTable, useWebSocket, Video };
79
+ export { AreaChart, ArcChart, BarChart, Candlestick, LineChart, PieChart, Alert, AlertDialog, AppBar, Accordion, Avatar, AvatarGroup, Audio, Badge, Button, BottomNav, Carousel, Card, ChatBox, Checkbox, Chip, Code, Collapsible, Command, ComboBox, CsvField, DateField, Drawer, Dropzone, Divider, Dropdown, Empty, Footer, FooterNav, FooterGroup, formatCurrency, formatDate, formatNumber, getWeekdays, i18n, Icon, IconButton, ImageCropper, Item, initLanguage, Modal, Marquee, NavMenu, PasswordField, PhoneField, PinField, plural, PopoverStack, Provider, RadioGroup, Record, Scaffold, Section, Select, setLanguage, Sidebar, SideNav, Slider, t, Table, Tabs, TextField, Textarea, theme, Toast, toast, Toggle, ToggleGroup, ToggleTheme, Tooltip, useAuth, useChat, useClipboard, useFetch, useForm, useLocalStorage, useScroll, useSearch, useTable, useWebSocket, Video };
78
80
  export type { IconData, SideNavItem, SideNavSubItem };
package/dist/index.js CHANGED
@@ -9,10 +9,12 @@ import Button from './control/Button.svelte';
9
9
  import IconButton from './control/IconButton.svelte';
10
10
  import Record from './control/Record.svelte';
11
11
  import ToggleTheme from './control/ToggleTheme.svelte';
12
+ import ToggleGroup from './control/ToggleGroup.svelte';
12
13
  import Video from './control/Video.svelte';
13
14
  import Accordion from './display/Accordion.svelte';
14
15
  import Alert from './display/Alert.svelte';
15
16
  import Avatar from './display/Avatar.svelte';
17
+ import AvatarGroup from './display/AvatarGroup.svelte';
16
18
  import Badge from './display/Badge.svelte';
17
19
  import Carousel from './display/Carousel.svelte';
18
20
  import Card from './display/Card.svelte';
@@ -74,4 +76,4 @@ import { useAuth } from './hooks/use-auth.svelte.js';
74
76
  import { theme } from './stores/theme.svelte.js';
75
77
  import { useSearch } from './hooks/use-search.svelte.js';
76
78
  import { useChat } from './hooks/use-chat.svelte.js';
77
- export { AreaChart, ArcChart, BarChart, Candlestick, LineChart, PieChart, Alert, AlertDialog, AppBar, Accordion, Avatar, Audio, Badge, Button, BottomNav, Carousel, Card, ChatBox, Checkbox, Chip, Code, Collapsible, Command, ComboBox, CsvField, DateField, Drawer, Dropzone, Divider, Dropdown, Empty, Footer, FooterNav, FooterGroup, formatCurrency, formatDate, formatNumber, getWeekdays, i18n, Icon, IconButton, ImageCropper, Item, initLanguage, Modal, Marquee, NavMenu, PasswordField, PhoneField, PinField, plural, PopoverStack, Provider, RadioGroup, Record, Scaffold, Section, Select, setLanguage, Sidebar, SideNav, Slider, t, Table, Tabs, TextField, Textarea, theme, Toast, toast, Toggle, ToggleTheme, Tooltip, useAuth, useChat, useClipboard, useFetch, useForm, useLocalStorage, useScroll, useSearch, useTable, useWebSocket, Video };
79
+ export { AreaChart, ArcChart, BarChart, Candlestick, LineChart, PieChart, Alert, AlertDialog, AppBar, Accordion, Avatar, AvatarGroup, Audio, Badge, Button, BottomNav, Carousel, Card, ChatBox, Checkbox, Chip, Code, Collapsible, Command, ComboBox, CsvField, DateField, Drawer, Dropzone, Divider, Dropdown, Empty, Footer, FooterNav, FooterGroup, formatCurrency, formatDate, formatNumber, getWeekdays, i18n, Icon, IconButton, ImageCropper, Item, initLanguage, Modal, Marquee, NavMenu, PasswordField, PhoneField, PinField, plural, PopoverStack, Provider, RadioGroup, Record, Scaffold, Section, Select, setLanguage, Sidebar, SideNav, Slider, t, Table, Tabs, TextField, Textarea, theme, Toast, toast, Toggle, ToggleGroup, ToggleTheme, Tooltip, useAuth, useChat, useClipboard, useFetch, useForm, useLocalStorage, useScroll, useSearch, useTable, useWebSocket, Video };