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