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.
- package/LICENSE +21 -0
- package/README.md +124 -0
- package/dist/Alert/Alert.svelte +120 -0
- package/dist/Alert/Alert.svelte.d.ts +5 -0
- package/dist/Alert/alert.types.d.ts +99 -0
- package/dist/Alert/alert.types.js +1 -0
- package/dist/Alert/alert.variants.d.ts +213 -0
- package/dist/Alert/alert.variants.js +293 -0
- package/dist/Alert/index.d.ts +2 -0
- package/dist/Alert/index.js +1 -0
- package/dist/Avatar/Avatar.svelte +70 -0
- package/dist/Avatar/Avatar.svelte.d.ts +6 -0
- package/dist/Avatar/avatar.types.d.ts +40 -0
- package/dist/Avatar/avatar.types.js +1 -0
- package/dist/Avatar/avatar.variants.d.ts +178 -0
- package/dist/Avatar/avatar.variants.js +28 -0
- package/dist/Avatar/index.d.ts +2 -0
- package/dist/Avatar/index.js +1 -0
- package/dist/AvatarGroup/AvatarGroup.svelte +66 -0
- package/dist/AvatarGroup/AvatarGroup.svelte.d.ts +5 -0
- package/dist/AvatarGroup/avatar-group.types.d.ts +34 -0
- package/dist/AvatarGroup/avatar-group.types.js +1 -0
- package/dist/AvatarGroup/avatar-group.variants.d.ts +173 -0
- package/dist/AvatarGroup/avatar-group.variants.js +45 -0
- package/dist/AvatarGroup/index.d.ts +2 -0
- package/dist/AvatarGroup/index.js +1 -0
- package/dist/Badge/Badge.svelte +74 -0
- package/dist/Badge/Badge.svelte.d.ts +5 -0
- package/dist/Badge/badge.types.d.ts +74 -0
- package/dist/Badge/badge.types.js +1 -0
- package/dist/Badge/badge.variants.d.ts +303 -0
- package/dist/Badge/badge.variants.js +245 -0
- package/dist/Badge/index.d.ts +2 -0
- package/dist/Badge/index.js +1 -0
- package/dist/Button/Button.svelte +103 -0
- package/dist/Button/Button.svelte.d.ts +6 -0
- package/dist/Button/button.types.d.ts +97 -0
- package/dist/Button/button.types.js +1 -0
- package/dist/Button/button.variants.d.ts +388 -0
- package/dist/Button/button.variants.js +461 -0
- package/dist/Button/index.d.ts +2 -0
- package/dist/Button/index.js +1 -0
- package/dist/Card/Card.svelte +53 -0
- package/dist/Card/Card.svelte.d.ts +5 -0
- package/dist/Card/card.types.d.ts +32 -0
- package/dist/Card/card.types.js +1 -0
- package/dist/Card/card.variants.d.ts +108 -0
- package/dist/Card/card.variants.js +32 -0
- package/dist/Card/index.d.ts +2 -0
- package/dist/Card/index.js +1 -0
- package/dist/Chip/Chip.svelte +50 -0
- package/dist/Chip/Chip.svelte.d.ts +5 -0
- package/dist/Chip/chip.types.d.ts +62 -0
- package/dist/Chip/chip.types.js +1 -0
- package/dist/Chip/chip.variants.d.ts +328 -0
- package/dist/Chip/chip.variants.js +58 -0
- package/dist/Chip/index.d.ts +2 -0
- package/dist/Chip/index.js +1 -0
- package/dist/Container/Container.svelte +27 -0
- package/dist/Container/Container.svelte.d.ts +5 -0
- package/dist/Container/container.types.d.ts +19 -0
- package/dist/Container/container.types.js +1 -0
- package/dist/Container/container.variants.d.ts +29 -0
- package/dist/Container/container.variants.js +9 -0
- package/dist/Container/index.d.ts +2 -0
- package/dist/Container/index.js +1 -0
- package/dist/Empty/Empty.svelte +83 -0
- package/dist/Empty/Empty.svelte.d.ts +5 -0
- package/dist/Empty/empty.types.d.ts +74 -0
- package/dist/Empty/empty.types.js +1 -0
- package/dist/Empty/empty.variants.d.ts +288 -0
- package/dist/Empty/empty.variants.js +364 -0
- package/dist/Empty/index.d.ts +2 -0
- package/dist/Empty/index.js +1 -0
- package/dist/Icon/Icon.svelte +40 -0
- package/dist/Icon/Icon.svelte.d.ts +6 -0
- package/dist/Icon/icon.types.d.ts +37 -0
- package/dist/Icon/icon.types.js +1 -0
- package/dist/Icon/index.d.ts +2 -0
- package/dist/Icon/index.js +1 -0
- package/dist/Kbd/Kbd.svelte +35 -0
- package/dist/Kbd/Kbd.svelte.d.ts +5 -0
- package/dist/Kbd/index.d.ts +3 -0
- package/dist/Kbd/index.js +2 -0
- package/dist/Kbd/kbd.types.d.ts +77 -0
- package/dist/Kbd/kbd.types.js +1 -0
- package/dist/Kbd/kbd.variants.d.ts +118 -0
- package/dist/Kbd/kbd.variants.js +96 -0
- package/dist/Kbd/useKbd.svelte.d.ts +29 -0
- package/dist/Kbd/useKbd.svelte.js +245 -0
- package/dist/Link/Link.svelte +117 -0
- package/dist/Link/Link.svelte.d.ts +5 -0
- package/dist/Link/index.d.ts +2 -0
- package/dist/Link/index.js +1 -0
- package/dist/Link/link.types.d.ts +68 -0
- package/dist/Link/link.types.js +1 -0
- package/dist/Link/link.variants.d.ts +138 -0
- package/dist/Link/link.variants.js +145 -0
- package/dist/Progress/Progress.svelte +89 -0
- package/dist/Progress/Progress.svelte.d.ts +6 -0
- package/dist/Progress/index.d.ts +2 -0
- package/dist/Progress/index.js +1 -0
- package/dist/Progress/progress.types.d.ts +63 -0
- package/dist/Progress/progress.types.js +1 -0
- package/dist/Progress/progress.variants.d.ts +483 -0
- package/dist/Progress/progress.variants.js +190 -0
- package/dist/Separator/Separator.svelte +67 -0
- package/dist/Separator/Separator.svelte.d.ts +6 -0
- package/dist/Separator/index.d.ts +2 -0
- package/dist/Separator/index.js +1 -0
- package/dist/Separator/separator.types.d.ts +48 -0
- package/dist/Separator/separator.types.js +1 -0
- package/dist/Separator/separator.variants.d.ts +488 -0
- package/dist/Separator/separator.variants.js +104 -0
- package/dist/Skeleton/Skeleton.svelte +31 -0
- package/dist/Skeleton/Skeleton.svelte.d.ts +5 -0
- package/dist/Skeleton/index.d.ts +2 -0
- package/dist/Skeleton/index.js +1 -0
- package/dist/Skeleton/skeleton.types.d.ts +18 -0
- package/dist/Skeleton/skeleton.types.js +1 -0
- package/dist/Skeleton/skeleton.variants.d.ts +18 -0
- package/dist/Skeleton/skeleton.variants.js +12 -0
- package/dist/Timeline/Timeline.svelte +106 -0
- package/dist/Timeline/Timeline.svelte.d.ts +5 -0
- package/dist/Timeline/index.d.ts +2 -0
- package/dist/Timeline/index.js +1 -0
- package/dist/Timeline/timeline.types.d.ts +130 -0
- package/dist/Timeline/timeline.types.js +1 -0
- package/dist/Timeline/timeline.variants.d.ts +413 -0
- package/dist/Timeline/timeline.variants.js +121 -0
- package/dist/User/User.svelte +94 -0
- package/dist/User/User.svelte.d.ts +5 -0
- package/dist/User/index.d.ts +2 -0
- package/dist/User/index.js +1 -0
- package/dist/User/user.types.d.ts +74 -0
- package/dist/User/user.types.js +1 -0
- package/dist/User/user.variants.d.ts +308 -0
- package/dist/User/user.variants.js +73 -0
- package/dist/config.d.ts +59 -0
- package/dist/config.js +94 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +20 -0
- package/dist/theme.css +410 -0
- package/package.json +104 -0
|
@@ -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 { UserVariantProps, UserSlots } from './user.variants.js';
|
|
5
|
+
import type { AvatarProps } from '../Avatar/avatar.types.js';
|
|
6
|
+
import type { ChipProps } from '../Chip/chip.types.js';
|
|
7
|
+
import type { LinkProps } from '../Link/link.types.js';
|
|
8
|
+
export type UserProps = Omit<HTMLAttributes<HTMLElement>, 'class'> & {
|
|
9
|
+
/**
|
|
10
|
+
* Sets the HTML element type to render.
|
|
11
|
+
* Ignored when `href` is provided.
|
|
12
|
+
* @default 'div'
|
|
13
|
+
*/
|
|
14
|
+
as?: keyof HTMLElementTagNameMap;
|
|
15
|
+
/**
|
|
16
|
+
* Override styles for specific user slots.
|
|
17
|
+
* Available slots: root, wrapper, name, description, avatar.
|
|
18
|
+
*/
|
|
19
|
+
ui?: Partial<Record<UserSlots, ClassNameValue>>;
|
|
20
|
+
/**
|
|
21
|
+
* Sets the display name rendered as primary text.
|
|
22
|
+
*/
|
|
23
|
+
name?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Sets the secondary text displayed below the name.
|
|
26
|
+
*/
|
|
27
|
+
description?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Configures the avatar displayed on the leading side.
|
|
30
|
+
* Passed directly to the Avatar component.
|
|
31
|
+
*/
|
|
32
|
+
avatar?: AvatarProps;
|
|
33
|
+
/**
|
|
34
|
+
* Configures a status chip wrapping the avatar.
|
|
35
|
+
* Pass `true` for default chip or `ChipProps` to customize.
|
|
36
|
+
* @default false
|
|
37
|
+
*/
|
|
38
|
+
chip?: boolean | ChipProps;
|
|
39
|
+
/**
|
|
40
|
+
* Controls the size of the component.
|
|
41
|
+
* Affects text sizes and avatar size mapping.
|
|
42
|
+
* @default 'md'
|
|
43
|
+
*/
|
|
44
|
+
size?: NonNullable<UserVariantProps['size']>;
|
|
45
|
+
/**
|
|
46
|
+
* Sets the layout orientation.
|
|
47
|
+
* @default 'horizontal'
|
|
48
|
+
*/
|
|
49
|
+
orientation?: NonNullable<UserVariantProps['orientation']>;
|
|
50
|
+
/**
|
|
51
|
+
* Sets the destination URL.
|
|
52
|
+
* Renders the component as an anchor via Link when provided.
|
|
53
|
+
*/
|
|
54
|
+
href?: LinkProps['href'];
|
|
55
|
+
/**
|
|
56
|
+
* Additional CSS classes for the root element.
|
|
57
|
+
*/
|
|
58
|
+
class?: ClassNameValue;
|
|
59
|
+
/**
|
|
60
|
+
* Custom avatar content slot.
|
|
61
|
+
* Takes precedence over `avatar` prop.
|
|
62
|
+
*/
|
|
63
|
+
avatarSlot?: Snippet;
|
|
64
|
+
/**
|
|
65
|
+
* Custom name content slot.
|
|
66
|
+
* Takes precedence over `name` prop.
|
|
67
|
+
*/
|
|
68
|
+
nameSlot?: Snippet;
|
|
69
|
+
/**
|
|
70
|
+
* Custom description content slot.
|
|
71
|
+
* Takes precedence over `description` prop.
|
|
72
|
+
*/
|
|
73
|
+
descriptionSlot?: Snippet;
|
|
74
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
export declare const userVariants: import("tailwind-variants").TVReturnType<{
|
|
3
|
+
size: {
|
|
4
|
+
'3xs': {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
};
|
|
8
|
+
'2xs': {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
xs: {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
sm: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
md: {
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
lg: {
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
xl: {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
'2xl': {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
'3xl': {
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
orientation: {
|
|
42
|
+
horizontal: {
|
|
43
|
+
root: string;
|
|
44
|
+
wrapper: string;
|
|
45
|
+
};
|
|
46
|
+
vertical: {
|
|
47
|
+
root: string;
|
|
48
|
+
wrapper: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
clickable: {
|
|
52
|
+
true: {
|
|
53
|
+
root: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
}, {
|
|
57
|
+
root: string;
|
|
58
|
+
wrapper: string;
|
|
59
|
+
name: string;
|
|
60
|
+
description: string;
|
|
61
|
+
avatar: string;
|
|
62
|
+
}, undefined, {
|
|
63
|
+
size: {
|
|
64
|
+
'3xs': {
|
|
65
|
+
name: string;
|
|
66
|
+
description: string;
|
|
67
|
+
};
|
|
68
|
+
'2xs': {
|
|
69
|
+
name: string;
|
|
70
|
+
description: string;
|
|
71
|
+
};
|
|
72
|
+
xs: {
|
|
73
|
+
name: string;
|
|
74
|
+
description: string;
|
|
75
|
+
};
|
|
76
|
+
sm: {
|
|
77
|
+
name: string;
|
|
78
|
+
description: string;
|
|
79
|
+
};
|
|
80
|
+
md: {
|
|
81
|
+
name: string;
|
|
82
|
+
description: string;
|
|
83
|
+
};
|
|
84
|
+
lg: {
|
|
85
|
+
name: string;
|
|
86
|
+
description: string;
|
|
87
|
+
};
|
|
88
|
+
xl: {
|
|
89
|
+
name: string;
|
|
90
|
+
description: string;
|
|
91
|
+
};
|
|
92
|
+
'2xl': {
|
|
93
|
+
name: string;
|
|
94
|
+
description: string;
|
|
95
|
+
};
|
|
96
|
+
'3xl': {
|
|
97
|
+
name: string;
|
|
98
|
+
description: string;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
orientation: {
|
|
102
|
+
horizontal: {
|
|
103
|
+
root: string;
|
|
104
|
+
wrapper: string;
|
|
105
|
+
};
|
|
106
|
+
vertical: {
|
|
107
|
+
root: string;
|
|
108
|
+
wrapper: string;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
clickable: {
|
|
112
|
+
true: {
|
|
113
|
+
root: string;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
}, {
|
|
117
|
+
root: string;
|
|
118
|
+
wrapper: string;
|
|
119
|
+
name: string;
|
|
120
|
+
description: string;
|
|
121
|
+
avatar: string;
|
|
122
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
123
|
+
size: {
|
|
124
|
+
'3xs': {
|
|
125
|
+
name: string;
|
|
126
|
+
description: string;
|
|
127
|
+
};
|
|
128
|
+
'2xs': {
|
|
129
|
+
name: string;
|
|
130
|
+
description: string;
|
|
131
|
+
};
|
|
132
|
+
xs: {
|
|
133
|
+
name: string;
|
|
134
|
+
description: string;
|
|
135
|
+
};
|
|
136
|
+
sm: {
|
|
137
|
+
name: string;
|
|
138
|
+
description: string;
|
|
139
|
+
};
|
|
140
|
+
md: {
|
|
141
|
+
name: string;
|
|
142
|
+
description: string;
|
|
143
|
+
};
|
|
144
|
+
lg: {
|
|
145
|
+
name: string;
|
|
146
|
+
description: string;
|
|
147
|
+
};
|
|
148
|
+
xl: {
|
|
149
|
+
name: string;
|
|
150
|
+
description: string;
|
|
151
|
+
};
|
|
152
|
+
'2xl': {
|
|
153
|
+
name: string;
|
|
154
|
+
description: string;
|
|
155
|
+
};
|
|
156
|
+
'3xl': {
|
|
157
|
+
name: string;
|
|
158
|
+
description: string;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
orientation: {
|
|
162
|
+
horizontal: {
|
|
163
|
+
root: string;
|
|
164
|
+
wrapper: string;
|
|
165
|
+
};
|
|
166
|
+
vertical: {
|
|
167
|
+
root: string;
|
|
168
|
+
wrapper: string;
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
clickable: {
|
|
172
|
+
true: {
|
|
173
|
+
root: string;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
}, {
|
|
177
|
+
root: string;
|
|
178
|
+
wrapper: string;
|
|
179
|
+
name: string;
|
|
180
|
+
description: string;
|
|
181
|
+
avatar: string;
|
|
182
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
183
|
+
export type UserVariantProps = VariantProps<typeof userVariants>;
|
|
184
|
+
export type UserSlots = keyof ReturnType<typeof userVariants>;
|
|
185
|
+
export declare const userDefaults: {
|
|
186
|
+
defaultVariants: import("tailwind-variants").TVDefaultVariants<{
|
|
187
|
+
size: {
|
|
188
|
+
'3xs': {
|
|
189
|
+
name: string;
|
|
190
|
+
description: string;
|
|
191
|
+
};
|
|
192
|
+
'2xs': {
|
|
193
|
+
name: string;
|
|
194
|
+
description: string;
|
|
195
|
+
};
|
|
196
|
+
xs: {
|
|
197
|
+
name: string;
|
|
198
|
+
description: string;
|
|
199
|
+
};
|
|
200
|
+
sm: {
|
|
201
|
+
name: string;
|
|
202
|
+
description: string;
|
|
203
|
+
};
|
|
204
|
+
md: {
|
|
205
|
+
name: string;
|
|
206
|
+
description: string;
|
|
207
|
+
};
|
|
208
|
+
lg: {
|
|
209
|
+
name: string;
|
|
210
|
+
description: string;
|
|
211
|
+
};
|
|
212
|
+
xl: {
|
|
213
|
+
name: string;
|
|
214
|
+
description: string;
|
|
215
|
+
};
|
|
216
|
+
'2xl': {
|
|
217
|
+
name: string;
|
|
218
|
+
description: string;
|
|
219
|
+
};
|
|
220
|
+
'3xl': {
|
|
221
|
+
name: string;
|
|
222
|
+
description: string;
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
orientation: {
|
|
226
|
+
horizontal: {
|
|
227
|
+
root: string;
|
|
228
|
+
wrapper: string;
|
|
229
|
+
};
|
|
230
|
+
vertical: {
|
|
231
|
+
root: string;
|
|
232
|
+
wrapper: string;
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
clickable: {
|
|
236
|
+
true: {
|
|
237
|
+
root: string;
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
}, {
|
|
241
|
+
root: string;
|
|
242
|
+
wrapper: string;
|
|
243
|
+
name: string;
|
|
244
|
+
description: string;
|
|
245
|
+
avatar: string;
|
|
246
|
+
}, {
|
|
247
|
+
size: {
|
|
248
|
+
'3xs': {
|
|
249
|
+
name: string;
|
|
250
|
+
description: string;
|
|
251
|
+
};
|
|
252
|
+
'2xs': {
|
|
253
|
+
name: string;
|
|
254
|
+
description: string;
|
|
255
|
+
};
|
|
256
|
+
xs: {
|
|
257
|
+
name: string;
|
|
258
|
+
description: string;
|
|
259
|
+
};
|
|
260
|
+
sm: {
|
|
261
|
+
name: string;
|
|
262
|
+
description: string;
|
|
263
|
+
};
|
|
264
|
+
md: {
|
|
265
|
+
name: string;
|
|
266
|
+
description: string;
|
|
267
|
+
};
|
|
268
|
+
lg: {
|
|
269
|
+
name: string;
|
|
270
|
+
description: string;
|
|
271
|
+
};
|
|
272
|
+
xl: {
|
|
273
|
+
name: string;
|
|
274
|
+
description: string;
|
|
275
|
+
};
|
|
276
|
+
'2xl': {
|
|
277
|
+
name: string;
|
|
278
|
+
description: string;
|
|
279
|
+
};
|
|
280
|
+
'3xl': {
|
|
281
|
+
name: string;
|
|
282
|
+
description: string;
|
|
283
|
+
};
|
|
284
|
+
};
|
|
285
|
+
orientation: {
|
|
286
|
+
horizontal: {
|
|
287
|
+
root: string;
|
|
288
|
+
wrapper: string;
|
|
289
|
+
};
|
|
290
|
+
vertical: {
|
|
291
|
+
root: string;
|
|
292
|
+
wrapper: string;
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
clickable: {
|
|
296
|
+
true: {
|
|
297
|
+
root: string;
|
|
298
|
+
};
|
|
299
|
+
};
|
|
300
|
+
}, {
|
|
301
|
+
root: string;
|
|
302
|
+
wrapper: string;
|
|
303
|
+
name: string;
|
|
304
|
+
description: string;
|
|
305
|
+
avatar: string;
|
|
306
|
+
}>;
|
|
307
|
+
slots: Partial<Record<UserSlots, string>>;
|
|
308
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
export const userVariants = tv({
|
|
3
|
+
slots: {
|
|
4
|
+
root: 'inline-flex items-center gap-2',
|
|
5
|
+
wrapper: 'min-w-0',
|
|
6
|
+
name: 'font-medium text-on-surface truncate',
|
|
7
|
+
description: 'text-on-surface-variant truncate',
|
|
8
|
+
avatar: 'shrink-0'
|
|
9
|
+
},
|
|
10
|
+
variants: {
|
|
11
|
+
size: {
|
|
12
|
+
'3xs': {
|
|
13
|
+
name: 'text-[10px]',
|
|
14
|
+
description: 'text-[10px]'
|
|
15
|
+
},
|
|
16
|
+
'2xs': {
|
|
17
|
+
name: 'text-[10px]',
|
|
18
|
+
description: 'text-[10px]'
|
|
19
|
+
},
|
|
20
|
+
xs: {
|
|
21
|
+
name: 'text-xs',
|
|
22
|
+
description: 'text-[10px]'
|
|
23
|
+
},
|
|
24
|
+
sm: {
|
|
25
|
+
name: 'text-xs',
|
|
26
|
+
description: 'text-xs'
|
|
27
|
+
},
|
|
28
|
+
md: {
|
|
29
|
+
name: 'text-sm',
|
|
30
|
+
description: 'text-xs'
|
|
31
|
+
},
|
|
32
|
+
lg: {
|
|
33
|
+
name: 'text-sm',
|
|
34
|
+
description: 'text-sm'
|
|
35
|
+
},
|
|
36
|
+
xl: {
|
|
37
|
+
name: 'text-base',
|
|
38
|
+
description: 'text-sm'
|
|
39
|
+
},
|
|
40
|
+
'2xl': {
|
|
41
|
+
name: 'text-base',
|
|
42
|
+
description: 'text-base'
|
|
43
|
+
},
|
|
44
|
+
'3xl': {
|
|
45
|
+
name: 'text-lg',
|
|
46
|
+
description: 'text-base'
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
orientation: {
|
|
50
|
+
horizontal: {
|
|
51
|
+
root: 'flex-row',
|
|
52
|
+
wrapper: 'text-left'
|
|
53
|
+
},
|
|
54
|
+
vertical: {
|
|
55
|
+
root: 'flex-col text-center',
|
|
56
|
+
wrapper: 'text-center'
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
clickable: {
|
|
60
|
+
true: {
|
|
61
|
+
root: 'cursor-pointer hover:bg-surface-container-high rounded-lg transition-colors -m-2 p-2'
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
defaultVariants: {
|
|
66
|
+
size: 'md',
|
|
67
|
+
orientation: 'horizontal'
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
export const userDefaults = {
|
|
71
|
+
defaultVariants: userVariants.defaultVariants,
|
|
72
|
+
slots: {}
|
|
73
|
+
};
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SV5UI Global Configuration
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { defineConfig } from 'sv5ui'
|
|
7
|
+
*
|
|
8
|
+
* defineConfig({
|
|
9
|
+
* button: {
|
|
10
|
+
* defaultVariants: { variant: 'outline', color: 'secondary' },
|
|
11
|
+
* slots: { base: 'shadow-md', label: 'font-bold' }
|
|
12
|
+
* },
|
|
13
|
+
* avatar: {
|
|
14
|
+
* defaultVariants: { size: 'lg' },
|
|
15
|
+
* slots: { root: 'ring-2 ring-primary' }
|
|
16
|
+
* },
|
|
17
|
+
* icons: { loading: 'svg-spinners:ring-resize' }
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Default icons used across components
|
|
23
|
+
*/
|
|
24
|
+
export declare const iconsDefaults: {
|
|
25
|
+
loading: string;
|
|
26
|
+
chevronDown: string;
|
|
27
|
+
chevronRight: string;
|
|
28
|
+
close: string;
|
|
29
|
+
check: string;
|
|
30
|
+
};
|
|
31
|
+
/** Deep partial type for config objects */
|
|
32
|
+
type DeepPartial<T> = {
|
|
33
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
34
|
+
};
|
|
35
|
+
/** Generic component config shape */
|
|
36
|
+
export type UIConfig = {
|
|
37
|
+
[key: string]: DeepPartial<Record<string, unknown>> | undefined;
|
|
38
|
+
icons?: DeepPartial<typeof iconsDefaults>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Define global configuration for SV5UI components
|
|
42
|
+
*/
|
|
43
|
+
export declare function defineConfig(config: UIConfig): void;
|
|
44
|
+
/**
|
|
45
|
+
* Get the current global configuration
|
|
46
|
+
*/
|
|
47
|
+
export declare function getConfig(): UIConfig;
|
|
48
|
+
/**
|
|
49
|
+
* Reset configuration to defaults
|
|
50
|
+
*/
|
|
51
|
+
export declare function resetConfig(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Get merged config for a component (memoized).
|
|
54
|
+
* Each component passes its own defaults, so config.ts doesn't import any variant files.
|
|
55
|
+
* This enables proper tree-shaking: unused components are excluded from the bundle.
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
export declare function getComponentConfig<T extends Record<string, unknown>>(component: string, defaults: T): T;
|
|
59
|
+
export {};
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SV5UI Global Configuration
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { defineConfig } from 'sv5ui'
|
|
7
|
+
*
|
|
8
|
+
* defineConfig({
|
|
9
|
+
* button: {
|
|
10
|
+
* defaultVariants: { variant: 'outline', color: 'secondary' },
|
|
11
|
+
* slots: { base: 'shadow-md', label: 'font-bold' }
|
|
12
|
+
* },
|
|
13
|
+
* avatar: {
|
|
14
|
+
* defaultVariants: { size: 'lg' },
|
|
15
|
+
* slots: { root: 'ring-2 ring-primary' }
|
|
16
|
+
* },
|
|
17
|
+
* icons: { loading: 'svg-spinners:ring-resize' }
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
// ==================== ICONS DEFAULTS ====================
|
|
22
|
+
/**
|
|
23
|
+
* Default icons used across components
|
|
24
|
+
*/
|
|
25
|
+
export const iconsDefaults = {
|
|
26
|
+
loading: 'lucide:loader-2',
|
|
27
|
+
chevronDown: 'lucide:chevron-down',
|
|
28
|
+
chevronRight: 'lucide:chevron-right',
|
|
29
|
+
close: 'lucide:x',
|
|
30
|
+
check: 'lucide:check'
|
|
31
|
+
};
|
|
32
|
+
// ==================== GLOBAL STATE ====================
|
|
33
|
+
let globalConfig = {};
|
|
34
|
+
let cachedConfigs = {};
|
|
35
|
+
// ==================== PUBLIC API ====================
|
|
36
|
+
/**
|
|
37
|
+
* Define global configuration for SV5UI components
|
|
38
|
+
*/
|
|
39
|
+
export function defineConfig(config) {
|
|
40
|
+
globalConfig = config;
|
|
41
|
+
cachedConfigs = {};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the current global configuration
|
|
45
|
+
*/
|
|
46
|
+
export function getConfig() {
|
|
47
|
+
return globalConfig;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Reset configuration to defaults
|
|
51
|
+
*/
|
|
52
|
+
export function resetConfig() {
|
|
53
|
+
globalConfig = {};
|
|
54
|
+
cachedConfigs = {};
|
|
55
|
+
}
|
|
56
|
+
// ==================== COMPONENT CONFIG GETTER ====================
|
|
57
|
+
/**
|
|
58
|
+
* Deep merge utility for config objects
|
|
59
|
+
*/
|
|
60
|
+
function deepMerge(target, source) {
|
|
61
|
+
const result = { ...target };
|
|
62
|
+
for (const key in source) {
|
|
63
|
+
const sourceValue = source[key];
|
|
64
|
+
const targetValue = target[key];
|
|
65
|
+
if (sourceValue !== undefined &&
|
|
66
|
+
typeof sourceValue === 'object' &&
|
|
67
|
+
sourceValue !== null &&
|
|
68
|
+
!Array.isArray(sourceValue) &&
|
|
69
|
+
typeof targetValue === 'object' &&
|
|
70
|
+
targetValue !== null &&
|
|
71
|
+
!Array.isArray(targetValue)) {
|
|
72
|
+
result[key] = deepMerge(targetValue, sourceValue);
|
|
73
|
+
}
|
|
74
|
+
else if (sourceValue !== undefined) {
|
|
75
|
+
result[key] = sourceValue;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get merged config for a component (memoized).
|
|
82
|
+
* Each component passes its own defaults, so config.ts doesn't import any variant files.
|
|
83
|
+
* This enables proper tree-shaking: unused components are excluded from the bundle.
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
export function getComponentConfig(component, defaults) {
|
|
87
|
+
if (!(component in cachedConfigs)) {
|
|
88
|
+
const userConfig = globalConfig[component];
|
|
89
|
+
cachedConfigs[component] = userConfig
|
|
90
|
+
? deepMerge(defaults, userConfig)
|
|
91
|
+
: defaults;
|
|
92
|
+
}
|
|
93
|
+
return cachedConfigs[component];
|
|
94
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './Icon/index.js';
|
|
2
|
+
export * from './Button/index.js';
|
|
3
|
+
export * from './Avatar/index.js';
|
|
4
|
+
export * from './AvatarGroup/index.js';
|
|
5
|
+
export * from './Alert/index.js';
|
|
6
|
+
export * from './Card/index.js';
|
|
7
|
+
export * from './Link/index.js';
|
|
8
|
+
export * from './Separator/index.js';
|
|
9
|
+
export * from './Chip/index.js';
|
|
10
|
+
export * from './Progress/index.js';
|
|
11
|
+
export * from './Badge/index.js';
|
|
12
|
+
export * from './Kbd/index.js';
|
|
13
|
+
export * from './Container/index.js';
|
|
14
|
+
export * from './Timeline/index.js';
|
|
15
|
+
export * from './User/index.js';
|
|
16
|
+
export * from './Empty/index.js';
|
|
17
|
+
export * from './Skeleton/index.js';
|
|
18
|
+
export { defineConfig } from './config.js';
|
|
19
|
+
export type { UIConfig } from './config.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Components
|
|
2
|
+
export * from './Icon/index.js';
|
|
3
|
+
export * from './Button/index.js';
|
|
4
|
+
export * from './Avatar/index.js';
|
|
5
|
+
export * from './AvatarGroup/index.js';
|
|
6
|
+
export * from './Alert/index.js';
|
|
7
|
+
export * from './Card/index.js';
|
|
8
|
+
export * from './Link/index.js';
|
|
9
|
+
export * from './Separator/index.js';
|
|
10
|
+
export * from './Chip/index.js';
|
|
11
|
+
export * from './Progress/index.js';
|
|
12
|
+
export * from './Badge/index.js';
|
|
13
|
+
export * from './Kbd/index.js';
|
|
14
|
+
export * from './Container/index.js';
|
|
15
|
+
export * from './Timeline/index.js';
|
|
16
|
+
export * from './User/index.js';
|
|
17
|
+
export * from './Empty/index.js';
|
|
18
|
+
export * from './Skeleton/index.js';
|
|
19
|
+
// Configuration
|
|
20
|
+
export { defineConfig } from './config.js';
|