synkra-ds 0.1.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 (108) hide show
  1. package/dist/index.cjs +1440 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +521 -0
  4. package/dist/index.d.ts +521 -0
  5. package/dist/index.js +1341 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +111 -0
  8. package/src/assets/logos/index.ts +74 -0
  9. package/src/assets/logos/payment/Size=large, Payment method=AMEX.svg +5 -0
  10. package/src/assets/logos/payment/Size=large, Payment method=Alipay.svg +13 -0
  11. package/src/assets/logos/payment/Size=large, Payment method=Amazon.svg +6 -0
  12. package/src/assets/logos/payment/Size=large, Payment method=ApplePay.svg +5 -0
  13. package/src/assets/logos/payment/Size=large, Payment method=Bitcoin.svg +5 -0
  14. package/src/assets/logos/payment/Size=large, Payment method=Etherium.svg +11 -0
  15. package/src/assets/logos/payment/Size=large, Payment method=GooglePay.svg +9 -0
  16. package/src/assets/logos/payment/Size=large, Payment method=Maestro.svg +7 -0
  17. package/src/assets/logos/payment/Size=large, Payment method=Mastercard.svg +7 -0
  18. package/src/assets/logos/payment/Size=large, Payment method=PayPal.svg +8 -0
  19. package/src/assets/logos/payment/Size=large, Payment method=Stripe.svg +5 -0
  20. package/src/assets/logos/payment/Size=large, Payment method=Visa.svg +5 -0
  21. package/src/assets/logos/social/black/Discord.svg +15 -0
  22. package/src/assets/logos/social/black/Facebook.svg +20 -0
  23. package/src/assets/logos/social/black/GitHub.svg +10 -0
  24. package/src/assets/logos/social/black/Google.svg +13 -0
  25. package/src/assets/logos/social/black/Instagram.svg +10 -0
  26. package/src/assets/logos/social/black/LinkedIn.svg +6 -0
  27. package/src/assets/logos/social/black/Messenger.svg +10 -0
  28. package/src/assets/logos/social/black/MidJourney.svg +7 -0
  29. package/src/assets/logos/social/black/OpenAI.svg +4 -0
  30. package/src/assets/logos/social/black/Pinterest.svg +10 -0
  31. package/src/assets/logos/social/black/Reddit.svg +11 -0
  32. package/src/assets/logos/social/black/Skype.svg +16 -0
  33. package/src/assets/logos/social/black/Snapchat.svg +4 -0
  34. package/src/assets/logos/social/black/SoundCloud.svg +24 -0
  35. package/src/assets/logos/social/black/Spotify.svg +10 -0
  36. package/src/assets/logos/social/black/Steam.svg +4 -0
  37. package/src/assets/logos/social/black/TeamViewer.svg +11 -0
  38. package/src/assets/logos/social/black/Telegram.svg +15 -0
  39. package/src/assets/logos/social/black/Threads.svg +3 -0
  40. package/src/assets/logos/social/black/TikTok.svg +5 -0
  41. package/src/assets/logos/social/black/Tinder.svg +3 -0
  42. package/src/assets/logos/social/black/Trello.svg +12 -0
  43. package/src/assets/logos/social/black/Tumblr.svg +11 -0
  44. package/src/assets/logos/social/black/Twitch.svg +3 -0
  45. package/src/assets/logos/social/black/Vine.svg +3 -0
  46. package/src/assets/logos/social/black/WhatsApp.svg +12 -0
  47. package/src/assets/logos/social/black/X.svg +3 -0
  48. package/src/assets/logos/social/black/YouTube.svg +11 -0
  49. package/src/assets/logos/social/color/Discord.svg +15 -0
  50. package/src/assets/logos/social/color/Facebook.svg +20 -0
  51. package/src/assets/logos/social/color/GitHub.svg +10 -0
  52. package/src/assets/logos/social/color/Google.svg +13 -0
  53. package/src/assets/logos/social/color/Instagram.svg +10 -0
  54. package/src/assets/logos/social/color/LinkedIn.svg +6 -0
  55. package/src/assets/logos/social/color/Messenger.svg +10 -0
  56. package/src/assets/logos/social/color/MidJourney.svg +7 -0
  57. package/src/assets/logos/social/color/OpenAI.svg +4 -0
  58. package/src/assets/logos/social/color/Pinterest.svg +10 -0
  59. package/src/assets/logos/social/color/Reddit.svg +11 -0
  60. package/src/assets/logos/social/color/Skype.svg +16 -0
  61. package/src/assets/logos/social/color/Snapchat.svg +4 -0
  62. package/src/assets/logos/social/color/SoundCloud.svg +24 -0
  63. package/src/assets/logos/social/color/Spotify.svg +10 -0
  64. package/src/assets/logos/social/color/Steam.svg +14 -0
  65. package/src/assets/logos/social/color/TeamViewer.svg +19 -0
  66. package/src/assets/logos/social/color/Telegram.svg +15 -0
  67. package/src/assets/logos/social/color/Threads.svg +3 -0
  68. package/src/assets/logos/social/color/TikTok.svg +5 -0
  69. package/src/assets/logos/social/color/Tinder.svg +9 -0
  70. package/src/assets/logos/social/color/Trello.svg +16 -0
  71. package/src/assets/logos/social/color/Tumblr.svg +11 -0
  72. package/src/assets/logos/social/color/Twitch.svg +3 -0
  73. package/src/assets/logos/social/color/Vine.svg +3 -0
  74. package/src/assets/logos/social/color/WhatsApp.svg +16 -0
  75. package/src/assets/logos/social/color/X.svg +3 -0
  76. package/src/assets/logos/social/color/YouTube.svg +11 -0
  77. package/src/assets/logos/social/white/Discord.svg +15 -0
  78. package/src/assets/logos/social/white/Facebook.svg +20 -0
  79. package/src/assets/logos/social/white/GitHub.svg +10 -0
  80. package/src/assets/logos/social/white/Google.svg +13 -0
  81. package/src/assets/logos/social/white/Instagram.svg +10 -0
  82. package/src/assets/logos/social/white/LinkedIn.svg +6 -0
  83. package/src/assets/logos/social/white/Messenger.svg +10 -0
  84. package/src/assets/logos/social/white/MidJourney.svg +7 -0
  85. package/src/assets/logos/social/white/OpenAI.svg +4 -0
  86. package/src/assets/logos/social/white/Pinterest.svg +10 -0
  87. package/src/assets/logos/social/white/Reddit.svg +11 -0
  88. package/src/assets/logos/social/white/Skype.svg +16 -0
  89. package/src/assets/logos/social/white/Snapchat.svg +4 -0
  90. package/src/assets/logos/social/white/SoundCloud.svg +24 -0
  91. package/src/assets/logos/social/white/Spotify.svg +10 -0
  92. package/src/assets/logos/social/white/Steam.svg +4 -0
  93. package/src/assets/logos/social/white/StumbleUpon.svg +0 -0
  94. package/src/assets/logos/social/white/TeamViewer.svg +11 -0
  95. package/src/assets/logos/social/white/Telegram.svg +15 -0
  96. package/src/assets/logos/social/white/Threads.svg +3 -0
  97. package/src/assets/logos/social/white/TikTok.svg +5 -0
  98. package/src/assets/logos/social/white/Tinder.svg +3 -0
  99. package/src/assets/logos/social/white/Trello.svg +12 -0
  100. package/src/assets/logos/social/white/Tumblr.svg +4 -0
  101. package/src/assets/logos/social/white/Twitch.svg +3 -0
  102. package/src/assets/logos/social/white/Vine.svg +3 -0
  103. package/src/assets/logos/social/white/WhatsApp.svg +11 -0
  104. package/src/assets/logos/social/white/X.svg +3 -0
  105. package/src/assets/logos/social/white/YouTube.svg +11 -0
  106. package/src/styles/globals.css +174 -0
  107. package/src/tokens/palette-extended.css +119 -0
  108. package/src/tokens/tokens.css +122 -0
