@zentauri-ui/zentauri-components 0.0.84 → 0.0.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +47 -29
  2. package/dist/ui/accordion.cjs +311 -0
  3. package/dist/ui/accordion.cjs.map +1 -0
  4. package/dist/ui/accordion.d.cts +70 -0
  5. package/dist/ui/accordion.d.ts +70 -0
  6. package/dist/ui/accordion.js +286 -0
  7. package/dist/ui/accordion.js.map +1 -0
  8. package/dist/ui/alert.cjs +257 -0
  9. package/dist/ui/alert.cjs.map +1 -0
  10. package/dist/ui/alert.d.cts +66 -0
  11. package/dist/ui/alert.d.ts +66 -0
  12. package/dist/ui/alert.js +224 -0
  13. package/dist/ui/alert.js.map +1 -0
  14. package/dist/ui/badge.cjs +192 -0
  15. package/dist/ui/badge.cjs.map +1 -0
  16. package/dist/ui/badge.d.cts +37 -0
  17. package/dist/ui/badge.d.ts +37 -0
  18. package/dist/ui/badge.js +165 -0
  19. package/dist/ui/badge.js.map +1 -0
  20. package/dist/ui/buttons.cjs +202 -0
  21. package/dist/ui/buttons.cjs.map +1 -0
  22. package/dist/ui/buttons.d.cts +27 -0
  23. package/dist/ui/buttons.d.ts +27 -0
  24. package/dist/ui/buttons.js +176 -0
  25. package/dist/ui/buttons.js.map +1 -0
  26. package/dist/ui/card.cjs +293 -0
  27. package/dist/ui/card.cjs.map +1 -0
  28. package/dist/ui/card.d.cts +77 -0
  29. package/dist/ui/card.d.ts +77 -0
  30. package/dist/ui/card.js +258 -0
  31. package/dist/ui/card.js.map +1 -0
  32. package/dist/ui/divider.cjs +229 -0
  33. package/dist/ui/divider.cjs.map +1 -0
  34. package/dist/ui/divider.d.cts +39 -0
  35. package/dist/ui/divider.d.ts +39 -0
  36. package/dist/ui/divider.js +200 -0
  37. package/dist/ui/divider.js.map +1 -0
  38. package/dist/ui/drawer.cjs +408 -0
  39. package/dist/ui/drawer.cjs.map +1 -0
  40. package/dist/ui/drawer.d.cts +81 -0
  41. package/dist/ui/drawer.d.ts +81 -0
  42. package/dist/ui/drawer.js +383 -0
  43. package/dist/ui/drawer.js.map +1 -0
  44. package/dist/ui/dropdown.cjs +302 -0
  45. package/dist/ui/dropdown.cjs.map +1 -0
  46. package/dist/ui/dropdown.d.cts +50 -0
  47. package/dist/ui/dropdown.d.ts +50 -0
  48. package/dist/ui/dropdown.js +278 -0
  49. package/dist/ui/dropdown.js.map +1 -0
  50. package/dist/ui/empty-state.cjs +186 -0
  51. package/dist/ui/empty-state.cjs.map +1 -0
  52. package/dist/ui/empty-state.d.cts +55 -0
  53. package/dist/ui/empty-state.d.ts +55 -0
  54. package/dist/ui/empty-state.js +154 -0
  55. package/dist/ui/empty-state.js.map +1 -0
  56. package/dist/ui/index.d.cts +27 -1164
  57. package/dist/ui/index.d.ts +27 -1164
  58. package/dist/ui/inputs.cjs +458 -0
  59. package/dist/ui/inputs.cjs.map +1 -0
  60. package/dist/ui/inputs.d.cts +35 -0
  61. package/dist/ui/inputs.d.ts +35 -0
  62. package/dist/ui/inputs.js +432 -0
  63. package/dist/ui/inputs.js.map +1 -0
  64. package/dist/ui/modal.cjs +406 -0
  65. package/dist/ui/modal.cjs.map +1 -0
  66. package/dist/ui/modal.d.cts +84 -0
  67. package/dist/ui/modal.d.ts +84 -0
  68. package/dist/ui/modal.js +384 -0
  69. package/dist/ui/modal.js.map +1 -0
  70. package/dist/ui/pagination.cjs +523 -0
  71. package/dist/ui/pagination.cjs.map +1 -0
  72. package/dist/ui/pagination.d.cts +114 -0
  73. package/dist/ui/pagination.d.ts +114 -0
  74. package/dist/ui/pagination.js +494 -0
  75. package/dist/ui/pagination.js.map +1 -0
  76. package/dist/ui/progress.cjs +268 -0
  77. package/dist/ui/progress.cjs.map +1 -0
  78. package/dist/ui/progress.d.cts +61 -0
  79. package/dist/ui/progress.d.ts +61 -0
  80. package/dist/ui/progress.js +237 -0
  81. package/dist/ui/progress.js.map +1 -0
  82. package/dist/ui/select.cjs +360 -0
  83. package/dist/ui/select.cjs.map +1 -0
  84. package/dist/ui/select.d.cts +73 -0
  85. package/dist/ui/select.d.ts +73 -0
  86. package/dist/ui/select.js +327 -0
  87. package/dist/ui/select.js.map +1 -0
  88. package/dist/ui/skeleton.cjs +576 -0
  89. package/dist/ui/skeleton.cjs.map +1 -0
  90. package/dist/ui/skeleton.d.cts +90 -0
  91. package/dist/ui/skeleton.d.ts +90 -0
  92. package/dist/ui/skeleton.js +544 -0
  93. package/dist/ui/skeleton.js.map +1 -0
  94. package/dist/ui/spinner.cjs +219 -0
  95. package/dist/ui/spinner.cjs.map +1 -0
  96. package/dist/ui/spinner.d.cts +27 -0
  97. package/dist/ui/spinner.d.ts +27 -0
  98. package/dist/ui/spinner.js +193 -0
  99. package/dist/ui/spinner.js.map +1 -0
  100. package/dist/ui/table.cjs +328 -0
  101. package/dist/ui/table.cjs.map +1 -0
  102. package/dist/ui/table.d.cts +81 -0
  103. package/dist/ui/table.d.ts +81 -0
  104. package/dist/ui/table.js +293 -0
  105. package/dist/ui/table.js.map +1 -0
  106. package/dist/ui/tabs.cjs +300 -0
  107. package/dist/ui/tabs.cjs.map +1 -0
  108. package/dist/ui/tabs.d.cts +58 -0
  109. package/dist/ui/tabs.d.ts +58 -0
  110. package/dist/ui/tabs.js +274 -0
  111. package/dist/ui/tabs.js.map +1 -0
  112. package/dist/ui/toast.cjs +285 -0
  113. package/dist/ui/toast.cjs.map +1 -0
  114. package/dist/ui/toast.d.cts +86 -0
  115. package/dist/ui/toast.d.ts +86 -0
  116. package/dist/ui/toast.js +258 -0
  117. package/dist/ui/toast.js.map +1 -0
  118. package/dist/ui/toggle.cjs +185 -0
  119. package/dist/ui/toggle.cjs.map +1 -0
  120. package/dist/ui/toggle.d.cts +37 -0
  121. package/dist/ui/toggle.d.ts +37 -0
  122. package/dist/ui/toggle.js +158 -0
  123. package/dist/ui/toggle.js.map +1 -0
  124. package/dist/ui/tooltip.cjs +242 -0
  125. package/dist/ui/tooltip.cjs.map +1 -0
  126. package/dist/ui/tooltip.d.cts +46 -0
  127. package/dist/ui/tooltip.d.ts +46 -0
  128. package/dist/ui/tooltip.js +214 -0
  129. package/dist/ui/tooltip.js.map +1 -0
  130. package/dist/variants-1Bx3BEeS.d.cts +8 -0
  131. package/dist/variants-1Bx3BEeS.d.ts +8 -0
  132. package/package.json +7 -1
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/ui/spinner/index.ts
21
+ var spinner_exports = {};
22
+ __export(spinner_exports, {
23
+ Spinner: () => Spinner,
24
+ spinnerAnimationPresets: () => spinnerAnimationPresets,
25
+ spinnerVariants: () => spinnerVariants
26
+ });
27
+ module.exports = __toCommonJS(spinner_exports);
28
+
29
+ // src/ui/spinner/spinner.tsx
30
+ var import_framer_motion = require("framer-motion");
31
+
32
+ // src/lib/utils.ts
33
+ var import_clsx = require("clsx");
34
+ var import_tailwind_merge = require("tailwind-merge");
35
+ function cn(...inputs) {
36
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
37
+ }
38
+
39
+ // src/ui/spinner/variants.ts
40
+ var import_class_variance_authority = require("class-variance-authority");
41
+ var spinnerAppearances = {
42
+ default: "text-slate-50",
43
+ secondary: "text-slate-300",
44
+ destructive: "text-rose-400",
45
+ ghost: "text-slate-300",
46
+ emerald: "text-emerald-400",
47
+ indigo: "text-indigo-400",
48
+ purple: "text-purple-400",
49
+ pink: "text-pink-400",
50
+ rose: "text-rose-400",
51
+ sky: "text-sky-400",
52
+ teal: "text-teal-400",
53
+ yellow: "text-yellow-400",
54
+ orange: "text-orange-400",
55
+ "gradient-blue": "text-blue-400",
56
+ "gradient-green": "text-green-400",
57
+ "gradient-red": "text-red-400",
58
+ "gradient-yellow": "text-yellow-400",
59
+ "gradient-purple": "text-purple-400",
60
+ "gradient-teal": "text-teal-400",
61
+ "gradient-indigo": "text-indigo-400",
62
+ "gradient-pink": "text-pink-400",
63
+ "gradient-orange": "text-orange-400"
64
+ };
65
+ var spinnerVariants = (0, import_class_variance_authority.cva)("inline-flex items-center justify-center", {
66
+ variants: {
67
+ appearance: spinnerAppearances,
68
+ size: {
69
+ xs: "size-3",
70
+ sm: "size-4",
71
+ md: "size-6",
72
+ lg: "size-8",
73
+ xl: "size-10"
74
+ },
75
+ variant: {
76
+ ring: "",
77
+ dots: "",
78
+ pulse: "",
79
+ bars: ""
80
+ }
81
+ },
82
+ defaultVariants: {
83
+ appearance: "default",
84
+ size: "md",
85
+ variant: "ring"
86
+ }
87
+ });
88
+
89
+ // src/ui/spinner/spinner.tsx
90
+ var import_jsx_runtime = require("react/jsx-runtime");
91
+ function Spinner(props) {
92
+ const {
93
+ className,
94
+ appearance,
95
+ size,
96
+ variant = "ring",
97
+ ref,
98
+ "aria-label": ariaLabel = "Loading",
99
+ ...rest
100
+ } = props;
101
+ const rootClass = cn(spinnerVariants({ appearance, size, variant }), className);
102
+ if (variant === "ring") {
103
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
104
+ import_framer_motion.motion.span,
105
+ {
106
+ ref,
107
+ role: "status",
108
+ "data-slot": "spinner",
109
+ "aria-label": ariaLabel,
110
+ className: cn(rootClass, "relative"),
111
+ initial: false,
112
+ ...rest,
113
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
114
+ import_framer_motion.motion.span,
115
+ {
116
+ className: "block size-full rounded-full border-2 border-current border-t-transparent",
117
+ animate: { rotate: 360 },
118
+ transition: { repeat: Infinity, ease: "linear", duration: 0.85 },
119
+ "aria-hidden": true
120
+ }
121
+ )
122
+ }
123
+ );
124
+ }
125
+ if (variant === "dots") {
126
+ const dotSize = size === "xs" ? "size-1" : size === "sm" ? "size-1.5" : size === "md" ? "size-2" : size === "lg" ? "size-2.5" : "size-3";
127
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
128
+ import_framer_motion.motion.span,
129
+ {
130
+ ref,
131
+ role: "status",
132
+ "data-slot": "spinner",
133
+ "aria-label": ariaLabel,
134
+ className: cn(rootClass, "gap-1"),
135
+ initial: false,
136
+ ...rest,
137
+ children: [0, 1, 2].map((index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
138
+ import_framer_motion.motion.span,
139
+ {
140
+ className: cn("rounded-full bg-current", dotSize),
141
+ animate: { y: [0, -5, 0], opacity: [0.45, 1, 0.45] },
142
+ transition: {
143
+ repeat: Infinity,
144
+ duration: 0.55,
145
+ ease: "easeInOut",
146
+ delay: index * 0.12
147
+ },
148
+ "aria-hidden": true
149
+ },
150
+ index
151
+ ))
152
+ }
153
+ );
154
+ }
155
+ if (variant === "pulse") {
156
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
157
+ import_framer_motion.motion.span,
158
+ {
159
+ ref,
160
+ role: "status",
161
+ "data-slot": "spinner",
162
+ "aria-label": ariaLabel,
163
+ className: cn(rootClass),
164
+ initial: false,
165
+ ...rest,
166
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
167
+ import_framer_motion.motion.span,
168
+ {
169
+ className: "block size-full rounded-full bg-current",
170
+ animate: { scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] },
171
+ transition: { repeat: Infinity, duration: 0.9, ease: "easeInOut" },
172
+ "aria-hidden": true
173
+ }
174
+ )
175
+ }
176
+ );
177
+ }
178
+ const barWidth = size === "xs" ? "w-0.5" : size === "sm" ? "w-0.5" : size === "md" ? "w-1" : size === "lg" ? "w-1.5" : "w-2";
179
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
180
+ import_framer_motion.motion.span,
181
+ {
182
+ ref,
183
+ role: "status",
184
+ "data-slot": "spinner",
185
+ "aria-label": ariaLabel,
186
+ className: cn(rootClass, "gap-1"),
187
+ initial: false,
188
+ ...rest,
189
+ children: [0, 1, 2, 3].map((index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
190
+ import_framer_motion.motion.span,
191
+ {
192
+ className: cn("h-full max-h-[70%] rounded-full bg-current", barWidth),
193
+ animate: { scaleY: [0.35, 1, 0.35] },
194
+ transition: {
195
+ repeat: Infinity,
196
+ duration: 0.65,
197
+ ease: "easeInOut",
198
+ delay: index * 0.1
199
+ },
200
+ "aria-hidden": true
201
+ },
202
+ index
203
+ ))
204
+ }
205
+ );
206
+ }
207
+ Spinner.displayName = "Spinner";
208
+
209
+ // src/ui/spinner/animations.ts
210
+ var spinnerAnimationPresets = {
211
+ none: {}
212
+ };
213
+ // Annotate the CommonJS export names for ESM import in node:
214
+ 0 && (module.exports = {
215
+ Spinner,
216
+ spinnerAnimationPresets,
217
+ spinnerVariants
218
+ });
219
+ //# sourceMappingURL=spinner.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/spinner/index.ts","../../src/ui/spinner/spinner.tsx","../../src/lib/utils.ts","../../src/ui/spinner/variants.ts","../../src/ui/spinner/animations.ts"],"sourcesContent":["export { Spinner } from \"./spinner\";\nexport type { SpinnerProps } from \"./types\";\nexport { spinnerAnimationPresets } from \"./animations\";\nexport { spinnerVariants } from \"./variants\";\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { SpinnerProps } from \"./types\";\nimport { spinnerVariants } from \"./variants\";\n\nexport function Spinner(props: SpinnerProps) {\n const {\n className,\n appearance,\n size,\n variant = \"ring\",\n ref,\n \"aria-label\": ariaLabel = \"Loading\",\n ...rest\n } = props;\n const rootClass = cn(spinnerVariants({ appearance, size, variant }), className);\n\n if (variant === \"ring\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"relative\")}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full border-2 border-current border-t-transparent\"\n animate={{ rotate: 360 }}\n transition={{ repeat: Infinity, ease: \"linear\", duration: 0.85 }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n if (variant === \"dots\") {\n const dotSize =\n size === \"xs\"\n ? \"size-1\"\n : size === \"sm\"\n ? \"size-1.5\"\n : size === \"md\"\n ? \"size-2\"\n : size === \"lg\"\n ? \"size-2.5\"\n : \"size-3\";\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2].map((index) => (\n <motion.span\n key={index}\n className={cn(\"rounded-full bg-current\", dotSize)}\n animate={{ y: [0, -5, 0], opacity: [0.45, 1, 0.45] }}\n transition={{\n repeat: Infinity,\n duration: 0.55,\n ease: \"easeInOut\",\n delay: index * 0.12,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n }\n\n if (variant === \"pulse\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass)}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full bg-current\"\n animate={{ scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] }}\n transition={{ repeat: Infinity, duration: 0.9, ease: \"easeInOut\" }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n const barWidth =\n size === \"xs\"\n ? \"w-0.5\"\n : size === \"sm\"\n ? \"w-0.5\"\n : size === \"md\"\n ? \"w-1\"\n : size === \"lg\"\n ? \"w-1.5\"\n : \"w-2\";\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2, 3].map((index) => (\n <motion.span\n key={index}\n className={cn(\"h-full max-h-[70%] rounded-full bg-current\", barWidth)}\n animate={{ scaleY: [0.35, 1, 0.35] }}\n transition={{\n repeat: Infinity,\n duration: 0.65,\n ease: \"easeInOut\",\n delay: index * 0.1,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n}\n\nSpinner.displayName = \"Spinner\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import { cva } from \"class-variance-authority\";\n\nconst spinnerAppearances = {\n default: \"text-slate-50\",\n secondary: \"text-slate-300\",\n destructive: \"text-rose-400\",\n ghost: \"text-slate-300\",\n emerald: \"text-emerald-400\",\n indigo: \"text-indigo-400\",\n purple: \"text-purple-400\",\n pink: \"text-pink-400\",\n rose: \"text-rose-400\",\n sky: \"text-sky-400\",\n teal: \"text-teal-400\",\n yellow: \"text-yellow-400\",\n orange: \"text-orange-400\",\n \"gradient-blue\": \"text-blue-400\",\n \"gradient-green\": \"text-green-400\",\n \"gradient-red\": \"text-red-400\",\n \"gradient-yellow\": \"text-yellow-400\",\n \"gradient-purple\": \"text-purple-400\",\n \"gradient-teal\": \"text-teal-400\",\n \"gradient-indigo\": \"text-indigo-400\",\n \"gradient-pink\": \"text-pink-400\",\n \"gradient-orange\": \"text-orange-400\",\n} as const;\n\nexport const spinnerVariants = cva(\"inline-flex items-center justify-center\", {\n variants: {\n appearance: spinnerAppearances,\n size: {\n xs: \"size-3\",\n sm: \"size-4\",\n md: \"size-6\",\n lg: \"size-8\",\n xl: \"size-10\",\n },\n variant: {\n ring: \"\",\n dots: \"\",\n pulse: \"\",\n bars: \"\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n variant: \"ring\",\n },\n});\n","/** Spinner variants use Framer `animate` on the root; presets reserved for future. */\nexport const spinnerAnimationPresets = {\n none: {},\n} as const;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,27 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { HTMLMotionProps } from 'framer-motion';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+
6
+ declare const spinnerVariants: (props?: ({
7
+ appearance?: "default" | "ghost" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "secondary" | "destructive" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
9
+ variant?: "ring" | "pulse" | "dots" | "bars" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+
12
+ type SpinnerVariantProps = VariantProps<typeof spinnerVariants>;
13
+ type SpinnerProps = SpinnerVariantProps & Omit<HTMLMotionProps<"span">, "children"> & {
14
+ "aria-label"?: string;
15
+ };
16
+
17
+ declare function Spinner(props: SpinnerProps): react_jsx_runtime.JSX.Element;
18
+ declare namespace Spinner {
19
+ var displayName: string;
20
+ }
21
+
22
+ /** Spinner variants use Framer `animate` on the root; presets reserved for future. */
23
+ declare const spinnerAnimationPresets: {
24
+ readonly none: {};
25
+ };
26
+
27
+ export { Spinner, type SpinnerProps, spinnerAnimationPresets, spinnerVariants };
@@ -0,0 +1,27 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { HTMLMotionProps } from 'framer-motion';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+
6
+ declare const spinnerVariants: (props?: ({
7
+ appearance?: "default" | "ghost" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "secondary" | "destructive" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
9
+ variant?: "ring" | "pulse" | "dots" | "bars" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+
12
+ type SpinnerVariantProps = VariantProps<typeof spinnerVariants>;
13
+ type SpinnerProps = SpinnerVariantProps & Omit<HTMLMotionProps<"span">, "children"> & {
14
+ "aria-label"?: string;
15
+ };
16
+
17
+ declare function Spinner(props: SpinnerProps): react_jsx_runtime.JSX.Element;
18
+ declare namespace Spinner {
19
+ var displayName: string;
20
+ }
21
+
22
+ /** Spinner variants use Framer `animate` on the root; presets reserved for future. */
23
+ declare const spinnerAnimationPresets: {
24
+ readonly none: {};
25
+ };
26
+
27
+ export { Spinner, type SpinnerProps, spinnerAnimationPresets, spinnerVariants };
@@ -0,0 +1,193 @@
1
+ "use client";
2
+
3
+
4
+ // src/ui/spinner/spinner.tsx
5
+ import { motion } from "framer-motion";
6
+
7
+ // src/lib/utils.ts
8
+ import { clsx } from "clsx";
9
+ import { twMerge } from "tailwind-merge";
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+
14
+ // src/ui/spinner/variants.ts
15
+ import { cva } from "class-variance-authority";
16
+ var spinnerAppearances = {
17
+ default: "text-slate-50",
18
+ secondary: "text-slate-300",
19
+ destructive: "text-rose-400",
20
+ ghost: "text-slate-300",
21
+ emerald: "text-emerald-400",
22
+ indigo: "text-indigo-400",
23
+ purple: "text-purple-400",
24
+ pink: "text-pink-400",
25
+ rose: "text-rose-400",
26
+ sky: "text-sky-400",
27
+ teal: "text-teal-400",
28
+ yellow: "text-yellow-400",
29
+ orange: "text-orange-400",
30
+ "gradient-blue": "text-blue-400",
31
+ "gradient-green": "text-green-400",
32
+ "gradient-red": "text-red-400",
33
+ "gradient-yellow": "text-yellow-400",
34
+ "gradient-purple": "text-purple-400",
35
+ "gradient-teal": "text-teal-400",
36
+ "gradient-indigo": "text-indigo-400",
37
+ "gradient-pink": "text-pink-400",
38
+ "gradient-orange": "text-orange-400"
39
+ };
40
+ var spinnerVariants = cva("inline-flex items-center justify-center", {
41
+ variants: {
42
+ appearance: spinnerAppearances,
43
+ size: {
44
+ xs: "size-3",
45
+ sm: "size-4",
46
+ md: "size-6",
47
+ lg: "size-8",
48
+ xl: "size-10"
49
+ },
50
+ variant: {
51
+ ring: "",
52
+ dots: "",
53
+ pulse: "",
54
+ bars: ""
55
+ }
56
+ },
57
+ defaultVariants: {
58
+ appearance: "default",
59
+ size: "md",
60
+ variant: "ring"
61
+ }
62
+ });
63
+
64
+ // src/ui/spinner/spinner.tsx
65
+ import { jsx } from "react/jsx-runtime";
66
+ function Spinner(props) {
67
+ const {
68
+ className,
69
+ appearance,
70
+ size,
71
+ variant = "ring",
72
+ ref,
73
+ "aria-label": ariaLabel = "Loading",
74
+ ...rest
75
+ } = props;
76
+ const rootClass = cn(spinnerVariants({ appearance, size, variant }), className);
77
+ if (variant === "ring") {
78
+ return /* @__PURE__ */ jsx(
79
+ motion.span,
80
+ {
81
+ ref,
82
+ role: "status",
83
+ "data-slot": "spinner",
84
+ "aria-label": ariaLabel,
85
+ className: cn(rootClass, "relative"),
86
+ initial: false,
87
+ ...rest,
88
+ children: /* @__PURE__ */ jsx(
89
+ motion.span,
90
+ {
91
+ className: "block size-full rounded-full border-2 border-current border-t-transparent",
92
+ animate: { rotate: 360 },
93
+ transition: { repeat: Infinity, ease: "linear", duration: 0.85 },
94
+ "aria-hidden": true
95
+ }
96
+ )
97
+ }
98
+ );
99
+ }
100
+ if (variant === "dots") {
101
+ const dotSize = size === "xs" ? "size-1" : size === "sm" ? "size-1.5" : size === "md" ? "size-2" : size === "lg" ? "size-2.5" : "size-3";
102
+ return /* @__PURE__ */ jsx(
103
+ motion.span,
104
+ {
105
+ ref,
106
+ role: "status",
107
+ "data-slot": "spinner",
108
+ "aria-label": ariaLabel,
109
+ className: cn(rootClass, "gap-1"),
110
+ initial: false,
111
+ ...rest,
112
+ children: [0, 1, 2].map((index) => /* @__PURE__ */ jsx(
113
+ motion.span,
114
+ {
115
+ className: cn("rounded-full bg-current", dotSize),
116
+ animate: { y: [0, -5, 0], opacity: [0.45, 1, 0.45] },
117
+ transition: {
118
+ repeat: Infinity,
119
+ duration: 0.55,
120
+ ease: "easeInOut",
121
+ delay: index * 0.12
122
+ },
123
+ "aria-hidden": true
124
+ },
125
+ index
126
+ ))
127
+ }
128
+ );
129
+ }
130
+ if (variant === "pulse") {
131
+ return /* @__PURE__ */ jsx(
132
+ motion.span,
133
+ {
134
+ ref,
135
+ role: "status",
136
+ "data-slot": "spinner",
137
+ "aria-label": ariaLabel,
138
+ className: cn(rootClass),
139
+ initial: false,
140
+ ...rest,
141
+ children: /* @__PURE__ */ jsx(
142
+ motion.span,
143
+ {
144
+ className: "block size-full rounded-full bg-current",
145
+ animate: { scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] },
146
+ transition: { repeat: Infinity, duration: 0.9, ease: "easeInOut" },
147
+ "aria-hidden": true
148
+ }
149
+ )
150
+ }
151
+ );
152
+ }
153
+ const barWidth = size === "xs" ? "w-0.5" : size === "sm" ? "w-0.5" : size === "md" ? "w-1" : size === "lg" ? "w-1.5" : "w-2";
154
+ return /* @__PURE__ */ jsx(
155
+ motion.span,
156
+ {
157
+ ref,
158
+ role: "status",
159
+ "data-slot": "spinner",
160
+ "aria-label": ariaLabel,
161
+ className: cn(rootClass, "gap-1"),
162
+ initial: false,
163
+ ...rest,
164
+ children: [0, 1, 2, 3].map((index) => /* @__PURE__ */ jsx(
165
+ motion.span,
166
+ {
167
+ className: cn("h-full max-h-[70%] rounded-full bg-current", barWidth),
168
+ animate: { scaleY: [0.35, 1, 0.35] },
169
+ transition: {
170
+ repeat: Infinity,
171
+ duration: 0.65,
172
+ ease: "easeInOut",
173
+ delay: index * 0.1
174
+ },
175
+ "aria-hidden": true
176
+ },
177
+ index
178
+ ))
179
+ }
180
+ );
181
+ }
182
+ Spinner.displayName = "Spinner";
183
+
184
+ // src/ui/spinner/animations.ts
185
+ var spinnerAnimationPresets = {
186
+ none: {}
187
+ };
188
+ export {
189
+ Spinner,
190
+ spinnerAnimationPresets,
191
+ spinnerVariants
192
+ };
193
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/spinner/spinner.tsx","../../src/lib/utils.ts","../../src/ui/spinner/variants.ts","../../src/ui/spinner/animations.ts"],"sourcesContent":["\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { SpinnerProps } from \"./types\";\nimport { spinnerVariants } from \"./variants\";\n\nexport function Spinner(props: SpinnerProps) {\n const {\n className,\n appearance,\n size,\n variant = \"ring\",\n ref,\n \"aria-label\": ariaLabel = \"Loading\",\n ...rest\n } = props;\n const rootClass = cn(spinnerVariants({ appearance, size, variant }), className);\n\n if (variant === \"ring\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"relative\")}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full border-2 border-current border-t-transparent\"\n animate={{ rotate: 360 }}\n transition={{ repeat: Infinity, ease: \"linear\", duration: 0.85 }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n if (variant === \"dots\") {\n const dotSize =\n size === \"xs\"\n ? \"size-1\"\n : size === \"sm\"\n ? \"size-1.5\"\n : size === \"md\"\n ? \"size-2\"\n : size === \"lg\"\n ? \"size-2.5\"\n : \"size-3\";\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2].map((index) => (\n <motion.span\n key={index}\n className={cn(\"rounded-full bg-current\", dotSize)}\n animate={{ y: [0, -5, 0], opacity: [0.45, 1, 0.45] }}\n transition={{\n repeat: Infinity,\n duration: 0.55,\n ease: \"easeInOut\",\n delay: index * 0.12,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n }\n\n if (variant === \"pulse\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass)}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full bg-current\"\n animate={{ scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] }}\n transition={{ repeat: Infinity, duration: 0.9, ease: \"easeInOut\" }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n const barWidth =\n size === \"xs\"\n ? \"w-0.5\"\n : size === \"sm\"\n ? \"w-0.5\"\n : size === \"md\"\n ? \"w-1\"\n : size === \"lg\"\n ? \"w-1.5\"\n : \"w-2\";\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2, 3].map((index) => (\n <motion.span\n key={index}\n className={cn(\"h-full max-h-[70%] rounded-full bg-current\", barWidth)}\n animate={{ scaleY: [0.35, 1, 0.35] }}\n transition={{\n repeat: Infinity,\n duration: 0.65,\n ease: \"easeInOut\",\n delay: index * 0.1,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n}\n\nSpinner.displayName = \"Spinner\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import { cva } from \"class-variance-authority\";\n\nconst spinnerAppearances = {\n default: \"text-slate-50\",\n secondary: \"text-slate-300\",\n destructive: \"text-rose-400\",\n ghost: \"text-slate-300\",\n emerald: \"text-emerald-400\",\n indigo: \"text-indigo-400\",\n purple: \"text-purple-400\",\n pink: \"text-pink-400\",\n rose: \"text-rose-400\",\n sky: \"text-sky-400\",\n teal: \"text-teal-400\",\n yellow: \"text-yellow-400\",\n orange: \"text-orange-400\",\n \"gradient-blue\": \"text-blue-400\",\n \"gradient-green\": \"text-green-400\",\n \"gradient-red\": \"text-red-400\",\n \"gradient-yellow\": \"text-yellow-400\",\n \"gradient-purple\": \"text-purple-400\",\n \"gradient-teal\": \"text-teal-400\",\n \"gradient-indigo\": \"text-indigo-400\",\n \"gradient-pink\": \"text-pink-400\",\n \"gradient-orange\": \"text-orange-400\",\n} as const;\n\nexport const spinnerVariants = cva(\"inline-flex items-center justify-center\", {\n variants: {\n appearance: spinnerAppearances,\n size: {\n xs: \"size-3\",\n sm: \"size-4\",\n md: \"size-6\",\n lg: \"size-8\",\n xl: \"size-10\",\n },\n variant: {\n ring: \"\",\n dots: \"\",\n pulse: \"\",\n bars: \"\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n variant: \"ring\",\n },\n});\n","/** Spinner variants use Framer `animate` on the root; presets reserved for future. */\nexport const spinnerAnimationPresets = {\n none: {},\n} as const;\n"],"mappings":"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","names":[]}