@mdigital_ui/ui 0.1.0

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 (205) hide show
  1. package/README.md +296 -0
  2. package/dist/accordion/index.js +5 -0
  3. package/dist/accordion/index.js.map +1 -0
  4. package/dist/badge/index.js +5 -0
  5. package/dist/badge/index.js.map +1 -0
  6. package/dist/button/index.js +6 -0
  7. package/dist/button/index.js.map +1 -0
  8. package/dist/card/index.js +4 -0
  9. package/dist/card/index.js.map +1 -0
  10. package/dist/carousel/index.js +3 -0
  11. package/dist/carousel/index.js.map +1 -0
  12. package/dist/cascader/index.js +4 -0
  13. package/dist/cascader/index.js.map +1 -0
  14. package/dist/chart/index.js +4 -0
  15. package/dist/chart/index.js.map +1 -0
  16. package/dist/checkbox/index.js +5 -0
  17. package/dist/checkbox/index.js.map +1 -0
  18. package/dist/checkbox-group/index.js +4 -0
  19. package/dist/checkbox-group/index.js.map +1 -0
  20. package/dist/chunk-2JGAYDZR.js +181 -0
  21. package/dist/chunk-2JGAYDZR.js.map +1 -0
  22. package/dist/chunk-3PFA3YG6.js +228 -0
  23. package/dist/chunk-3PFA3YG6.js.map +1 -0
  24. package/dist/chunk-4OMLQCUV.js +96 -0
  25. package/dist/chunk-4OMLQCUV.js.map +1 -0
  26. package/dist/chunk-4P5EMRFI.js +298 -0
  27. package/dist/chunk-4P5EMRFI.js.map +1 -0
  28. package/dist/chunk-5UEWVFF6.js +212 -0
  29. package/dist/chunk-5UEWVFF6.js.map +1 -0
  30. package/dist/chunk-5VCGW53O.js +332 -0
  31. package/dist/chunk-5VCGW53O.js.map +1 -0
  32. package/dist/chunk-75XESYGN.js +49 -0
  33. package/dist/chunk-75XESYGN.js.map +1 -0
  34. package/dist/chunk-7AEGBABZ.js +1102 -0
  35. package/dist/chunk-7AEGBABZ.js.map +1 -0
  36. package/dist/chunk-AOITJRSV.js +134 -0
  37. package/dist/chunk-AOITJRSV.js.map +1 -0
  38. package/dist/chunk-AWPKZYHT.js +152 -0
  39. package/dist/chunk-AWPKZYHT.js.map +1 -0
  40. package/dist/chunk-BNILRB4T.js +37 -0
  41. package/dist/chunk-BNILRB4T.js.map +1 -0
  42. package/dist/chunk-BP434VYV.js +448 -0
  43. package/dist/chunk-BP434VYV.js.map +1 -0
  44. package/dist/chunk-C7SXY3ZV.js +65 -0
  45. package/dist/chunk-C7SXY3ZV.js.map +1 -0
  46. package/dist/chunk-CLLQDCDR.js +560 -0
  47. package/dist/chunk-CLLQDCDR.js.map +1 -0
  48. package/dist/chunk-CWHFK7ZC.js +128 -0
  49. package/dist/chunk-CWHFK7ZC.js.map +1 -0
  50. package/dist/chunk-D3JWPGCA.js +123 -0
  51. package/dist/chunk-D3JWPGCA.js.map +1 -0
  52. package/dist/chunk-DOKTHDG3.js +55 -0
  53. package/dist/chunk-DOKTHDG3.js.map +1 -0
  54. package/dist/chunk-DPOSWW22.js +126 -0
  55. package/dist/chunk-DPOSWW22.js.map +1 -0
  56. package/dist/chunk-E2CYDDYC.js +39 -0
  57. package/dist/chunk-E2CYDDYC.js.map +1 -0
  58. package/dist/chunk-EYTOKUBM.js +401 -0
  59. package/dist/chunk-EYTOKUBM.js.map +1 -0
  60. package/dist/chunk-FGWSUPVW.js +356 -0
  61. package/dist/chunk-FGWSUPVW.js.map +1 -0
  62. package/dist/chunk-FPOXTCYV.js +166 -0
  63. package/dist/chunk-FPOXTCYV.js.map +1 -0
  64. package/dist/chunk-FTJOSVTY.js +104 -0
  65. package/dist/chunk-FTJOSVTY.js.map +1 -0
  66. package/dist/chunk-FYHQDFKE.js +164 -0
  67. package/dist/chunk-FYHQDFKE.js.map +1 -0
  68. package/dist/chunk-H2HIBD5Y.js +158 -0
  69. package/dist/chunk-H2HIBD5Y.js.map +1 -0
  70. package/dist/chunk-J3G5WWGR.js +53 -0
  71. package/dist/chunk-J3G5WWGR.js.map +1 -0
  72. package/dist/chunk-JZCHZ4B3.js +487 -0
  73. package/dist/chunk-JZCHZ4B3.js.map +1 -0
  74. package/dist/chunk-KBCBVH7B.js +51 -0
  75. package/dist/chunk-KBCBVH7B.js.map +1 -0
  76. package/dist/chunk-KNQ7UQ2W.js +143 -0
  77. package/dist/chunk-KNQ7UQ2W.js.map +1 -0
  78. package/dist/chunk-KTBPIEP2.js +102 -0
  79. package/dist/chunk-KTBPIEP2.js.map +1 -0
  80. package/dist/chunk-L3SP7GHC.js +1023 -0
  81. package/dist/chunk-L3SP7GHC.js.map +1 -0
  82. package/dist/chunk-LBJG2UWT.js +100 -0
  83. package/dist/chunk-LBJG2UWT.js.map +1 -0
  84. package/dist/chunk-MLDX3Z67.js +470 -0
  85. package/dist/chunk-MLDX3Z67.js.map +1 -0
  86. package/dist/chunk-NNSS366W.js +331 -0
  87. package/dist/chunk-NNSS366W.js.map +1 -0
  88. package/dist/chunk-OQANRZPV.js +197 -0
  89. package/dist/chunk-OQANRZPV.js.map +1 -0
  90. package/dist/chunk-OW5A5IIF.js +175 -0
  91. package/dist/chunk-OW5A5IIF.js.map +1 -0
  92. package/dist/chunk-R225A5II.js +187 -0
  93. package/dist/chunk-R225A5II.js.map +1 -0
  94. package/dist/chunk-ROR4E6IE.js +119 -0
  95. package/dist/chunk-ROR4E6IE.js.map +1 -0
  96. package/dist/chunk-RPAQAZTI.js +54 -0
  97. package/dist/chunk-RPAQAZTI.js.map +1 -0
  98. package/dist/chunk-RQBXZKTH.js +452 -0
  99. package/dist/chunk-RQBXZKTH.js.map +1 -0
  100. package/dist/chunk-S5XJXU52.js +178 -0
  101. package/dist/chunk-S5XJXU52.js.map +1 -0
  102. package/dist/chunk-SAVE5ACL.js +324 -0
  103. package/dist/chunk-SAVE5ACL.js.map +1 -0
  104. package/dist/chunk-SERJ3TZE.js +640 -0
  105. package/dist/chunk-SERJ3TZE.js.map +1 -0
  106. package/dist/chunk-SK5ECBBK.js +175 -0
  107. package/dist/chunk-SK5ECBBK.js.map +1 -0
  108. package/dist/chunk-SOV4PE3P.js +218 -0
  109. package/dist/chunk-SOV4PE3P.js.map +1 -0
  110. package/dist/chunk-W7BQYIXF.js +687 -0
  111. package/dist/chunk-W7BQYIXF.js.map +1 -0
  112. package/dist/chunk-XMAH5PDW.js +59 -0
  113. package/dist/chunk-XMAH5PDW.js.map +1 -0
  114. package/dist/chunk-XOBGEMQY.js +94 -0
  115. package/dist/chunk-XOBGEMQY.js.map +1 -0
  116. package/dist/chunk-YNNAOXU5.js +57 -0
  117. package/dist/chunk-YNNAOXU5.js.map +1 -0
  118. package/dist/chunk-YZVSDRJD.js +253 -0
  119. package/dist/chunk-YZVSDRJD.js.map +1 -0
  120. package/dist/collapse/index.js +4 -0
  121. package/dist/collapse/index.js.map +1 -0
  122. package/dist/command/index.js +5 -0
  123. package/dist/command/index.js.map +1 -0
  124. package/dist/date-picker/index.js +5 -0
  125. package/dist/date-picker/index.js.map +1 -0
  126. package/dist/descriptions/index.js +4 -0
  127. package/dist/descriptions/index.js.map +1 -0
  128. package/dist/drawer/index.js +4 -0
  129. package/dist/drawer/index.js.map +1 -0
  130. package/dist/dropdown/index.js +5 -0
  131. package/dist/dropdown/index.js.map +1 -0
  132. package/dist/empty/index.js +4 -0
  133. package/dist/empty/index.js.map +1 -0
  134. package/dist/fetching-overlay/index.js +5 -0
  135. package/dist/fetching-overlay/index.js.map +1 -0
  136. package/dist/image/index.js +4 -0
  137. package/dist/image/index.js.map +1 -0
  138. package/dist/index.d.ts +2672 -0
  139. package/dist/index.js +976 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/input/index.js +5 -0
  142. package/dist/input/index.js.map +1 -0
  143. package/dist/input-group/index.js +4 -0
  144. package/dist/input-group/index.js.map +1 -0
  145. package/dist/input-otp/index.js +4 -0
  146. package/dist/input-otp/index.js.map +1 -0
  147. package/dist/input-password/index.js +6 -0
  148. package/dist/input-password/index.js.map +1 -0
  149. package/dist/kbd/index.js +4 -0
  150. package/dist/kbd/index.js.map +1 -0
  151. package/dist/modal/index.js +4 -0
  152. package/dist/modal/index.js.map +1 -0
  153. package/dist/multi-select/index.js +5 -0
  154. package/dist/multi-select/index.js.map +1 -0
  155. package/dist/notification/index.js +4 -0
  156. package/dist/notification/index.js.map +1 -0
  157. package/dist/pagination/index.js +4 -0
  158. package/dist/pagination/index.js.map +1 -0
  159. package/dist/popover/index.js +4 -0
  160. package/dist/popover/index.js.map +1 -0
  161. package/dist/progress/index.js +4 -0
  162. package/dist/progress/index.js.map +1 -0
  163. package/dist/radio/index.js +4 -0
  164. package/dist/radio/index.js.map +1 -0
  165. package/dist/radio-group/index.js +4 -0
  166. package/dist/radio-group/index.js.map +1 -0
  167. package/dist/rating/index.js +4 -0
  168. package/dist/rating/index.js.map +1 -0
  169. package/dist/ribbon/index.js +4 -0
  170. package/dist/ribbon/index.js.map +1 -0
  171. package/dist/select/index.js +6 -0
  172. package/dist/select/index.js.map +1 -0
  173. package/dist/skeleton/index.js +4 -0
  174. package/dist/skeleton/index.js.map +1 -0
  175. package/dist/slider/index.js +4 -0
  176. package/dist/slider/index.js.map +1 -0
  177. package/dist/spinner/index.js +4 -0
  178. package/dist/spinner/index.js.map +1 -0
  179. package/dist/stepper/index.js +4 -0
  180. package/dist/stepper/index.js.map +1 -0
  181. package/dist/styles/base.css +161 -0
  182. package/dist/styles/global.css +633 -0
  183. package/dist/styles/themes/dark.css +84 -0
  184. package/dist/styles/themes/light.css +84 -0
  185. package/dist/switch/index.js +4 -0
  186. package/dist/switch/index.js.map +1 -0
  187. package/dist/table/index.js +12 -0
  188. package/dist/table/index.js.map +1 -0
  189. package/dist/tabs/index.js +5 -0
  190. package/dist/tabs/index.js.map +1 -0
  191. package/dist/textarea/index.js +4 -0
  192. package/dist/textarea/index.js.map +1 -0
  193. package/dist/toggle/index.js +4 -0
  194. package/dist/toggle/index.js.map +1 -0
  195. package/dist/toggle-group/index.js +4 -0
  196. package/dist/toggle-group/index.js.map +1 -0
  197. package/dist/tooltip/index.js +4 -0
  198. package/dist/tooltip/index.js.map +1 -0
  199. package/dist/transfer/index.js +6 -0
  200. package/dist/transfer/index.js.map +1 -0
  201. package/dist/tree/index.js +4 -0
  202. package/dist/tree/index.js.map +1 -0
  203. package/dist/tree-select/index.js +6 -0
  204. package/dist/tree-select/index.js.map +1 -0
  205. package/package.json +107 -0
