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
@@ -11,7 +11,17 @@
11
11
  content: Snippet | string;
12
12
  disabled?: boolean;
13
13
  defaultOpen?: boolean;
14
- variant?: 'primary' | 'secondary' | 'muted' | 'outline';
14
+ variant?: 'solid' | 'soft' | 'outlined' | 'ghost';
15
+ color?:
16
+ | 'primary'
17
+ | 'secondary'
18
+ | 'muted'
19
+ | 'success'
20
+ | 'info'
21
+ | 'warning'
22
+ | 'danger'
23
+ | 'surface'
24
+ | 'background';
15
25
  rootClass?: string;
16
26
  headerClass?: string;
17
27
  contentClass?: string;
@@ -23,19 +33,33 @@
23
33
  content,
24
34
  disabled = false,
25
35
  defaultOpen = false,
26
- variant = 'muted',
36
+ variant = 'ghost',
37
+ color = 'background',
27
38
  rootClass,
28
39
  headerClass,
29
40
  contentClass
30
41
  }: Props = $props();
31
42
 
43
+ // svelte-ignore state_referenced_locally
32
44
  let isOpen = $state(defaultOpen);
33
45
 
34
46
  const variants = {
47
+ solid: 'is-solid',
48
+ soft: 'is-soft',
49
+ outlined: 'is-outlined',
50
+ ghost: 'is-ghost'
51
+ };
52
+
53
+ const colors = {
35
54
  primary: 'is-primary',
36
55
  secondary: 'is-secondary',
37
56
  muted: 'is-muted',
38
- outline: 'is-outline'
57
+ success: 'is-success',
58
+ info: 'is-info',
59
+ warning: 'is-warning',
60
+ danger: 'is-danger',
61
+ surface: 'is-surface',
62
+ background: 'is-background'
39
63
  };
40
64
 
41
65
  function toggle() {
@@ -44,7 +68,9 @@
44
68
  }
45
69
  </script>
46
70
 
47
- <div class={cn('collapsible', variants[variant], rootClass, disabled && 'is-disabled')}>
71
+ <div
72
+ class={cn('collapsible', variants[variant], colors[color], rootClass, disabled && 'is-disabled')}
73
+ >
48
74
  <!-- svelte-ignore a11y_click_events_have_key_events -->
49
75
  <!-- svelte-ignore a11y_no_static_element_interactions -->
50
76
  <div class={cn('collapsible-header', headerClass, isOpen && 'is-open')} onclick={toggle}>
