sv5ui 0.0.1

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 (144) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +124 -0
  3. package/dist/Alert/Alert.svelte +120 -0
  4. package/dist/Alert/Alert.svelte.d.ts +5 -0
  5. package/dist/Alert/alert.types.d.ts +99 -0
  6. package/dist/Alert/alert.types.js +1 -0
  7. package/dist/Alert/alert.variants.d.ts +213 -0
  8. package/dist/Alert/alert.variants.js +293 -0
  9. package/dist/Alert/index.d.ts +2 -0
  10. package/dist/Alert/index.js +1 -0
  11. package/dist/Avatar/Avatar.svelte +70 -0
  12. package/dist/Avatar/Avatar.svelte.d.ts +6 -0
  13. package/dist/Avatar/avatar.types.d.ts +40 -0
  14. package/dist/Avatar/avatar.types.js +1 -0
  15. package/dist/Avatar/avatar.variants.d.ts +178 -0
  16. package/dist/Avatar/avatar.variants.js +28 -0
  17. package/dist/Avatar/index.d.ts +2 -0
  18. package/dist/Avatar/index.js +1 -0
  19. package/dist/AvatarGroup/AvatarGroup.svelte +66 -0
  20. package/dist/AvatarGroup/AvatarGroup.svelte.d.ts +5 -0
  21. package/dist/AvatarGroup/avatar-group.types.d.ts +34 -0
  22. package/dist/AvatarGroup/avatar-group.types.js +1 -0
  23. package/dist/AvatarGroup/avatar-group.variants.d.ts +173 -0
  24. package/dist/AvatarGroup/avatar-group.variants.js +45 -0
  25. package/dist/AvatarGroup/index.d.ts +2 -0
  26. package/dist/AvatarGroup/index.js +1 -0
  27. package/dist/Badge/Badge.svelte +74 -0
  28. package/dist/Badge/Badge.svelte.d.ts +5 -0
  29. package/dist/Badge/badge.types.d.ts +74 -0
  30. package/dist/Badge/badge.types.js +1 -0
  31. package/dist/Badge/badge.variants.d.ts +303 -0
  32. package/dist/Badge/badge.variants.js +245 -0
  33. package/dist/Badge/index.d.ts +2 -0
  34. package/dist/Badge/index.js +1 -0
  35. package/dist/Button/Button.svelte +103 -0
  36. package/dist/Button/Button.svelte.d.ts +6 -0
  37. package/dist/Button/button.types.d.ts +97 -0
  38. package/dist/Button/button.types.js +1 -0
  39. package/dist/Button/button.variants.d.ts +388 -0
  40. package/dist/Button/button.variants.js +461 -0
  41. package/dist/Button/index.d.ts +2 -0
  42. package/dist/Button/index.js +1 -0
  43. package/dist/Card/Card.svelte +53 -0
  44. package/dist/Card/Card.svelte.d.ts +5 -0
  45. package/dist/Card/card.types.d.ts +32 -0
  46. package/dist/Card/card.types.js +1 -0
  47. package/dist/Card/card.variants.d.ts +108 -0
  48. package/dist/Card/card.variants.js +32 -0
  49. package/dist/Card/index.d.ts +2 -0
  50. package/dist/Card/index.js +1 -0
  51. package/dist/Chip/Chip.svelte +50 -0
  52. package/dist/Chip/Chip.svelte.d.ts +5 -0
  53. package/dist/Chip/chip.types.d.ts +62 -0
  54. package/dist/Chip/chip.types.js +1 -0
  55. package/dist/Chip/chip.variants.d.ts +328 -0
  56. package/dist/Chip/chip.variants.js +58 -0
  57. package/dist/Chip/index.d.ts +2 -0
  58. package/dist/Chip/index.js +1 -0
  59. package/dist/Container/Container.svelte +27 -0
  60. package/dist/Container/Container.svelte.d.ts +5 -0
  61. package/dist/Container/container.types.d.ts +19 -0
  62. package/dist/Container/container.types.js +1 -0
  63. package/dist/Container/container.variants.d.ts +29 -0
  64. package/dist/Container/container.variants.js +9 -0
  65. package/dist/Container/index.d.ts +2 -0
  66. package/dist/Container/index.js +1 -0
  67. package/dist/Empty/Empty.svelte +83 -0
  68. package/dist/Empty/Empty.svelte.d.ts +5 -0
  69. package/dist/Empty/empty.types.d.ts +74 -0
  70. package/dist/Empty/empty.types.js +1 -0
  71. package/dist/Empty/empty.variants.d.ts +288 -0
  72. package/dist/Empty/empty.variants.js +364 -0
  73. package/dist/Empty/index.d.ts +2 -0
  74. package/dist/Empty/index.js +1 -0
  75. package/dist/Icon/Icon.svelte +40 -0
  76. package/dist/Icon/Icon.svelte.d.ts +6 -0
  77. package/dist/Icon/icon.types.d.ts +37 -0
  78. package/dist/Icon/icon.types.js +1 -0
  79. package/dist/Icon/index.d.ts +2 -0
  80. package/dist/Icon/index.js +1 -0
  81. package/dist/Kbd/Kbd.svelte +35 -0
  82. package/dist/Kbd/Kbd.svelte.d.ts +5 -0
  83. package/dist/Kbd/index.d.ts +3 -0
  84. package/dist/Kbd/index.js +2 -0
  85. package/dist/Kbd/kbd.types.d.ts +77 -0
  86. package/dist/Kbd/kbd.types.js +1 -0
  87. package/dist/Kbd/kbd.variants.d.ts +118 -0
  88. package/dist/Kbd/kbd.variants.js +96 -0
  89. package/dist/Kbd/useKbd.svelte.d.ts +29 -0
  90. package/dist/Kbd/useKbd.svelte.js +245 -0
  91. package/dist/Link/Link.svelte +117 -0
  92. package/dist/Link/Link.svelte.d.ts +5 -0
  93. package/dist/Link/index.d.ts +2 -0
  94. package/dist/Link/index.js +1 -0
  95. package/dist/Link/link.types.d.ts +68 -0
  96. package/dist/Link/link.types.js +1 -0
  97. package/dist/Link/link.variants.d.ts +138 -0
  98. package/dist/Link/link.variants.js +145 -0
  99. package/dist/Progress/Progress.svelte +89 -0
  100. package/dist/Progress/Progress.svelte.d.ts +6 -0
  101. package/dist/Progress/index.d.ts +2 -0
  102. package/dist/Progress/index.js +1 -0
  103. package/dist/Progress/progress.types.d.ts +63 -0
  104. package/dist/Progress/progress.types.js +1 -0
  105. package/dist/Progress/progress.variants.d.ts +483 -0
  106. package/dist/Progress/progress.variants.js +190 -0
  107. package/dist/Separator/Separator.svelte +67 -0
  108. package/dist/Separator/Separator.svelte.d.ts +6 -0
  109. package/dist/Separator/index.d.ts +2 -0
  110. package/dist/Separator/index.js +1 -0
  111. package/dist/Separator/separator.types.d.ts +48 -0
  112. package/dist/Separator/separator.types.js +1 -0
  113. package/dist/Separator/separator.variants.d.ts +488 -0
  114. package/dist/Separator/separator.variants.js +104 -0
  115. package/dist/Skeleton/Skeleton.svelte +31 -0
  116. package/dist/Skeleton/Skeleton.svelte.d.ts +5 -0
  117. package/dist/Skeleton/index.d.ts +2 -0
  118. package/dist/Skeleton/index.js +1 -0
  119. package/dist/Skeleton/skeleton.types.d.ts +18 -0
  120. package/dist/Skeleton/skeleton.types.js +1 -0
  121. package/dist/Skeleton/skeleton.variants.d.ts +18 -0
  122. package/dist/Skeleton/skeleton.variants.js +12 -0
  123. package/dist/Timeline/Timeline.svelte +106 -0
  124. package/dist/Timeline/Timeline.svelte.d.ts +5 -0
  125. package/dist/Timeline/index.d.ts +2 -0
  126. package/dist/Timeline/index.js +1 -0
  127. package/dist/Timeline/timeline.types.d.ts +130 -0
  128. package/dist/Timeline/timeline.types.js +1 -0
  129. package/dist/Timeline/timeline.variants.d.ts +413 -0
  130. package/dist/Timeline/timeline.variants.js +121 -0
  131. package/dist/User/User.svelte +94 -0
  132. package/dist/User/User.svelte.d.ts +5 -0
  133. package/dist/User/index.d.ts +2 -0
  134. package/dist/User/index.js +1 -0
  135. package/dist/User/user.types.d.ts +74 -0
  136. package/dist/User/user.types.js +1 -0
  137. package/dist/User/user.variants.d.ts +308 -0
  138. package/dist/User/user.variants.js +73 -0
  139. package/dist/config.d.ts +59 -0
  140. package/dist/config.js +94 -0
  141. package/dist/index.d.ts +19 -0
  142. package/dist/index.js +20 -0
  143. package/dist/theme.css +410 -0
  144. package/package.json +104 -0
