@umituz/atomic-next 1.9.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2716 @@
1
- 'use strict';var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),x=require('react'),reactSlot=require('@radix-ui/react-slot'),classVarianceAuthority=require('class-variance-authority'),lucideReact=require('lucide-react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var x__default=/*#__PURE__*/_interopDefault(x);function r(...a){return tailwindMerge.twMerge(clsx.clsx(a))}var d=classVarianceAuthority.cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-gray-900 text-white hover:bg-gray-800 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-100",primary:"bg-[--atomic-primary] text-white hover:bg-[--atomic-primary-dark] transition-all duration-200",brand:"text-white hover:shadow-xl transition-all duration-200",destructive:"bg-red-600 text-white hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-600",outline:"border border-gray-300 bg-transparent hover:bg-gray-50 dark:border-gray-700 dark:hover:bg-gray-800",secondary:"bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-100 dark:hover:bg-gray-700",ghost:"bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800",link:"bg-transparent text-blue-600 underline-offset-4 hover:underline dark:text-blue-400"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),g=x__default.default.forwardRef(({className:a,variant:i,size:t,asChild:b=false,loading:e=false,leftIcon:o,rightIcon:s,fullWidth:u=false,disabled:c,children:m,...l},p)=>{let f=b?reactSlot.Slot:"button",h=c||e;return jsxRuntime.jsxs(f,{className:r(d({variant:i,size:t}),u&&"w-full",a),style:{...i==="brand"&&{background:"linear-gradient(to right, var(--atomic-primary), var(--atomic-secondary))"},...l.style},ref:p,disabled:h,...l,children:[e&&jsxRuntime.jsx(lucideReact.Loader2,{className:r("animate-spin",t==="sm"?"h-3 w-3":t==="lg"?"h-5 w-5":"h-4 w-4",(o||m)&&"mr-2")}),!e&&o&&jsxRuntime.jsx("span",{className:r("inline-flex items-center",t==="sm"?"mr-1":"mr-2",t==="sm"?"[&>*]:h-3 [&>*]:w-3":t==="lg"?"[&>*]:h-5 [&>*]:w-5":"[&>*]:h-4 [&>*]:w-4"),children:o}),m,!e&&s&&jsxRuntime.jsx("span",{className:r("inline-flex items-center",t==="sm"?"ml-1":"ml-2",t==="sm"?"[&>*]:h-3 [&>*]:w-3":t==="lg"?"[&>*]:h-5 [&>*]:w-5":"[&>*]:h-4 [&>*]:w-4"),children:s})]})});g.displayName="AtomicButton";exports.AtomicButton=g;exports.buttonVariants=d;exports.cn=r;//# sourceMappingURL=index.js.map
1
+ 'use strict';
2
+
3
+ var clsx = require('clsx');
4
+ var tailwindMerge = require('tailwind-merge');
5
+ var React5 = require('react');
6
+ var reactSlot = require('@radix-ui/react-slot');
7
+ var classVarianceAuthority = require('class-variance-authority');
8
+ var lucideReact = require('lucide-react');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+ var AvatarPrimitive = require('@radix-ui/react-avatar');
11
+ var Image2 = require('next/image');
12
+ var Link = require('next/link');
13
+
14
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
+
16
+ function _interopNamespace(e) {
17
+ if (e && e.__esModule) return e;
18
+ var n = Object.create(null);
19
+ if (e) {
20
+ Object.keys(e).forEach(function (k) {
21
+ if (k !== 'default') {
22
+ var d = Object.getOwnPropertyDescriptor(e, k);
23
+ Object.defineProperty(n, k, d.get ? d : {
24
+ enumerable: true,
25
+ get: function () { return e[k]; }
26
+ });
27
+ }
28
+ });
29
+ }
30
+ n.default = e;
31
+ return Object.freeze(n);
32
+ }
33
+
34
+ var React5__default = /*#__PURE__*/_interopDefault(React5);
35
+ var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
36
+ var Image2__default = /*#__PURE__*/_interopDefault(Image2);
37
+ var Link__default = /*#__PURE__*/_interopDefault(Link);
38
+
39
+ /**
40
+ * @umituz/atomic-next v2.0.0
41
+ * Atomic design system for Next.js
42
+ * https://umituz.com/opensource/atomic-next
43
+ */
44
+
45
+ // src/tokens/colors/atomic-colors.ts
46
+ var colors = {
47
+ primary: "#9333EA",
48
+ primaryLight: "#A855F7",
49
+ primaryDark: "#7C3AED",
50
+ secondary: "#EC4899",
51
+ secondaryLight: "#F472B6",
52
+ secondaryDark: "#DB2777",
53
+ accent: "#F59E0B",
54
+ accentLight: "#FBBF24",
55
+ accentDark: "#D97706",
56
+ gray50: "#FAFAFA",
57
+ gray100: "#F4F4F5",
58
+ gray200: "#E4E4E7",
59
+ gray300: "#D4D4D8",
60
+ gray400: "#A1A1AA",
61
+ gray500: "#71717A",
62
+ gray600: "#52525B",
63
+ gray700: "#3F3F46",
64
+ gray800: "#27272A",
65
+ gray900: "#18181B",
66
+ success: "#10B981",
67
+ successLight: "#34D399",
68
+ successDark: "#059669",
69
+ warning: "#F59E0B",
70
+ warningLight: "#FBBF24",
71
+ warningDark: "#D97706",
72
+ error: "#EF4444",
73
+ errorLight: "#F87171",
74
+ errorDark: "#DC2626",
75
+ info: "#3B82F6",
76
+ infoLight: "#60A5FA",
77
+ infoDark: "#2563EB",
78
+ background: "#FFFFFF",
79
+ backgroundSecondary: "#F9FAFB",
80
+ surface: "#FFFFFF",
81
+ surfaceSecondary: "#F3F4F6",
82
+ textPrimary: "#18181B",
83
+ textSecondary: "#52525B",
84
+ textTertiary: "#A1A1AA",
85
+ textDisabled: "#D4D4D8",
86
+ textInverse: "#FFFFFF"
87
+ };
88
+ var AtomicColorsCss = {
89
+ "--atomic-primary": colors.primary,
90
+ "--atomic-primary-light": colors.primaryLight,
91
+ "--atomic-primary-dark": colors.primaryDark,
92
+ "--atomic-secondary": colors.secondary,
93
+ "--atomic-secondary-light": colors.secondaryLight,
94
+ "--atomic-secondary-dark": colors.secondaryDark,
95
+ "--atomic-accent": colors.accent,
96
+ "--atomic-accent-light": colors.accentLight,
97
+ "--atomic-accent-dark": colors.accentDark,
98
+ "--atomic-gray-50": colors.gray50,
99
+ "--atomic-gray-100": colors.gray100,
100
+ "--atomic-gray-200": colors.gray200,
101
+ "--atomic-gray-300": colors.gray300,
102
+ "--atomic-gray-400": colors.gray400,
103
+ "--atomic-gray-500": colors.gray500,
104
+ "--atomic-gray-600": colors.gray600,
105
+ "--atomic-gray-700": colors.gray700,
106
+ "--atomic-gray-800": colors.gray800,
107
+ "--atomic-gray-900": colors.gray900,
108
+ "--atomic-success": colors.success,
109
+ "--atomic-success-light": colors.successLight,
110
+ "--atomic-success-dark": colors.successDark,
111
+ "--atomic-warning": colors.warning,
112
+ "--atomic-warning-light": colors.warningLight,
113
+ "--atomic-warning-dark": colors.warningDark,
114
+ "--atomic-error": colors.error,
115
+ "--atomic-error-light": colors.errorLight,
116
+ "--atomic-error-dark": colors.errorDark,
117
+ "--atomic-info": colors.info,
118
+ "--atomic-info-light": colors.infoLight,
119
+ "--atomic-info-dark": colors.infoDark,
120
+ "--atomic-background": colors.background,
121
+ "--atomic-background-secondary": colors.backgroundSecondary,
122
+ "--atomic-surface": colors.surface,
123
+ "--atomic-surface-secondary": colors.surfaceSecondary,
124
+ "--atomic-text-primary": colors.textPrimary,
125
+ "--atomic-text-secondary": colors.textSecondary,
126
+ "--atomic-text-tertiary": colors.textTertiary,
127
+ "--atomic-text-disabled": colors.textDisabled,
128
+ "--atomic-text-inverse": colors.textInverse
129
+ };
130
+
131
+ // src/tokens/spacing/atomic-spacing.ts
132
+ var spacing = {
133
+ unit: 8,
134
+ xxs: 4,
135
+ xs: 8,
136
+ sm: 12,
137
+ md: 16,
138
+ lg: 24,
139
+ xl: 32,
140
+ xxl: 40,
141
+ xxxl: 48,
142
+ huge: 64,
143
+ buttonPaddingX: 16,
144
+ buttonPaddingY: 12,
145
+ cardPadding: 24,
146
+ cardMargin: 16,
147
+ listItemPadding: 16,
148
+ listItemSpacing: 8,
149
+ inputPaddingX: 16,
150
+ inputPaddingY: 12,
151
+ modalPadding: 24,
152
+ sectionPadding: 32
153
+ };
154
+ var AtomicSpacingCss = {
155
+ "--atomic-spacing-unit": `${spacing.unit}px`,
156
+ "--atomic-spacing-xxs": `${spacing.xxs}px`,
157
+ "--atomic-spacing-xs": `${spacing.xs}px`,
158
+ "--atomic-spacing-sm": `${spacing.sm}px`,
159
+ "--atomic-spacing-md": `${spacing.md}px`,
160
+ "--atomic-spacing-lg": `${spacing.lg}px`,
161
+ "--atomic-spacing-xl": `${spacing.xl}px`,
162
+ "--atomic-spacing-xxl": `${spacing.xxl}px`,
163
+ "--atomic-spacing-xxxl": `${spacing.xxxl}px`,
164
+ "--atomic-spacing-huge": `${spacing.huge}px`,
165
+ "--atomic-button-padding-x": `${spacing.buttonPaddingX}px`,
166
+ "--atomic-button-padding-y": `${spacing.buttonPaddingY}px`,
167
+ "--atomic-card-padding": `${spacing.cardPadding}px`,
168
+ "--atomic-card-margin": `${spacing.cardMargin}px`,
169
+ "--atomic-list-item-padding": `${spacing.listItemPadding}px`,
170
+ "--atomic-list-item-spacing": `${spacing.listItemSpacing}px`,
171
+ "--atomic-input-padding-x": `${spacing.inputPaddingX}px`,
172
+ "--atomic-input-padding-y": `${spacing.inputPaddingY}px`,
173
+ "--atomic-modal-padding": `${spacing.modalPadding}px`,
174
+ "--atomic-section-padding": `${spacing.sectionPadding}px`
175
+ };
176
+
177
+ // src/tokens/typography/atomic-typography.ts
178
+ var typography = {
179
+ fontFamily: {
180
+ sans: ["Inter", "system-ui", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "sans-serif"],
181
+ serif: ["Charter", "Georgia", "Cambria", "Times New Roman", "Times", "serif"],
182
+ mono: ["JetBrains Mono", "Fira Code", "Consolas", "Monaco", "Courier New", "monospace"]
183
+ },
184
+ fontWeight: {
185
+ thin: 100,
186
+ light: 300,
187
+ regular: 400,
188
+ medium: 500,
189
+ semibold: 600,
190
+ bold: 700,
191
+ extrabold: 800,
192
+ black: 900
193
+ },
194
+ fontSize: {
195
+ displayLarge: 57,
196
+ displayMedium: 45,
197
+ displaySmall: 36,
198
+ headlineLarge: 32,
199
+ headlineMedium: 28,
200
+ headlineSmall: 24,
201
+ titleLarge: 22,
202
+ titleMedium: 16,
203
+ titleSmall: 14,
204
+ bodyLarge: 16,
205
+ bodyMedium: 14,
206
+ bodySmall: 12,
207
+ labelLarge: 14,
208
+ labelMedium: 12,
209
+ labelSmall: 11
210
+ },
211
+ lineHeight: {
212
+ none: 1,
213
+ tight: 1.25,
214
+ snug: 1.375,
215
+ normal: 1.5,
216
+ relaxed: 1.625,
217
+ loose: 2
218
+ },
219
+ letterSpacing: {
220
+ tighter: "-0.05em",
221
+ tight: "-0.025em",
222
+ normal: "0em",
223
+ wide: "0.025em",
224
+ wider: "0.05em",
225
+ widest: "0.1em"
226
+ }
227
+ };
228
+ var AtomicTypographyCss = {
229
+ "--atomic-font-sans": typography.fontFamily.sans.join(", "),
230
+ "--atomic-font-serif": typography.fontFamily.serif.join(", "),
231
+ "--atomic-font-mono": typography.fontFamily.mono.join(", "),
232
+ "--atomic-font-thin": typography.fontWeight.thin.toString(),
233
+ "--atomic-font-light": typography.fontWeight.light.toString(),
234
+ "--atomic-font-regular": typography.fontWeight.regular.toString(),
235
+ "--atomic-font-medium": typography.fontWeight.medium.toString(),
236
+ "--atomic-font-semibold": typography.fontWeight.semibold.toString(),
237
+ "--atomic-font-bold": typography.fontWeight.bold.toString(),
238
+ "--atomic-font-extrabold": typography.fontWeight.extrabold.toString(),
239
+ "--atomic-font-black": typography.fontWeight.black.toString(),
240
+ "--atomic-text-display-large": `${typography.fontSize.displayLarge}px`,
241
+ "--atomic-text-display-medium": `${typography.fontSize.displayMedium}px`,
242
+ "--atomic-text-display-small": `${typography.fontSize.displaySmall}px`,
243
+ "--atomic-text-headline-large": `${typography.fontSize.headlineLarge}px`,
244
+ "--atomic-text-headline-medium": `${typography.fontSize.headlineMedium}px`,
245
+ "--atomic-text-headline-small": `${typography.fontSize.headlineSmall}px`,
246
+ "--atomic-text-title-large": `${typography.fontSize.titleLarge}px`,
247
+ "--atomic-text-title-medium": `${typography.fontSize.titleMedium}px`,
248
+ "--atomic-text-title-small": `${typography.fontSize.titleSmall}px`,
249
+ "--atomic-text-body-large": `${typography.fontSize.bodyLarge}px`,
250
+ "--atomic-text-body-medium": `${typography.fontSize.bodyMedium}px`,
251
+ "--atomic-text-body-small": `${typography.fontSize.bodySmall}px`,
252
+ "--atomic-text-label-large": `${typography.fontSize.labelLarge}px`,
253
+ "--atomic-text-label-medium": `${typography.fontSize.labelMedium}px`,
254
+ "--atomic-text-label-small": `${typography.fontSize.labelSmall}px`,
255
+ "--atomic-leading-none": typography.lineHeight.none.toString(),
256
+ "--atomic-leading-tight": typography.lineHeight.tight.toString(),
257
+ "--atomic-leading-snug": typography.lineHeight.snug.toString(),
258
+ "--atomic-leading-normal": typography.lineHeight.normal.toString(),
259
+ "--atomic-leading-relaxed": typography.lineHeight.relaxed.toString(),
260
+ "--atomic-leading-loose": typography.lineHeight.loose.toString(),
261
+ "--atomic-tracking-tighter": typography.letterSpacing.tighter,
262
+ "--atomic-tracking-tight": typography.letterSpacing.tight,
263
+ "--atomic-tracking-normal": typography.letterSpacing.normal,
264
+ "--atomic-tracking-wide": typography.letterSpacing.wide,
265
+ "--atomic-tracking-wider": typography.letterSpacing.wider,
266
+ "--atomic-tracking-widest": typography.letterSpacing.widest
267
+ };
268
+
269
+ // src/tokens/shadows/atomic-shadows.ts
270
+ var AtomicShadows = {
271
+ none: "none",
272
+ xs: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
273
+ sm: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
274
+ md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
275
+ lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
276
+ xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
277
+ xxl: "0 25px 50px -12px rgb(0 0 0 / 0.25)",
278
+ inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",
279
+ focusPrimary: "0 0 0 3px rgb(139 92 246 / 0.2)",
280
+ focusSecondary: "0 0 0 3px rgb(236 72 153 / 0.2)",
281
+ focusSuccess: "0 0 0 3px rgb(16 185 129 / 0.2)",
282
+ focusWarning: "0 0 0 3px rgb(245 158 11 / 0.2)",
283
+ focusError: "0 0 0 3px rgb(239 68 68 / 0.2)",
284
+ focusInfo: "0 0 0 3px rgb(59 130 246 / 0.2)",
285
+ glowPrimary: "0 0 20px rgb(139 92 246 / 0.3)",
286
+ glowSecondary: "0 0 20px rgb(236 72 153 / 0.3)",
287
+ glowSuccess: "0 0 20px rgb(16 185 129 / 0.3)",
288
+ glowWarning: "0 0 20px rgb(245 158 11 / 0.3)",
289
+ glowError: "0 0 20px rgb(239 68 68 / 0.3)",
290
+ card: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
291
+ cardHover: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
292
+ button: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
293
+ buttonHover: "0 2px 4px 0 rgb(0 0 0 / 0.1)",
294
+ modal: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
295
+ dropdown: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
296
+ tooltip: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"
297
+ };
298
+ var ShadowUtils = {
299
+ get: (name) => {
300
+ return AtomicShadows[name];
301
+ },
302
+ custom: (x, y, blur, spread = 0, color = "0 0 0", opacity = 0.1) => {
303
+ return `${x}px ${y}px ${blur}px ${spread}px rgb(${color} / ${opacity})`;
304
+ },
305
+ combine: (...shadows) => {
306
+ return shadows.map((shadow) => AtomicShadows[shadow]).join(", ");
307
+ },
308
+ focus: (color = "139 92 246", opacity = 0.2) => {
309
+ return `0 0 0 3px rgb(${color} / ${opacity})`;
310
+ },
311
+ glow: (size = 20, color = "139 92 246", opacity = 0.3) => {
312
+ return `0 0 ${size}px rgb(${color} / ${opacity})`;
313
+ }
314
+ };
315
+ var AtomicShadowsCss = {
316
+ "--atomic-shadow-none": AtomicShadows.none,
317
+ "--atomic-shadow-xs": AtomicShadows.xs,
318
+ "--atomic-shadow-sm": AtomicShadows.sm,
319
+ "--atomic-shadow-md": AtomicShadows.md,
320
+ "--atomic-shadow-lg": AtomicShadows.lg,
321
+ "--atomic-shadow-xl": AtomicShadows.xl,
322
+ "--atomic-shadow-xxl": AtomicShadows.xxl,
323
+ "--atomic-shadow-inner": AtomicShadows.inner,
324
+ "--atomic-shadow-focus-primary": AtomicShadows.focusPrimary,
325
+ "--atomic-shadow-focus-secondary": AtomicShadows.focusSecondary,
326
+ "--atomic-shadow-focus-success": AtomicShadows.focusSuccess,
327
+ "--atomic-shadow-focus-warning": AtomicShadows.focusWarning,
328
+ "--atomic-shadow-focus-error": AtomicShadows.focusError,
329
+ "--atomic-shadow-focus-info": AtomicShadows.focusInfo,
330
+ "--atomic-shadow-glow-primary": AtomicShadows.glowPrimary,
331
+ "--atomic-shadow-glow-secondary": AtomicShadows.glowSecondary,
332
+ "--atomic-shadow-glow-success": AtomicShadows.glowSuccess,
333
+ "--atomic-shadow-glow-warning": AtomicShadows.glowWarning,
334
+ "--atomic-shadow-glow-error": AtomicShadows.glowError,
335
+ "--atomic-shadow-card": AtomicShadows.card,
336
+ "--atomic-shadow-card-hover": AtomicShadows.cardHover,
337
+ "--atomic-shadow-button": AtomicShadows.button,
338
+ "--atomic-shadow-button-hover": AtomicShadows.buttonHover,
339
+ "--atomic-shadow-modal": AtomicShadows.modal,
340
+ "--atomic-shadow-dropdown": AtomicShadows.dropdown,
341
+ "--atomic-shadow-tooltip": AtomicShadows.tooltip
342
+ };
343
+
344
+ // src/tokens/borders/atomic-borders.ts
345
+ var AtomicBorders = {
346
+ radius: {
347
+ none: "0px",
348
+ xs: "2px",
349
+ sm: "4px",
350
+ md: "6px",
351
+ lg: "8px",
352
+ xl: "12px",
353
+ xxl: "16px",
354
+ xxxl: "24px",
355
+ full: "9999px"
356
+ },
357
+ width: {
358
+ none: "0px",
359
+ thin: "1px",
360
+ medium: "2px",
361
+ thick: "4px",
362
+ thicker: "8px"
363
+ },
364
+ style: {
365
+ solid: "solid",
366
+ dashed: "dashed",
367
+ dotted: "dotted",
368
+ double: "double",
369
+ none: "none"
370
+ }
371
+ };
372
+ var BorderUtils = {
373
+ radius: (name) => {
374
+ return AtomicBorders.radius[name];
375
+ },
376
+ width: (name) => {
377
+ return AtomicBorders.width[name];
378
+ },
379
+ style: (name) => {
380
+ return AtomicBorders.style[name];
381
+ },
382
+ border: (config) => {
383
+ const width = config.width ? AtomicBorders.width[config.width] : AtomicBorders.width.thin;
384
+ const style = config.style ? AtomicBorders.style[config.style] : AtomicBorders.style.solid;
385
+ const color = config.color || "currentColor";
386
+ return `${width} ${style} ${color}`;
387
+ },
388
+ radiusCorners: {
389
+ all: (radius) => ({
390
+ borderRadius: AtomicBorders.radius[radius]
391
+ }),
392
+ top: (radius) => ({
393
+ borderTopLeftRadius: AtomicBorders.radius[radius],
394
+ borderTopRightRadius: AtomicBorders.radius[radius]
395
+ }),
396
+ right: (radius) => ({
397
+ borderTopRightRadius: AtomicBorders.radius[radius],
398
+ borderBottomRightRadius: AtomicBorders.radius[radius]
399
+ }),
400
+ bottom: (radius) => ({
401
+ borderBottomLeftRadius: AtomicBorders.radius[radius],
402
+ borderBottomRightRadius: AtomicBorders.radius[radius]
403
+ }),
404
+ left: (radius) => ({
405
+ borderTopLeftRadius: AtomicBorders.radius[radius],
406
+ borderBottomLeftRadius: AtomicBorders.radius[radius]
407
+ }),
408
+ topLeft: (radius) => ({
409
+ borderTopLeftRadius: AtomicBorders.radius[radius]
410
+ }),
411
+ topRight: (radius) => ({
412
+ borderTopRightRadius: AtomicBorders.radius[radius]
413
+ }),
414
+ bottomRight: (radius) => ({
415
+ borderBottomRightRadius: AtomicBorders.radius[radius]
416
+ }),
417
+ bottomLeft: (radius) => ({
418
+ borderBottomLeftRadius: AtomicBorders.radius[radius]
419
+ })
420
+ },
421
+ borderSides: {
422
+ all: (config) => ({
423
+ border: BorderUtils.border(config)
424
+ }),
425
+ top: (config) => ({
426
+ borderTop: BorderUtils.border(config)
427
+ }),
428
+ right: (config) => ({
429
+ borderRight: BorderUtils.border(config)
430
+ }),
431
+ bottom: (config) => ({
432
+ borderBottom: BorderUtils.border(config)
433
+ }),
434
+ left: (config) => ({
435
+ borderLeft: BorderUtils.border(config)
436
+ })
437
+ }
438
+ };
439
+ var AtomicBordersCss = {
440
+ "--atomic-radius-none": AtomicBorders.radius.none,
441
+ "--atomic-radius-xs": AtomicBorders.radius.xs,
442
+ "--atomic-radius-sm": AtomicBorders.radius.sm,
443
+ "--atomic-radius-md": AtomicBorders.radius.md,
444
+ "--atomic-radius-lg": AtomicBorders.radius.lg,
445
+ "--atomic-radius-xl": AtomicBorders.radius.xl,
446
+ "--atomic-radius-xxl": AtomicBorders.radius.xxl,
447
+ "--atomic-radius-xxxl": AtomicBorders.radius.xxxl,
448
+ "--atomic-radius-full": AtomicBorders.radius.full,
449
+ "--atomic-border-none": AtomicBorders.width.none,
450
+ "--atomic-border-thin": AtomicBorders.width.thin,
451
+ "--atomic-border-medium": AtomicBorders.width.medium,
452
+ "--atomic-border-thick": AtomicBorders.width.thick,
453
+ "--atomic-border-thicker": AtomicBorders.width.thicker
454
+ };
455
+
456
+ // src/tokens/animations/atomic-animations.ts
457
+ var AtomicAnimations = {
458
+ duration: {
459
+ instant: "0ms",
460
+ fast: "150ms",
461
+ normal: "200ms",
462
+ slow: "300ms",
463
+ slower: "500ms",
464
+ slowest: "700ms"
465
+ },
466
+ easing: {
467
+ linear: "linear",
468
+ ease: "ease",
469
+ easeIn: "ease-in",
470
+ easeOut: "ease-out",
471
+ easeInOut: "ease-in-out",
472
+ smooth: "cubic-bezier(0.25, 0.46, 0.45, 0.94)",
473
+ snappy: "cubic-bezier(0.68, -0.55, 0.265, 1.55)",
474
+ bounce: "cubic-bezier(0.68, -0.6, 0.32, 1.6)",
475
+ elastic: "cubic-bezier(0.175, 0.885, 0.32, 1.275)",
476
+ standard: "cubic-bezier(0.4, 0, 0.2, 1)",
477
+ decelerate: "cubic-bezier(0, 0, 0.2, 1)",
478
+ accelerate: "cubic-bezier(0.4, 0, 1, 1)"
479
+ },
480
+ scale: {
481
+ none: "1",
482
+ xs: "1.025",
483
+ sm: "1.05",
484
+ md: "1.1",
485
+ lg: "1.15",
486
+ xl: "1.25"
487
+ },
488
+ rotate: {
489
+ none: "0deg",
490
+ quarter: "90deg",
491
+ half: "180deg",
492
+ threeQuarter: "270deg",
493
+ full: "360deg"
494
+ }
495
+ };
496
+ var AnimationUtils = {
497
+ transition: (config) => {
498
+ const property = Array.isArray(config.property) ? config.property.join(", ") : config.property || "all";
499
+ const duration = config.duration ? AtomicAnimations.duration[config.duration] : AtomicAnimations.duration.normal;
500
+ const easing = config.easing ? AtomicAnimations.easing[config.easing] : AtomicAnimations.easing.easeInOut;
501
+ const delay = config.delay ? AtomicAnimations.duration[config.delay] : "0ms";
502
+ return {
503
+ transition: `${property} ${duration} ${easing} ${delay}`
504
+ };
505
+ },
506
+ transform: (config) => {
507
+ const transforms = [];
508
+ if (config.scale) {
509
+ transforms.push(`scale(${AtomicAnimations.scale[config.scale]})`);
510
+ }
511
+ if (config.rotate) {
512
+ transforms.push(`rotate(${AtomicAnimations.rotate[config.rotate]})`);
513
+ }
514
+ if (config.translateX) {
515
+ transforms.push(`translateX(${config.translateX})`);
516
+ }
517
+ if (config.translateY) {
518
+ transforms.push(`translateY(${config.translateY})`);
519
+ }
520
+ if (config.translateZ) {
521
+ transforms.push(`translateZ(${config.translateZ})`);
522
+ }
523
+ return {
524
+ transform: transforms.join(" ") || "none"
525
+ };
526
+ },
527
+ duration: (name) => {
528
+ return AtomicAnimations.duration[name];
529
+ },
530
+ easing: (name) => {
531
+ return AtomicAnimations.easing[name];
532
+ },
533
+ keyframes: (name, frames) => {
534
+ const keyframeString = Object.entries(frames).map(([key, styles]) => {
535
+ const styleString = Object.entries(styles).map(([prop, value]) => `${prop}: ${value};`).join(" ");
536
+ return `${key} { ${styleString} }`;
537
+ }).join(" ");
538
+ return `@keyframes ${name} { ${keyframeString} }`;
539
+ }
540
+ };
541
+ var AtomicAnimationPresets = {
542
+ fadeIn: AnimationUtils.transition({
543
+ property: "opacity",
544
+ duration: "normal",
545
+ easing: "easeOut"
546
+ }),
547
+ fadeOut: AnimationUtils.transition({
548
+ property: "opacity",
549
+ duration: "fast",
550
+ easing: "easeIn"
551
+ }),
552
+ scaleIn: {
553
+ ...AnimationUtils.transition({
554
+ property: "transform",
555
+ duration: "normal",
556
+ easing: "smooth"
557
+ }),
558
+ transform: "scale(1)"
559
+ },
560
+ scaleOut: {
561
+ ...AnimationUtils.transition({
562
+ property: "transform",
563
+ duration: "fast",
564
+ easing: "easeIn"
565
+ }),
566
+ transform: "scale(0.95)"
567
+ },
568
+ slideInUp: {
569
+ ...AnimationUtils.transition({
570
+ property: "transform",
571
+ duration: "normal",
572
+ easing: "smooth"
573
+ }),
574
+ transform: "translateY(0)"
575
+ },
576
+ slideInDown: {
577
+ ...AnimationUtils.transition({
578
+ property: "transform",
579
+ duration: "normal",
580
+ easing: "smooth"
581
+ }),
582
+ transform: "translateY(0)"
583
+ },
584
+ buttonHover: {
585
+ ...AnimationUtils.transition({
586
+ property: ["background-color", "border-color", "color", "box-shadow", "transform"],
587
+ duration: "fast",
588
+ easing: "easeOut"
589
+ }),
590
+ transform: "translateY(-1px)"
591
+ },
592
+ buttonPress: {
593
+ ...AnimationUtils.transition({
594
+ property: "transform",
595
+ duration: "fast",
596
+ easing: "easeIn"
597
+ }),
598
+ transform: "translateY(0)"
599
+ },
600
+ spin: {
601
+ animation: "spin 1s linear infinite"
602
+ },
603
+ pulse: {
604
+ animation: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite"
605
+ },
606
+ bounce: {
607
+ animation: "bounce 1s infinite"
608
+ }
609
+ };
610
+ var AtomicAnimationsCss = {
611
+ "--atomic-duration-instant": AtomicAnimations.duration.instant,
612
+ "--atomic-duration-fast": AtomicAnimations.duration.fast,
613
+ "--atomic-duration-normal": AtomicAnimations.duration.normal,
614
+ "--atomic-duration-slow": AtomicAnimations.duration.slow,
615
+ "--atomic-duration-slower": AtomicAnimations.duration.slower,
616
+ "--atomic-duration-slowest": AtomicAnimations.duration.slowest,
617
+ "--atomic-ease-linear": AtomicAnimations.easing.linear,
618
+ "--atomic-ease": AtomicAnimations.easing.ease,
619
+ "--atomic-ease-in": AtomicAnimations.easing.easeIn,
620
+ "--atomic-ease-out": AtomicAnimations.easing.easeOut,
621
+ "--atomic-ease-in-out": AtomicAnimations.easing.easeInOut,
622
+ "--atomic-ease-smooth": AtomicAnimations.easing.smooth,
623
+ "--atomic-ease-snappy": AtomicAnimations.easing.snappy,
624
+ "--atomic-ease-bounce": AtomicAnimations.easing.bounce,
625
+ "--atomic-ease-elastic": AtomicAnimations.easing.elastic,
626
+ "--atomic-ease-standard": AtomicAnimations.easing.standard,
627
+ "--atomic-ease-decelerate": AtomicAnimations.easing.decelerate,
628
+ "--atomic-ease-accelerate": AtomicAnimations.easing.accelerate,
629
+ "--atomic-scale-none": AtomicAnimations.scale.none,
630
+ "--atomic-scale-xs": AtomicAnimations.scale.xs,
631
+ "--atomic-scale-sm": AtomicAnimations.scale.sm,
632
+ "--atomic-scale-md": AtomicAnimations.scale.md,
633
+ "--atomic-scale-lg": AtomicAnimations.scale.lg,
634
+ "--atomic-scale-xl": AtomicAnimations.scale.xl
635
+ };
636
+
637
+ // src/tokens/enums/atomic-enums.ts
638
+ var AtomicSize = /* @__PURE__ */ ((AtomicSize2) => {
639
+ AtomicSize2["XS"] = "xs";
640
+ AtomicSize2["SM"] = "sm";
641
+ AtomicSize2["MD"] = "md";
642
+ AtomicSize2["LG"] = "lg";
643
+ AtomicSize2["XL"] = "xl";
644
+ return AtomicSize2;
645
+ })(AtomicSize || {});
646
+ var AtomicColorVariant = /* @__PURE__ */ ((AtomicColorVariant2) => {
647
+ AtomicColorVariant2["PRIMARY"] = "primary";
648
+ AtomicColorVariant2["SECONDARY"] = "secondary";
649
+ AtomicColorVariant2["SUCCESS"] = "success";
650
+ AtomicColorVariant2["WARNING"] = "warning";
651
+ AtomicColorVariant2["ERROR"] = "error";
652
+ AtomicColorVariant2["INFO"] = "info";
653
+ AtomicColorVariant2["GRAY"] = "gray";
654
+ return AtomicColorVariant2;
655
+ })(AtomicColorVariant || {});
656
+ var AtomicButtonVariant = /* @__PURE__ */ ((AtomicButtonVariant2) => {
657
+ AtomicButtonVariant2["PRIMARY"] = "primary";
658
+ AtomicButtonVariant2["SECONDARY"] = "secondary";
659
+ AtomicButtonVariant2["OUTLINE"] = "outline";
660
+ AtomicButtonVariant2["GHOST"] = "ghost";
661
+ AtomicButtonVariant2["LINK"] = "link";
662
+ AtomicButtonVariant2["DESTRUCTIVE"] = "destructive";
663
+ return AtomicButtonVariant2;
664
+ })(AtomicButtonVariant || {});
665
+ var AtomicInputVariant = /* @__PURE__ */ ((AtomicInputVariant2) => {
666
+ AtomicInputVariant2["DEFAULT"] = "default";
667
+ AtomicInputVariant2["FILLED"] = "filled";
668
+ AtomicInputVariant2["OUTLINE"] = "outline";
669
+ AtomicInputVariant2["UNDERLINED"] = "underlined";
670
+ return AtomicInputVariant2;
671
+ })(AtomicInputVariant || {});
672
+ var AtomicCardVariant = /* @__PURE__ */ ((AtomicCardVariant2) => {
673
+ AtomicCardVariant2["DEFAULT"] = "default";
674
+ AtomicCardVariant2["ELEVATED"] = "elevated";
675
+ AtomicCardVariant2["OUTLINED"] = "outlined";
676
+ AtomicCardVariant2["FILLED"] = "filled";
677
+ return AtomicCardVariant2;
678
+ })(AtomicCardVariant || {});
679
+ var AtomicLoadingState = /* @__PURE__ */ ((AtomicLoadingState2) => {
680
+ AtomicLoadingState2["IDLE"] = "idle";
681
+ AtomicLoadingState2["LOADING"] = "loading";
682
+ AtomicLoadingState2["SUCCESS"] = "success";
683
+ AtomicLoadingState2["ERROR"] = "error";
684
+ return AtomicLoadingState2;
685
+ })(AtomicLoadingState || {});
686
+ var AtomicStatus = /* @__PURE__ */ ((AtomicStatus2) => {
687
+ AtomicStatus2["ACTIVE"] = "active";
688
+ AtomicStatus2["INACTIVE"] = "inactive";
689
+ AtomicStatus2["PENDING"] = "pending";
690
+ AtomicStatus2["DISABLED"] = "disabled";
691
+ AtomicStatus2["ARCHIVED"] = "archived";
692
+ return AtomicStatus2;
693
+ })(AtomicStatus || {});
694
+ var AtomicAlertType = /* @__PURE__ */ ((AtomicAlertType2) => {
695
+ AtomicAlertType2["INFO"] = "info";
696
+ AtomicAlertType2["SUCCESS"] = "success";
697
+ AtomicAlertType2["WARNING"] = "warning";
698
+ AtomicAlertType2["ERROR"] = "error";
699
+ return AtomicAlertType2;
700
+ })(AtomicAlertType || {});
701
+ var AtomicModalSize = /* @__PURE__ */ ((AtomicModalSize2) => {
702
+ AtomicModalSize2["SM"] = "sm";
703
+ AtomicModalSize2["MD"] = "md";
704
+ AtomicModalSize2["LG"] = "lg";
705
+ AtomicModalSize2["XL"] = "xl";
706
+ AtomicModalSize2["FULL"] = "full";
707
+ return AtomicModalSize2;
708
+ })(AtomicModalSize || {});
709
+ var AtomicTextVariant = /* @__PURE__ */ ((AtomicTextVariant2) => {
710
+ AtomicTextVariant2["DISPLAY_LARGE"] = "displayLarge";
711
+ AtomicTextVariant2["DISPLAY_MEDIUM"] = "displayMedium";
712
+ AtomicTextVariant2["DISPLAY_SMALL"] = "displaySmall";
713
+ AtomicTextVariant2["HEADLINE_LARGE"] = "headlineLarge";
714
+ AtomicTextVariant2["HEADLINE_MEDIUM"] = "headlineMedium";
715
+ AtomicTextVariant2["HEADLINE_SMALL"] = "headlineSmall";
716
+ AtomicTextVariant2["TITLE_LARGE"] = "titleLarge";
717
+ AtomicTextVariant2["TITLE_MEDIUM"] = "titleMedium";
718
+ AtomicTextVariant2["TITLE_SMALL"] = "titleSmall";
719
+ AtomicTextVariant2["BODY_LARGE"] = "bodyLarge";
720
+ AtomicTextVariant2["BODY_MEDIUM"] = "bodyMedium";
721
+ AtomicTextVariant2["BODY_SMALL"] = "bodySmall";
722
+ AtomicTextVariant2["LABEL_LARGE"] = "labelLarge";
723
+ AtomicTextVariant2["LABEL_MEDIUM"] = "labelMedium";
724
+ AtomicTextVariant2["LABEL_SMALL"] = "labelSmall";
725
+ return AtomicTextVariant2;
726
+ })(AtomicTextVariant || {});
727
+ var AtomicPosition = /* @__PURE__ */ ((AtomicPosition2) => {
728
+ AtomicPosition2["TOP"] = "top";
729
+ AtomicPosition2["TOP_LEFT"] = "top-left";
730
+ AtomicPosition2["TOP_RIGHT"] = "top-right";
731
+ AtomicPosition2["BOTTOM"] = "bottom";
732
+ AtomicPosition2["BOTTOM_LEFT"] = "bottom-left";
733
+ AtomicPosition2["BOTTOM_RIGHT"] = "bottom-right";
734
+ AtomicPosition2["LEFT"] = "left";
735
+ AtomicPosition2["RIGHT"] = "right";
736
+ AtomicPosition2["CENTER"] = "center";
737
+ return AtomicPosition2;
738
+ })(AtomicPosition || {});
739
+ var AtomicAlignment = /* @__PURE__ */ ((AtomicAlignment2) => {
740
+ AtomicAlignment2["LEFT"] = "left";
741
+ AtomicAlignment2["CENTER"] = "center";
742
+ AtomicAlignment2["RIGHT"] = "right";
743
+ AtomicAlignment2["JUSTIFY"] = "justify";
744
+ return AtomicAlignment2;
745
+ })(AtomicAlignment || {});
746
+ var AtomicOrientation = /* @__PURE__ */ ((AtomicOrientation2) => {
747
+ AtomicOrientation2["HORIZONTAL"] = "horizontal";
748
+ AtomicOrientation2["VERTICAL"] = "vertical";
749
+ return AtomicOrientation2;
750
+ })(AtomicOrientation || {});
751
+ var AtomicDirection = /* @__PURE__ */ ((AtomicDirection2) => {
752
+ AtomicDirection2["UP"] = "up";
753
+ AtomicDirection2["DOWN"] = "down";
754
+ AtomicDirection2["LEFT"] = "left";
755
+ AtomicDirection2["RIGHT"] = "right";
756
+ return AtomicDirection2;
757
+ })(AtomicDirection || {});
758
+ var AtomicAnimationState = /* @__PURE__ */ ((AtomicAnimationState2) => {
759
+ AtomicAnimationState2["ENTER"] = "enter";
760
+ AtomicAnimationState2["EXIT"] = "exit";
761
+ AtomicAnimationState2["IDLE"] = "idle";
762
+ return AtomicAnimationState2;
763
+ })(AtomicAnimationState || {});
764
+ var AtomicFormFieldState = /* @__PURE__ */ ((AtomicFormFieldState2) => {
765
+ AtomicFormFieldState2["DEFAULT"] = "default";
766
+ AtomicFormFieldState2["FOCUS"] = "focus";
767
+ AtomicFormFieldState2["ERROR"] = "error";
768
+ AtomicFormFieldState2["SUCCESS"] = "success";
769
+ AtomicFormFieldState2["DISABLED"] = "disabled";
770
+ return AtomicFormFieldState2;
771
+ })(AtomicFormFieldState || {});
772
+ var AtomicBreakpoint = /* @__PURE__ */ ((AtomicBreakpoint2) => {
773
+ AtomicBreakpoint2["XS"] = "xs";
774
+ AtomicBreakpoint2["SM"] = "sm";
775
+ AtomicBreakpoint2["MD"] = "md";
776
+ AtomicBreakpoint2["LG"] = "lg";
777
+ AtomicBreakpoint2["XL"] = "xl";
778
+ AtomicBreakpoint2["XXL"] = "xxl";
779
+ return AtomicBreakpoint2;
780
+ })(AtomicBreakpoint || {});
781
+ var AtomicThemeMode = /* @__PURE__ */ ((AtomicThemeMode2) => {
782
+ AtomicThemeMode2["LIGHT"] = "light";
783
+ AtomicThemeMode2["DARK"] = "dark";
784
+ AtomicThemeMode2["SYSTEM"] = "system";
785
+ return AtomicThemeMode2;
786
+ })(AtomicThemeMode || {});
787
+ var AtomicEnumUtils = {
788
+ getValues: (enumObj) => {
789
+ return Object.values(enumObj);
790
+ },
791
+ getKeys: (enumObj) => {
792
+ return Object.keys(enumObj);
793
+ },
794
+ hasValue: (enumObj, value) => {
795
+ return Object.values(enumObj).includes(value);
796
+ },
797
+ hasKey: (enumObj, key) => {
798
+ return Object.keys(enumObj).includes(key);
799
+ },
800
+ getEntries: (enumObj) => {
801
+ return Object.entries(enumObj);
802
+ }
803
+ };
804
+
805
+ // src/tokens/index.ts
806
+ var AtomicDesignTokensCss = {
807
+ ...AtomicColorsCss,
808
+ ...AtomicSpacingCss,
809
+ ...AtomicTypographyCss,
810
+ ...AtomicShadowsCss,
811
+ ...AtomicBordersCss,
812
+ ...AtomicAnimationsCss
813
+ };
814
+ function cn(...inputs) {
815
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
816
+ }
817
+ var buttonVariants = classVarianceAuthority.cva(
818
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
819
+ {
820
+ variants: {
821
+ variant: {
822
+ default: "bg-gray-900 text-white hover:bg-gray-800 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-100",
823
+ primary: "bg-[--atomic-primary] text-white hover:bg-[--atomic-primary-dark] transition-all duration-200",
824
+ brand: "text-white hover:shadow-xl transition-all duration-200",
825
+ destructive: "bg-red-600 text-white hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-600",
826
+ outline: "border border-gray-300 bg-transparent hover:bg-gray-50 dark:border-gray-700 dark:hover:bg-gray-800",
827
+ secondary: "bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-100 dark:hover:bg-gray-700",
828
+ ghost: "bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800",
829
+ link: "bg-transparent text-blue-600 underline-offset-4 hover:underline dark:text-blue-400"
830
+ },
831
+ size: {
832
+ default: "h-10 px-4 py-2",
833
+ sm: "h-9 rounded-md px-3",
834
+ lg: "h-11 rounded-md px-8",
835
+ icon: "h-10 w-10"
836
+ }
837
+ },
838
+ defaultVariants: {
839
+ variant: "default",
840
+ size: "default"
841
+ }
842
+ }
843
+ );
844
+ var AtomicButton = React5__default.default.forwardRef(
845
+ ({
846
+ className,
847
+ variant,
848
+ size,
849
+ asChild = false,
850
+ loading = false,
851
+ leftIcon,
852
+ rightIcon,
853
+ fullWidth = false,
854
+ disabled,
855
+ children,
856
+ ...props
857
+ }, ref) => {
858
+ const Comp = asChild ? reactSlot.Slot : "button";
859
+ const isDisabled = disabled || loading;
860
+ return /* @__PURE__ */ jsxRuntime.jsxs(
861
+ Comp,
862
+ {
863
+ className: cn(
864
+ buttonVariants({ variant, size }),
865
+ fullWidth && "w-full",
866
+ className
867
+ ),
868
+ style: {
869
+ ...variant === "brand" && {
870
+ background: "linear-gradient(to right, var(--atomic-primary), var(--atomic-secondary))"
871
+ },
872
+ ...props.style
873
+ },
874
+ ref,
875
+ disabled: isDisabled,
876
+ ...props,
877
+ children: [
878
+ loading && /* @__PURE__ */ jsxRuntime.jsx(
879
+ lucideReact.Loader2,
880
+ {
881
+ className: cn(
882
+ "animate-spin",
883
+ size === "sm" ? "h-3 w-3" : size === "lg" ? "h-5 w-5" : "h-4 w-4",
884
+ (leftIcon || children) && "mr-2"
885
+ )
886
+ }
887
+ ),
888
+ !loading && leftIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
889
+ "inline-flex items-center",
890
+ size === "sm" ? "mr-1" : "mr-2",
891
+ size === "sm" ? "[&>*]:h-3 [&>*]:w-3" : size === "lg" ? "[&>*]:h-5 [&>*]:w-5" : "[&>*]:h-4 [&>*]:w-4"
892
+ ), children: leftIcon }),
893
+ children,
894
+ !loading && rightIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
895
+ "inline-flex items-center",
896
+ size === "sm" ? "ml-1" : "ml-2",
897
+ size === "sm" ? "[&>*]:h-3 [&>*]:w-3" : size === "lg" ? "[&>*]:h-5 [&>*]:w-5" : "[&>*]:h-4 [&>*]:w-4"
898
+ ), children: rightIcon })
899
+ ]
900
+ }
901
+ );
902
+ }
903
+ );
904
+ AtomicButton.displayName = "AtomicButton";
905
+ var textVariants = classVarianceAuthority.cva("", {
906
+ variants: {
907
+ variant: {
908
+ h1: "scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl",
909
+ h2: "scroll-m-20 text-3xl font-semibold tracking-tight lg:text-4xl",
910
+ h3: "scroll-m-20 text-2xl font-semibold tracking-tight",
911
+ h4: "scroll-m-20 text-xl font-semibold tracking-tight",
912
+ h5: "scroll-m-20 text-lg font-semibold tracking-tight",
913
+ h6: "scroll-m-20 text-base font-semibold tracking-tight",
914
+ body: "text-base leading-7",
915
+ base: "text-base leading-7",
916
+ large: "text-lg leading-7",
917
+ lg: "text-lg leading-7",
918
+ small: "text-sm leading-6",
919
+ sm: "text-sm leading-6",
920
+ xs: "text-xs leading-5",
921
+ xl: "text-xl leading-7",
922
+ "2xl": "text-2xl leading-8",
923
+ "3xl": "text-3xl leading-9",
924
+ lead: "text-xl leading-7 text-muted-foreground",
925
+ muted: "text-sm text-muted-foreground",
926
+ caption: "text-xs text-muted-foreground",
927
+ label: "text-sm font-medium leading-none"
928
+ },
929
+ color: {
930
+ default: "text-foreground",
931
+ primary: "text-primary",
932
+ secondary: "text-secondary-foreground",
933
+ muted: "text-muted-foreground",
934
+ success: "text-green-600 dark:text-green-400",
935
+ warning: "text-amber-600 dark:text-amber-400",
936
+ error: "text-red-600 dark:text-red-400",
937
+ info: "text-blue-600 dark:text-blue-400"
938
+ },
939
+ align: {
940
+ left: "text-left",
941
+ center: "text-center",
942
+ right: "text-right",
943
+ justify: "text-justify"
944
+ },
945
+ weight: {
946
+ thin: "font-thin",
947
+ light: "font-light",
948
+ normal: "font-normal",
949
+ medium: "font-medium",
950
+ semibold: "font-semibold",
951
+ bold: "font-bold",
952
+ extrabold: "font-extrabold",
953
+ black: "font-black"
954
+ }
955
+ },
956
+ defaultVariants: {
957
+ variant: "body",
958
+ color: "default",
959
+ align: "left"
960
+ }
961
+ });
962
+ var AtomicText = React5__default.default.forwardRef(
963
+ ({
964
+ className,
965
+ variant,
966
+ color,
967
+ align,
968
+ weight,
969
+ as = "p",
970
+ asChild = false,
971
+ truncate = false,
972
+ selectable = true,
973
+ ...props
974
+ }, ref) => {
975
+ const Comp = asChild ? reactSlot.Slot : as;
976
+ let semanticElement = as;
977
+ if (!asChild && as === "p") {
978
+ if (variant === "h1" || variant === "h2" || variant === "h3" || variant === "h4" || variant === "h5" || variant === "h6") {
979
+ semanticElement = variant;
980
+ } else if (variant === "label") {
981
+ semanticElement = "label";
982
+ }
983
+ }
984
+ const FinalComp = asChild ? Comp : semanticElement;
985
+ return /* @__PURE__ */ jsxRuntime.jsx(
986
+ FinalComp,
987
+ {
988
+ className: cn(
989
+ textVariants({ variant, color: color || "default", align, weight }),
990
+ truncate && "truncate",
991
+ !selectable && "select-none",
992
+ className
993
+ ),
994
+ ref,
995
+ ...props
996
+ }
997
+ );
998
+ }
999
+ );
1000
+ AtomicText.displayName = "AtomicText";
1001
+ var avatarVariants = classVarianceAuthority.cva(
1002
+ "relative flex shrink-0 overflow-hidden rounded-full",
1003
+ {
1004
+ variants: {
1005
+ size: {
1006
+ xs: "h-6 w-6",
1007
+ sm: "h-8 w-8",
1008
+ default: "h-10 w-10",
1009
+ lg: "h-12 w-12",
1010
+ xl: "h-16 w-16",
1011
+ xxl: "h-20 w-20",
1012
+ xxxl: "h-24 w-24"
1013
+ }
1014
+ },
1015
+ defaultVariants: {
1016
+ size: "default"
1017
+ }
1018
+ }
1019
+ );
1020
+ var avatarImageVariants = classVarianceAuthority.cva("aspect-square h-full w-full object-cover");
1021
+ var avatarFallbackVariants = classVarianceAuthority.cva(
1022
+ "flex h-full w-full items-center justify-center rounded-full bg-muted font-medium text-muted-foreground",
1023
+ {
1024
+ variants: {
1025
+ size: {
1026
+ xs: "text-xs",
1027
+ sm: "text-xs",
1028
+ default: "text-sm",
1029
+ lg: "text-base",
1030
+ xl: "text-lg",
1031
+ xxl: "text-xl",
1032
+ xxxl: "text-2xl"
1033
+ }
1034
+ },
1035
+ defaultVariants: {
1036
+ size: "default"
1037
+ }
1038
+ }
1039
+ );
1040
+ var AtomicAvatar = React5__default.default.forwardRef(
1041
+ ({
1042
+ className,
1043
+ size,
1044
+ src,
1045
+ alt,
1046
+ fallback,
1047
+ fallbackElement,
1048
+ showStatus = false,
1049
+ isOnline = false,
1050
+ statusColor,
1051
+ ...props
1052
+ }, ref) => {
1053
+ const generateInitials = (name) => {
1054
+ if (!name) return "?";
1055
+ return name.split(" ").map((part) => part.charAt(0)).join("").slice(0, 2).toUpperCase();
1056
+ };
1057
+ const initials = fallback || generateInitials(alt);
1058
+ const statusSize = {
1059
+ xs: "h-1.5 w-1.5",
1060
+ sm: "h-2 w-2",
1061
+ default: "h-2.5 w-2.5",
1062
+ lg: "h-3 w-3",
1063
+ xl: "h-4 w-4",
1064
+ xxl: "h-4 w-4",
1065
+ xxxl: "h-5 w-5"
1066
+ }[size || "default"];
1067
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
1068
+ /* @__PURE__ */ jsxRuntime.jsxs(
1069
+ AvatarPrimitive__namespace.Root,
1070
+ {
1071
+ ref,
1072
+ className: cn(avatarVariants({ size }), className),
1073
+ ...props,
1074
+ children: [
1075
+ /* @__PURE__ */ jsxRuntime.jsx(
1076
+ AvatarPrimitive__namespace.Image,
1077
+ {
1078
+ className: avatarImageVariants(),
1079
+ src,
1080
+ alt
1081
+ }
1082
+ ),
1083
+ /* @__PURE__ */ jsxRuntime.jsx(
1084
+ AvatarPrimitive__namespace.Fallback,
1085
+ {
1086
+ className: avatarFallbackVariants({ size }),
1087
+ children: fallbackElement || initials
1088
+ }
1089
+ )
1090
+ ]
1091
+ }
1092
+ ),
1093
+ showStatus && /* @__PURE__ */ jsxRuntime.jsx(
1094
+ "div",
1095
+ {
1096
+ className: cn(
1097
+ "absolute bottom-0 right-0 rounded-full border-2 border-background",
1098
+ statusSize,
1099
+ statusColor ? "" : isOnline ? "bg-green-500" : "bg-gray-400"
1100
+ ),
1101
+ style: statusColor ? { backgroundColor: statusColor } : void 0
1102
+ }
1103
+ )
1104
+ ] });
1105
+ }
1106
+ );
1107
+ AtomicAvatar.displayName = "AtomicAvatar";
1108
+ var AtomicAvatarImage = React5__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1109
+ AvatarPrimitive__namespace.Image,
1110
+ {
1111
+ ref,
1112
+ className: cn(avatarImageVariants(), className),
1113
+ ...props
1114
+ }
1115
+ ));
1116
+ AtomicAvatarImage.displayName = "AtomicAvatarImage";
1117
+ var AtomicAvatarFallback = React5__default.default.forwardRef(({ className, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1118
+ AvatarPrimitive__namespace.Fallback,
1119
+ {
1120
+ ref,
1121
+ className: cn(avatarFallbackVariants({ size }), className),
1122
+ ...props
1123
+ }
1124
+ ));
1125
+ AtomicAvatarFallback.displayName = "AtomicAvatarFallback";
1126
+ var imageVariants = classVarianceAuthority.cva("transition-all duration-200", {
1127
+ variants: {
1128
+ rounded: {
1129
+ none: "rounded-none",
1130
+ sm: "rounded-sm",
1131
+ md: "rounded-md",
1132
+ lg: "rounded-lg",
1133
+ xl: "rounded-xl",
1134
+ full: "rounded-full"
1135
+ },
1136
+ aspectRatio: {
1137
+ square: "aspect-square",
1138
+ video: "aspect-video",
1139
+ portrait: "aspect-[3/4]",
1140
+ landscape: "aspect-[4/3]",
1141
+ auto: ""
1142
+ },
1143
+ objectFit: {
1144
+ cover: "object-cover",
1145
+ contain: "object-contain",
1146
+ fill: "object-fill",
1147
+ "scale-down": "object-scale-down",
1148
+ none: "object-none"
1149
+ },
1150
+ objectPosition: {
1151
+ center: "object-center",
1152
+ top: "object-top",
1153
+ bottom: "object-bottom",
1154
+ left: "object-left",
1155
+ right: "object-right",
1156
+ "top-left": "object-left-top",
1157
+ "top-right": "object-right-top",
1158
+ "bottom-left": "object-left-bottom",
1159
+ "bottom-right": "object-right-bottom"
1160
+ }
1161
+ },
1162
+ defaultVariants: {
1163
+ rounded: "none",
1164
+ aspectRatio: "auto",
1165
+ objectFit: "cover",
1166
+ objectPosition: "center"
1167
+ }
1168
+ });
1169
+ var AtomicImage = React5__default.default.forwardRef(({
1170
+ className,
1171
+ containerClassName,
1172
+ rounded,
1173
+ aspectRatio,
1174
+ objectFit,
1175
+ objectPosition,
1176
+ enableBlur = false,
1177
+ placeholderSrc,
1178
+ ...props
1179
+ }, ref) => {
1180
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
1181
+ "relative overflow-hidden",
1182
+ aspectRatio && imageVariants({ aspectRatio }),
1183
+ containerClassName
1184
+ ), children: /* @__PURE__ */ jsxRuntime.jsx(
1185
+ Image2__default.default,
1186
+ {
1187
+ ref,
1188
+ className: cn(
1189
+ imageVariants({
1190
+ rounded,
1191
+ objectFit,
1192
+ objectPosition,
1193
+ aspectRatio: void 0
1194
+ }),
1195
+ className
1196
+ ),
1197
+ placeholder: enableBlur || placeholderSrc ? "blur" : "empty",
1198
+ blurDataURL: placeholderSrc,
1199
+ ...props
1200
+ }
1201
+ ) });
1202
+ });
1203
+ AtomicImage.displayName = "AtomicImage";
1204
+ var cardVariants = classVarianceAuthority.cva(
1205
+ "rounded-lg border text-card-foreground",
1206
+ {
1207
+ variants: {
1208
+ variant: {
1209
+ default: "border-border bg-card shadow-sm",
1210
+ elevated: "border-0 bg-card shadow-lg",
1211
+ outlined: "border-2 border-border bg-card shadow-none",
1212
+ filled: "border-0 bg-muted shadow-none"
1213
+ },
1214
+ size: {
1215
+ sm: "p-4",
1216
+ md: "p-6",
1217
+ lg: "p-8",
1218
+ xl: "p-10"
1219
+ }
1220
+ },
1221
+ defaultVariants: {
1222
+ variant: "default",
1223
+ size: "md"
1224
+ }
1225
+ }
1226
+ );
1227
+ var cardHeaderVariants = classVarianceAuthority.cva(
1228
+ "flex flex-col space-y-1.5",
1229
+ {
1230
+ variants: {
1231
+ size: {
1232
+ sm: "pb-3",
1233
+ md: "pb-4",
1234
+ lg: "pb-6",
1235
+ xl: "pb-8"
1236
+ }
1237
+ },
1238
+ defaultVariants: {
1239
+ size: "md"
1240
+ }
1241
+ }
1242
+ );
1243
+ var cardTitleVariants = classVarianceAuthority.cva(
1244
+ "font-semibold leading-none tracking-tight",
1245
+ {
1246
+ variants: {
1247
+ size: {
1248
+ sm: "text-lg",
1249
+ md: "text-xl",
1250
+ lg: "text-2xl",
1251
+ xl: "text-3xl"
1252
+ }
1253
+ },
1254
+ defaultVariants: {
1255
+ size: "md"
1256
+ }
1257
+ }
1258
+ );
1259
+ var cardDescriptionVariants = classVarianceAuthority.cva(
1260
+ "text-muted-foreground",
1261
+ {
1262
+ variants: {
1263
+ size: {
1264
+ sm: "text-sm",
1265
+ md: "text-sm",
1266
+ lg: "text-base",
1267
+ xl: "text-lg"
1268
+ }
1269
+ },
1270
+ defaultVariants: {
1271
+ size: "md"
1272
+ }
1273
+ }
1274
+ );
1275
+ var cardContentVariants = classVarianceAuthority.cva("", {
1276
+ variants: {
1277
+ size: {
1278
+ sm: "pt-0",
1279
+ md: "pt-0",
1280
+ lg: "pt-0",
1281
+ xl: "pt-0"
1282
+ }
1283
+ },
1284
+ defaultVariants: {
1285
+ size: "md"
1286
+ }
1287
+ });
1288
+ var cardFooterVariants = classVarianceAuthority.cva(
1289
+ "flex items-center",
1290
+ {
1291
+ variants: {
1292
+ size: {
1293
+ sm: "pt-3",
1294
+ md: "pt-4",
1295
+ lg: "pt-6",
1296
+ xl: "pt-8"
1297
+ }
1298
+ },
1299
+ defaultVariants: {
1300
+ size: "md"
1301
+ }
1302
+ }
1303
+ );
1304
+ var AtomicCard = React5__default.default.forwardRef(
1305
+ ({ className, variant, size, interactive = false, fullWidth = false, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1306
+ "div",
1307
+ {
1308
+ ref,
1309
+ className: cn(
1310
+ cardVariants({ variant, size }),
1311
+ interactive && "cursor-pointer transition-shadow hover:shadow-md",
1312
+ fullWidth && "w-full",
1313
+ className
1314
+ ),
1315
+ ...props
1316
+ }
1317
+ )
1318
+ );
1319
+ AtomicCard.displayName = "AtomicCard";
1320
+ var AtomicCardHeader = React5__default.default.forwardRef(
1321
+ ({ className, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1322
+ "div",
1323
+ {
1324
+ ref,
1325
+ className: cn(cardHeaderVariants({ size }), className),
1326
+ ...props
1327
+ }
1328
+ )
1329
+ );
1330
+ AtomicCardHeader.displayName = "AtomicCardHeader";
1331
+ var AtomicCardTitle = React5__default.default.forwardRef(
1332
+ ({ className, size, as: Component = "h3", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1333
+ Component,
1334
+ {
1335
+ ref,
1336
+ className: cn(cardTitleVariants({ size }), className),
1337
+ ...props
1338
+ }
1339
+ )
1340
+ );
1341
+ AtomicCardTitle.displayName = "AtomicCardTitle";
1342
+ var AtomicCardDescription = React5__default.default.forwardRef(
1343
+ ({ className, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1344
+ "p",
1345
+ {
1346
+ ref,
1347
+ className: cn(cardDescriptionVariants({ size }), className),
1348
+ ...props
1349
+ }
1350
+ )
1351
+ );
1352
+ AtomicCardDescription.displayName = "AtomicCardDescription";
1353
+ var AtomicCardContent = React5__default.default.forwardRef(
1354
+ ({ className, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1355
+ "div",
1356
+ {
1357
+ ref,
1358
+ className: cn(cardContentVariants({ size }), className),
1359
+ ...props
1360
+ }
1361
+ )
1362
+ );
1363
+ AtomicCardContent.displayName = "AtomicCardContent";
1364
+ var AtomicCardFooter = React5__default.default.forwardRef(
1365
+ ({ className, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1366
+ "div",
1367
+ {
1368
+ ref,
1369
+ className: cn(cardFooterVariants({ size }), className),
1370
+ ...props
1371
+ }
1372
+ )
1373
+ );
1374
+ AtomicCardFooter.displayName = "AtomicCardFooter";
1375
+ var getSpacingClass = (spacing2, prefix) => {
1376
+ if (!spacing2) return "";
1377
+ if (typeof spacing2 === "string") {
1378
+ return `${prefix}-${spacing2}`;
1379
+ }
1380
+ const classes = [];
1381
+ if (spacing2.x !== void 0) classes.push(`${prefix}x-${spacing2.x}`);
1382
+ if (spacing2.y !== void 0) classes.push(`${prefix}y-${spacing2.y}`);
1383
+ if (spacing2.t !== void 0) classes.push(`${prefix}t-${spacing2.t}`);
1384
+ if (spacing2.r !== void 0) classes.push(`${prefix}r-${spacing2.r}`);
1385
+ if (spacing2.b !== void 0) classes.push(`${prefix}b-${spacing2.b}`);
1386
+ if (spacing2.l !== void 0) classes.push(`${prefix}l-${spacing2.l}`);
1387
+ return classes.join(" ");
1388
+ };
1389
+ var getSizeValue = (size) => {
1390
+ if (typeof size === "number") return size;
1391
+ if (typeof size === "string" && !isNaN(Number(size))) return Number(size);
1392
+ switch (size) {
1393
+ case "xs":
1394
+ return 12;
1395
+ case "sm":
1396
+ return 16;
1397
+ case "md":
1398
+ return 20;
1399
+ case "lg":
1400
+ return 24;
1401
+ case "xl":
1402
+ return 28;
1403
+ case "2xl":
1404
+ return 32;
1405
+ default:
1406
+ return 20;
1407
+ }
1408
+ };
1409
+ var AtomicIcon = React5__default.default.forwardRef(
1410
+ ({
1411
+ icon: Icon,
1412
+ size = "md",
1413
+ color,
1414
+ hoverColor,
1415
+ p,
1416
+ m,
1417
+ cursor,
1418
+ spin = false,
1419
+ pulse = false,
1420
+ bounce = false,
1421
+ rotate,
1422
+ className,
1423
+ "aria-label": ariaLabel,
1424
+ "aria-hidden": ariaHidden = false,
1425
+ ...rest
1426
+ }, ref) => {
1427
+ const sizeValue = getSizeValue(size);
1428
+ const classes = cn(
1429
+ "inline-block flex-shrink-0",
1430
+ color && `text-${color}`,
1431
+ hoverColor && `hover:text-${hoverColor}`,
1432
+ getSpacingClass(p, "p"),
1433
+ getSpacingClass(m, "m"),
1434
+ cursor && `cursor-${cursor}`,
1435
+ spin && "animate-spin",
1436
+ pulse && "animate-pulse",
1437
+ bounce && "animate-bounce",
1438
+ rotate && `rotate-${rotate}`,
1439
+ (hoverColor || cursor === "pointer") && "transition-colors duration-200",
1440
+ className
1441
+ );
1442
+ return /* @__PURE__ */ jsxRuntime.jsx(
1443
+ Icon,
1444
+ {
1445
+ ref,
1446
+ size: sizeValue,
1447
+ className: classes,
1448
+ "aria-label": ariaLabel,
1449
+ "aria-hidden": ariaHidden,
1450
+ ...rest
1451
+ }
1452
+ );
1453
+ }
1454
+ );
1455
+ AtomicIcon.displayName = "AtomicIcon";
1456
+ var inputVariants = classVarianceAuthority.cva(
1457
+ "flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
1458
+ {
1459
+ variants: {
1460
+ variant: {
1461
+ default: "",
1462
+ filled: "bg-secondary border-transparent",
1463
+ outline: "bg-transparent border-2",
1464
+ underlined: "rounded-none border-0 border-b-2 px-0"
1465
+ },
1466
+ size: {
1467
+ sm: "h-8 px-2 text-xs",
1468
+ default: "h-10 px-3 text-sm",
1469
+ lg: "h-12 px-4 text-base"
1470
+ },
1471
+ state: {
1472
+ default: "",
1473
+ error: "border-destructive focus-visible:ring-destructive",
1474
+ success: "border-green-500 focus-visible:ring-green-500",
1475
+ warning: "border-amber-500 focus-visible:ring-amber-500"
1476
+ }
1477
+ },
1478
+ defaultVariants: {
1479
+ variant: "default",
1480
+ size: "default",
1481
+ state: "default"
1482
+ }
1483
+ }
1484
+ );
1485
+ var AtomicInput = React5__default.default.forwardRef(
1486
+ ({
1487
+ className,
1488
+ variant,
1489
+ size,
1490
+ state,
1491
+ type = "text",
1492
+ leftIcon,
1493
+ rightIcon,
1494
+ label,
1495
+ helperText,
1496
+ error,
1497
+ success,
1498
+ warning,
1499
+ clearable = false,
1500
+ onClear,
1501
+ showPasswordToggle = false,
1502
+ containerClassName,
1503
+ labelClassName,
1504
+ helperClassName,
1505
+ value,
1506
+ onChange,
1507
+ disabled,
1508
+ ...props
1509
+ }, ref) => {
1510
+ const [showPassword, setShowPassword] = React5__default.default.useState(false);
1511
+ const [internalValue, setInternalValue] = React5__default.default.useState(value || "");
1512
+ let currentState = state;
1513
+ if (error) currentState = "error";
1514
+ else if (success) currentState = "success";
1515
+ else if (warning) currentState = "warning";
1516
+ let inputType = type;
1517
+ if (type === "password" && showPasswordToggle) {
1518
+ inputType = showPassword ? "text" : "password";
1519
+ }
1520
+ const hasValue = (value || internalValue) && String(value || internalValue).length > 0;
1521
+ const showClearButton = clearable && hasValue && !disabled;
1522
+ const showPasswordToggleButton = showPasswordToggle && type === "password" && !disabled;
1523
+ const handleChange = (e) => {
1524
+ setInternalValue(e.target.value);
1525
+ onChange?.(e);
1526
+ };
1527
+ const handleClear = () => {
1528
+ setInternalValue("");
1529
+ onClear?.();
1530
+ const syntheticEvent = {
1531
+ target: { value: "" },
1532
+ currentTarget: { value: "" }
1533
+ };
1534
+ onChange?.(syntheticEvent);
1535
+ };
1536
+ const messageText = error || success || warning || helperText;
1537
+ const messageColor = error ? "text-destructive" : success ? "text-green-600 dark:text-green-400" : warning ? "text-amber-600 dark:text-amber-400" : "text-muted-foreground";
1538
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-2", containerClassName), children: [
1539
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: cn(
1540
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
1541
+ disabled && "opacity-50",
1542
+ labelClassName
1543
+ ), children: label }),
1544
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
1545
+ leftIcon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
1546
+ "absolute left-0 top-0 h-full flex items-center justify-center",
1547
+ size === "sm" ? "w-8 pl-2" : size === "lg" ? "w-12 pl-4" : "w-10 pl-3",
1548
+ "text-muted-foreground pointer-events-none",
1549
+ "[&>*]:h-4 [&>*]:w-4"
1550
+ ), children: leftIcon }),
1551
+ /* @__PURE__ */ jsxRuntime.jsx(
1552
+ "input",
1553
+ {
1554
+ type: inputType,
1555
+ className: cn(
1556
+ inputVariants({ variant, size, state: currentState }),
1557
+ leftIcon && (size === "sm" ? "pl-8" : size === "lg" ? "pl-12" : "pl-10"),
1558
+ (rightIcon || showClearButton || showPasswordToggleButton) && (size === "sm" ? "pr-8" : size === "lg" ? "pr-12" : "pr-10"),
1559
+ className
1560
+ ),
1561
+ ref,
1562
+ value: value !== void 0 ? value : internalValue,
1563
+ onChange: handleChange,
1564
+ disabled,
1565
+ ...props
1566
+ }
1567
+ ),
1568
+ (rightIcon || showClearButton || showPasswordToggleButton) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(
1569
+ "absolute right-0 top-0 h-full flex items-center justify-center gap-1",
1570
+ size === "sm" ? "w-8 pr-2" : size === "lg" ? "w-12 pr-4" : "w-10 pr-3"
1571
+ ), children: [
1572
+ rightIcon && !showClearButton && !showPasswordToggleButton && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground [&>*]:h-4 [&>*]:w-4", children: rightIcon }),
1573
+ showClearButton && /* @__PURE__ */ jsxRuntime.jsx(
1574
+ "button",
1575
+ {
1576
+ type: "button",
1577
+ onClick: handleClear,
1578
+ className: "text-muted-foreground hover:text-foreground transition-colors [&>*]:h-4 [&>*]:w-4",
1579
+ tabIndex: -1,
1580
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {})
1581
+ }
1582
+ ),
1583
+ showPasswordToggleButton && /* @__PURE__ */ jsxRuntime.jsx(
1584
+ "button",
1585
+ {
1586
+ type: "button",
1587
+ onClick: () => setShowPassword(!showPassword),
1588
+ className: "text-muted-foreground hover:text-foreground transition-colors [&>*]:h-4 [&>*]:w-4",
1589
+ tabIndex: -1,
1590
+ children: showPassword ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, {})
1591
+ }
1592
+ )
1593
+ ] })
1594
+ ] }),
1595
+ messageText && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn(
1596
+ "text-xs",
1597
+ messageColor,
1598
+ helperClassName
1599
+ ), children: messageText })
1600
+ ] });
1601
+ }
1602
+ );
1603
+ AtomicInput.displayName = "AtomicInput";
1604
+ var getSpacingClass2 = (spacing2, prefix) => {
1605
+ if (!spacing2) return "";
1606
+ if (typeof spacing2 === "string") {
1607
+ return `${prefix}-${spacing2}`;
1608
+ }
1609
+ const classes = [];
1610
+ if (spacing2.x !== void 0) classes.push(`${prefix}x-${spacing2.x}`);
1611
+ if (spacing2.y !== void 0) classes.push(`${prefix}y-${spacing2.y}`);
1612
+ if (spacing2.t !== void 0) classes.push(`${prefix}t-${spacing2.t}`);
1613
+ if (spacing2.r !== void 0) classes.push(`${prefix}r-${spacing2.r}`);
1614
+ if (spacing2.b !== void 0) classes.push(`${prefix}b-${spacing2.b}`);
1615
+ if (spacing2.l !== void 0) classes.push(`${prefix}l-${spacing2.l}`);
1616
+ return classes.join(" ");
1617
+ };
1618
+ var getSizeClasses = (size) => {
1619
+ switch (size) {
1620
+ case "sm":
1621
+ return {
1622
+ container: "text-sm",
1623
+ checkbox: "w-4 h-4",
1624
+ icon: 12
1625
+ };
1626
+ case "md":
1627
+ return {
1628
+ container: "text-base",
1629
+ checkbox: "w-5 h-5",
1630
+ icon: 14
1631
+ };
1632
+ case "lg":
1633
+ return {
1634
+ container: "text-lg",
1635
+ checkbox: "w-6 h-6",
1636
+ icon: 16
1637
+ };
1638
+ default:
1639
+ return {
1640
+ container: "text-base",
1641
+ checkbox: "w-5 h-5",
1642
+ icon: 14
1643
+ };
1644
+ }
1645
+ };
1646
+ var getColorClasses = (color, error) => {
1647
+ if (error) {
1648
+ return "border-red-300 text-red-600 focus:border-red-500 focus:ring-red-500";
1649
+ }
1650
+ const colorMap = {
1651
+ slate: "border-slate-300 text-slate-600 focus:border-slate-500 focus:ring-slate-500",
1652
+ gray: "border-gray-300 text-gray-600 focus:border-gray-500 focus:ring-gray-500",
1653
+ zinc: "border-zinc-300 text-zinc-600 focus:border-zinc-500 focus:ring-zinc-500",
1654
+ red: "border-red-300 text-red-600 focus:border-red-500 focus:ring-red-500",
1655
+ orange: "border-orange-300 text-orange-600 focus:border-orange-500 focus:ring-orange-500",
1656
+ yellow: "border-yellow-300 text-yellow-600 focus:border-yellow-500 focus:ring-yellow-500",
1657
+ green: "border-green-300 text-green-600 focus:border-green-500 focus:ring-green-500",
1658
+ blue: "border-blue-300 text-blue-600 focus:border-blue-500 focus:ring-blue-500",
1659
+ indigo: "border-indigo-300 text-indigo-600 focus:border-indigo-500 focus:ring-indigo-500",
1660
+ purple: "border-purple-300 text-purple-600 focus:border-purple-500 focus:ring-purple-500",
1661
+ pink: "border-pink-300 text-pink-600 focus:border-pink-500 focus:ring-pink-500"
1662
+ };
1663
+ return colorMap[color] || colorMap.blue;
1664
+ };
1665
+ var AtomicCheckbox = React5__default.default.forwardRef(
1666
+ ({
1667
+ checked = false,
1668
+ indeterminate = false,
1669
+ disabled = false,
1670
+ size = "md",
1671
+ color = "blue",
1672
+ p,
1673
+ m,
1674
+ label,
1675
+ description,
1676
+ error = false,
1677
+ errorMessage,
1678
+ className,
1679
+ onChange,
1680
+ id,
1681
+ ...rest
1682
+ }, ref) => {
1683
+ const checkboxId = id || `checkbox-${React5__default.default.useId()}`;
1684
+ const sizeClasses = getSizeClasses(size);
1685
+ const colorClasses = getColorClasses(color, error);
1686
+ const handleChange = (event) => {
1687
+ if (!disabled) {
1688
+ onChange?.(event.target.checked, event);
1689
+ }
1690
+ };
1691
+ const containerClasses = cn(
1692
+ "relative flex items-start",
1693
+ sizeClasses.container,
1694
+ getSpacingClass2(p, "p"),
1695
+ getSpacingClass2(m, "m"),
1696
+ disabled && "opacity-50 cursor-not-allowed",
1697
+ className
1698
+ );
1699
+ const checkboxClasses = cn(
1700
+ "flex-shrink-0 rounded border-2 bg-white transition-colors duration-200",
1701
+ sizeClasses.checkbox,
1702
+ colorClasses,
1703
+ "focus:outline-none focus:ring-2 focus:ring-offset-2",
1704
+ disabled ? "cursor-not-allowed" : "cursor-pointer",
1705
+ (checked || indeterminate) && !disabled && `bg-${color}-600 border-${color}-600`
1706
+ );
1707
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: containerClasses, children: [
1708
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center h-5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
1709
+ /* @__PURE__ */ jsxRuntime.jsx(
1710
+ "input",
1711
+ {
1712
+ ref,
1713
+ type: "checkbox",
1714
+ id: checkboxId,
1715
+ checked,
1716
+ disabled,
1717
+ onChange: handleChange,
1718
+ className: "sr-only",
1719
+ ...rest
1720
+ }
1721
+ ),
1722
+ /* @__PURE__ */ jsxRuntime.jsxs(
1723
+ "div",
1724
+ {
1725
+ className: checkboxClasses,
1726
+ onClick: () => {
1727
+ if (!disabled && ref && "current" in ref && ref.current) {
1728
+ ref.current.click();
1729
+ }
1730
+ },
1731
+ children: [
1732
+ checked && !indeterminate && /* @__PURE__ */ jsxRuntime.jsx(
1733
+ lucideReact.Check,
1734
+ {
1735
+ size: sizeClasses.icon,
1736
+ className: "text-white absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"
1737
+ }
1738
+ ),
1739
+ indeterminate && /* @__PURE__ */ jsxRuntime.jsx(
1740
+ lucideReact.Minus,
1741
+ {
1742
+ size: sizeClasses.icon,
1743
+ className: "text-white absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"
1744
+ }
1745
+ )
1746
+ ]
1747
+ }
1748
+ )
1749
+ ] }) }),
1750
+ (label || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-3 flex-1", children: [
1751
+ label && /* @__PURE__ */ jsxRuntime.jsx(
1752
+ "label",
1753
+ {
1754
+ htmlFor: checkboxId,
1755
+ className: cn(
1756
+ "block font-medium leading-5",
1757
+ error ? "text-red-700" : "text-gray-700",
1758
+ disabled ? "cursor-not-allowed" : "cursor-pointer"
1759
+ ),
1760
+ children: label
1761
+ }
1762
+ ),
1763
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn(
1764
+ "text-sm leading-5",
1765
+ error ? "text-red-600" : "text-gray-500"
1766
+ ), children: description }),
1767
+ error && errorMessage && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-sm text-red-600", children: errorMessage })
1768
+ ] })
1769
+ ] });
1770
+ }
1771
+ );
1772
+ AtomicCheckbox.displayName = "AtomicCheckbox";
1773
+ var getSpacingClass3 = (spacing2, prefix) => {
1774
+ if (!spacing2) return "";
1775
+ if (typeof spacing2 === "string") {
1776
+ return `${prefix}-${spacing2}`;
1777
+ }
1778
+ const classes = [];
1779
+ if (spacing2.x !== void 0) classes.push(`${prefix}x-${spacing2.x}`);
1780
+ if (spacing2.y !== void 0) classes.push(`${prefix}y-${spacing2.y}`);
1781
+ if (spacing2.t !== void 0) classes.push(`${prefix}t-${spacing2.t}`);
1782
+ if (spacing2.r !== void 0) classes.push(`${prefix}r-${spacing2.r}`);
1783
+ if (spacing2.b !== void 0) classes.push(`${prefix}b-${spacing2.b}`);
1784
+ if (spacing2.l !== void 0) classes.push(`${prefix}l-${spacing2.l}`);
1785
+ return classes.join(" ");
1786
+ };
1787
+ var getSizeClasses2 = (size) => {
1788
+ switch (size) {
1789
+ case "sm":
1790
+ return {
1791
+ track: "w-9 h-5",
1792
+ thumb: "w-4 h-4",
1793
+ thumbTranslate: "translate-x-4",
1794
+ container: "text-sm"
1795
+ };
1796
+ case "md":
1797
+ return {
1798
+ track: "w-11 h-6",
1799
+ thumb: "w-5 h-5",
1800
+ thumbTranslate: "translate-x-5",
1801
+ container: "text-base"
1802
+ };
1803
+ case "lg":
1804
+ return {
1805
+ track: "w-14 h-7",
1806
+ thumb: "w-6 h-6",
1807
+ thumbTranslate: "translate-x-7",
1808
+ container: "text-lg"
1809
+ };
1810
+ default:
1811
+ return {
1812
+ track: "w-11 h-6",
1813
+ thumb: "w-5 h-5",
1814
+ thumbTranslate: "translate-x-5",
1815
+ container: "text-base"
1816
+ };
1817
+ }
1818
+ };
1819
+ var getColorClasses2 = (color, checked) => {
1820
+ if (!checked) {
1821
+ return "bg-gray-200";
1822
+ }
1823
+ const colorMap = {
1824
+ slate: "bg-slate-500",
1825
+ gray: "bg-gray-500",
1826
+ zinc: "bg-zinc-500",
1827
+ red: "bg-red-500",
1828
+ orange: "bg-orange-500",
1829
+ yellow: "bg-yellow-500",
1830
+ green: "bg-green-500",
1831
+ blue: "bg-blue-500",
1832
+ indigo: "bg-indigo-500",
1833
+ purple: "bg-purple-500",
1834
+ pink: "bg-pink-500"
1835
+ };
1836
+ return colorMap[color] || colorMap.blue;
1837
+ };
1838
+ var AtomicSwitch = React5__default.default.forwardRef(
1839
+ ({
1840
+ checked = false,
1841
+ disabled = false,
1842
+ size = "md",
1843
+ color = "blue",
1844
+ p,
1845
+ m,
1846
+ label,
1847
+ description,
1848
+ labelPosition = "right",
1849
+ loading = false,
1850
+ className,
1851
+ onChange,
1852
+ id,
1853
+ ...rest
1854
+ }, ref) => {
1855
+ const switchId = id || `switch-${React5__default.default.useId()}`;
1856
+ const sizeClasses = getSizeClasses2(size);
1857
+ const colorClasses = getColorClasses2(color, checked);
1858
+ const handleChange = (event) => {
1859
+ if (!disabled && !loading) {
1860
+ onChange?.(event.target.checked, event);
1861
+ }
1862
+ };
1863
+ const containerClasses = cn(
1864
+ "relative flex items-center",
1865
+ sizeClasses.container,
1866
+ getSpacingClass3(p, "p"),
1867
+ getSpacingClass3(m, "m"),
1868
+ disabled && "opacity-50 cursor-not-allowed",
1869
+ className
1870
+ );
1871
+ const trackClasses = cn(
1872
+ "relative inline-flex flex-shrink-0 rounded-full border-2 border-transparent transition-colors ease-in-out duration-200",
1873
+ sizeClasses.track,
1874
+ colorClasses,
1875
+ "focus-within:outline-none focus-within:ring-2 focus-within:ring-offset-2",
1876
+ `focus-within:ring-${color}-500`,
1877
+ disabled || loading ? "cursor-not-allowed" : "cursor-pointer"
1878
+ );
1879
+ const thumbClasses = cn(
1880
+ "pointer-events-none inline-block rounded-full bg-white shadow transform ring-0 transition ease-in-out duration-200",
1881
+ sizeClasses.thumb,
1882
+ checked ? sizeClasses.thumbTranslate : "translate-x-0"
1883
+ );
1884
+ const switchElement = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: trackClasses, children: [
1885
+ /* @__PURE__ */ jsxRuntime.jsx(
1886
+ "input",
1887
+ {
1888
+ ref,
1889
+ type: "checkbox",
1890
+ id: switchId,
1891
+ checked,
1892
+ disabled: disabled || loading,
1893
+ onChange: handleChange,
1894
+ className: "sr-only",
1895
+ ...rest
1896
+ }
1897
+ ),
1898
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: thumbClasses, children: loading && /* @__PURE__ */ jsxRuntime.jsxs(
1899
+ "svg",
1900
+ {
1901
+ className: "animate-spin -ml-1 -mt-1 h-3 w-3 text-gray-400",
1902
+ fill: "none",
1903
+ viewBox: "0 0 24 24",
1904
+ children: [
1905
+ /* @__PURE__ */ jsxRuntime.jsx(
1906
+ "circle",
1907
+ {
1908
+ className: "opacity-25",
1909
+ cx: "12",
1910
+ cy: "12",
1911
+ r: "10",
1912
+ stroke: "currentColor",
1913
+ strokeWidth: "4"
1914
+ }
1915
+ ),
1916
+ /* @__PURE__ */ jsxRuntime.jsx(
1917
+ "path",
1918
+ {
1919
+ className: "opacity-75",
1920
+ fill: "currentColor",
1921
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
1922
+ }
1923
+ )
1924
+ ]
1925
+ }
1926
+ ) })
1927
+ ] });
1928
+ const labelElement = (label || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(
1929
+ "flex-1",
1930
+ labelPosition === "left" ? "mr-3" : "ml-3"
1931
+ ), children: [
1932
+ label && /* @__PURE__ */ jsxRuntime.jsx(
1933
+ "label",
1934
+ {
1935
+ htmlFor: switchId,
1936
+ className: cn(
1937
+ "block font-medium leading-5 text-gray-700",
1938
+ disabled || loading ? "cursor-not-allowed" : "cursor-pointer"
1939
+ ),
1940
+ children: label
1941
+ }
1942
+ ),
1943
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm leading-5 text-gray-500", children: description })
1944
+ ] });
1945
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: containerClasses, children: [
1946
+ labelPosition === "left" && labelElement,
1947
+ switchElement,
1948
+ labelPosition === "right" && labelElement
1949
+ ] });
1950
+ }
1951
+ );
1952
+ AtomicSwitch.displayName = "AtomicSwitch";
1953
+ var spinnerVariants = classVarianceAuthority.cva("animate-spin", {
1954
+ variants: {
1955
+ size: {
1956
+ xs: "h-3 w-3",
1957
+ sm: "h-4 w-4",
1958
+ default: "h-5 w-5",
1959
+ lg: "h-6 w-6",
1960
+ xl: "h-8 w-8",
1961
+ xxl: "h-12 w-12"
1962
+ },
1963
+ color: {
1964
+ default: "text-foreground",
1965
+ primary: "text-primary",
1966
+ secondary: "text-secondary-foreground",
1967
+ muted: "text-muted-foreground",
1968
+ white: "text-white",
1969
+ success: "text-green-600",
1970
+ warning: "text-amber-600",
1971
+ error: "text-red-600"
1972
+ }
1973
+ },
1974
+ defaultVariants: {
1975
+ size: "default",
1976
+ color: "default"
1977
+ }
1978
+ });
1979
+ var AtomicSpinner = React5__default.default.forwardRef(
1980
+ ({
1981
+ className,
1982
+ size,
1983
+ color,
1984
+ label,
1985
+ inline = false,
1986
+ icon: Icon = lucideReact.Loader2,
1987
+ ...props
1988
+ }, ref) => {
1989
+ const spinner = /* @__PURE__ */ jsxRuntime.jsx(
1990
+ Icon,
1991
+ {
1992
+ ref,
1993
+ className: cn(spinnerVariants({ size, color }), className),
1994
+ ...props
1995
+ }
1996
+ );
1997
+ if (!label) {
1998
+ return spinner;
1999
+ }
2000
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(
2001
+ "flex items-center gap-2",
2002
+ inline ? "inline-flex" : "flex"
2003
+ ), children: [
2004
+ spinner,
2005
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
2006
+ "text-sm",
2007
+ color === "muted" ? "text-muted-foreground" : color === "white" ? "text-white" : color === "primary" ? "text-primary" : "text-foreground"
2008
+ ), children: label })
2009
+ ] });
2010
+ }
2011
+ );
2012
+ AtomicSpinner.displayName = "AtomicSpinner";
2013
+ var AtomicButtonSpinner = React5__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2014
+ AtomicSpinner,
2015
+ {
2016
+ ref,
2017
+ size: "sm",
2018
+ color: "white",
2019
+ className: cn("mr-2", className),
2020
+ ...props
2021
+ }
2022
+ ));
2023
+ AtomicButtonSpinner.displayName = "AtomicButtonSpinner";
2024
+ var AtomicPageSpinner = React5__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsxRuntime.jsx(
2025
+ AtomicSpinner,
2026
+ {
2027
+ ref,
2028
+ size: "lg",
2029
+ className,
2030
+ ...props
2031
+ }
2032
+ ) }));
2033
+ AtomicPageSpinner.displayName = "AtomicPageSpinner";
2034
+ var AtomicInlineSpinner = React5__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2035
+ AtomicSpinner,
2036
+ {
2037
+ ref,
2038
+ inline: true,
2039
+ size: "sm",
2040
+ color: "muted",
2041
+ className,
2042
+ ...props
2043
+ }
2044
+ ));
2045
+ AtomicInlineSpinner.displayName = "AtomicInlineSpinner";
2046
+ var badgeVariants = classVarianceAuthority.cva(
2047
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
2048
+ {
2049
+ variants: {
2050
+ variant: {
2051
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
2052
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
2053
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
2054
+ outline: "text-foreground border-current",
2055
+ success: "border-transparent bg-green-100 text-green-800 dark:bg-green-900/20 dark:text-green-400",
2056
+ warning: "border-transparent bg-amber-100 text-amber-800 dark:bg-amber-900/20 dark:text-amber-400",
2057
+ info: "border-transparent bg-blue-100 text-blue-800 dark:bg-blue-900/20 dark:text-blue-400",
2058
+ gray: "border-transparent bg-gray-100 text-gray-800 dark:bg-gray-900/20 dark:text-gray-400"
2059
+ },
2060
+ size: {
2061
+ sm: "px-2 py-0.5 text-xs",
2062
+ default: "px-2.5 py-0.5 text-xs",
2063
+ lg: "px-3 py-1 text-sm"
2064
+ },
2065
+ shape: {
2066
+ default: "rounded-full",
2067
+ rounded: "rounded-md",
2068
+ square: "rounded-none"
2069
+ }
2070
+ },
2071
+ defaultVariants: {
2072
+ variant: "default",
2073
+ size: "default",
2074
+ shape: "default"
2075
+ }
2076
+ }
2077
+ );
2078
+ var AtomicBadge = React5__default.default.forwardRef(
2079
+ ({
2080
+ className,
2081
+ variant,
2082
+ size,
2083
+ shape,
2084
+ leftIcon,
2085
+ rightIcon,
2086
+ dot = false,
2087
+ dotColor,
2088
+ removable = false,
2089
+ onRemove,
2090
+ removeIcon,
2091
+ children,
2092
+ ...props
2093
+ }, ref) => {
2094
+ const iconSize = size === "sm" ? "h-3 w-3" : size === "lg" ? "h-4 w-4" : "h-3.5 w-3.5";
2095
+ const dotSize = size === "sm" ? "h-1.5 w-1.5" : size === "lg" ? "h-2.5 w-2.5" : "h-2 w-2";
2096
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2097
+ "div",
2098
+ {
2099
+ ref,
2100
+ className: cn(badgeVariants({ variant, size, shape }), className),
2101
+ ...props,
2102
+ children: [
2103
+ dot && /* @__PURE__ */ jsxRuntime.jsx(
2104
+ "span",
2105
+ {
2106
+ className: cn(
2107
+ "mr-1.5 rounded-full",
2108
+ dotSize,
2109
+ !dotColor && (variant === "success" ? "bg-green-600" : variant === "warning" ? "bg-amber-600" : variant === "info" ? "bg-blue-600" : variant === "destructive" ? "bg-red-600" : variant === "gray" ? "bg-gray-600" : "bg-current")
2110
+ ),
2111
+ style: dotColor ? { backgroundColor: dotColor } : void 0
2112
+ }
2113
+ ),
2114
+ leftIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mr-1 flex items-center", `[&>*]:${iconSize}`), children: leftIcon }),
2115
+ children,
2116
+ rightIcon && !removable && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("ml-1 flex items-center", `[&>*]:${iconSize}`), children: rightIcon }),
2117
+ removable && /* @__PURE__ */ jsxRuntime.jsx(
2118
+ "button",
2119
+ {
2120
+ type: "button",
2121
+ onClick: onRemove,
2122
+ className: cn(
2123
+ "ml-1 flex items-center rounded-full hover:bg-black/10 dark:hover:bg-white/10",
2124
+ "transition-colors focus:outline-none focus:ring-1 focus:ring-current",
2125
+ size === "sm" ? "p-0.5" : "p-1"
2126
+ ),
2127
+ children: removeIcon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex items-center", `[&>*]:${iconSize}`), children: removeIcon }) : /* @__PURE__ */ jsxRuntime.jsxs(
2128
+ "svg",
2129
+ {
2130
+ className: iconSize,
2131
+ viewBox: "0 0 24 24",
2132
+ fill: "none",
2133
+ stroke: "currentColor",
2134
+ strokeWidth: "2",
2135
+ strokeLinecap: "round",
2136
+ strokeLinejoin: "round",
2137
+ children: [
2138
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
2139
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
2140
+ ]
2141
+ }
2142
+ )
2143
+ }
2144
+ )
2145
+ ]
2146
+ }
2147
+ );
2148
+ }
2149
+ );
2150
+ AtomicBadge.displayName = "AtomicBadge";
2151
+ var AtomicStatusBadge = React5__default.default.forwardRef(({ status, variant, ...props }, ref) => {
2152
+ const statusConfig = {
2153
+ online: { variant: "success", dot: true, children: "Online" },
2154
+ offline: { variant: "gray", dot: true, children: "Offline" },
2155
+ busy: { variant: "destructive", dot: true, children: "Busy" },
2156
+ away: { variant: "warning", dot: true, children: "Away" }
2157
+ };
2158
+ const config = statusConfig[status];
2159
+ return /* @__PURE__ */ jsxRuntime.jsx(
2160
+ AtomicBadge,
2161
+ {
2162
+ ref,
2163
+ variant: variant || config.variant,
2164
+ dot: config.dot,
2165
+ ...props,
2166
+ children: props.children || config.children
2167
+ }
2168
+ );
2169
+ });
2170
+ AtomicStatusBadge.displayName = "AtomicStatusBadge";
2171
+ var AtomicCountBadge = React5__default.default.forwardRef(({ count, max = 99, ...props }, ref) => {
2172
+ const displayCount = count > max ? `${max}+` : count.toString();
2173
+ if (count <= 0) return null;
2174
+ return /* @__PURE__ */ jsxRuntime.jsx(
2175
+ AtomicBadge,
2176
+ {
2177
+ ref,
2178
+ variant: "destructive",
2179
+ size: "sm",
2180
+ ...props,
2181
+ children: displayCount
2182
+ }
2183
+ );
2184
+ });
2185
+ AtomicCountBadge.displayName = "AtomicCountBadge";
2186
+ var getSpacingClass4 = (spacing2, prefix) => {
2187
+ if (!spacing2) return "";
2188
+ if (typeof spacing2 === "string") {
2189
+ return `${prefix}-${spacing2}`;
2190
+ }
2191
+ const classes = [];
2192
+ if (spacing2.x !== void 0) classes.push(`${prefix}x-${spacing2.x}`);
2193
+ if (spacing2.y !== void 0) classes.push(`${prefix}y-${spacing2.y}`);
2194
+ if (spacing2.t !== void 0) classes.push(`${prefix}t-${spacing2.t}`);
2195
+ if (spacing2.r !== void 0) classes.push(`${prefix}r-${spacing2.r}`);
2196
+ if (spacing2.b !== void 0) classes.push(`${prefix}b-${spacing2.b}`);
2197
+ if (spacing2.l !== void 0) classes.push(`${prefix}l-${spacing2.l}`);
2198
+ return classes.join(" ");
2199
+ };
2200
+ var getVariantClasses = (variant, color) => {
2201
+ const baseColor = color || "gray";
2202
+ switch (variant) {
2203
+ case "primary":
2204
+ return `bg-blue-500 text-white border-blue-500`;
2205
+ case "secondary":
2206
+ return `bg-gray-500 text-white border-gray-500`;
2207
+ case "success":
2208
+ return `bg-green-500 text-white border-green-500`;
2209
+ case "warning":
2210
+ return `bg-yellow-500 text-white border-yellow-500`;
2211
+ case "danger":
2212
+ return `bg-red-500 text-white border-red-500`;
2213
+ case "info":
2214
+ return `bg-blue-500 text-white border-blue-500`;
2215
+ case "outline":
2216
+ return `bg-transparent text-${baseColor}-700 border-${baseColor}-300 border`;
2217
+ case "ghost":
2218
+ return `bg-${baseColor}-100 text-${baseColor}-700 border-transparent`;
2219
+ case "solid":
2220
+ return `bg-${baseColor}-500 text-white border-${baseColor}-500`;
2221
+ default:
2222
+ return `bg-gray-100 text-gray-800 border-gray-200 border`;
2223
+ }
2224
+ };
2225
+ var getSizeClasses3 = (size) => {
2226
+ switch (size) {
2227
+ case "xs":
2228
+ return "px-1.5 py-0.5 text-xs";
2229
+ case "sm":
2230
+ return "px-2 py-1 text-xs";
2231
+ case "md":
2232
+ return "px-2.5 py-1.5 text-sm";
2233
+ case "lg":
2234
+ return "px-3 py-2 text-base";
2235
+ default:
2236
+ return "px-2.5 py-1.5 text-sm";
2237
+ }
2238
+ };
2239
+ var getIconSize = (size) => {
2240
+ switch (size) {
2241
+ case "xs":
2242
+ return 10;
2243
+ case "sm":
2244
+ return 12;
2245
+ case "md":
2246
+ return 14;
2247
+ case "lg":
2248
+ return 16;
2249
+ default:
2250
+ return 14;
2251
+ }
2252
+ };
2253
+ var AtomicTag = React5__default.default.forwardRef(
2254
+ ({
2255
+ children,
2256
+ variant = "default",
2257
+ size = "md",
2258
+ color,
2259
+ leftIcon: LeftIcon,
2260
+ rightIcon: RightIcon,
2261
+ p,
2262
+ m,
2263
+ clickable = false,
2264
+ removable = false,
2265
+ onRemove,
2266
+ disabled = false,
2267
+ as: Component = "span",
2268
+ className,
2269
+ onClick,
2270
+ ...rest
2271
+ }, ref) => {
2272
+ const iconSize = getIconSize(size);
2273
+ const classes = cn(
2274
+ "inline-flex items-center justify-center font-medium rounded-md transition-colors duration-200",
2275
+ getVariantClasses(variant, color),
2276
+ getSizeClasses3(size),
2277
+ getSpacingClass4(p, "p"),
2278
+ getSpacingClass4(m, "m"),
2279
+ clickable && !disabled && [
2280
+ "cursor-pointer",
2281
+ "hover:opacity-80",
2282
+ "focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
2283
+ ],
2284
+ removable && !disabled && "pr-1",
2285
+ disabled && "opacity-50 cursor-not-allowed",
2286
+ className
2287
+ );
2288
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2289
+ LeftIcon && /* @__PURE__ */ jsxRuntime.jsx(
2290
+ LeftIcon,
2291
+ {
2292
+ size: iconSize,
2293
+ className: cn(
2294
+ "flex-shrink-0",
2295
+ children ? "mr-1.5" : ""
2296
+ )
2297
+ }
2298
+ ),
2299
+ children && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children }),
2300
+ RightIcon && /* @__PURE__ */ jsxRuntime.jsx(
2301
+ RightIcon,
2302
+ {
2303
+ size: iconSize,
2304
+ className: cn(
2305
+ "flex-shrink-0",
2306
+ children ? "ml-1.5" : ""
2307
+ )
2308
+ }
2309
+ ),
2310
+ removable && /* @__PURE__ */ jsxRuntime.jsx(
2311
+ "button",
2312
+ {
2313
+ type: "button",
2314
+ className: cn(
2315
+ "flex-shrink-0 ml-1.5 rounded-full p-0.5",
2316
+ "hover:bg-black hover:bg-opacity-20",
2317
+ "focus:outline-none focus:bg-black focus:bg-opacity-20",
2318
+ disabled && "cursor-not-allowed"
2319
+ ),
2320
+ onClick: (e) => {
2321
+ e.stopPropagation();
2322
+ if (!disabled) onRemove?.();
2323
+ },
2324
+ disabled,
2325
+ "aria-label": "Remove",
2326
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2327
+ "svg",
2328
+ {
2329
+ className: "w-3 h-3",
2330
+ fill: "none",
2331
+ stroke: "currentColor",
2332
+ viewBox: "0 0 24 24",
2333
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2334
+ "path",
2335
+ {
2336
+ strokeLinecap: "round",
2337
+ strokeLinejoin: "round",
2338
+ strokeWidth: 2,
2339
+ d: "M6 18L18 6M6 6l12 12"
2340
+ }
2341
+ )
2342
+ }
2343
+ )
2344
+ }
2345
+ )
2346
+ ] });
2347
+ const handleClick = (e) => {
2348
+ if (!disabled) {
2349
+ onClick?.(e);
2350
+ }
2351
+ };
2352
+ return /* @__PURE__ */ jsxRuntime.jsx(
2353
+ Component,
2354
+ {
2355
+ ref,
2356
+ className: classes,
2357
+ onClick: clickable ? handleClick : void 0,
2358
+ ...rest,
2359
+ children: content
2360
+ }
2361
+ );
2362
+ }
2363
+ );
2364
+ AtomicTag.displayName = "AtomicTag";
2365
+ var linkVariants = classVarianceAuthority.cva("transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", {
2366
+ variants: {
2367
+ variant: {
2368
+ default: "text-foreground hover:text-foreground/80",
2369
+ primary: "text-primary hover:text-primary/80",
2370
+ secondary: "text-secondary-foreground hover:text-secondary-foreground/80",
2371
+ muted: "text-muted-foreground hover:text-foreground",
2372
+ destructive: "text-destructive hover:text-destructive/80",
2373
+ ghost: "text-foreground hover:bg-accent hover:text-accent-foreground",
2374
+ underline: "text-primary underline underline-offset-4 hover:text-primary/80",
2375
+ button: "inline-flex items-center justify-center rounded-md text-sm font-medium h-10 px-4 py-2 bg-primary text-primary-foreground hover:bg-primary/90"
2376
+ },
2377
+ size: {
2378
+ default: "",
2379
+ sm: "text-sm",
2380
+ lg: "text-lg",
2381
+ xl: "text-xl"
2382
+ },
2383
+ weight: {
2384
+ normal: "font-normal",
2385
+ medium: "font-medium",
2386
+ semibold: "font-semibold",
2387
+ bold: "font-bold"
2388
+ }
2389
+ },
2390
+ defaultVariants: {
2391
+ variant: "default",
2392
+ size: "default",
2393
+ weight: "normal"
2394
+ }
2395
+ });
2396
+ var AtomicLink = React5__default.default.forwardRef(({
2397
+ className,
2398
+ variant,
2399
+ size,
2400
+ weight,
2401
+ external = false,
2402
+ showExternalIcon = false,
2403
+ prefetch = true,
2404
+ externalIcon,
2405
+ children,
2406
+ href,
2407
+ ...props
2408
+ }, ref) => {
2409
+ const isExternalUrl = typeof href === "string" && (href.startsWith("http") || href.startsWith("//"));
2410
+ const shouldBeExternal = external || isExternalUrl;
2411
+ const linkProps = {
2412
+ className: cn(linkVariants({ variant, size, weight }), className),
2413
+ ref,
2414
+ ...props
2415
+ };
2416
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2417
+ children,
2418
+ shouldBeExternal && showExternalIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 inline-block", children: externalIcon || /* @__PURE__ */ jsxRuntime.jsx(
2419
+ "svg",
2420
+ {
2421
+ className: "h-3 w-3",
2422
+ fill: "none",
2423
+ stroke: "currentColor",
2424
+ viewBox: "0 0 24 24",
2425
+ xmlns: "http://www.w3.org/2000/svg",
2426
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2427
+ "path",
2428
+ {
2429
+ strokeLinecap: "round",
2430
+ strokeLinejoin: "round",
2431
+ strokeWidth: 2,
2432
+ d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
2433
+ }
2434
+ )
2435
+ }
2436
+ ) })
2437
+ ] });
2438
+ if (shouldBeExternal) {
2439
+ return /* @__PURE__ */ jsxRuntime.jsx(
2440
+ "a",
2441
+ {
2442
+ href,
2443
+ target: "_blank",
2444
+ rel: "noopener noreferrer",
2445
+ ...linkProps,
2446
+ children: content
2447
+ }
2448
+ );
2449
+ }
2450
+ return /* @__PURE__ */ jsxRuntime.jsx(
2451
+ Link__default.default,
2452
+ {
2453
+ href,
2454
+ prefetch,
2455
+ ...linkProps,
2456
+ children: content
2457
+ }
2458
+ );
2459
+ });
2460
+ AtomicLink.displayName = "AtomicLink";
2461
+ var getSpacingClass5 = (spacing2, prefix) => {
2462
+ if (!spacing2) return "";
2463
+ if (typeof spacing2 === "string") {
2464
+ return `${prefix}-${spacing2}`;
2465
+ }
2466
+ const classes = [];
2467
+ if (spacing2.x !== void 0) classes.push(`${prefix}x-${spacing2.x}`);
2468
+ if (spacing2.y !== void 0) classes.push(`${prefix}y-${spacing2.y}`);
2469
+ if (spacing2.t !== void 0) classes.push(`${prefix}t-${spacing2.t}`);
2470
+ if (spacing2.r !== void 0) classes.push(`${prefix}r-${spacing2.r}`);
2471
+ if (spacing2.b !== void 0) classes.push(`${prefix}b-${spacing2.b}`);
2472
+ if (spacing2.l !== void 0) classes.push(`${prefix}l-${spacing2.l}`);
2473
+ return classes.join(" ");
2474
+ };
2475
+ var AtomicDiv = React5__default.default.forwardRef(
2476
+ ({
2477
+ d,
2478
+ align,
2479
+ justify,
2480
+ flexDir,
2481
+ flexWrap,
2482
+ flexGrow,
2483
+ flexShrink,
2484
+ order,
2485
+ p,
2486
+ m,
2487
+ w,
2488
+ h,
2489
+ minW,
2490
+ minH,
2491
+ maxW,
2492
+ maxH,
2493
+ bg,
2494
+ bgGradient,
2495
+ border,
2496
+ borderColor,
2497
+ rounded,
2498
+ shadow,
2499
+ position,
2500
+ top,
2501
+ right,
2502
+ bottom,
2503
+ left,
2504
+ cursor,
2505
+ as: Component = "div",
2506
+ className,
2507
+ children,
2508
+ ...rest
2509
+ }, ref) => {
2510
+ const classes = cn(
2511
+ d && `${d === "flex" ? "flex" : d === "inline-flex" ? "inline-flex" : d === "grid" ? "grid" : d === "hidden" ? "hidden" : d === "inline" ? "inline" : d === "inline-block" ? "inline-block" : "block"}`,
2512
+ align && `items-${align === "start" ? "start" : align === "end" ? "end" : align === "center" ? "center" : align === "baseline" ? "baseline" : "stretch"}`,
2513
+ justify && `justify-${justify === "start" ? "start" : justify === "end" ? "end" : justify === "center" ? "center" : justify === "between" ? "between" : justify === "around" ? "around" : "evenly"}`,
2514
+ flexDir && `flex-${flexDir === "col" ? "col" : flexDir === "col-reverse" ? "col-reverse" : flexDir === "row-reverse" ? "row-reverse" : "row"}`,
2515
+ flexWrap && `flex-${flexWrap}`,
2516
+ flexGrow !== void 0 && `flex-grow-${flexGrow}`,
2517
+ flexShrink !== void 0 && `flex-shrink-${flexShrink}`,
2518
+ order !== void 0 && `order-${order}`,
2519
+ getSpacingClass5(p, "p"),
2520
+ getSpacingClass5(m, "m"),
2521
+ w && `w-${w}`,
2522
+ h && `h-${h}`,
2523
+ minW && `min-w-${minW}`,
2524
+ minH && `min-h-${minH}`,
2525
+ maxW && `max-w-${maxW}`,
2526
+ maxH && `max-h-${maxH}`,
2527
+ bg && `bg-${bg}`,
2528
+ bgGradient,
2529
+ border === true && "border",
2530
+ typeof border === "string" && border,
2531
+ borderColor && `border-${borderColor}`,
2532
+ rounded && `rounded${rounded === "none" ? "-none" : rounded === "full" ? "-full" : rounded === "sm" ? "-sm" : rounded === "md" ? "" : `-${rounded}`}`,
2533
+ shadow && `shadow${shadow === "none" ? "-none" : shadow === "sm" ? "-sm" : shadow === "md" ? "" : shadow === "inner" ? "-inner" : `-${shadow}`}`,
2534
+ position && `${position}`,
2535
+ top !== void 0 && `top-${top}`,
2536
+ right !== void 0 && `right-${right}`,
2537
+ bottom !== void 0 && `bottom-${bottom}`,
2538
+ left !== void 0 && `left-${left}`,
2539
+ cursor && `cursor-${cursor}`,
2540
+ className
2541
+ );
2542
+ return React5__default.default.createElement(
2543
+ Component,
2544
+ {
2545
+ ref,
2546
+ className: classes,
2547
+ ...rest
2548
+ },
2549
+ children
2550
+ );
2551
+ }
2552
+ );
2553
+ AtomicDiv.displayName = "AtomicDiv";
2554
+ var AtomicThemeProviderContext = React5.createContext(void 0);
2555
+ var AtomicThemeProvider = ({
2556
+ children,
2557
+ defaultTheme = "system",
2558
+ storageKey = "atomic-theme",
2559
+ attribute = "data-theme",
2560
+ enableSystem = true,
2561
+ disableTransitionOnChange = false
2562
+ }) => {
2563
+ const [theme, setThemeState] = React5.useState(() => {
2564
+ if (typeof window === "undefined") return defaultTheme;
2565
+ try {
2566
+ const stored = localStorage.getItem(storageKey);
2567
+ if (stored && ["light", "dark", "system"].includes(stored)) {
2568
+ return stored;
2569
+ }
2570
+ } catch {
2571
+ }
2572
+ return defaultTheme;
2573
+ });
2574
+ const [actualTheme, setActualTheme] = React5.useState("light");
2575
+ const getSystemTheme = () => {
2576
+ if (typeof window === "undefined") return "light";
2577
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
2578
+ };
2579
+ const setTheme = (newTheme) => {
2580
+ try {
2581
+ localStorage.setItem(storageKey, newTheme);
2582
+ } catch {
2583
+ }
2584
+ setThemeState(newTheme);
2585
+ };
2586
+ React5.useEffect(() => {
2587
+ const root = window.document.documentElement;
2588
+ const resolvedTheme = theme === "system" && enableSystem ? getSystemTheme() : theme;
2589
+ setActualTheme(resolvedTheme);
2590
+ if (disableTransitionOnChange) {
2591
+ const css = document.createElement("style");
2592
+ css.appendChild(
2593
+ document.createTextNode(
2594
+ "* { transition: none !important; transform: none !important; animation: none !important; }"
2595
+ )
2596
+ );
2597
+ document.head.appendChild(css);
2598
+ requestAnimationFrame(() => {
2599
+ requestAnimationFrame(() => {
2600
+ document.head.removeChild(css);
2601
+ });
2602
+ });
2603
+ }
2604
+ root.setAttribute(attribute, resolvedTheme);
2605
+ root.classList.remove("light", "dark");
2606
+ root.classList.add(resolvedTheme);
2607
+ }, [theme, attribute, enableSystem, disableTransitionOnChange]);
2608
+ React5.useEffect(() => {
2609
+ if (!enableSystem || theme !== "system") return;
2610
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
2611
+ const handleChange = () => {
2612
+ const systemTheme = getSystemTheme();
2613
+ setActualTheme(systemTheme);
2614
+ const root = window.document.documentElement;
2615
+ root.setAttribute(attribute, systemTheme);
2616
+ root.classList.remove("light", "dark");
2617
+ root.classList.add(systemTheme);
2618
+ };
2619
+ mediaQuery.addEventListener("change", handleChange);
2620
+ return () => mediaQuery.removeEventListener("change", handleChange);
2621
+ }, [theme, attribute, enableSystem]);
2622
+ const value = {
2623
+ theme,
2624
+ setTheme,
2625
+ actualTheme
2626
+ };
2627
+ return /* @__PURE__ */ jsxRuntime.jsx(AtomicThemeProviderContext.Provider, { value, children });
2628
+ };
2629
+ var useAtomicTheme = () => {
2630
+ const context = React5.useContext(AtomicThemeProviderContext);
2631
+ if (context === void 0) {
2632
+ throw new Error("useAtomicTheme must be used within an AtomicThemeProvider");
2633
+ }
2634
+ return context;
2635
+ };
2636
+
2637
+ // src/index.ts
2638
+ var VERSION = "2.0.0";
2639
+
2640
+ exports.AnimationUtils = AnimationUtils;
2641
+ exports.AtomicAlertType = AtomicAlertType;
2642
+ exports.AtomicAlignment = AtomicAlignment;
2643
+ exports.AtomicAnimationPresets = AtomicAnimationPresets;
2644
+ exports.AtomicAnimationState = AtomicAnimationState;
2645
+ exports.AtomicAnimations = AtomicAnimations;
2646
+ exports.AtomicAnimationsCss = AtomicAnimationsCss;
2647
+ exports.AtomicAvatar = AtomicAvatar;
2648
+ exports.AtomicAvatarFallback = AtomicAvatarFallback;
2649
+ exports.AtomicAvatarImage = AtomicAvatarImage;
2650
+ exports.AtomicBadge = AtomicBadge;
2651
+ exports.AtomicBorders = AtomicBorders;
2652
+ exports.AtomicBordersCss = AtomicBordersCss;
2653
+ exports.AtomicBreakpoint = AtomicBreakpoint;
2654
+ exports.AtomicButton = AtomicButton;
2655
+ exports.AtomicButtonSpinner = AtomicButtonSpinner;
2656
+ exports.AtomicButtonVariant = AtomicButtonVariant;
2657
+ exports.AtomicCard = AtomicCard;
2658
+ exports.AtomicCardContent = AtomicCardContent;
2659
+ exports.AtomicCardDescription = AtomicCardDescription;
2660
+ exports.AtomicCardFooter = AtomicCardFooter;
2661
+ exports.AtomicCardHeader = AtomicCardHeader;
2662
+ exports.AtomicCardTitle = AtomicCardTitle;
2663
+ exports.AtomicCardVariant = AtomicCardVariant;
2664
+ exports.AtomicCheckbox = AtomicCheckbox;
2665
+ exports.AtomicColorVariant = AtomicColorVariant;
2666
+ exports.AtomicColorsCss = AtomicColorsCss;
2667
+ exports.AtomicCountBadge = AtomicCountBadge;
2668
+ exports.AtomicDesignTokensCss = AtomicDesignTokensCss;
2669
+ exports.AtomicDirection = AtomicDirection;
2670
+ exports.AtomicDiv = AtomicDiv;
2671
+ exports.AtomicEnumUtils = AtomicEnumUtils;
2672
+ exports.AtomicFormFieldState = AtomicFormFieldState;
2673
+ exports.AtomicIcon = AtomicIcon;
2674
+ exports.AtomicImage = AtomicImage;
2675
+ exports.AtomicInlineSpinner = AtomicInlineSpinner;
2676
+ exports.AtomicInput = AtomicInput;
2677
+ exports.AtomicInputVariant = AtomicInputVariant;
2678
+ exports.AtomicLink = AtomicLink;
2679
+ exports.AtomicLoadingState = AtomicLoadingState;
2680
+ exports.AtomicModalSize = AtomicModalSize;
2681
+ exports.AtomicOrientation = AtomicOrientation;
2682
+ exports.AtomicPageSpinner = AtomicPageSpinner;
2683
+ exports.AtomicPosition = AtomicPosition;
2684
+ exports.AtomicShadows = AtomicShadows;
2685
+ exports.AtomicShadowsCss = AtomicShadowsCss;
2686
+ exports.AtomicSize = AtomicSize;
2687
+ exports.AtomicSpacingCss = AtomicSpacingCss;
2688
+ exports.AtomicSpinner = AtomicSpinner;
2689
+ exports.AtomicStatus = AtomicStatus;
2690
+ exports.AtomicStatusBadge = AtomicStatusBadge;
2691
+ exports.AtomicSwitch = AtomicSwitch;
2692
+ exports.AtomicTag = AtomicTag;
2693
+ exports.AtomicText = AtomicText;
2694
+ exports.AtomicTextVariant = AtomicTextVariant;
2695
+ exports.AtomicThemeMode = AtomicThemeMode;
2696
+ exports.AtomicThemeProvider = AtomicThemeProvider;
2697
+ exports.AtomicTypographyCss = AtomicTypographyCss;
2698
+ exports.BorderUtils = BorderUtils;
2699
+ exports.ShadowUtils = ShadowUtils;
2700
+ exports.VERSION = VERSION;
2701
+ exports.avatarImageVariants = avatarImageVariants;
2702
+ exports.avatarVariants = avatarVariants;
2703
+ exports.badgeVariants = badgeVariants;
2704
+ exports.buttonVariants = buttonVariants;
2705
+ exports.cardDescriptionVariants = cardDescriptionVariants;
2706
+ exports.cardHeaderVariants = cardHeaderVariants;
2707
+ exports.cardTitleVariants = cardTitleVariants;
2708
+ exports.cardVariants = cardVariants;
2709
+ exports.cn = cn;
2710
+ exports.inputVariants = inputVariants;
2711
+ exports.linkVariants = linkVariants;
2712
+ exports.spinnerVariants = spinnerVariants;
2713
+ exports.textVariants = textVariants;
2714
+ exports.useAtomicTheme = useAtomicTheme;
2715
+ //# sourceMappingURL=index.js.map
2
2716
  //# sourceMappingURL=index.js.map