@@ -5,7 +5,8 @@ type Props = {
5
5
  content: Snippet | string;
6
6
  disabled?: boolean;
7
7
  defaultOpen?: boolean;
8
- variant?: 'primary' | 'secondary' | 'muted' | 'outline';
8
+ variant?: 'solid' | 'soft' | 'outlined' | 'ghost';
9
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger' | 'surface' | 'background';
9
10
  rootClass?: string;
10
11
  headerClass?: string;
11
12
  contentClass?: string;
@@ -0,0 +1,169 @@
1
+ <script lang="ts">
2
+ import { cn } from '../utils/class-names.js';
3
+ import { onMount } from 'svelte';
4
+
5
+ type Props = {
6
+ targetDate: Date;
7
+ showDays?: boolean;
8
+ showHours?: boolean;
9
+ showMinutes?: boolean;
10
+ showSeconds?: boolean;
11
+ size?: 'sm' | 'md' | 'lg' | 'xl';
12
+ color?:
13
+ | 'primary'
14
+ | 'secondary'
15
+ | 'muted'
16
+ | 'success'
17
+ | 'info'
18
+ | 'warning'
19
+ | 'danger'
20
+ | 'surface';
21
+ variant?: 'solid' | 'soft' | 'outlined' | 'ghost';
22
+ labels?: {
23
+ days?: string;
24
+ hours?: string;
25
+ minutes?: string;
26
+ seconds?: string;
27
+ };
28
+ onComplete?: () => void;
29
+ class?: string;
30
+ };
31
+
32
+ const {
33
+ targetDate,
34
+ showDays = true,
35
+ showHours = true,
36
+ showMinutes = true,
37
+ showSeconds = true,
38
+ size = 'md',
39
+ color = 'primary',
40
+ variant = 'solid',
41
+ labels = {
42
+ days: 'Days',
43
+ hours: 'Hours',
44
+ minutes: 'Minutes',
45
+ seconds: 'Seconds'
46
+ },
47
+ onComplete,
48
+ class: className
49
+ }: Props = $props();
50
+
51
+ let days = $state(0);
52
+ let hours = $state(0);
53
+ let minutes = $state(0);
54
+ let seconds = $state(0);
55
+ let isComplete = $state(false);
56
+
57
+ const colors = {
58
+ primary: 'is-primary',
59
+ secondary: 'is-secondary',
60
+ muted: 'is-muted',
61
+ success: 'is-success',
62
+ info: 'is-info',
63
+ danger: 'is-danger',
64
+ warning: 'is-warning',
65
+ surface: 'is-surface'
66
+ };
67
+
68
+ const variants = {
69
+ solid: 'is-solid',
70
+ soft: 'is-soft',
71
+ outlined: 'is-outlined',
72
+ ghost: 'is-ghost'
73
+ };
74
+
75
+ const sizes = {
76
+ sm: 'is-sm',
77
+ md: 'is-md',
78
+ lg: 'is-lg',
79
+ xl: 'is-xl'
80
+ };
81
+
82
+ function padNumber(num: number): string {
83
+ return num.toString().padStart(2, '0');
84
+ }
85
+
86
+ function calculateTimeRemaining() {
87
+ const now = new Date().getTime();
88
+ const target = targetDate.getTime();
89
+ const difference = target - now;
90
+
91
+ if (difference <= 0) {
92
+ days = 0;
93
+ hours = 0;
94
+ minutes = 0;
95
+ seconds = 0;
96
+ if (!isComplete) {
97
+ isComplete = true;
98
+ onComplete?.();
99
+ }
100
+ return;
101
+ }
102
+
103
+ days = Math.floor(difference / (1000 * 60 * 60 * 24));
104
+ hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
105
+ minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
106
+ seconds = Math.floor((difference % (1000 * 60)) / 1000);
107
+ }
108
+
109
+ onMount(() => {
110
+ calculateTimeRemaining();
111
+ const interval = setInterval(calculateTimeRemaining, 1000);
112
+ return () => clearInterval(interval);
113
+ });
114
+ </script>
115
+
116
+ <div class={cn('countdown', colors[color], variants[variant], sizes[size], className)}>
117
+ {#if showDays}
118
+ <div class="countdown-unit">
119
+ <div class="countdown-box">
120
+ <span class="countdown-digit">{padNumber(days)}</span>
121
+ </div>
122
+ {#if labels?.days}
123
+ <span class="countdown-label">{labels.days}</span>
124
+ {/if}
125
+ </div>
126
+ {/if}
127
+
128
+ {#if showHours}
129
+ {#if showDays}
130
+ <span class="countdown-separator">:</span>
131
+ {/if}
132
+ <div class="countdown-unit">
133
+ <div class="countdown-box">
134
+ <span class="countdown-digit">{padNumber(hours)}</span>
135
+ </div>
136
+ {#if labels?.hours}
137
+ <span class="countdown-label">{labels.hours}</span>
138
+ {/if}
139
+ </div>
140
+ {/if}
141
+
142
+ {#if showMinutes}
143
+ {#if showHours}
144
+ <span class="countdown-separator">:</span>
145
+ {/if}
146
+ <div class="countdown-unit">
147
+ <div class="countdown-box">
148
+ <span class="countdown-digit">{padNumber(minutes)}</span>
149
+ </div>
150
+ {#if labels?.minutes}
151
+ <span class="countdown-label">{labels.minutes}</span>
152
+ {/if}
153
+ </div>
154
+ {/if}
155
+
156
+ {#if showSeconds}
157
+ {#if showMinutes}
158
+ <span class="countdown-separator">:</span>
159
+ {/if}
160
+ <div class="countdown-unit">
161
+ <div class="countdown-box">
162
+ <span class="countdown-digit">{padNumber(seconds)}</span>
163
+ </div>
164
+ {#if labels?.seconds}
165
+ <span class="countdown-label">{labels.seconds}</span>
166
+ {/if}
167
+ </div>
168
+ {/if}
169
+ </div>
@@ -0,0 +1,21 @@
1
+ type Props = {
2
+ targetDate: Date;
3
+ showDays?: boolean;
4
+ showHours?: boolean;
5
+ showMinutes?: boolean;
6
+ showSeconds?: boolean;
7
+ size?: 'sm' | 'md' | 'lg' | 'xl';
8
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger' | 'surface';
9
+ variant?: 'solid' | 'soft' | 'outlined' | 'ghost';
10
+ labels?: {
11
+ days?: string;
12
+ hours?: string;
13
+ minutes?: string;
14
+ seconds?: string;
15
+ };
16
+ onComplete?: () => void;
17
+ class?: string;
18
+ };
19
+ declare const Countdown: import("svelte").Component<Props, {}, "">;
20
+ type Countdown = ReturnType<typeof Countdown>;
21
+ export default Countdown;
@@ -1,13 +1,28 @@
1
1
  <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
2
4
  type Props = {
3
5
  type?: 'playlist' | 'result' | 'data' | 'template';
4
6
  class?: string;
5
7
  title?: string;
6
8
  description?: string;
7
9
  href?: string;
10
+ target?: '_self' | '_blank' | '_parent' | '_top';
8
11
  onclick?: () => void;
12
+ action?: Snippet;
9
13
  };
10
- let { type = 'template', class: className, title, description }: Props = $props();
14
+ let {
15
+ type = 'template',
16
+ class: className,
17
+ title,
18
+ description,
19
+ href,
20
+ target,
21
+ onclick,
22
+ action
23
+ }: Props = $props();
24
+
25
+ const isClickable = $derived(!!href || !!onclick);
11
26
  </script>
12
27
 
13
28
  <div class="empty">
@@ -458,11 +473,30 @@
458
473
  {#if title || description}
459
474
  <div class="column center">
460
475
  {#if title}
461
- <h6>{title}</h6>
476
+ <h6 class="feature-title">{title}</h6>
462
477
  {/if}
463
478
  {#if description}
464
- <p>{description}</p>
479
+ <p class="feature-description">{description}</p>
465
480
  {/if}
466
481
  </div>
467
482
  {/if}
483
+ {#if isClickable}
484
+ {#if href}
485
+ <a {href} {target} class="empty-action">
486
+ {#if action}
487
+ {@render action()}
488
+ {:else}
489
+ Ver más
490
+ {/if}
491
+ </a>
492
+ {:else}
493
+ <button type="button" class="empty-action" {onclick}>
494
+ {#if action}
495
+ {@render action()}
496
+ {:else}
497
+ Ver más
498
+ {/if}
499
+ </button>
500
+ {/if}
501
+ {/if}
468
502
  </div>
@@ -1,10 +1,13 @@
1
+ import type { Snippet } from 'svelte';
1
2
  type Props = {
2
3
  type?: 'playlist' | 'result' | 'data' | 'template';
3
4
  class?: string;
4
5
  title?: string;
5
6
  description?: string;
6
7
  href?: string;
8
+ target?: '_self' | '_blank' | '_parent' | '_top';
7
9
  onclick?: () => void;
10
+ action?: Snippet;
8
11
  };
9
12
  declare const Empty: import("svelte").Component<Props, {}, "">;
10
13
  type Empty = ReturnType<typeof Empty>;
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { Avatar, Icon } from '../index.js';
3
+ import { ChevronRight24RegularIcon } from '../icons/index.js';
3
4
  import { cn } from '../utils/class-names.js';
4
5
  import type { Snippet } from 'svelte';
5
6
  import type { IconData } from './Icon.svelte';
@@ -10,7 +11,17 @@
10
11
  description?: string;
11
12
  icon?: IconData;
12
13
  src?: string;
13
- variant?: 'ghost' | 'outlined' | 'surface' | 'primary' | 'secondary' | 'muted';
14
+ color?:
15
+ | 'primary'
16
+ | 'secondary'
17
+ | 'muted'
18
+ | 'success'
19
+ | 'info'
20
+ | 'warning'
21
+ | 'danger'
22
+ | 'surface'
23
+ | 'default';
24
+ variant?: 'solid' | 'soft' | 'outlined' | 'ghost';
14
25
  size?: 'sm' | 'md' | 'lg';
15
26
  status?: 'online' | 'offline' | 'busy' | 'away';
16
27
  href?: string;
@@ -20,9 +31,10 @@
20
31
  isCompact?: boolean;
21
32
  hasDivider?: boolean;
22
33
  hasShadow?: boolean;
34
+ hasBullet?: boolean;
35
+ hasIndicator?: boolean;
23
36
  onclick?: (id: string | number) => void;
24
37
  actions?: Snippet;
25
- isSolid?: boolean;
26
38
  class?: string;
27
39
  };
28
40
 
@@ -32,6 +44,7 @@
32
44
  description,
33
45
  src,
34
46
  icon,
47
+ color = 'default',
35
48
  variant = 'ghost',
36
49
  size = 'md',
37
50
  status,
@@ -42,19 +55,30 @@
42
55
  isCompact,
43
56
  hasDivider,
44
57
  hasShadow,
58
+ hasBullet,
59
+ hasIndicator,
45
60
  onclick,
46
61
  actions,
47
- isSolid,
48
62
  class: className
49
63
  }: Props = $props();
50
64
 
51
- const variantClasses = {
52
- ghost: 'is-ghost',
53
- outlined: 'is-outlined',
54
- surface: 'is-surface',
65
+ const colorClasses = {
55
66
  primary: 'is-primary',
56
67
  secondary: 'is-secondary',
57
- muted: 'is-muted'
68
+ muted: 'is-muted',
69
+ success: 'is-success',
70
+ info: 'is-info',
71
+ warning: 'is-warning',
72
+ danger: 'is-danger',
73
+ surface: 'is-surface',
74
+ default: 'is-default'
75
+ };
76
+
77
+ const variantClasses = {
78
+ solid: 'is-solid',
79
+ soft: 'is-soft',
80
+ outlined: 'is-outlined',
81
+ ghost: 'is-ghost'
58
82
  };
59
83
 
60
84
  const sizeClasses = {
@@ -68,6 +92,7 @@
68
92
  let itemClasses = $derived(
69
93
  cn(
70
94
  'item',
95
+ colorClasses[color],
71
96
  variantClasses[variant],
72
97
  sizeClasses[size],
73
98
  isInteractive && !isDisabled && 'is-interactive',
@@ -75,7 +100,6 @@
75
100
  isFocused && 'is-focused',
76
101
  isDisabled && 'is-disabled',
77
102
  isCompact && 'is-compact',
78
- isSolid && 'is-solid',
79
103
  hasDivider && 'has-divider',
80
104
  hasShadow && 'has-shadow',
81
105
  !!src && !label && !description && 'has-icon-only',
@@ -87,9 +111,11 @@
87
111
  {#snippet itemContent()}
88
112
  {#if icon}
89
113
  <Icon {icon} class="h-6 w-auto" />
114
+ {:else if hasBullet}
115
+ <span class="item-bullet"></span>
90
116
  {/if}
91
117
  {#if src}
92
- <Avatar {src} {status} {size} variant="transparent" />
118
+ <Avatar {src} {status} {size} variant="soft" />
93
119
  {/if}
94
120
  <div class="item-body">
95
121
  <div class="item-label">{label}</div>
@@ -102,13 +128,18 @@
102
128
  {@render actions()}
103
129
  </div>
104
130
  {/if}
131
+ {#if hasIndicator}
132
+ <span class="item-indicator">
133
+ <Icon icon={ChevronRight24RegularIcon} />
134
+ </span>
135
+ {/if}
105
136
  {/snippet}
106
137
 
107
138
  {#if href && !isDisabled}
108
139
  <a {href} class={itemClasses} aria-disabled={isDisabled}>
109
140
  {@render itemContent()}
110
141
  </a>
111
- {:else if onclick && id && !isDisabled}
142
+ {:else if onclick && id !== undefined && !isDisabled}
112
143
  <button type="button" class={itemClasses} onclick={() => onclick(id)} disabled={isDisabled}>
113
144
  {@render itemContent()}
114
145
  </button>
@@ -6,7 +6,8 @@ type Props = {
6
6
  description?: string;
7
7
  icon?: IconData;
8
8
  src?: string;
9
- variant?: 'ghost' | 'outlined' | 'surface' | 'primary' | 'secondary' | 'muted';
9
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger' | 'surface' | 'default';
10
+ variant?: 'solid' | 'soft' | 'outlined' | 'ghost';
10
11
  size?: 'sm' | 'md' | 'lg';
11
12
  status?: 'online' | 'offline' | 'busy' | 'away';
12
13
  href?: string;
@@ -16,9 +17,10 @@ type Props = {
16
17
  isCompact?: boolean;
17
18
  hasDivider?: boolean;
18
19
  hasShadow?: boolean;
20
+ hasBullet?: boolean;
21
+ hasIndicator?: boolean;
19
22
  onclick?: (id: string | number) => void;
20
23
  actions?: Snippet;
21
- isSolid?: boolean;
22
24
  class?: string;
23
25
  };
24
26
  declare const Item: import("svelte").Component<Props, {}, "">;