package/dist/index.js ADDED
@@ -0,0 +1,1341 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ import * as React4 from 'react';
4
+ import { Slot } from '@radix-ui/react-slot';
5
+ import { cva } from 'class-variance-authority';
6
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
8
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
9
+ import * as SelectPrimitive from '@radix-ui/react-select';
10
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
11
+ import * as LabelPrimitive from '@radix-ui/react-label';
12
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
13
+ import * as ToastPrimitive from '@radix-ui/react-toast';
14
+
15
+ // src/tokens/palette-extended.ts
16
+ var paletteExtended = {
17
+ reds: {
18
+ red: "#df1125",
19
+ neonPink: "#fb212f",
20
+ electricPink: "#fc3644",
21
+ hibiscus: "#fb0049",
22
+ pink: "#fd4154",
23
+ pinkCitrus: "#ea383a",
24
+ pomegranate: "#d80e4f",
25
+ dragonFruit: "#f12e6d",
26
+ camellia: "#bf3138",
27
+ redRose: "#ab1438",
28
+ plum: "#81323d"
29
+ },
30
+ oranges: {
31
+ orange: "#fc4e12",
32
+ clementine: "#fd513b",
33
+ apricot: "#fc5c42",
34
+ papaya: "#fd7036",
35
+ kumquat: "#fd7441",
36
+ lightOrange: "#fd820b",
37
+ peach: "#e0694e",
38
+ flamingo: "#ca6f59",
39
+ roseGold: "#e99475",
40
+ pinkSand: "#feb69c",
41
+ vintageRose: "#f29c98",
42
+ grapefruit: "#fda27e"
43
+ },
44
+ yellows: {
45
+ cream: "#ffe0ab",
46
+ mellowYellow: "#f7f6af",
47
+ canaryYellow: "#ffda3a",
48
+ pollen: "#e8c511",
49
+ flashLight: "#faed0b",
50
+ lemonCream: "#ffeb6d",
51
+ flash: "#dff81e"
52
+ },
53
+ greens: {
54
+ green: "#80e220",
55
+ spearmint: "#77ea7e",
56
+ mint: "#a2ec8e",
57
+ beryl: "#d0f2b1",
58
+ seaFoam: "#cff1d6",
59
+ turquoise: "#91cec2"
60
+ },
61
+ blues: {
62
+ blue: "#1ea5fc",
63
+ lightBlue: "#5ebad9",
64
+ cerulean: "#87b9e7",
65
+ surfBlue: "#1871ac",
66
+ pacificGreen: "#0f6d8e",
67
+ blueCobalt: "#3a6b8e",
68
+ darkTeal: "#2c6184",
69
+ blueHorizon: "#1e538f",
70
+ denimBlue: "#4b709a",
71
+ linenBlue: "#455785",
72
+ deepNavy: "#3a4565",
73
+ midnightBlue: "#383b65"
74
+ },
75
+ purples: {
76
+ purple: "#8962f8",
77
+ ultraViolet: "#5f41b2",
78
+ lilac: "#a990dd",
79
+ oceanBlue: "#6273bd",
80
+ delftBlue: "#4662b2",
81
+ indigo: "#474e95",
82
+ lavenderGray: "#757397",
83
+ lavender: "#a58998"
84
+ },
85
+ neutrals: {
86
+ mistBlue: "#a7ab99",
87
+ stormGray: "#578887",
88
+ cactus: "#5b7971",
89
+ pineGreen: "#4e6c54",
90
+ cyprusGreen: "#525d49",
91
+ northernBlue: "#638a8d",
92
+ azure: "#788991",
93
+ alaskanBlue: "#525c73"
94
+ },
95
+ earths: {
96
+ khaki: "#7a6e49",
97
+ darkOlive: "#7c7a66",
98
+ softWhite: "#d8c9af",
99
+ antiqueWhite: "#cda986",
100
+ yellowGold: "#cc996d",
101
+ gold: "#b08053",
102
+ camel: "#a97d4f",
103
+ walnut: "#a17455",
104
+ stone: "#a28872",
105
+ pebble: "#9f8d7e",
106
+ cocoa: "#8b7d7d",
107
+ coastalGray: "#715d50"
108
+ }
109
+ };
110
+ var chartPalette = [
111
+ "#1ea5fc",
112
+ // blue
113
+ "#D4AF37",
114
+ // gold (brand)
115
+ "#22C55E",
116
+ // green
117
+ "#8962f8",
118
+ // purple
119
+ "#fc4e12",
120
+ // orange
121
+ "#fb0049",
122
+ // hibiscus
123
+ "#91cec2",
124
+ // turquoise
125
+ "#f7f6af",
126
+ // yellow
127
+ "#a990dd",
128
+ // lilac
129
+ "#fd820b"
130
+ // light orange
131
+ ];
132
+ var gradients = {
133
+ badge: "linear-gradient(82.44deg, #ff3b57 0%, #ffda1a 100%)",
134
+ purpleBlue: "linear-gradient(135deg, #8962f8, #1ea5fc)",
135
+ hibiscusDragon: "linear-gradient(135deg, #fb0049, #f12e6d)",
136
+ greenMint: "linear-gradient(135deg, #80e220, #a2ec8e)",
137
+ goldSunset: "linear-gradient(135deg, #D4AF37, #fc4e12)"
138
+ };
139
+
140
+ // src/tokens/index.ts
141
+ var colors = {
142
+ primary: {
143
+ gold: "#D4AF37",
144
+ "gold-dark": "#B8962E",
145
+ "gold-light": "#E4C84A"
146
+ },
147
+ background: {
148
+ base: "#0A0A0F",
149
+ elevated: "#111116",
150
+ surface: "#1a1a1f",
151
+ overlay: "rgba(0, 0, 0, 0.8)"
152
+ },
153
+ text: {
154
+ primary: "#FFFFFF",
155
+ secondary: "#A1A1AA",
156
+ muted: "#71717A",
157
+ inverse: "#0A0A0F"
158
+ },
159
+ semantic: {
160
+ success: "#22C55E",
161
+ warning: "#F59E0B",
162
+ error: "#EF4444",
163
+ info: "#3B82F6"
164
+ },
165
+ border: {
166
+ default: "rgba(255, 255, 255, 0.1)",
167
+ subtle: "rgba(255, 255, 255, 0.05)",
168
+ emphasis: "rgba(212, 175, 55, 0.3)"
169
+ }
170
+ };
171
+ var typography = {
172
+ families: {
173
+ sans: "'Inter', sans-serif",
174
+ serif: "'Source Serif 4', serif",
175
+ display: "'Rajdhani', sans-serif",
176
+ mono: "'JetBrains Mono', monospace"
177
+ },
178
+ sizes: {
179
+ xs: "0.75rem",
180
+ sm: "0.875rem",
181
+ base: "1rem",
182
+ lg: "1.125rem",
183
+ xl: "1.25rem",
184
+ "2xl": "1.5rem",
185
+ "3xl": "1.875rem",
186
+ "4xl": "2.25rem",
187
+ "5xl": "3rem"
188
+ },
189
+ lineHeights: {
190
+ xs: "1rem",
191
+ sm: "1.25rem",
192
+ base: "1.5rem",
193
+ lg: "1.75rem",
194
+ xl: "1.75rem",
195
+ "2xl": "2rem",
196
+ "3xl": "2.25rem",
197
+ "4xl": "2.5rem",
198
+ "5xl": "1"
199
+ },
200
+ weights: {
201
+ normal: 400,
202
+ medium: 500,
203
+ semibold: 600,
204
+ bold: 700
205
+ }
206
+ };
207
+ var spacing = {
208
+ 0: "0",
209
+ px: "1px",
210
+ 0.5: "0.125rem",
211
+ 1: "0.25rem",
212
+ 2: "0.5rem",
213
+ 3: "0.75rem",
214
+ 4: "1rem",
215
+ 5: "1.25rem",
216
+ 6: "1.5rem",
217
+ 8: "2rem",
218
+ 10: "2.5rem",
219
+ 12: "3rem",
220
+ 16: "4rem",
221
+ 20: "5rem",
222
+ 24: "6rem"
223
+ };
224
+ var radius = {
225
+ none: "0",
226
+ sm: "0.25rem",
227
+ md: "0.375rem",
228
+ lg: "0.5rem",
229
+ xl: "0.75rem",
230
+ "2xl": "1rem",
231
+ full: "9999px"
232
+ };
233
+ var shadows = {
234
+ none: "none",
235
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)",
236
+ md: "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
237
+ lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1)",
238
+ xl: "0 20px 25px -5px rgba(0, 0, 0, 0.1)",
239
+ glow: "0 0 20px rgba(212, 175, 55, 0.3)"
240
+ };
241
+ var motion = {
242
+ duration: {
243
+ instant: "0ms",
244
+ fast: "100ms",
245
+ normal: "200ms",
246
+ slow: "300ms",
247
+ slower: "500ms"
248
+ },
249
+ easing: {
250
+ linear: "cubic-bezier(0, 0, 1, 1)",
251
+ easeIn: "cubic-bezier(0.4, 0, 1, 1)",
252
+ easeOut: "cubic-bezier(0, 0, 0.2, 1)",
253
+ easeInOut: "cubic-bezier(0.4, 0, 0.2, 1)"
254
+ }
255
+ };
256
+ var zIndex = {
257
+ dropdown: 50,
258
+ sticky: 100,
259
+ modal: 200,
260
+ popover: 300,
261
+ tooltip: 400
262
+ };
263
+ var tokens = {
264
+ colors,
265
+ typography,
266
+ spacing,
267
+ radius,
268
+ shadows,
269
+ motion,
270
+ zIndex
271
+ };
272
+
273
+ // src/assets/logos/index.ts
274
+ var socialLogos = [
275
+ "Discord",
276
+ "Facebook",
277
+ "GitHub",
278
+ "Google",
279
+ "Instagram",
280
+ "LinkedIn",
281
+ "Messenger",
282
+ "MidJourney",
283
+ "OpenAI",
284
+ "Pinterest",
285
+ "Reddit",
286
+ "Skype",
287
+ "Snapchat",
288
+ "SoundCloud",
289
+ "Spotify",
290
+ "Steam",
291
+ "TeamViewer",
292
+ "Telegram",
293
+ "Threads",
294
+ "TikTok",
295
+ "Tinder",
296
+ "Trello",
297
+ "Tumblr",
298
+ "Twitch",
299
+ "Vine",
300
+ "WhatsApp",
301
+ "X",
302
+ "YouTube"
303
+ ];
304
+ var paymentLogos = [
305
+ "AMEX",
306
+ "Alipay",
307
+ "Amazon",
308
+ "ApplePay",
309
+ "Bitcoin",
310
+ "Etherium",
311
+ "GooglePay",
312
+ "Maestro",
313
+ "Mastercard",
314
+ "PayPal",
315
+ "Stripe",
316
+ "Visa"
317
+ ];
318
+ function getSocialLogoPath(name, variant = "color") {
319
+ return `@synkra-ds/assets/logos/social/${variant}/${name}.svg`;
320
+ }
321
+ function getPaymentLogoPath(name) {
322
+ return `@synkra-ds/assets/logos/payment/Size=large, Payment method=${name}.svg`;
323
+ }
324
+
325
+ // src/assets/icons/index.ts
326
+ var iconSizes = {
327
+ xs: 12,
328
+ sm: 16,
329
+ md: 20,
330
+ lg: 24,
331
+ xl: 32
332
+ };
333
+ var iconCategories = [
334
+ "Artificial-Intelligence-Machine-Learning",
335
+ "Computer-Devices",
336
+ "Culture",
337
+ "Entertainment",
338
+ "Food-drink",
339
+ "Health",
340
+ "Images-Photography",
341
+ "Interface-Essential",
342
+ "Mail",
343
+ "Map-Travel",
344
+ "Money-Shopping",
345
+ "Nature-Ecology",
346
+ "Phone",
347
+ "Programming",
348
+ "Shipping",
349
+ "Work-Education"
350
+ ];
351
+ function cn(...inputs) {
352
+ return twMerge(clsx(inputs));
353
+ }
354
+ var buttonVariants = cva(
355
+ [
356
+ "inline-flex items-center justify-center gap-2",
357
+ "whitespace-nowrap rounded-md text-sm font-medium",
358
+ "transition-colors duration-fast ease-in-out",
359
+ "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
360
+ "disabled:pointer-events-none disabled:opacity-50",
361
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0"
362
+ ].join(" "),
363
+ {
364
+ variants: {
365
+ variant: {
366
+ primary: "bg-primary text-text-inverse hover:bg-primary-dark active:bg-primary-dark shadow-sm",
367
+ secondary: "bg-bg-surface text-text-primary border border-border hover:bg-bg-elevated active:bg-bg-elevated",
368
+ outline: "border border-border-emphasis text-primary bg-transparent hover:bg-primary/10 active:bg-primary/15",
369
+ ghost: "text-text-secondary bg-transparent hover:bg-border-subtle hover:text-text-primary active:bg-border",
370
+ destructive: "bg-error text-white hover:bg-error/90 active:bg-error/80 shadow-sm",
371
+ link: "text-primary underline-offset-4 hover:underline"
372
+ },
373
+ size: {
374
+ sm: "h-8 px-3 text-xs",
375
+ md: "h-10 px-5 text-sm",
376
+ lg: "h-12 px-6 text-base",
377
+ icon: "h-10 w-10"
378
+ }
379
+ },
380
+ defaultVariants: {
381
+ variant: "primary",
382
+ size: "md"
383
+ }
384
+ }
385
+ );
386
+ var Button = React4.forwardRef(
387
+ ({
388
+ className,
389
+ variant,
390
+ size,
391
+ asChild = false,
392
+ loading = false,
393
+ disabled,
394
+ children,
395
+ ...props
396
+ }, ref) => {
397
+ const Comp = asChild ? Slot : "button";
398
+ return /* @__PURE__ */ jsx(
399
+ Comp,
400
+ {
401
+ className: cn(buttonVariants({ variant, size, className })),
402
+ ref,
403
+ disabled: disabled || loading,
404
+ "aria-disabled": disabled || loading,
405
+ "aria-busy": loading,
406
+ ...props,
407
+ children: loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
408
+ /* @__PURE__ */ jsxs(
409
+ "svg",
410
+ {
411
+ className: "animate-spin h-4 w-4",
412
+ xmlns: "http://www.w3.org/2000/svg",
413
+ fill: "none",
414
+ viewBox: "0 0 24 24",
415
+ "aria-hidden": "true",
416
+ children: [
417
+ /* @__PURE__ */ jsx(
418
+ "circle",
419
+ {
420
+ className: "opacity-25",
421
+ cx: "12",
422
+ cy: "12",
423
+ r: "10",
424
+ stroke: "currentColor",
425
+ strokeWidth: "4"
426
+ }
427
+ ),
428
+ /* @__PURE__ */ jsx(
429
+ "path",
430
+ {
431
+ className: "opacity-75",
432
+ fill: "currentColor",
433
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
434
+ }
435
+ )
436
+ ]
437
+ }
438
+ ),
439
+ children
440
+ ] }) : children
441
+ }
442
+ );
443
+ }
444
+ );
445
+ Button.displayName = "Button";
446
+ var Input = React4.forwardRef(
447
+ ({ className, type = "text", error, ...props }, ref) => {
448
+ return /* @__PURE__ */ jsx(
449
+ "input",
450
+ {
451
+ type,
452
+ className: cn(
453
+ "flex h-10 w-full rounded-md border bg-bg-surface px-3 py-2",
454
+ "text-sm text-text-primary placeholder:text-text-muted",
455
+ "border-border",
456
+ "transition-colors duration-fast ease-in-out",
457
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-emphasis focus-visible:border-primary",
458
+ "disabled:cursor-not-allowed disabled:opacity-50",
459
+ "file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-text-primary",
460
+ error && "border-error focus-visible:ring-error/30",
461
+ className
462
+ ),
463
+ ref,
464
+ "aria-invalid": error || void 0,
465
+ ...props
466
+ }
467
+ );
468
+ }
469
+ );
470
+ Input.displayName = "Input";
471
+ var Checkbox = React4.forwardRef(({ className, error, ...props }, ref) => /* @__PURE__ */ jsx(
472
+ CheckboxPrimitive.Root,
473
+ {
474
+ ref,
475
+ className: cn(
476
+ "peer h-5 w-5 shrink-0 rounded-sm border",
477
+ "border-border bg-bg-surface",
478
+ "transition-colors duration-fast ease-in-out",
479
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-emphasis focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base",
480
+ "disabled:cursor-not-allowed disabled:opacity-50",
481
+ "data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-text-inverse",
482
+ "data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-text-inverse",
483
+ error && "border-error",
484
+ className
485
+ ),
486
+ "aria-invalid": error || void 0,
487
+ ...props,
488
+ children: /* @__PURE__ */ jsx(
489
+ CheckboxPrimitive.Indicator,
490
+ {
491
+ className: cn("flex items-center justify-center text-current"),
492
+ children: props.checked === "indeterminate" ? /* @__PURE__ */ jsx(
493
+ "svg",
494
+ {
495
+ width: "10",
496
+ height: "2",
497
+ viewBox: "0 0 10 2",
498
+ fill: "none",
499
+ xmlns: "http://www.w3.org/2000/svg",
500
+ "aria-hidden": "true",
501
+ children: /* @__PURE__ */ jsx(
502
+ "path",
503
+ {
504
+ d: "M1 1H9",
505
+ stroke: "currentColor",
506
+ strokeWidth: "2",
507
+ strokeLinecap: "round"
508
+ }
509
+ )
510
+ }
511
+ ) : /* @__PURE__ */ jsx(
512
+ "svg",
513
+ {
514
+ width: "10",
515
+ height: "8",
516
+ viewBox: "0 0 10 8",
517
+ fill: "none",
518
+ xmlns: "http://www.w3.org/2000/svg",
519
+ "aria-hidden": "true",
520
+ children: /* @__PURE__ */ jsx(
521
+ "path",
522
+ {
523
+ d: "M1 4L3.5 6.5L9 1",
524
+ stroke: "currentColor",
525
+ strokeWidth: "2",
526
+ strokeLinecap: "round",
527
+ strokeLinejoin: "round"
528
+ }
529
+ )
530
+ }
531
+ )
532
+ }
533
+ )
534
+ }
535
+ ));
536
+ Checkbox.displayName = "Checkbox";
537
+ var Card = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
538
+ "div",
539
+ {
540
+ ref,
541
+ className: cn(
542
+ "rounded-xl border border-border bg-bg-elevated text-text-primary shadow-md",
543
+ className
544
+ ),
545
+ ...props
546
+ }
547
+ ));
548
+ Card.displayName = "Card";
549
+ var CardHeader = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
550
+ "div",
551
+ {
552
+ ref,
553
+ className: cn("flex flex-col gap-1.5 p-6", className),
554
+ ...props
555
+ }
556
+ ));
557
+ CardHeader.displayName = "CardHeader";
558
+ var CardTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
559
+ "h3",
560
+ {
561
+ ref,
562
+ className: cn(
563
+ "text-2xl font-semibold leading-none tracking-tight font-display",
564
+ className
565
+ ),
566
+ ...props
567
+ }
568
+ ));
569
+ CardTitle.displayName = "CardTitle";
570
+ var CardDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
571
+ "p",
572
+ {
573
+ ref,
574
+ className: cn("text-sm text-text-secondary", className),
575
+ ...props
576
+ }
577
+ ));
578
+ CardDescription.displayName = "CardDescription";
579
+ var CardContent = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
580
+ CardContent.displayName = "CardContent";
581
+ var CardFooter = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
582
+ "div",
583
+ {
584
+ ref,
585
+ className: cn("flex items-center p-6 pt-0", className),
586
+ ...props
587
+ }
588
+ ));
589
+ CardFooter.displayName = "CardFooter";
590
+ var Switch = React4.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx(
591
+ SwitchPrimitive.Root,
592
+ {
593
+ className: cn(
594
+ "peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent",
595
+ "transition-colors duration-fast ease-in-out",
596
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-emphasis focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base",
597
+ "disabled:cursor-not-allowed disabled:opacity-50",
598
+ "data-[state=checked]:bg-primary data-[state=unchecked]:bg-border",
599
+ size === "sm" ? "h-5 w-9" : "h-6 w-11",
600
+ className
601
+ ),
602
+ ref,
603
+ ...props,
604
+ children: /* @__PURE__ */ jsx(
605
+ SwitchPrimitive.Thumb,
606
+ {
607
+ className: cn(
608
+ "pointer-events-none block rounded-full bg-text-primary shadow-sm",
609
+ "transition-transform duration-fast ease-in-out",
610
+ size === "sm" ? "h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0" : "h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
611
+ )
612
+ }
613
+ )
614
+ }
615
+ ));
616
+ Switch.displayName = "Switch";
617
+ var badgeVariants = cva(
618
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none",
619
+ {
620
+ variants: {
621
+ variant: {
622
+ default: "border-transparent bg-primary text-text-inverse",
623
+ secondary: "border-transparent bg-bg-surface text-text-secondary",
624
+ outline: "border-border text-text-primary",
625
+ success: "border-transparent bg-success/15 text-success",
626
+ warning: "border-transparent bg-warning/15 text-warning",
627
+ error: "border-transparent bg-error/15 text-error",
628
+ info: "border-transparent bg-info/15 text-info",
629
+ gradient: "border-transparent text-white"
630
+ }
631
+ },
632
+ defaultVariants: {
633
+ variant: "default"
634
+ }
635
+ }
636
+ );
637
+ var gradientMap = {
638
+ badge: "linear-gradient(82.44deg, #ff3b57 0%, #ffda1a 100%)",
639
+ "purple-blue": "linear-gradient(135deg, #8962f8, #1ea5fc)",
640
+ hibiscus: "linear-gradient(135deg, #fb0049, #f12e6d)",
641
+ "green-mint": "linear-gradient(135deg, #80e220, #a2ec8e)",
642
+ "gold-sunset": "linear-gradient(135deg, #D4AF37, #fc4e12)"
643
+ };
644
+ function Badge({
645
+ className,
646
+ variant,
647
+ gradient = "badge",
648
+ style,
649
+ ...props
650
+ }) {
651
+ const gradientStyle = variant === "gradient" ? { ...style, background: gradientMap[gradient] } : style;
652
+ return /* @__PURE__ */ jsx(
653
+ "div",
654
+ {
655
+ className: cn(badgeVariants({ variant }), className),
656
+ style: gradientStyle,
657
+ ...props
658
+ }
659
+ );
660
+ }
661
+ var Select = SelectPrimitive.Root;
662
+ var SelectGroup = SelectPrimitive.Group;
663
+ var SelectValue = SelectPrimitive.Value;
664
+ var SelectTrigger = React4.forwardRef(({ className, children, error, ...props }, ref) => /* @__PURE__ */ jsxs(
665
+ SelectPrimitive.Trigger,
666
+ {
667
+ ref,
668
+ className: cn(
669
+ "flex h-10 w-full items-center justify-between rounded-lg border bg-bg-elevated px-3 py-2",
670
+ "text-sm text-text-primary placeholder:text-text-muted",
671
+ "focus:outline-none focus:ring-2 focus:ring-border-emphasis focus:ring-offset-2 focus:ring-offset-bg-base",
672
+ "disabled:cursor-not-allowed disabled:opacity-50",
673
+ error ? "border-error" : "border-border",
674
+ className
675
+ ),
676
+ "aria-invalid": error || void 0,
677
+ ...props,
678
+ children: [
679
+ children,
680
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(
681
+ "svg",
682
+ {
683
+ className: "h-4 w-4 opacity-50",
684
+ xmlns: "http://www.w3.org/2000/svg",
685
+ viewBox: "0 0 24 24",
686
+ fill: "none",
687
+ stroke: "currentColor",
688
+ strokeWidth: "2",
689
+ strokeLinecap: "round",
690
+ strokeLinejoin: "round",
691
+ children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
692
+ }
693
+ ) })
694
+ ]
695
+ }
696
+ ));
697
+ SelectTrigger.displayName = "SelectTrigger";
698
+ var SelectContent = React4.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx(
699
+ SelectPrimitive.Content,
700
+ {
701
+ ref,
702
+ className: cn(
703
+ "relative z-50 max-h-60 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-bg-elevated shadow-lg",
704
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
705
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
706
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1",
707
+ className
708
+ ),
709
+ position,
710
+ ...props,
711
+ children: /* @__PURE__ */ jsx(
712
+ SelectPrimitive.Viewport,
713
+ {
714
+ className: cn(
715
+ "p-1",
716
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
717
+ ),
718
+ children
719
+ }
720
+ )
721
+ }
722
+ ) }));
723
+ SelectContent.displayName = "SelectContent";
724
+ var SelectLabel = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
725
+ SelectPrimitive.Label,
726
+ {
727
+ ref,
728
+ className: cn("px-2 py-1.5 text-xs font-semibold text-text-muted", className),
729
+ ...props
730
+ }
731
+ ));
732
+ SelectLabel.displayName = "SelectLabel";
733
+ var SelectItem = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
734
+ SelectPrimitive.Item,
735
+ {
736
+ ref,
737
+ className: cn(
738
+ "relative flex w-full cursor-pointer select-none items-center rounded-md py-2 pl-8 pr-2",
739
+ "text-sm text-text-primary outline-none",
740
+ "focus:bg-bg-surface focus:text-text-primary",
741
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
742
+ className
743
+ ),
744
+ ...props,
745
+ children: [
746
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-4 w-4 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(
747
+ "svg",
748
+ {
749
+ className: "h-4 w-4 text-primary",
750
+ xmlns: "http://www.w3.org/2000/svg",
751
+ viewBox: "0 0 24 24",
752
+ fill: "none",
753
+ stroke: "currentColor",
754
+ strokeWidth: "2",
755
+ strokeLinecap: "round",
756
+ strokeLinejoin: "round",
757
+ children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" })
758
+ }
759
+ ) }) }),
760
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
761
+ ]
762
+ }
763
+ ));
764
+ SelectItem.displayName = "SelectItem";
765
+ var SelectSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
766
+ SelectPrimitive.Separator,
767
+ {
768
+ ref,
769
+ className: cn("-mx-1 my-1 h-px bg-border", className),
770
+ ...props
771
+ }
772
+ ));
773
+ SelectSeparator.displayName = "SelectSeparator";
774
+ var Textarea = React4.forwardRef(
775
+ ({ className, error, ...props }, ref) => /* @__PURE__ */ jsx(
776
+ "textarea",
777
+ {
778
+ className: cn(
779
+ "flex min-h-[80px] w-full rounded-lg border bg-bg-elevated px-3 py-2",
780
+ "text-sm text-text-primary placeholder:text-text-muted",
781
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-emphasis focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base",
782
+ "disabled:cursor-not-allowed disabled:opacity-50",
783
+ "resize-y",
784
+ error ? "border-error" : "border-border",
785
+ className
786
+ ),
787
+ ref,
788
+ "aria-invalid": error || void 0,
789
+ ...props
790
+ }
791
+ )
792
+ );
793
+ Textarea.displayName = "Textarea";
794
+ var sizeClasses = {
795
+ sm: "h-8 w-8",
796
+ md: "h-10 w-10",
797
+ lg: "h-12 w-12",
798
+ xl: "h-16 w-16"
799
+ };
800
+ var Avatar = React4.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx(
801
+ AvatarPrimitive.Root,
802
+ {
803
+ ref,
804
+ className: cn(
805
+ "relative flex shrink-0 overflow-hidden rounded-full",
806
+ sizeClasses[size],
807
+ className
808
+ ),
809
+ "data-size": size,
810
+ ...props
811
+ }
812
+ ));
813
+ Avatar.displayName = "Avatar";
814
+ var AvatarImage = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
815
+ AvatarPrimitive.Image,
816
+ {
817
+ ref,
818
+ className: cn("aspect-square h-full w-full object-cover", className),
819
+ ...props
820
+ }
821
+ ));
822
+ AvatarImage.displayName = "AvatarImage";
823
+ var AvatarFallback = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
824
+ AvatarPrimitive.Fallback,
825
+ {
826
+ ref,
827
+ className: cn(
828
+ "flex h-full w-full items-center justify-center rounded-full",
829
+ "bg-bg-surface text-text-secondary font-medium text-sm",
830
+ className
831
+ ),
832
+ ...props
833
+ }
834
+ ));
835
+ AvatarFallback.displayName = "AvatarFallback";
836
+ var Label2 = React4.forwardRef(({ className, required, children, ...props }, ref) => /* @__PURE__ */ jsxs(
837
+ LabelPrimitive.Root,
838
+ {
839
+ ref,
840
+ className: cn(
841
+ "text-sm font-medium text-text-primary leading-none",
842
+ "peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
843
+ className
844
+ ),
845
+ ...props,
846
+ children: [
847
+ children,
848
+ required && /* @__PURE__ */ jsx("span", { className: "text-error ml-1", "aria-hidden": "true", children: "*" })
849
+ ]
850
+ }
851
+ ));
852
+ Label2.displayName = "Label";
853
+ var FormField = React4.forwardRef(
854
+ ({
855
+ id,
856
+ label,
857
+ helperText,
858
+ error,
859
+ required = false,
860
+ disabled = false,
861
+ className,
862
+ inputProps
863
+ }, ref) => {
864
+ const hasError = Boolean(error);
865
+ const descriptionId = helperText || error ? `${id}-description` : void 0;
866
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-2", className), children: [
867
+ /* @__PURE__ */ jsx(Label2, { htmlFor: id, required, children: label }),
868
+ /* @__PURE__ */ jsx(
869
+ Input,
870
+ {
871
+ ref,
872
+ id,
873
+ error: hasError,
874
+ disabled,
875
+ required,
876
+ "aria-describedby": descriptionId,
877
+ ...inputProps
878
+ }
879
+ ),
880
+ (error || helperText) && /* @__PURE__ */ jsx(
881
+ "p",
882
+ {
883
+ id: descriptionId,
884
+ className: cn(
885
+ "text-xs",
886
+ hasError ? "text-error" : "text-text-muted"
887
+ ),
888
+ role: hasError ? "alert" : void 0,
889
+ children: error || helperText
890
+ }
891
+ )
892
+ ] });
893
+ }
894
+ );
895
+ FormField.displayName = "FormField";
896
+ var Sidebar = React4.forwardRef(
897
+ ({ className, collapsed = false, children, ...props }, ref) => /* @__PURE__ */ jsx(
898
+ "aside",
899
+ {
900
+ ref,
901
+ className: cn(
902
+ "flex h-full flex-col border-r border-border bg-bg-elevated",
903
+ "transition-all duration-slow ease-in-out",
904
+ collapsed ? "w-16" : "w-64",
905
+ className
906
+ ),
907
+ "data-collapsed": collapsed,
908
+ ...props,
909
+ children
910
+ }
911
+ )
912
+ );
913
+ Sidebar.displayName = "Sidebar";
914
+ var SidebarHeader = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
915
+ "div",
916
+ {
917
+ ref,
918
+ className: cn("flex items-center gap-3 border-b border-border px-4 py-4", className),
919
+ ...props
920
+ }
921
+ ));
922
+ SidebarHeader.displayName = "SidebarHeader";
923
+ var SidebarContent = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
924
+ "div",
925
+ {
926
+ ref,
927
+ className: cn("flex-1 overflow-y-auto px-3 py-4", className),
928
+ ...props
929
+ }
930
+ ));
931
+ SidebarContent.displayName = "SidebarContent";
932
+ var SidebarGroup = React4.forwardRef(
933
+ ({ className, label, children, ...props }, ref) => /* @__PURE__ */ jsxs("div", { ref, className: cn("mb-4", className), ...props, children: [
934
+ label && /* @__PURE__ */ jsx("p", { className: "mb-2 px-2 text-xs font-semibold uppercase tracking-wider text-text-muted", children: label }),
935
+ /* @__PURE__ */ jsx("nav", { className: "flex flex-col gap-1", children })
936
+ ] })
937
+ );
938
+ SidebarGroup.displayName = "SidebarGroup";
939
+ var SidebarItem = React4.forwardRef(
940
+ ({ className, active = false, icon, children, ...props }, ref) => /* @__PURE__ */ jsxs(
941
+ "button",
942
+ {
943
+ ref,
944
+ type: "button",
945
+ className: cn(
946
+ "flex w-full items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium",
947
+ "transition-colors duration-fast ease-in-out",
948
+ "hover:bg-bg-surface hover:text-text-primary",
949
+ active ? "bg-primary/10 text-primary" : "text-text-secondary",
950
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-emphasis",
951
+ className
952
+ ),
953
+ "data-active": active,
954
+ "aria-current": active ? "page" : void 0,
955
+ ...props,
956
+ children: [
957
+ icon && /* @__PURE__ */ jsx("span", { className: "flex shrink-0 h-5 w-5 items-center justify-center", children: icon }),
958
+ /* @__PURE__ */ jsx("span", { className: "truncate", children })
959
+ ]
960
+ }
961
+ )
962
+ );
963
+ SidebarItem.displayName = "SidebarItem";
964
+ var SidebarFooter = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
965
+ "div",
966
+ {
967
+ ref,
968
+ className: cn(
969
+ "mt-auto border-t border-border px-4 py-4",
970
+ className
971
+ ),
972
+ ...props
973
+ }
974
+ ));
975
+ SidebarFooter.displayName = "SidebarFooter";
976
+ var LoginForm = React4.forwardRef(
977
+ ({
978
+ className,
979
+ title = "Welcome back",
980
+ description = "Enter your credentials to access your account",
981
+ submitLabel = "Sign in",
982
+ loading = false,
983
+ error,
984
+ onSubmit,
985
+ showForgotPassword = true,
986
+ onForgotPassword,
987
+ footer,
988
+ ...props
989
+ }, ref) => {
990
+ const [email, setEmail] = React4.useState("");
991
+ const [password, setPassword] = React4.useState("");
992
+ const handleSubmit = (e) => {
993
+ e.preventDefault();
994
+ onSubmit?.({ email, password });
995
+ };
996
+ return /* @__PURE__ */ jsx(
997
+ Card,
998
+ {
999
+ ref,
1000
+ className: cn("w-full max-w-sm", className),
1001
+ ...props,
1002
+ children: /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, children: [
1003
+ /* @__PURE__ */ jsxs(CardHeader, { className: "text-center", children: [
1004
+ /* @__PURE__ */ jsx(CardTitle, { children: title }),
1005
+ /* @__PURE__ */ jsx(CardDescription, { children: description })
1006
+ ] }),
1007
+ /* @__PURE__ */ jsxs(CardContent, { className: "flex flex-col gap-4", children: [
1008
+ error && /* @__PURE__ */ jsx(
1009
+ "div",
1010
+ {
1011
+ className: "rounded-md bg-error/10 border border-error/20 px-3 py-2 text-sm text-error",
1012
+ role: "alert",
1013
+ children: error
1014
+ }
1015
+ ),
1016
+ /* @__PURE__ */ jsx(
1017
+ FormField,
1018
+ {
1019
+ id: "login-email",
1020
+ label: "Email",
1021
+ required: true,
1022
+ inputProps: {
1023
+ type: "email",
1024
+ placeholder: "you@example.com",
1025
+ autoComplete: "email",
1026
+ value: email,
1027
+ onChange: (e) => setEmail(e.target.value)
1028
+ }
1029
+ }
1030
+ ),
1031
+ /* @__PURE__ */ jsx(
1032
+ FormField,
1033
+ {
1034
+ id: "login-password",
1035
+ label: "Password",
1036
+ required: true,
1037
+ inputProps: {
1038
+ type: "password",
1039
+ placeholder: "Enter your password",
1040
+ autoComplete: "current-password",
1041
+ value: password,
1042
+ onChange: (e) => setPassword(e.target.value)
1043
+ }
1044
+ }
1045
+ ),
1046
+ showForgotPassword && /* @__PURE__ */ jsx(
1047
+ Button,
1048
+ {
1049
+ type: "button",
1050
+ variant: "link",
1051
+ size: "sm",
1052
+ className: "self-end -mt-1 h-auto p-0 text-xs",
1053
+ onClick: onForgotPassword,
1054
+ children: "Forgot password?"
1055
+ }
1056
+ )
1057
+ ] }),
1058
+ /* @__PURE__ */ jsxs(CardFooter, { className: "flex-col gap-3", children: [
1059
+ /* @__PURE__ */ jsx(
1060
+ Button,
1061
+ {
1062
+ type: "submit",
1063
+ className: "w-full",
1064
+ loading,
1065
+ children: submitLabel
1066
+ }
1067
+ ),
1068
+ footer
1069
+ ] })
1070
+ ] })
1071
+ }
1072
+ );
1073
+ }
1074
+ );
1075
+ LoginForm.displayName = "LoginForm";
1076
+ var Dialog = DialogPrimitive.Root;
1077
+ var DialogTrigger = DialogPrimitive.Trigger;
1078
+ var DialogClose = DialogPrimitive.Close;
1079
+ var DialogPortal = DialogPrimitive.Portal;
1080
+ var DialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1081
+ DialogPrimitive.Overlay,
1082
+ {
1083
+ ref,
1084
+ className: cn(
1085
+ "fixed inset-0 z-50 bg-black/60 backdrop-blur-sm",
1086
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0",
1087
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0",
1088
+ className
1089
+ ),
1090
+ ...props
1091
+ }
1092
+ ));
1093
+ DialogOverlay.displayName = "DialogOverlay";
1094
+ var DialogContent = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
1095
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
1096
+ /* @__PURE__ */ jsxs(
1097
+ DialogPrimitive.Content,
1098
+ {
1099
+ ref,
1100
+ className: cn(
1101
+ "fixed left-1/2 top-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2",
1102
+ "rounded-xl border border-border bg-bg-elevated p-6 shadow-lg",
1103
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
1104
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
1105
+ "focus:outline-none",
1106
+ className
1107
+ ),
1108
+ ...props,
1109
+ children: [
1110
+ children,
1111
+ /* @__PURE__ */ jsxs(
1112
+ DialogPrimitive.Close,
1113
+ {
1114
+ className: cn(
1115
+ "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity",
1116
+ "hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-border-emphasis",
1117
+ "disabled:pointer-events-none"
1118
+ ),
1119
+ children: [
1120
+ /* @__PURE__ */ jsxs(
1121
+ "svg",
1122
+ {
1123
+ className: "h-4 w-4 text-text-secondary",
1124
+ xmlns: "http://www.w3.org/2000/svg",
1125
+ viewBox: "0 0 24 24",
1126
+ fill: "none",
1127
+ stroke: "currentColor",
1128
+ strokeWidth: "2",
1129
+ strokeLinecap: "round",
1130
+ strokeLinejoin: "round",
1131
+ children: [
1132
+ /* @__PURE__ */ jsx("path", { d: "M18 6 6 18" }),
1133
+ /* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
1134
+ ]
1135
+ }
1136
+ ),
1137
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1138
+ ]
1139
+ }
1140
+ )
1141
+ ]
1142
+ }
1143
+ )
1144
+ ] }));
1145
+ DialogContent.displayName = "DialogContent";
1146
+ var DialogHeader = ({
1147
+ className,
1148
+ ...props
1149
+ }) => /* @__PURE__ */ jsx(
1150
+ "div",
1151
+ {
1152
+ className: cn("flex flex-col gap-1.5 text-center sm:text-left", className),
1153
+ ...props
1154
+ }
1155
+ );
1156
+ DialogHeader.displayName = "DialogHeader";
1157
+ var DialogFooter = ({
1158
+ className,
1159
+ ...props
1160
+ }) => /* @__PURE__ */ jsx(
1161
+ "div",
1162
+ {
1163
+ className: cn(
1164
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-2 mt-6",
1165
+ className
1166
+ ),
1167
+ ...props
1168
+ }
1169
+ );
1170
+ DialogFooter.displayName = "DialogFooter";
1171
+ var DialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1172
+ DialogPrimitive.Title,
1173
+ {
1174
+ ref,
1175
+ className: cn("text-lg font-semibold text-text-primary", className),
1176
+ ...props
1177
+ }
1178
+ ));
1179
+ DialogTitle.displayName = "DialogTitle";
1180
+ var DialogDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1181
+ DialogPrimitive.Description,
1182
+ {
1183
+ ref,
1184
+ className: cn("text-sm text-text-secondary", className),
1185
+ ...props
1186
+ }
1187
+ ));
1188
+ DialogDescription.displayName = "DialogDescription";
1189
+ var ToastProvider = ToastPrimitive.Provider;
1190
+ var ToastViewport = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1191
+ ToastPrimitive.Viewport,
1192
+ {
1193
+ ref,
1194
+ className: cn(
1195
+ "fixed top-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse gap-2 p-4 sm:max-w-[420px]",
1196
+ className
1197
+ ),
1198
+ ...props
1199
+ }
1200
+ ));
1201
+ ToastViewport.displayName = "ToastViewport";
1202
+ var toastVariants = cva(
1203
+ [
1204
+ "group pointer-events-auto relative flex w-full items-center gap-3 overflow-hidden rounded-lg border p-4 shadow-lg",
1205
+ "transition-all",
1206
+ "data-[state=open]:animate-in data-[state=open]:slide-in-from-top-full data-[state=open]:fade-in-0",
1207
+ "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right-full data-[state=closed]:fade-out-0",
1208
+ "data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)]",
1209
+ "data-[swipe=cancel]:translate-x-0 data-[swipe=cancel]:transition-transform",
1210
+ "data-[swipe=end]:animate-out data-[swipe=end]:slide-out-to-right-full"
1211
+ ].join(" "),
1212
+ {
1213
+ variants: {
1214
+ variant: {
1215
+ default: "border-border bg-bg-elevated text-text-primary",
1216
+ success: "border-success/30 bg-success/10 text-success",
1217
+ error: "border-error/30 bg-error/10 text-error",
1218
+ warning: "border-warning/30 bg-warning/10 text-warning",
1219
+ info: "border-info/30 bg-info/10 text-info"
1220
+ }
1221
+ },
1222
+ defaultVariants: {
1223
+ variant: "default"
1224
+ }
1225
+ }
1226
+ );
1227
+ var Toast = React4.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(
1228
+ ToastPrimitive.Root,
1229
+ {
1230
+ ref,
1231
+ className: cn(toastVariants({ variant }), className),
1232
+ ...props
1233
+ }
1234
+ ));
1235
+ Toast.displayName = "Toast";
1236
+ var ToastAction = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1237
+ ToastPrimitive.Action,
1238
+ {
1239
+ ref,
1240
+ className: cn(
1241
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border border-border bg-transparent px-3",
1242
+ "text-sm font-medium transition-colors",
1243
+ "hover:bg-bg-surface focus:outline-none focus:ring-2 focus:ring-border-emphasis",
1244
+ "disabled:pointer-events-none disabled:opacity-50",
1245
+ "group-[.border-error\\/30]:border-error/30 group-[.border-error\\/30]:hover:border-error group-[.border-error\\/30]:hover:bg-error/10",
1246
+ className
1247
+ ),
1248
+ ...props
1249
+ }
1250
+ ));
1251
+ ToastAction.displayName = "ToastAction";
1252
+ var ToastClose = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1253
+ ToastPrimitive.Close,
1254
+ {
1255
+ ref,
1256
+ className: cn(
1257
+ "absolute right-2 top-2 rounded-md p-1 opacity-0 transition-opacity",
1258
+ "hover:opacity-100 focus:opacity-100 group-hover:opacity-100",
1259
+ "focus:outline-none focus:ring-2 focus:ring-border-emphasis",
1260
+ className
1261
+ ),
1262
+ "toast-close": "",
1263
+ ...props,
1264
+ children: /* @__PURE__ */ jsxs(
1265
+ "svg",
1266
+ {
1267
+ className: "h-4 w-4",
1268
+ xmlns: "http://www.w3.org/2000/svg",
1269
+ viewBox: "0 0 24 24",
1270
+ fill: "none",
1271
+ stroke: "currentColor",
1272
+ strokeWidth: "2",
1273
+ strokeLinecap: "round",
1274
+ strokeLinejoin: "round",
1275
+ children: [
1276
+ /* @__PURE__ */ jsx("path", { d: "M18 6 6 18" }),
1277
+ /* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
1278
+ ]
1279
+ }
1280
+ )
1281
+ }
1282
+ ));
1283
+ ToastClose.displayName = "ToastClose";
1284
+ var ToastTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1285
+ ToastPrimitive.Title,
1286
+ {
1287
+ ref,
1288
+ className: cn("text-sm font-semibold", className),
1289
+ ...props
1290
+ }
1291
+ ));
1292
+ ToastTitle.displayName = "ToastTitle";
1293
+ var ToastDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1294
+ ToastPrimitive.Description,
1295
+ {
1296
+ ref,
1297
+ className: cn("text-sm opacity-90", className),
1298
+ ...props
1299
+ }
1300
+ ));
1301
+ ToastDescription.displayName = "ToastDescription";
1302
+ var DashboardLayout = React4.forwardRef(
1303
+ ({
1304
+ className,
1305
+ sidebarCollapsed = false,
1306
+ sidebarHeader,
1307
+ sidebarContent,
1308
+ sidebarFooter,
1309
+ headerContent,
1310
+ pageTitle,
1311
+ children,
1312
+ ...props
1313
+ }, ref) => /* @__PURE__ */ jsxs(
1314
+ "div",
1315
+ {
1316
+ ref,
1317
+ className: cn("flex h-screen overflow-hidden bg-bg-base", className),
1318
+ ...props,
1319
+ children: [
1320
+ /* @__PURE__ */ jsxs(Sidebar, { collapsed: sidebarCollapsed, children: [
1321
+ sidebarHeader && /* @__PURE__ */ jsx(SidebarHeader, { children: sidebarHeader }),
1322
+ /* @__PURE__ */ jsx(SidebarContent, { children: sidebarContent }),
1323
+ sidebarFooter && /* @__PURE__ */ jsx(SidebarFooter, { children: sidebarFooter })
1324
+ ] }),
1325
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
1326
+ /* @__PURE__ */ jsxs("header", { className: "flex h-14 shrink-0 items-center justify-between border-b border-border bg-bg-elevated px-6", children: [
1327
+ pageTitle && /* @__PURE__ */ jsx("h1", { className: "text-lg font-semibold text-text-primary", children: pageTitle }),
1328
+ !pageTitle && /* @__PURE__ */ jsx("div", {}),
1329
+ headerContent && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: headerContent })
1330
+ ] }),
1331
+ /* @__PURE__ */ jsx("main", { className: "flex-1 overflow-y-auto p-6", children })
1332
+ ] })
1333
+ ]
1334
+ }
1335
+ )
1336
+ );
1337
+ DashboardLayout.displayName = "DashboardLayout";
1338
+
1339
+ export { Avatar, AvatarFallback, AvatarImage, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, DashboardLayout, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, FormField, Input, Label2 as Label, LoginForm, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarHeader, SidebarItem, Switch, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, badgeVariants, buttonVariants, chartPalette, cn, colors, getPaymentLogoPath, getSocialLogoPath, gradients, iconCategories, iconSizes, motion, paletteExtended, paymentLogos, radius, shadows, socialLogos, spacing, toastVariants, tokens, typography, zIndex };
1340
+ //# sourceMappingURL=index.js.map
1341
+ //# sourceMappingURL=index.js.map