@@ -0,0 +1,104 @@
1
+ import { createAllColorVariants, componentColors } from './chunk-5UEWVFF6.js';
2
+ import { cn } from './chunk-YNNAOXU5.js';
3
+ import { cva } from 'class-variance-authority';
4
+ import React from 'react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var badgeVariants = cva(
8
+ "inline-flex items-center justify-center whitespace-nowrap rounded font-medium",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default: "border",
13
+ solid: "",
14
+ outline: "border",
15
+ soft: ""
16
+ },
17
+ color: {
18
+ default: "",
19
+ primary: "",
20
+ secondary: "",
21
+ accent: "",
22
+ success: "",
23
+ error: "",
24
+ warning: "",
25
+ info: ""
26
+ },
27
+ size: {
28
+ xs: "text-[10px] px-1 py-0",
29
+ sm: "text-xs px-1.5 py-0.5",
30
+ md: "text-xs px-2 py-0.5",
31
+ lg: "text-sm px-2.5 py-1"
32
+ }
33
+ },
34
+ compoundVariants: createAllColorVariants(componentColors, [
35
+ "default",
36
+ "solid",
37
+ "outline",
38
+ "soft"
39
+ ]),
40
+ defaultVariants: {
41
+ variant: "solid",
42
+ color: "primary",
43
+ size: "sm"
44
+ }
45
+ }
46
+ );
47
+ var Badge = React.memo(
48
+ ({
49
+ children,
50
+ color = "primary",
51
+ variant = "solid",
52
+ size = "sm",
53
+ dot = false,
54
+ count,
55
+ showZero = true,
56
+ className
57
+ }) => {
58
+ const getDisplayCount = () => {
59
+ if (count === void 0) return null;
60
+ if (count === 0 && !showZero) return null;
61
+ if (count > 99) return "99+";
62
+ return count;
63
+ };
64
+ const displayCount = getDisplayCount();
65
+ if (count !== void 0 && count === 0 && !showZero && !children) {
66
+ return null;
67
+ }
68
+ if (children && (count !== void 0 || dot)) {
69
+ return /* @__PURE__ */ jsxs("span", { className: "relative inline-flex", children: [
70
+ children,
71
+ /* @__PURE__ */ jsx(
72
+ "span",
73
+ {
74
+ className: cn(
75
+ "absolute -top-2 -right-2 z-10",
76
+ badgeVariants({ variant, color, size }),
77
+ dot && "p-0 rounded-full w-2 h-2",
78
+ className
79
+ ),
80
+ children: !dot && displayCount
81
+ }
82
+ )
83
+ ] });
84
+ }
85
+ const displayContent = count !== void 0 ? displayCount : children;
86
+ return /* @__PURE__ */ jsx(
87
+ "span",
88
+ {
89
+ className: cn(
90
+ badgeVariants({ variant, color, size }),
91
+ dot && "p-0 rounded-full w-2 h-2 min-w-[8px]",
92
+ className
93
+ ),
94
+ children: !dot && displayContent
95
+ }
96
+ );
97
+ }
98
+ );
99
+ Badge.displayName = "Badge";
100
+ var badge_default = Badge;
101
+
102
+ export { badge_default };
103
+ //# sourceMappingURL=chunk-FTJOSVTY.js.map
104
+ //# sourceMappingURL=chunk-FTJOSVTY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/badge/index.tsx"],"names":[],"mappings":"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","file":"chunk-FTJOSVTY.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport { componentColors, createAllColorVariants } from '../variants'\nimport type { BadgeProps } from './types'\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded font-medium',\n {\n variants: {\n variant: {\n default: 'border',\n solid: '',\n outline: 'border',\n soft: '',\n },\n color: {\n default: '',\n primary: '',\n secondary: '',\n accent: '',\n success: '',\n error: '',\n warning: '',\n info: '',\n },\n size: {\n xs: 'text-[10px] px-1 py-0',\n sm: 'text-xs px-1.5 py-0.5',\n md: 'text-xs px-2 py-0.5',\n lg: 'text-sm px-2.5 py-1',\n },\n },\n compoundVariants: createAllColorVariants(componentColors, [\n 'default',\n 'solid',\n 'outline',\n 'soft',\n ]),\n defaultVariants: {\n variant: 'solid',\n color: 'primary',\n size: 'sm',\n },\n },\n)\n\nconst Badge = React.memo<BadgeProps>(\n ({\n children,\n color = 'primary',\n variant = 'solid',\n size = 'sm',\n dot = false,\n count,\n showZero = true,\n className,\n }) => {\n const getDisplayCount = () => {\n if (count === undefined) return null\n if (count === 0 && !showZero) return null\n if (count > 99) return '99+'\n return count\n }\n\n const displayCount = getDisplayCount()\n\n // Don't render if count is 0 and showZero is false\n if (count !== undefined && count === 0 && !showZero && !children) {\n return null\n }\n\n // If both children and count/dot are provided, render floating badge\n if (children && (count !== undefined || dot)) {\n return (\n <span className=\"relative inline-flex\">\n {children}\n <span\n className={cn(\n 'absolute -top-2 -right-2 z-10',\n badgeVariants({ variant, color, size }),\n dot && 'p-0 rounded-full w-2 h-2',\n className,\n )}\n >\n {!dot && displayCount}\n </span>\n </span>\n )\n }\n\n // Otherwise render simple badge\n const displayContent = count !== undefined ? displayCount : children\n\n return (\n <span\n className={cn(\n badgeVariants({ variant, color, size }),\n dot && 'p-0 rounded-full w-2 h-2 min-w-[8px]',\n className,\n )}\n >\n {!dot && displayContent}\n </span>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n\nexport type * from './types'\nexport default Badge\n"]}
@@ -0,0 +1,164 @@
1
+ import { cn } from './chunk-YNNAOXU5.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import { Star } from 'lucide-react';
4
+ import React, { useState } from 'react';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ var ratingVariants = cva("inline-flex items-center gap-1", {
8
+ variants: {
9
+ size: {
10
+ xs: "text-xs",
11
+ sm: "text-sm",
12
+ md: "text-base",
13
+ lg: "text-lg"
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ size: "md"
18
+ }
19
+ });
20
+ var starSizes = {
21
+ xs: 12,
22
+ sm: 16,
23
+ md: 20,
24
+ lg: 24
25
+ };
26
+ var getStarClasses = (color, variant, isFilled, isHovered) => {
27
+ const state = isFilled || isHovered ? "filled" : "empty";
28
+ if (state === "empty") {
29
+ if (variant === "solid") {
30
+ if (color === "default") return "fill-transparent stroke-border";
31
+ return `fill-transparent stroke-${color} opacity-20`;
32
+ }
33
+ if (variant === "soft") {
34
+ if (color === "default") return "fill-transparent stroke-border/50";
35
+ return `fill-transparent stroke-${color} opacity-20`;
36
+ }
37
+ if (color === "default") return "fill-transparent stroke-border";
38
+ return `fill-transparent stroke-${color} opacity-20`;
39
+ }
40
+ if (variant === "solid") {
41
+ if (color === "default") return "fill-border stroke-border";
42
+ return `fill-${color} stroke-${color}`;
43
+ }
44
+ if (variant === "soft") {
45
+ if (color === "default") return "fill-border/50 stroke-border";
46
+ return `fill-${color} opacity-20 stroke-${color}`;
47
+ }
48
+ if (color === "default") return "fill-border stroke-border";
49
+ return `fill-${color} stroke-${color}`;
50
+ };
51
+ var Rating = React.memo(
52
+ ({
53
+ value: controlledValue,
54
+ defaultValue = 0,
55
+ count = 5,
56
+ allowHalf = false,
57
+ color = "warning",
58
+ size = "md",
59
+ variant = "solid",
60
+ onChange,
61
+ disabled = false,
62
+ readOnly = false,
63
+ className
64
+ }) => {
65
+ const [internalValue, setInternalValue] = useState(defaultValue);
66
+ const [hoverValue, setHoverValue] = useState(null);
67
+ const value = controlledValue !== void 0 ? controlledValue : internalValue;
68
+ const displayValue = hoverValue !== null ? hoverValue : value;
69
+ const handleStarClick = (index, isHalf) => {
70
+ if (disabled || readOnly) return;
71
+ const newValue = isHalf ? index + 0.5 : index + 1;
72
+ if (controlledValue === void 0) {
73
+ setInternalValue(newValue);
74
+ }
75
+ onChange?.(newValue);
76
+ };
77
+ const handleStarHover = (index, isHalf) => {
78
+ if (disabled || readOnly) return;
79
+ const newValue = isHalf ? index + 0.5 : index + 1;
80
+ setHoverValue(newValue);
81
+ };
82
+ const handleMouseLeave = () => {
83
+ setHoverValue(null);
84
+ };
85
+ const getStarFill = (index) => {
86
+ const fillValue = displayValue - index;
87
+ if (fillValue >= 1) return "full";
88
+ if (fillValue > 0 && fillValue < 1) return "half";
89
+ return "empty";
90
+ };
91
+ return /* @__PURE__ */ jsx("div", { className: cn(ratingVariants({ size }), className), children: /* @__PURE__ */ jsx(
92
+ "div",
93
+ {
94
+ className: "inline-flex items-center gap-0.5",
95
+ onMouseLeave: handleMouseLeave,
96
+ children: Array.from({ length: count }, (_, index) => {
97
+ const fillType = getStarFill(index);
98
+ const isHovered = hoverValue !== null && index < Math.ceil(hoverValue);
99
+ return /* @__PURE__ */ jsxs(
100
+ "div",
101
+ {
102
+ className: cn(
103
+ "relative inline-flex",
104
+ !disabled && !readOnly && "cursor-pointer",
105
+ disabled && "opacity-50 cursor-not-allowed"
106
+ ),
107
+ children: [
108
+ allowHalf && /* @__PURE__ */ jsx(
109
+ "div",
110
+ {
111
+ className: "absolute inset-0 w-1/2 z-10",
112
+ onClick: () => handleStarClick(index, true),
113
+ onMouseEnter: () => handleStarHover(index, true)
114
+ }
115
+ ),
116
+ /* @__PURE__ */ jsx(
117
+ "div",
118
+ {
119
+ className: cn(
120
+ "absolute inset-0 z-10",
121
+ allowHalf ? "left-1/2" : "left-0"
122
+ ),
123
+ onClick: () => handleStarClick(index, false),
124
+ onMouseEnter: () => handleStarHover(index, false)
125
+ }
126
+ ),
127
+ /* @__PURE__ */ jsx(
128
+ Star,
129
+ {
130
+ size: starSizes[size],
131
+ className: cn(
132
+ getStarClasses(color, variant, false, false),
133
+ "transition-colors"
134
+ )
135
+ }
136
+ ),
137
+ fillType !== "empty" && /* @__PURE__ */ jsx(
138
+ Star,
139
+ {
140
+ size: starSizes[size],
141
+ className: cn(
142
+ "absolute top-0 left-0 transition-colors",
143
+ getStarClasses(color, variant, true, isHovered)
144
+ ),
145
+ style: {
146
+ clipPath: fillType === "half" ? "polygon(0 0, 50% 0, 50% 100%, 0 100%)" : "none"
147
+ }
148
+ }
149
+ )
150
+ ]
151
+ },
152
+ index
153
+ );
154
+ })
155
+ }
156
+ ) });
157
+ }
158
+ );
159
+ Rating.displayName = "Rating";
160
+ var rating_default = Rating;
161
+
162
+ export { rating_default };
163
+ //# sourceMappingURL=chunk-FYHQDFKE.js.map
164
+ //# sourceMappingURL=chunk-FYHQDFKE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/rating/index.tsx"],"names":[],"mappings":"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","file":"chunk-FYHQDFKE.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { Star } from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { cn } from '../utils'\nimport type { RatingProps } from './types'\n\nconst ratingVariants = cva('inline-flex items-center gap-1', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst starSizes = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n}\n\nconst getStarClasses = (\n color: string,\n variant: string,\n isFilled: boolean,\n isHovered: boolean,\n) => {\n const state = isFilled || isHovered ? 'filled' : 'empty'\n\n if (state === 'empty') {\n if (variant === 'solid') {\n if (color === 'default') return 'fill-transparent stroke-border'\n return `fill-transparent stroke-${color} opacity-20`\n }\n if (variant === 'soft') {\n if (color === 'default') return 'fill-transparent stroke-border/50'\n return `fill-transparent stroke-${color} opacity-20`\n }\n if (color === 'default') return 'fill-transparent stroke-border'\n return `fill-transparent stroke-${color} opacity-20`\n }\n\n // filled state\n if (variant === 'solid') {\n if (color === 'default') return 'fill-border stroke-border'\n return `fill-${color} stroke-${color}`\n }\n if (variant === 'soft') {\n if (color === 'default') return 'fill-border/50 stroke-border'\n return `fill-${color} opacity-20 stroke-${color}`\n }\n if (color === 'default') return 'fill-border stroke-border'\n return `fill-${color} stroke-${color}`\n}\n\nconst Rating = React.memo<RatingProps>(\n ({\n value: controlledValue,\n defaultValue = 0,\n count = 5,\n allowHalf = false,\n color = 'warning',\n size = 'md',\n variant = 'solid',\n onChange,\n disabled = false,\n readOnly = false,\n className,\n }) => {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [hoverValue, setHoverValue] = useState<number | null>(null)\n\n const value =\n controlledValue !== undefined ? controlledValue : internalValue\n const displayValue = hoverValue !== null ? hoverValue : value\n\n const handleStarClick = (index: number, isHalf: boolean) => {\n if (disabled || readOnly) return\n\n const newValue = isHalf ? index + 0.5 : index + 1\n\n if (controlledValue === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n\n const handleStarHover = (index: number, isHalf: boolean) => {\n if (disabled || readOnly) return\n const newValue = isHalf ? index + 0.5 : index + 1\n setHoverValue(newValue)\n }\n\n const handleMouseLeave = () => {\n setHoverValue(null)\n }\n\n const getStarFill = (index: number) => {\n const fillValue = displayValue - index\n if (fillValue >= 1) return 'full'\n if (fillValue > 0 && fillValue < 1) return 'half'\n return 'empty'\n }\n\n return (\n <div className={cn(ratingVariants({ size }), className)}>\n <div\n className=\"inline-flex items-center gap-0.5\"\n onMouseLeave={handleMouseLeave}\n >\n {Array.from({ length: count }, (_, index) => {\n const fillType = getStarFill(index)\n const isHovered =\n hoverValue !== null && index < Math.ceil(hoverValue)\n\n return (\n <div\n key={index}\n className={cn(\n 'relative inline-flex',\n !disabled && !readOnly && 'cursor-pointer',\n disabled && 'opacity-50 cursor-not-allowed',\n )}\n >\n {/* Left half */}\n {allowHalf && (\n <div\n className=\"absolute inset-0 w-1/2 z-10\"\n onClick={() => handleStarClick(index, true)}\n onMouseEnter={() => handleStarHover(index, true)}\n />\n )}\n {/* Right half or full star */}\n <div\n className={cn(\n 'absolute inset-0 z-10',\n allowHalf ? 'left-1/2' : 'left-0',\n )}\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n\n {/* Background star (empty) */}\n <Star\n size={starSizes[size]}\n className={cn(\n getStarClasses(color, variant, false, false),\n 'transition-colors',\n )}\n />\n\n {/* Foreground star (filled) */}\n {fillType !== 'empty' && (\n <Star\n size={starSizes[size]}\n className={cn(\n 'absolute top-0 left-0 transition-colors',\n getStarClasses(color, variant, true, isHovered),\n )}\n style={{\n clipPath:\n fillType === 'half'\n ? 'polygon(0 0, 50% 0, 50% 100%, 0 100%)'\n : 'none',\n }}\n />\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n)\n\nRating.displayName = 'Rating'\n\nexport type * from './types'\nexport default Rating\n"]}
@@ -0,0 +1,158 @@
1
+ import { getCheckboxColorClass } from './chunk-5UEWVFF6.js';
2
+ import { cn, iconSizes } from './chunk-YNNAOXU5.js';
3
+ import { cva } from 'class-variance-authority';
4
+ import { Check } from 'lucide-react';
5
+ import React, { useState } from 'react';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
+
8
+ var checkboxVariants = cva(
9
+ "appearance-none rounded border bg-background cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none",
10
+ {
11
+ variants: {
12
+ color: {
13
+ primary: "border-border checked:border-primary",
14
+ secondary: "border-border checked:border-secondary",
15
+ accent: "border-border checked:border-accent",
16
+ success: "border-border checked:border-success",
17
+ error: "border-border checked:border-error",
18
+ warning: "border-border checked:border-warning",
19
+ info: "border-border checked:border-info"
20
+ },
21
+ size: {
22
+ xs: "w-4 h-4",
23
+ sm: "w-[var(--checkbox-size-sm)] h-[var(--checkbox-size-sm)]",
24
+ md: "w-[var(--checkbox-size-md)] h-[var(--checkbox-size-md)]",
25
+ lg: "w-[var(--checkbox-size-lg)] h-[var(--checkbox-size-lg)]"
26
+ },
27
+ error: {
28
+ true: "border-error checked:border-error",
29
+ false: ""
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ color: "primary",
34
+ size: "md"
35
+ }
36
+ }
37
+ );
38
+ var Checkbox = React.memo(
39
+ ({
40
+ color = "primary",
41
+ size = "md",
42
+ label,
43
+ helperText,
44
+ error,
45
+ indeterminate = false,
46
+ className,
47
+ checked,
48
+ defaultChecked,
49
+ ref,
50
+ labelClassName,
51
+ ...props
52
+ }) => {
53
+ const [internalChecked, setInternalChecked] = useState(
54
+ defaultChecked ?? false
55
+ );
56
+ const internalRef = React.useRef(null);
57
+ const checkboxRef = ref || internalRef;
58
+ const isControlled = checked !== void 0;
59
+ const currentChecked = isControlled ? checked : internalChecked;
60
+ const onChange = React.useCallback(
61
+ (event) => {
62
+ if (!isControlled) {
63
+ setInternalChecked(event.target.checked);
64
+ }
65
+ props.onChange?.(event);
66
+ },
67
+ [isControlled, props.onChange]
68
+ );
69
+ React.useEffect(() => {
70
+ if (checkboxRef.current) {
71
+ checkboxRef.current.indeterminate = indeterminate;
72
+ }
73
+ }, [indeterminate, checkboxRef]);
74
+ const checkboxElement = /* @__PURE__ */ jsxs("div", { className: "relative inline-flex", children: [
75
+ /* @__PURE__ */ jsx(
76
+ "input",
77
+ {
78
+ ref: checkboxRef,
79
+ type: "checkbox",
80
+ className: cn(
81
+ checkboxVariants({ color, size, error: !!error }),
82
+ className
83
+ ),
84
+ "aria-checked": indeterminate ? "mixed" : currentChecked,
85
+ ...props,
86
+ onChange,
87
+ checked: currentChecked
88
+ }
89
+ ),
90
+ currentChecked && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none", children: indeterminate ? /* @__PURE__ */ jsx(
91
+ "div",
92
+ {
93
+ className: cn(
94
+ "w-[70%] h-[70%] rounded-xs border-2 border-background flex items-center justify-center",
95
+ getCheckboxColorClass(color)
96
+ )
97
+ }
98
+ ) : /* @__PURE__ */ jsx(
99
+ Check,
100
+ {
101
+ className: cn(
102
+ iconSizes[size],
103
+ color === "primary" && "text-primary",
104
+ color === "secondary" && "text-secondary",
105
+ color === "accent" && "text-accent",
106
+ color === "success" && "text-success",
107
+ color === "error" && "text-error",
108
+ color === "warning" && "text-warning",
109
+ color === "info" && "text-info"
110
+ )
111
+ }
112
+ ) })
113
+ ] });
114
+ if (!label && !helperText && !error) return checkboxElement;
115
+ return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
116
+ /* @__PURE__ */ jsxs(
117
+ "label",
118
+ {
119
+ className: cn(
120
+ "flex items-center gap-2",
121
+ !props.disabled && "cursor-pointer"
122
+ ),
123
+ children: [
124
+ checkboxElement,
125
+ label && /* @__PURE__ */ jsx(
126
+ "span",
127
+ {
128
+ className: cn(
129
+ "text-sm text-text-primary select-none",
130
+ error && "text-error",
131
+ props.disabled && "opacity-50",
132
+ labelClassName
133
+ ),
134
+ children: label
135
+ }
136
+ )
137
+ ]
138
+ }
139
+ ),
140
+ (helperText || error) && /* @__PURE__ */ jsx(
141
+ "p",
142
+ {
143
+ className: cn(
144
+ "mt-1 ml-0 text-xs",
145
+ error ? "text-error" : "text-text-secondary"
146
+ ),
147
+ children: error || helperText
148
+ }
149
+ )
150
+ ] });
151
+ }
152
+ );
153
+ Checkbox.displayName = "Checkbox";
154
+ var checkbox_default = Checkbox;
155
+
156
+ export { checkbox_default };
157
+ //# sourceMappingURL=chunk-H2HIBD5Y.js.map
158
+ //# sourceMappingURL=chunk-H2HIBD5Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/checkbox/index.tsx"],"names":[],"mappings":";;;;;;;AAQA,IAAM,gBAAA,GAAmB,GAAA;AAAA,EACvB,0HAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,sCAAA;AAAA,QACT,SAAA,EAAW,wCAAA;AAAA,QACX,MAAA,EAAQ,qCAAA;AAAA,QACR,OAAA,EAAS,sCAAA;AAAA,QACT,KAAA,EAAO,oCAAA;AAAA,QACP,OAAA,EAAS,sCAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,yDAAA;AAAA,QACJ,EAAA,EAAI,yDAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,mCAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,WAAW,KAAA,CAAM,IAAA;AAAA,EACrB,CAAC;AAAA,IACC,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,SAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,GAAA;AAAA,IACA,cAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,QAAA;AAAA,MAC5C,cAAA,IAAkB;AAAA,KACpB;AACA,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAyB,IAAI,CAAA;AACvD,IAAA,MAAM,cACH,GAAA,IAA6C,WAAA;AAGhD,IAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,IAAA,MAAM,cAAA,GAAiB,eAAe,OAAA,GAAU,eAAA;AAEhD,IAAA,MAAM,WAAW,KAAA,CAAM,WAAA;AAAA,MACrB,CAAC,KAAA,KAA+C;AAC9C,QAAA,IAAI,CAAC,YAAA,EAAc;AACjB,UAAA,kBAAA,CAAmB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,QACzC;AACA,QAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAAA,MACxB,CAAA;AAAA,MACA,CAAC,YAAA,EAAc,KAAA,CAAM,QAAQ;AAAA,KAC/B;AAEA,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,WAAA,CAAY,QAAQ,aAAA,GAAgB,aAAA;AAAA,MACtC;AAAA,IACF,CAAA,EAAG,CAAC,aAAA,EAAe,WAAW,CAAC,CAAA;AAE/B,IAAA,MAAM,eAAA,mBACJ,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,IAAA,EAAK,UAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,YACT,gBAAA,CAAiB,EAAE,KAAA,EAAO,IAAA,EAAM,OAAO,CAAC,CAAC,OAAO,CAAA;AAAA,YAChD;AAAA,WACF;AAAA,UACA,cAAA,EAAc,gBAAgB,OAAA,GAAU,cAAA;AAAA,UACvC,GAAG,KAAA;AAAA,UACJ,QAAA;AAAA,UACA,OAAA,EAAS;AAAA;AAAA,OACX;AAAA,MACC,cAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yEACZ,QAAA,EAAA,aAAA,mBACC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,wFAAA;AAAA,YACA,sBAAsB,KAAK;AAAA;AAC7B;AAAA,OACF,mBAEA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,UAAU,IAAI,CAAA;AAAA,YACd,UAAU,SAAA,IAAa,cAAA;AAAA,YACvB,UAAU,WAAA,IAAe,gBAAA;AAAA,YACzB,UAAU,QAAA,IAAY,aAAA;AAAA,YACtB,UAAU,SAAA,IAAa,cAAA;AAAA,YACvB,UAAU,OAAA,IAAW,YAAA;AAAA,YACrB,UAAU,SAAA,IAAa,cAAA;AAAA,YACvB,UAAU,MAAA,IAAU;AAAA;AACtB;AAAA,OACF,EAEJ;AAAA,KAAA,EAEJ,CAAA;AAGF,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,UAAA,IAAc,CAAC,OAAO,OAAO,eAAA;AAE5C,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,yBAAA;AAAA,YACA,CAAC,MAAM,QAAA,IAAY;AAAA,WACrB;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,eAAA;AAAA,YACA,KAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,uCAAA;AAAA,kBACA,KAAA,IAAS,YAAA;AAAA,kBACT,MAAM,QAAA,IAAY,YAAA;AAAA,kBAClB;AAAA,iBACF;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,OAEJ;AAAA,MAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,mBAAA;AAAA,YACA,QAAQ,YAAA,GAAe;AAAA,WACzB;AAAA,UAEC,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAGvB,IAAO,gBAAA,GAAQ","file":"chunk-H2HIBD5Y.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { Check } from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { cn, iconSizes } from '../utils'\nimport { getCheckboxColorClass } from '../variants'\nimport type { CheckboxProps } from './types'\n\nconst checkboxVariants = cva(\n 'appearance-none rounded border bg-background cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none',\n {\n variants: {\n color: {\n primary: 'border-border checked:border-primary',\n secondary: 'border-border checked:border-secondary',\n accent: 'border-border checked:border-accent',\n success: 'border-border checked:border-success',\n error: 'border-border checked:border-error',\n warning: 'border-border checked:border-warning',\n info: 'border-border checked:border-info',\n },\n size: {\n xs: 'w-4 h-4',\n sm: 'w-[var(--checkbox-size-sm)] h-[var(--checkbox-size-sm)]',\n md: 'w-[var(--checkbox-size-md)] h-[var(--checkbox-size-md)]',\n lg: 'w-[var(--checkbox-size-lg)] h-[var(--checkbox-size-lg)]',\n },\n error: {\n true: 'border-error checked:border-error',\n false: '',\n },\n },\n defaultVariants: {\n color: 'primary',\n size: 'md',\n },\n },\n)\n\nconst Checkbox = React.memo<CheckboxProps>(\n ({\n color = 'primary',\n size = 'md',\n label,\n helperText,\n error,\n indeterminate = false,\n className,\n checked,\n defaultChecked,\n ref,\n labelClassName,\n ...props\n }) => {\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false,\n )\n const internalRef = React.useRef<HTMLInputElement>(null)\n const checkboxRef =\n (ref as React.RefObject<HTMLInputElement>) || internalRef\n\n // Determine if controlled\n const isControlled = checked !== undefined\n const currentChecked = isControlled ? checked : internalChecked\n\n const onChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(event.target.checked)\n }\n props.onChange?.(event)\n },\n [isControlled, props.onChange],\n )\n\n React.useEffect(() => {\n if (checkboxRef.current) {\n checkboxRef.current.indeterminate = indeterminate\n }\n }, [indeterminate, checkboxRef])\n\n const checkboxElement = (\n <div className=\"relative inline-flex\">\n <input\n ref={checkboxRef}\n type=\"checkbox\"\n className={cn(\n checkboxVariants({ color, size, error: !!error }),\n className,\n )}\n aria-checked={indeterminate ? 'mixed' : currentChecked}\n {...props}\n onChange={onChange}\n checked={currentChecked}\n />\n {currentChecked && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n {indeterminate ? (\n <div\n className={cn(\n 'w-[70%] h-[70%] rounded-xs border-2 border-background flex items-center justify-center',\n getCheckboxColorClass(color),\n )}\n />\n ) : (\n <Check\n className={cn(\n iconSizes[size],\n color === 'primary' && 'text-primary',\n color === 'secondary' && 'text-secondary',\n color === 'accent' && 'text-accent',\n color === 'success' && 'text-success',\n color === 'error' && 'text-error',\n color === 'warning' && 'text-warning',\n color === 'info' && 'text-info',\n )}\n />\n )}\n </div>\n )}\n </div>\n )\n\n if (!label && !helperText && !error) return checkboxElement\n\n return (\n <div className=\"w-full\">\n <label\n className={cn(\n 'flex items-center gap-2',\n !props.disabled && 'cursor-pointer',\n )}\n >\n {checkboxElement}\n {label && (\n <span\n className={cn(\n 'text-sm text-text-primary select-none',\n error && 'text-error',\n props.disabled && 'opacity-50',\n labelClassName,\n )}\n >\n {label}\n </span>\n )}\n </label>\n {(helperText || error) && (\n <p\n className={cn(\n 'mt-1 ml-0 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nCheckbox.displayName = 'Checkbox'\n\nexport type * from './types'\nexport default Checkbox\n"]}
@@ -0,0 +1,53 @@
1
+ import { cn } from './chunk-YNNAOXU5.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import React from 'react';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var spinnerVariants = cva(
7
+ "inline-block border border-current border-t-transparent rounded-full animate-spin",
8
+ {
9
+ variants: {
10
+ size: {
11
+ xs: "w-3 h-3 border",
12
+ sm: "w-4 h-4 border",
13
+ md: "w-6 h-6 border-2",
14
+ lg: "w-8 h-8 border-2"
15
+ },
16
+ color: {
17
+ default: "text-text-primary",
18
+ primary: "text-primary",
19
+ secondary: "text-secondary",
20
+ accent: "text-accent",
21
+ success: "text-success",
22
+ error: "text-error",
23
+ warning: "text-warning",
24
+ info: "text-info"
25
+ }
26
+ },
27
+ defaultVariants: {
28
+ size: "sm",
29
+ color: "primary"
30
+ }
31
+ }
32
+ );
33
+ var Spinner = React.memo(
34
+ ({ size = "sm", color = "primary", label, className }) => {
35
+ return /* @__PURE__ */ jsxs("div", { className: cn("inline-flex flex-col items-center gap-2", className), children: [
36
+ /* @__PURE__ */ jsx(
37
+ "div",
38
+ {
39
+ className: spinnerVariants({ size, color }),
40
+ role: "status",
41
+ "aria-label": label || "Loading"
42
+ }
43
+ ),
44
+ label && /* @__PURE__ */ jsx("span", { className: "text-sm text-text-muted", children: label })
45
+ ] });
46
+ }
47
+ );
48
+ Spinner.displayName = "Spinner";
49
+ var spinner_default = Spinner;
50
+
51
+ export { Spinner, spinner_default };
52
+ //# sourceMappingURL=chunk-J3G5WWGR.js.map
53
+ //# sourceMappingURL=chunk-J3G5WWGR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/spinner/index.tsx"],"names":[],"mappings":";;;;;AAMA,IAAM,eAAA,GAAkB,GAAA;AAAA,EACtB,mFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,mBAAA;AAAA,QACT,OAAA,EAAS,cAAA;AAAA,QACT,SAAA,EAAW,gBAAA;AAAA,QACX,MAAA,EAAQ,aAAA;AAAA,QACR,OAAA,EAAS,cAAA;AAAA,QACT,KAAA,EAAO,YAAA;AAAA,QACP,OAAA,EAAS,cAAA;AAAA,QACT,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAEO,IAAM,UAAU,KAAA,CAAM,IAAA;AAAA,EAC3B,CAAC,EAAE,IAAA,GAAO,IAAA,EAAM,QAAQ,SAAA,EAAW,KAAA,EAAO,WAAU,KAAM;AACxD,IAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA,EACrE,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,eAAA,CAAgB,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,UAC1C,IAAA,EAAK,QAAA;AAAA,UACL,cAAY,KAAA,IAAS;AAAA;AAAA,OACvB;AAAA,MACC,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAA2B,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EAC7D,CAAA;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAGtB,IAAO,eAAA,GAAQ","file":"chunk-J3G5WWGR.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { SpinnerProps } from './types'\n\nconst spinnerVariants = cva(\n 'inline-block border border-current border-t-transparent rounded-full animate-spin',\n {\n variants: {\n size: {\n xs: 'w-3 h-3 border',\n sm: 'w-4 h-4 border',\n md: 'w-6 h-6 border-2',\n lg: 'w-8 h-8 border-2',\n },\n color: {\n default: 'text-text-primary',\n primary: 'text-primary',\n secondary: 'text-secondary',\n accent: 'text-accent',\n success: 'text-success',\n error: 'text-error',\n warning: 'text-warning',\n info: 'text-info',\n },\n },\n defaultVariants: {\n size: 'sm',\n color: 'primary',\n },\n },\n)\n\nexport const Spinner = React.memo<SpinnerProps>(\n ({ size = 'sm', color = 'primary', label, className }) => {\n return (\n <div className={cn('inline-flex flex-col items-center gap-2', className)}>\n <div\n className={spinnerVariants({ size, color })}\n role=\"status\"\n aria-label={label || 'Loading'}\n />\n {label && <span className=\"text-sm text-text-muted\">{label}</span>}\n </div>\n )\n },\n)\n\nSpinner.displayName = 'Spinner'\n\nexport type * from './types'\nexport default Spinner\n"]}