@@ -0,0 +1,83 @@
1
+ <script lang="ts" module>
2
+ import type { EmptyProps } from './empty.types.js'
3
+
4
+ export type Props = EmptyProps
5
+ </script>
6
+
7
+ <script lang="ts">
8
+ import { emptyVariants, emptyDefaults } from './empty.variants.js'
9
+ import { getComponentConfig } from '../config.js'
10
+ import Icon from '../Icon/Icon.svelte'
11
+ import Avatar from '../Avatar/Avatar.svelte'
12
+ import Button from '../Button/Button.svelte'
13
+
14
+ const config = getComponentConfig('empty', emptyDefaults)
15
+
16
+ let {
17
+ as = 'div',
18
+ ui,
19
+ icon,
20
+ avatar,
21
+ title,
22
+ description,
23
+ actions,
24
+ color = config.defaultVariants.color,
25
+ variant = config.defaultVariants.variant,
26
+ size = config.defaultVariants.size,
27
+ class: className,
28
+ leading,
29
+ titleSlot,
30
+ descriptionSlot,
31
+ actionsSlot,
32
+ children,
33
+ ...restProps
34
+ }: Props = $props()
35
+
36
+ const classes = $derived.by(() => {
37
+ const slots = emptyVariants({ variant, color, size })
38
+ return {
39
+ root: slots.root({ class: [config.slots.root, className, ui?.root] }),
40
+ icon: slots.icon({ class: [config.slots.icon, ui?.icon] }),
41
+ avatar: slots.avatar({ class: [config.slots.avatar, ui?.avatar] }),
42
+ title: slots.title({ class: [config.slots.title, ui?.title] }),
43
+ description: slots.description({ class: [config.slots.description, ui?.description] }),
44
+ actions: slots.actions({ class: [config.slots.actions, ui?.actions] })
45
+ }
46
+ })
47
+
48
+ const hasActions = $derived(actions && actions.length > 0)
49
+ </script>
50
+
51
+ <svelte:element this={as} class={classes.root} {...restProps}>
52
+ {#if leading}
53
+ {@render leading()}
54
+ {:else if icon}
55
+ <Icon name={icon} class={classes.icon} />
56
+ {:else if avatar}
57
+ <Avatar {...avatar} class={classes.avatar} />
58
+ {/if}
59
+
60
+ {#if titleSlot}
61
+ {@render titleSlot()}
62
+ {:else if title}
63
+ <div class={classes.title}>{title}</div>
64
+ {/if}
65
+
66
+ {#if descriptionSlot}
67
+ {@render descriptionSlot()}
68
+ {:else if description}
69
+ <p class={classes.description}>{description}</p>
70
+ {/if}
71
+
72
+ {@render children?.()}
73
+
74
+ {#if actionsSlot}
75
+ {@render actionsSlot()}
76
+ {:else if hasActions}
77
+ <div class={classes.actions}>
78
+ {#each actions as action, index (index)}
79
+ <Button size="sm" {...action} />
80
+ {/each}
81
+ </div>
82
+ {/if}
83
+ </svelte:element>
@@ -0,0 +1,5 @@
1
+ import type { EmptyProps } from './empty.types.js';
2
+ export type Props = EmptyProps;
3
+ declare const Empty: import("svelte").Component<EmptyProps, {}, "">;
4
+ type Empty = ReturnType<typeof Empty>;
5
+ export default Empty;
@@ -0,0 +1,74 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { ClassNameValue } from 'tailwind-merge';
4
+ import type { EmptyVariantProps, EmptySlots } from './empty.variants.js';
5
+ import type { AvatarProps } from '../Avatar/avatar.types.js';
6
+ import type { ButtonProps } from '../Button/button.types.js';
7
+ export type EmptyProps = Omit<HTMLAttributes<HTMLDivElement>, 'class' | 'title'> & {
8
+ /**
9
+ * Renders the empty state as a different HTML element.
10
+ * @default 'div'
11
+ */
12
+ as?: keyof HTMLElementTagNameMap;
13
+ /**
14
+ * Override styles for specific empty slots (root, icon, avatar, title, description, actions).
15
+ */
16
+ ui?: Partial<Record<EmptySlots, ClassNameValue>>;
17
+ /**
18
+ * Icon to display in the empty state (e.g., 'lucide:inbox', 'lucide:file-x').
19
+ * Takes precedence over avatar when both are provided.
20
+ */
21
+ icon?: string;
22
+ /**
23
+ * Avatar configuration to display instead of an icon.
24
+ * Only visible when icon is not specified.
25
+ */
26
+ avatar?: AvatarProps;
27
+ /**
28
+ * Main heading text for the empty state.
29
+ */
30
+ title?: string;
31
+ /**
32
+ * Supporting description text below the title.
33
+ */
34
+ description?: string;
35
+ /**
36
+ * Array of button configurations to render as action buttons.
37
+ */
38
+ actions?: ButtonProps[];
39
+ /**
40
+ * Controls the color scheme applied to the empty state.
41
+ * @default 'surface'
42
+ */
43
+ color?: NonNullable<EmptyVariantProps['color']>;
44
+ /**
45
+ * Controls the visual style and background treatment.
46
+ * @default 'outline'
47
+ */
48
+ variant?: NonNullable<EmptyVariantProps['variant']>;
49
+ /**
50
+ * Controls the overall dimensions, icon size, and typography scale.
51
+ * @default 'md'
52
+ */
53
+ size?: NonNullable<EmptyVariantProps['size']>;
54
+ /**
55
+ * Additional CSS classes for the root element.
56
+ */
57
+ class?: ClassNameValue;
58
+ /**
59
+ * Custom content to replace the default icon/avatar area.
60
+ */
61
+ leading?: Snippet;
62
+ /**
63
+ * Custom content to replace the default title rendering.
64
+ */
65
+ titleSlot?: Snippet;
66
+ /**
67
+ * Custom content to replace the default description rendering.
68
+ */
69
+ descriptionSlot?: Snippet;
70
+ /**
71
+ * Custom content to replace the default action buttons.
72
+ */
73
+ actionsSlot?: Snippet;
74
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,288 @@
1
+ import { type VariantProps } from 'tailwind-variants';
2
+ export declare const emptyVariants: import("tailwind-variants").TVReturnType<{
3
+ variant: {
4
+ solid: string;
5
+ outline: string;
6
+ soft: string;
7
+ subtle: string;
8
+ };
9
+ color: {
10
+ primary: string;
11
+ secondary: string;
12
+ tertiary: string;
13
+ success: string;
14
+ warning: string;
15
+ error: string;
16
+ info: string;
17
+ surface: string;
18
+ };
19
+ size: {
20
+ xs: {
21
+ root: string;
22
+ icon: string;
23
+ title: string;
24
+ description: string;
25
+ };
26
+ sm: {
27
+ root: string;
28
+ icon: string;
29
+ title: string;
30
+ description: string;
31
+ };
32
+ md: {
33
+ root: string;
34
+ icon: string;
35
+ title: string;
36
+ description: string;
37
+ };
38
+ lg: {
39
+ root: string;
40
+ icon: string;
41
+ title: string;
42
+ description: string;
43
+ };
44
+ xl: {
45
+ root: string;
46
+ icon: string;
47
+ title: string;
48
+ description: string;
49
+ };
50
+ };
51
+ }, {
52
+ root: string;
53
+ icon: string;
54
+ avatar: string;
55
+ title: string;
56
+ description: string;
57
+ actions: string;
58
+ }, undefined, {
59
+ variant: {
60
+ solid: string;
61
+ outline: string;
62
+ soft: string;
63
+ subtle: string;
64
+ };
65
+ color: {
66
+ primary: string;
67
+ secondary: string;
68
+ tertiary: string;
69
+ success: string;
70
+ warning: string;
71
+ error: string;
72
+ info: string;
73
+ surface: string;
74
+ };
75
+ size: {
76
+ xs: {
77
+ root: string;
78
+ icon: string;
79
+ title: string;
80
+ description: string;
81
+ };
82
+ sm: {
83
+ root: string;
84
+ icon: string;
85
+ title: string;
86
+ description: string;
87
+ };
88
+ md: {
89
+ root: string;
90
+ icon: string;
91
+ title: string;
92
+ description: string;
93
+ };
94
+ lg: {
95
+ root: string;
96
+ icon: string;
97
+ title: string;
98
+ description: string;
99
+ };
100
+ xl: {
101
+ root: string;
102
+ icon: string;
103
+ title: string;
104
+ description: string;
105
+ };
106
+ };
107
+ }, {
108
+ root: string;
109
+ icon: string;
110
+ avatar: string;
111
+ title: string;
112
+ description: string;
113
+ actions: string;
114
+ }, import("tailwind-variants").TVReturnType<{
115
+ variant: {
116
+ solid: string;
117
+ outline: string;
118
+ soft: string;
119
+ subtle: string;
120
+ };
121
+ color: {
122
+ primary: string;
123
+ secondary: string;
124
+ tertiary: string;
125
+ success: string;
126
+ warning: string;
127
+ error: string;
128
+ info: string;
129
+ surface: string;
130
+ };
131
+ size: {
132
+ xs: {
133
+ root: string;
134
+ icon: string;
135
+ title: string;
136
+ description: string;
137
+ };
138
+ sm: {
139
+ root: string;
140
+ icon: string;
141
+ title: string;
142
+ description: string;
143
+ };
144
+ md: {
145
+ root: string;
146
+ icon: string;
147
+ title: string;
148
+ description: string;
149
+ };
150
+ lg: {
151
+ root: string;
152
+ icon: string;
153
+ title: string;
154
+ description: string;
155
+ };
156
+ xl: {
157
+ root: string;
158
+ icon: string;
159
+ title: string;
160
+ description: string;
161
+ };
162
+ };
163
+ }, {
164
+ root: string;
165
+ icon: string;
166
+ avatar: string;
167
+ title: string;
168
+ description: string;
169
+ actions: string;
170
+ }, undefined, unknown, unknown, undefined>>;
171
+ export type EmptyVariantProps = VariantProps<typeof emptyVariants>;
172
+ export type EmptySlots = keyof ReturnType<typeof emptyVariants>;
173
+ export declare const emptyDefaults: {
174
+ defaultVariants: import("tailwind-variants").TVDefaultVariants<{
175
+ variant: {
176
+ solid: string;
177
+ outline: string;
178
+ soft: string;
179
+ subtle: string;
180
+ };
181
+ color: {
182
+ primary: string;
183
+ secondary: string;
184
+ tertiary: string;
185
+ success: string;
186
+ warning: string;
187
+ error: string;
188
+ info: string;
189
+ surface: string;
190
+ };
191
+ size: {
192
+ xs: {
193
+ root: string;
194
+ icon: string;
195
+ title: string;
196
+ description: string;
197
+ };
198
+ sm: {
199
+ root: string;
200
+ icon: string;
201
+ title: string;
202
+ description: string;
203
+ };
204
+ md: {
205
+ root: string;
206
+ icon: string;
207
+ title: string;
208
+ description: string;
209
+ };
210
+ lg: {
211
+ root: string;
212
+ icon: string;
213
+ title: string;
214
+ description: string;
215
+ };
216
+ xl: {
217
+ root: string;
218
+ icon: string;
219
+ title: string;
220
+ description: string;
221
+ };
222
+ };
223
+ }, {
224
+ root: string;
225
+ icon: string;
226
+ avatar: string;
227
+ title: string;
228
+ description: string;
229
+ actions: string;
230
+ }, {
231
+ variant: {
232
+ solid: string;
233
+ outline: string;
234
+ soft: string;
235
+ subtle: string;
236
+ };
237
+ color: {
238
+ primary: string;
239
+ secondary: string;
240
+ tertiary: string;
241
+ success: string;
242
+ warning: string;
243
+ error: string;
244
+ info: string;
245
+ surface: string;
246
+ };
247
+ size: {
248
+ xs: {
249
+ root: string;
250
+ icon: string;
251
+ title: string;
252
+ description: string;
253
+ };
254
+ sm: {
255
+ root: string;
256
+ icon: string;
257
+ title: string;
258
+ description: string;
259
+ };
260
+ md: {
261
+ root: string;
262
+ icon: string;
263
+ title: string;
264
+ description: string;
265
+ };
266
+ lg: {
267
+ root: string;
268
+ icon: string;
269
+ title: string;
270
+ description: string;
271
+ };
272
+ xl: {
273
+ root: string;
274
+ icon: string;
275
+ title: string;
276
+ description: string;
277
+ };
278
+ };
279
+ }, {
280
+ root: string;
281
+ icon: string;
282
+ avatar: string;
283
+ title: string;
284
+ description: string;
285
+ actions: string;
286
+ }>;
287
+ slots: Partial<Record<EmptySlots, string>>;
288
+ };