@zentauri-ui/zentauri-components 1.7.0 → 1.7.2

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 (136) hide show
  1. package/README.md +11 -5
  2. package/cli/index.mjs +1 -0
  3. package/cli/registry.json +3 -0
  4. package/dist/chunk-6QQUQLPB.js +107 -0
  5. package/dist/chunk-6QQUQLPB.js.map +1 -0
  6. package/dist/chunk-BC6M42HQ.mjs +251 -0
  7. package/dist/chunk-BC6M42HQ.mjs.map +1 -0
  8. package/dist/chunk-K6IZANTI.mjs +80 -0
  9. package/dist/chunk-K6IZANTI.mjs.map +1 -0
  10. package/dist/chunk-MTTXLC2V.mjs +100 -0
  11. package/dist/chunk-MTTXLC2V.mjs.map +1 -0
  12. package/dist/chunk-PHEUJ4EF.js +84 -0
  13. package/dist/chunk-PHEUJ4EF.js.map +1 -0
  14. package/dist/chunk-QSPXPU72.js +259 -0
  15. package/dist/chunk-QSPXPU72.js.map +1 -0
  16. package/dist/design-system/checkbox.d.ts +32 -0
  17. package/dist/design-system/checkbox.d.ts.map +1 -0
  18. package/dist/design-system/index.d.ts +3 -0
  19. package/dist/design-system/index.d.ts.map +1 -1
  20. package/dist/design-system/popover.d.ts +40 -0
  21. package/dist/design-system/popover.d.ts.map +1 -0
  22. package/dist/design-system/radio-group.d.ts +37 -0
  23. package/dist/design-system/radio-group.d.ts.map +1 -0
  24. package/dist/ui/checkbox/animated/animations.d.ts +32 -0
  25. package/dist/ui/checkbox/animated/animations.d.ts.map +1 -0
  26. package/dist/ui/checkbox/animated/checkbox-animated.d.ts +6 -0
  27. package/dist/ui/checkbox/animated/checkbox-animated.d.ts.map +1 -0
  28. package/dist/ui/checkbox/animated/index.d.ts +4 -0
  29. package/dist/ui/checkbox/animated/index.d.ts.map +1 -0
  30. package/dist/ui/checkbox/animated/types.d.ts +8 -0
  31. package/dist/ui/checkbox/animated/types.d.ts.map +1 -0
  32. package/dist/ui/checkbox/animated.js +153 -0
  33. package/dist/ui/checkbox/animated.js.map +1 -0
  34. package/dist/ui/checkbox/animated.mjs +150 -0
  35. package/dist/ui/checkbox/animated.mjs.map +1 -0
  36. package/dist/ui/checkbox/checkbox-base.d.ts +6 -0
  37. package/dist/ui/checkbox/checkbox-base.d.ts.map +1 -0
  38. package/dist/ui/checkbox/checkbox.d.ts +6 -0
  39. package/dist/ui/checkbox/checkbox.d.ts.map +1 -0
  40. package/dist/ui/checkbox/index.d.ts +4 -0
  41. package/dist/ui/checkbox/index.d.ts.map +1 -0
  42. package/dist/ui/checkbox/types.d.ts +19 -0
  43. package/dist/ui/checkbox/types.d.ts.map +1 -0
  44. package/dist/ui/checkbox/variants.d.ts +11 -0
  45. package/dist/ui/checkbox/variants.d.ts.map +1 -0
  46. package/dist/ui/checkbox.js +150 -0
  47. package/dist/ui/checkbox.js.map +1 -0
  48. package/dist/ui/checkbox.mjs +137 -0
  49. package/dist/ui/checkbox.mjs.map +1 -0
  50. package/dist/ui/popover/animated/animations.d.ts +3 -0
  51. package/dist/ui/popover/animated/animations.d.ts.map +1 -0
  52. package/dist/ui/popover/animated/index.d.ts +4 -0
  53. package/dist/ui/popover/animated/index.d.ts.map +1 -0
  54. package/dist/ui/popover/animated/popover-content-animated.d.ts +3 -0
  55. package/dist/ui/popover/animated/popover-content-animated.d.ts.map +1 -0
  56. package/dist/ui/popover/animated/types.d.ts +9 -0
  57. package/dist/ui/popover/animated/types.d.ts.map +1 -0
  58. package/dist/ui/popover/animated.js +67 -0
  59. package/dist/ui/popover/animated.js.map +1 -0
  60. package/dist/ui/popover/animated.mjs +64 -0
  61. package/dist/ui/popover/animated.mjs.map +1 -0
  62. package/dist/ui/popover/index.d.ts +4 -0
  63. package/dist/ui/popover/index.d.ts.map +1 -0
  64. package/dist/ui/popover/popover-base.d.ts +8 -0
  65. package/dist/ui/popover/popover-base.d.ts.map +1 -0
  66. package/dist/ui/popover/popover.d.ts +2 -0
  67. package/dist/ui/popover/popover.d.ts.map +1 -0
  68. package/dist/ui/popover/types.d.ts +34 -0
  69. package/dist/ui/popover/types.d.ts.map +1 -0
  70. package/dist/ui/popover/variants.d.ts +6 -0
  71. package/dist/ui/popover/variants.d.ts.map +1 -0
  72. package/dist/ui/popover.js +34 -0
  73. package/dist/ui/popover.js.map +1 -0
  74. package/dist/ui/popover.mjs +5 -0
  75. package/dist/ui/popover.mjs.map +1 -0
  76. package/dist/ui/radio-group/animated/animations.d.ts +32 -0
  77. package/dist/ui/radio-group/animated/animations.d.ts.map +1 -0
  78. package/dist/ui/radio-group/animated/index.d.ts +4 -0
  79. package/dist/ui/radio-group/animated/index.d.ts.map +1 -0
  80. package/dist/ui/radio-group/animated/radio-group-animated.d.ts +10 -0
  81. package/dist/ui/radio-group/animated/radio-group-animated.d.ts.map +1 -0
  82. package/dist/ui/radio-group/animated/types.d.ts +11 -0
  83. package/dist/ui/radio-group/animated/types.d.ts.map +1 -0
  84. package/dist/ui/radio-group/animated.js +177 -0
  85. package/dist/ui/radio-group/animated.js.map +1 -0
  86. package/dist/ui/radio-group/animated.mjs +173 -0
  87. package/dist/ui/radio-group/animated.mjs.map +1 -0
  88. package/dist/ui/radio-group/index.d.ts +4 -0
  89. package/dist/ui/radio-group/index.d.ts.map +1 -0
  90. package/dist/ui/radio-group/radio-group-context.d.ts +13 -0
  91. package/dist/ui/radio-group/radio-group-context.d.ts.map +1 -0
  92. package/dist/ui/radio-group/radio-group.d.ts +10 -0
  93. package/dist/ui/radio-group/radio-group.d.ts.map +1 -0
  94. package/dist/ui/radio-group/types.d.ts +26 -0
  95. package/dist/ui/radio-group/types.d.ts.map +1 -0
  96. package/dist/ui/radio-group/variants.d.ts +14 -0
  97. package/dist/ui/radio-group/variants.d.ts.map +1 -0
  98. package/dist/ui/radio-group.js +171 -0
  99. package/dist/ui/radio-group.js.map +1 -0
  100. package/dist/ui/radio-group.mjs +153 -0
  101. package/dist/ui/radio-group.mjs.map +1 -0
  102. package/package.json +1 -1
  103. package/src/design-system/checkbox.ts +47 -0
  104. package/src/design-system/index.ts +3 -0
  105. package/src/design-system/popover.ts +66 -0
  106. package/src/design-system/radio-group.ts +54 -0
  107. package/src/ui/checkbox/animated/animations.ts +12 -0
  108. package/src/ui/checkbox/animated/checkbox-animated.tsx +145 -0
  109. package/src/ui/checkbox/animated/index.ts +9 -0
  110. package/src/ui/checkbox/animated/types.ts +9 -0
  111. package/src/ui/checkbox/checkbox-base.tsx +134 -0
  112. package/src/ui/checkbox/checkbox.test.tsx +53 -0
  113. package/src/ui/checkbox/checkbox.tsx +8 -0
  114. package/src/ui/checkbox/index.ts +15 -0
  115. package/src/ui/checkbox/types.ts +40 -0
  116. package/src/ui/checkbox/variants.ts +50 -0
  117. package/src/ui/popover/animated/animations.ts +15 -0
  118. package/src/ui/popover/animated/index.ts +10 -0
  119. package/src/ui/popover/animated/popover-content-animated.tsx +54 -0
  120. package/src/ui/popover/animated/types.ts +18 -0
  121. package/src/ui/popover/index.ts +18 -0
  122. package/src/ui/popover/popover-base.tsx +261 -0
  123. package/src/ui/popover/popover.test.tsx +84 -0
  124. package/src/ui/popover/popover.tsx +8 -0
  125. package/src/ui/popover/types.ts +38 -0
  126. package/src/ui/popover/variants.ts +21 -0
  127. package/src/ui/radio-group/animated/animations.ts +12 -0
  128. package/src/ui/radio-group/animated/index.ts +10 -0
  129. package/src/ui/radio-group/animated/radio-group-animated.tsx +173 -0
  130. package/src/ui/radio-group/animated/types.ts +13 -0
  131. package/src/ui/radio-group/index.ts +19 -0
  132. package/src/ui/radio-group/radio-group-context.ts +23 -0
  133. package/src/ui/radio-group/radio-group.test.tsx +61 -0
  134. package/src/ui/radio-group/radio-group.tsx +159 -0
  135. package/src/ui/radio-group/types.ts +62 -0
  136. package/src/ui/radio-group/variants.ts +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"popover.mjs"}
@@ -0,0 +1,32 @@
1
+ export declare const radioGroupAnimationPresets: {
2
+ readonly pop: {
3
+ readonly initial: {
4
+ readonly scale: 0.35;
5
+ readonly opacity: 0;
6
+ };
7
+ readonly animate: {
8
+ readonly scale: 1;
9
+ readonly opacity: 1;
10
+ };
11
+ readonly transition: {
12
+ readonly type: "spring";
13
+ readonly stiffness: 520;
14
+ readonly damping: 28;
15
+ };
16
+ };
17
+ readonly fade: {
18
+ readonly initial: {
19
+ readonly scale: 0.85;
20
+ readonly opacity: 0;
21
+ };
22
+ readonly animate: {
23
+ readonly scale: 1;
24
+ readonly opacity: 1;
25
+ };
26
+ readonly transition: {
27
+ readonly duration: 0.16;
28
+ readonly ease: "easeOut";
29
+ };
30
+ };
31
+ };
32
+ //# sourceMappingURL=animations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../../../src/ui/radio-group/animated/animations.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAW7B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { RadioGroupAnimated, RadioGroupItemAnimated } from "./radio-group-animated";
2
+ export type { RadioGroupAnimatedProps, RadioGroupAnimation, RadioGroupAnimationPresets, RadioGroupItemAnimatedProps, } from "./types";
3
+ export { radioGroupAnimationPresets } from "./animations";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/radio-group/animated/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { RadioGroupAnimatedProps, RadioGroupItemAnimatedProps } from "./types";
2
+ export declare function RadioGroupAnimated(props: RadioGroupAnimatedProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace RadioGroupAnimated {
4
+ var displayName: string;
5
+ }
6
+ export declare function RadioGroupItemAnimated(props: RadioGroupItemAnimatedProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare namespace RadioGroupItemAnimated {
8
+ var displayName: string;
9
+ }
10
+ //# sourceMappingURL=radio-group-animated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group-animated.d.ts","sourceRoot":"","sources":["../../../../src/ui/radio-group/animated/radio-group-animated.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAYjB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAwDhE;yBAxDe,kBAAkB;;;AA4DlC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,2CAuFxE;yBAvFe,sBAAsB"}
@@ -0,0 +1,11 @@
1
+ import type { RadioGroupItemProps, RadioGroupProps } from "../types";
2
+ import type { radioGroupAnimationPresets } from "./animations";
3
+ export type RadioGroupAnimation = keyof typeof radioGroupAnimationPresets;
4
+ export type RadioGroupAnimationPresets = typeof radioGroupAnimationPresets;
5
+ export type RadioGroupAnimatedProps = RadioGroupProps & {
6
+ animation?: RadioGroupAnimation;
7
+ };
8
+ export type RadioGroupItemAnimatedProps = RadioGroupItemProps & {
9
+ animation?: RadioGroupAnimation;
10
+ };
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/radio-group/animated/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAC1E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC;AAE3E,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACtD,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,GAAG;IAC9D,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,CAAC"}
@@ -0,0 +1,177 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunk6QQUQLPB_js = require('../../chunk-6QQUQLPB.js');
5
+ var chunkZS5756ZC_js = require('../../chunk-ZS5756ZC.js');
6
+ var framerMotion = require('framer-motion');
7
+ var react = require('react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ // src/ui/radio-group/animated/animations.ts
11
+ var radioGroupAnimationPresets = {
12
+ pop: {
13
+ initial: { scale: 0.35, opacity: 0 },
14
+ animate: { scale: 1, opacity: 1 },
15
+ transition: { type: "spring", stiffness: 520, damping: 28 }
16
+ },
17
+ fade: {
18
+ initial: { scale: 0.85, opacity: 0 },
19
+ animate: { scale: 1, opacity: 1 },
20
+ transition: { duration: 0.16, ease: "easeOut" }
21
+ }
22
+ };
23
+ function RadioGroupAnimated(props) {
24
+ const {
25
+ className,
26
+ value,
27
+ defaultValue,
28
+ name,
29
+ disabled,
30
+ required,
31
+ onValueChange,
32
+ orientation,
33
+ appearance,
34
+ size,
35
+ children,
36
+ ref,
37
+ animation: _animation,
38
+ ...rest
39
+ } = props;
40
+ const generatedName = react.useId();
41
+ const isControlled = value !== void 0;
42
+ const [uncontrolled, setUncontrolled] = react.useState(defaultValue);
43
+ const resolvedValue = isControlled ? value : uncontrolled;
44
+ const setValue = react.useCallback(
45
+ (next) => {
46
+ if (!isControlled) {
47
+ setUncontrolled(next);
48
+ }
49
+ onValueChange?.(next);
50
+ },
51
+ [isControlled, onValueChange]
52
+ );
53
+ return /* @__PURE__ */ jsxRuntime.jsx(
54
+ chunk6QQUQLPB_js.RadioGroupContext.Provider,
55
+ {
56
+ value: {
57
+ value: resolvedValue,
58
+ name: name ?? generatedName,
59
+ disabled,
60
+ required,
61
+ appearance: appearance ?? void 0,
62
+ size: size ?? void 0,
63
+ onValueChange: setValue
64
+ },
65
+ children: /* @__PURE__ */ jsxRuntime.jsx(
66
+ "div",
67
+ {
68
+ ref,
69
+ role: "radiogroup",
70
+ "data-slot": "radio-group",
71
+ "data-orientation": orientation ?? "vertical",
72
+ className: chunkZS5756ZC_js.cn(chunk6QQUQLPB_js.radioGroupRootVariants({ orientation }), className),
73
+ ...rest,
74
+ children
75
+ }
76
+ )
77
+ }
78
+ );
79
+ }
80
+ RadioGroupAnimated.displayName = "RadioGroup";
81
+ function RadioGroupItemAnimated(props) {
82
+ const {
83
+ className,
84
+ rootClassName,
85
+ controlClassName,
86
+ indicatorClassName,
87
+ value,
88
+ appearance: appearanceProp,
89
+ size: sizeProp,
90
+ disabled: disabledProp,
91
+ required: requiredProp,
92
+ children,
93
+ label,
94
+ id,
95
+ ref,
96
+ "aria-label": ariaLabel,
97
+ animation = "pop",
98
+ ...rest
99
+ } = props;
100
+ const generatedId = react.useId();
101
+ const context = chunk6QQUQLPB_js.useRadioGroupContext();
102
+ const controlId = id ?? generatedId;
103
+ const checked = context?.value === value;
104
+ const disabled = disabledProp ?? context?.disabled;
105
+ const required = requiredProp ?? context?.required;
106
+ const appearance = appearanceProp ?? context?.appearance;
107
+ const size = sizeProp ?? context?.size;
108
+ const labelContent = label ?? children;
109
+ const hasVisibleLabel = labelContent !== void 0 && labelContent !== null && labelContent !== false;
110
+ const motionPreset = radioGroupAnimationPresets[animation];
111
+ return /* @__PURE__ */ jsxRuntime.jsxs(
112
+ "label",
113
+ {
114
+ className: chunkZS5756ZC_js.cn(chunk6QQUQLPB_js.radioGroupItemVariants({ size }), rootClassName, className),
115
+ "data-disabled": disabled ? "true" : void 0,
116
+ "data-state": checked ? "checked" : "unchecked",
117
+ htmlFor: controlId,
118
+ children: [
119
+ /* @__PURE__ */ jsxRuntime.jsx(
120
+ "input",
121
+ {
122
+ ref,
123
+ id: controlId,
124
+ type: "radio",
125
+ "data-slot": "radio-group-item",
126
+ className: "peer sr-only",
127
+ name: context?.name,
128
+ value,
129
+ checked,
130
+ disabled,
131
+ required,
132
+ "aria-label": ariaLabel ?? (hasVisibleLabel ? void 0 : value),
133
+ onChange: (event) => {
134
+ if (event.currentTarget.checked) {
135
+ context?.onValueChange(value);
136
+ }
137
+ },
138
+ ...rest
139
+ }
140
+ ),
141
+ /* @__PURE__ */ jsxRuntime.jsx(
142
+ "span",
143
+ {
144
+ "aria-hidden": "true",
145
+ className: chunkZS5756ZC_js.cn(
146
+ chunk6QQUQLPB_js.radioGroupControlVariants({ appearance, size }),
147
+ controlClassName
148
+ ),
149
+ "data-slot": "radio-group-control",
150
+ children: checked && /* @__PURE__ */ jsxRuntime.jsx(
151
+ framerMotion.motion.span,
152
+ {
153
+ className: chunkZS5756ZC_js.cn(
154
+ chunk6QQUQLPB_js.radioGroupIndicatorVariants({ size }),
155
+ "opacity-100",
156
+ indicatorClassName
157
+ ),
158
+ "data-slot": "radio-group-indicator",
159
+ initial: motionPreset.initial,
160
+ animate: motionPreset.animate,
161
+ transition: motionPreset.transition
162
+ }
163
+ )
164
+ }
165
+ ),
166
+ hasVisibleLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 leading-6", "data-slot": "radio-group-label", children: labelContent })
167
+ ]
168
+ }
169
+ );
170
+ }
171
+ RadioGroupItemAnimated.displayName = "RadioGroupItem";
172
+
173
+ exports.RadioGroupAnimated = RadioGroupAnimated;
174
+ exports.RadioGroupItemAnimated = RadioGroupItemAnimated;
175
+ exports.radioGroupAnimationPresets = radioGroupAnimationPresets;
176
+ //# sourceMappingURL=animated.js.map
177
+ //# sourceMappingURL=animated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/radio-group/animated/animations.ts","../../../src/ui/radio-group/animated/radio-group-animated.tsx"],"names":["useId","useState","useCallback","jsx","RadioGroupContext","cn","radioGroupRootVariants","useRadioGroupContext","jsxs","radioGroupItemVariants","radioGroupControlVariants","motion","radioGroupIndicatorVariants"],"mappings":"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","file":"animated.js","sourcesContent":["export const radioGroupAnimationPresets = {\n pop: {\n initial: { scale: 0.35, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { type: \"spring\", stiffness: 520, damping: 28 },\n },\n fade: {\n initial: { scale: 0.85, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { duration: 0.16, ease: \"easeOut\" },\n },\n} as const;\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { useCallback, useId, useState } from \"react\";\n\nimport { cn } from \"../../../lib/utils\";\n\nimport { radioGroupAnimationPresets } from \"./animations\";\nimport type {\n RadioGroupAnimatedProps,\n RadioGroupItemAnimatedProps,\n} from \"./types\";\nimport {\n RadioGroupContext,\n useRadioGroupContext,\n} from \"../radio-group-context\";\nimport {\n radioGroupControlVariants,\n radioGroupIndicatorVariants,\n radioGroupItemVariants,\n radioGroupRootVariants,\n} from \"../variants\";\n\nexport function RadioGroupAnimated(props: RadioGroupAnimatedProps) {\n const {\n className,\n value,\n defaultValue,\n name,\n disabled,\n required,\n onValueChange,\n orientation,\n appearance,\n size,\n children,\n ref,\n animation: _animation,\n ...rest\n } = props;\n const generatedName = useId();\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const resolvedValue = isControlled ? value : uncontrolled;\n\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) {\n setUncontrolled(next);\n }\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n return (\n <RadioGroupContext.Provider\n value={{\n value: resolvedValue,\n name: name ?? generatedName,\n disabled,\n required,\n appearance: appearance ?? undefined,\n size: size ?? undefined,\n onValueChange: setValue,\n }}\n >\n <div\n ref={ref}\n role=\"radiogroup\"\n data-slot=\"radio-group\"\n data-orientation={orientation ?? \"vertical\"}\n className={cn(radioGroupRootVariants({ orientation }), className)}\n {...rest}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n}\n\nRadioGroupAnimated.displayName = \"RadioGroup\";\n\nexport function RadioGroupItemAnimated(props: RadioGroupItemAnimatedProps) {\n const {\n className,\n rootClassName,\n controlClassName,\n indicatorClassName,\n value,\n appearance: appearanceProp,\n size: sizeProp,\n disabled: disabledProp,\n required: requiredProp,\n children,\n label,\n id,\n ref,\n \"aria-label\": ariaLabel,\n animation = \"pop\",\n ...rest\n } = props;\n const generatedId = useId();\n const context = useRadioGroupContext();\n const controlId = id ?? generatedId;\n const checked = context?.value === value;\n const disabled = disabledProp ?? context?.disabled;\n const required = requiredProp ?? context?.required;\n const appearance = appearanceProp ?? context?.appearance;\n const size = sizeProp ?? context?.size;\n const labelContent = label ?? children;\n const hasVisibleLabel =\n labelContent !== undefined && labelContent !== null && labelContent !== false;\n const motionPreset = radioGroupAnimationPresets[animation];\n\n return (\n <label\n className={cn(radioGroupItemVariants({ size }), rootClassName, className)}\n data-disabled={disabled ? \"true\" : undefined}\n data-state={checked ? \"checked\" : \"unchecked\"}\n htmlFor={controlId}\n >\n <input\n ref={ref}\n id={controlId}\n type=\"radio\"\n data-slot=\"radio-group-item\"\n className=\"peer sr-only\"\n name={context?.name}\n value={value}\n checked={checked}\n disabled={disabled}\n required={required}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : value)}\n onChange={(event) => {\n if (event.currentTarget.checked) {\n context?.onValueChange(value);\n }\n }}\n {...rest}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n radioGroupControlVariants({ appearance, size }),\n controlClassName,\n )}\n data-slot=\"radio-group-control\"\n >\n {checked && (\n <motion.span\n className={cn(\n radioGroupIndicatorVariants({ size }),\n \"opacity-100\",\n indicatorClassName,\n )}\n data-slot=\"radio-group-indicator\"\n initial={motionPreset.initial}\n animate={motionPreset.animate}\n transition={motionPreset.transition}\n />\n )}\n </span>\n {hasVisibleLabel && (\n <span className=\"min-w-0 leading-6\" data-slot=\"radio-group-label\">\n {labelContent}\n </span>\n )}\n </label>\n );\n}\n\nRadioGroupItemAnimated.displayName = \"RadioGroupItem\";\n"]}
@@ -0,0 +1,173 @@
1
+ "use client";
2
+ import { RadioGroupContext, radioGroupRootVariants, useRadioGroupContext, radioGroupIndicatorVariants, radioGroupControlVariants, radioGroupItemVariants } from '../../chunk-MTTXLC2V.mjs';
3
+ import { cn } from '../../chunk-4D54YOL6.mjs';
4
+ import { motion } from 'framer-motion';
5
+ import { useId, useState, useCallback } from 'react';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ // src/ui/radio-group/animated/animations.ts
9
+ var radioGroupAnimationPresets = {
10
+ pop: {
11
+ initial: { scale: 0.35, opacity: 0 },
12
+ animate: { scale: 1, opacity: 1 },
13
+ transition: { type: "spring", stiffness: 520, damping: 28 }
14
+ },
15
+ fade: {
16
+ initial: { scale: 0.85, opacity: 0 },
17
+ animate: { scale: 1, opacity: 1 },
18
+ transition: { duration: 0.16, ease: "easeOut" }
19
+ }
20
+ };
21
+ function RadioGroupAnimated(props) {
22
+ const {
23
+ className,
24
+ value,
25
+ defaultValue,
26
+ name,
27
+ disabled,
28
+ required,
29
+ onValueChange,
30
+ orientation,
31
+ appearance,
32
+ size,
33
+ children,
34
+ ref,
35
+ animation: _animation,
36
+ ...rest
37
+ } = props;
38
+ const generatedName = useId();
39
+ const isControlled = value !== void 0;
40
+ const [uncontrolled, setUncontrolled] = useState(defaultValue);
41
+ const resolvedValue = isControlled ? value : uncontrolled;
42
+ const setValue = useCallback(
43
+ (next) => {
44
+ if (!isControlled) {
45
+ setUncontrolled(next);
46
+ }
47
+ onValueChange?.(next);
48
+ },
49
+ [isControlled, onValueChange]
50
+ );
51
+ return /* @__PURE__ */ jsx(
52
+ RadioGroupContext.Provider,
53
+ {
54
+ value: {
55
+ value: resolvedValue,
56
+ name: name ?? generatedName,
57
+ disabled,
58
+ required,
59
+ appearance: appearance ?? void 0,
60
+ size: size ?? void 0,
61
+ onValueChange: setValue
62
+ },
63
+ children: /* @__PURE__ */ jsx(
64
+ "div",
65
+ {
66
+ ref,
67
+ role: "radiogroup",
68
+ "data-slot": "radio-group",
69
+ "data-orientation": orientation ?? "vertical",
70
+ className: cn(radioGroupRootVariants({ orientation }), className),
71
+ ...rest,
72
+ children
73
+ }
74
+ )
75
+ }
76
+ );
77
+ }
78
+ RadioGroupAnimated.displayName = "RadioGroup";
79
+ function RadioGroupItemAnimated(props) {
80
+ const {
81
+ className,
82
+ rootClassName,
83
+ controlClassName,
84
+ indicatorClassName,
85
+ value,
86
+ appearance: appearanceProp,
87
+ size: sizeProp,
88
+ disabled: disabledProp,
89
+ required: requiredProp,
90
+ children,
91
+ label,
92
+ id,
93
+ ref,
94
+ "aria-label": ariaLabel,
95
+ animation = "pop",
96
+ ...rest
97
+ } = props;
98
+ const generatedId = useId();
99
+ const context = useRadioGroupContext();
100
+ const controlId = id ?? generatedId;
101
+ const checked = context?.value === value;
102
+ const disabled = disabledProp ?? context?.disabled;
103
+ const required = requiredProp ?? context?.required;
104
+ const appearance = appearanceProp ?? context?.appearance;
105
+ const size = sizeProp ?? context?.size;
106
+ const labelContent = label ?? children;
107
+ const hasVisibleLabel = labelContent !== void 0 && labelContent !== null && labelContent !== false;
108
+ const motionPreset = radioGroupAnimationPresets[animation];
109
+ return /* @__PURE__ */ jsxs(
110
+ "label",
111
+ {
112
+ className: cn(radioGroupItemVariants({ size }), rootClassName, className),
113
+ "data-disabled": disabled ? "true" : void 0,
114
+ "data-state": checked ? "checked" : "unchecked",
115
+ htmlFor: controlId,
116
+ children: [
117
+ /* @__PURE__ */ jsx(
118
+ "input",
119
+ {
120
+ ref,
121
+ id: controlId,
122
+ type: "radio",
123
+ "data-slot": "radio-group-item",
124
+ className: "peer sr-only",
125
+ name: context?.name,
126
+ value,
127
+ checked,
128
+ disabled,
129
+ required,
130
+ "aria-label": ariaLabel ?? (hasVisibleLabel ? void 0 : value),
131
+ onChange: (event) => {
132
+ if (event.currentTarget.checked) {
133
+ context?.onValueChange(value);
134
+ }
135
+ },
136
+ ...rest
137
+ }
138
+ ),
139
+ /* @__PURE__ */ jsx(
140
+ "span",
141
+ {
142
+ "aria-hidden": "true",
143
+ className: cn(
144
+ radioGroupControlVariants({ appearance, size }),
145
+ controlClassName
146
+ ),
147
+ "data-slot": "radio-group-control",
148
+ children: checked && /* @__PURE__ */ jsx(
149
+ motion.span,
150
+ {
151
+ className: cn(
152
+ radioGroupIndicatorVariants({ size }),
153
+ "opacity-100",
154
+ indicatorClassName
155
+ ),
156
+ "data-slot": "radio-group-indicator",
157
+ initial: motionPreset.initial,
158
+ animate: motionPreset.animate,
159
+ transition: motionPreset.transition
160
+ }
161
+ )
162
+ }
163
+ ),
164
+ hasVisibleLabel && /* @__PURE__ */ jsx("span", { className: "min-w-0 leading-6", "data-slot": "radio-group-label", children: labelContent })
165
+ ]
166
+ }
167
+ );
168
+ }
169
+ RadioGroupItemAnimated.displayName = "RadioGroupItem";
170
+
171
+ export { RadioGroupAnimated, RadioGroupItemAnimated, radioGroupAnimationPresets };
172
+ //# sourceMappingURL=animated.mjs.map
173
+ //# sourceMappingURL=animated.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/radio-group/animated/animations.ts","../../../src/ui/radio-group/animated/radio-group-animated.tsx"],"names":[],"mappings":"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","file":"animated.mjs","sourcesContent":["export const radioGroupAnimationPresets = {\n pop: {\n initial: { scale: 0.35, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { type: \"spring\", stiffness: 520, damping: 28 },\n },\n fade: {\n initial: { scale: 0.85, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { duration: 0.16, ease: \"easeOut\" },\n },\n} as const;\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { useCallback, useId, useState } from \"react\";\n\nimport { cn } from \"../../../lib/utils\";\n\nimport { radioGroupAnimationPresets } from \"./animations\";\nimport type {\n RadioGroupAnimatedProps,\n RadioGroupItemAnimatedProps,\n} from \"./types\";\nimport {\n RadioGroupContext,\n useRadioGroupContext,\n} from \"../radio-group-context\";\nimport {\n radioGroupControlVariants,\n radioGroupIndicatorVariants,\n radioGroupItemVariants,\n radioGroupRootVariants,\n} from \"../variants\";\n\nexport function RadioGroupAnimated(props: RadioGroupAnimatedProps) {\n const {\n className,\n value,\n defaultValue,\n name,\n disabled,\n required,\n onValueChange,\n orientation,\n appearance,\n size,\n children,\n ref,\n animation: _animation,\n ...rest\n } = props;\n const generatedName = useId();\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const resolvedValue = isControlled ? value : uncontrolled;\n\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) {\n setUncontrolled(next);\n }\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n return (\n <RadioGroupContext.Provider\n value={{\n value: resolvedValue,\n name: name ?? generatedName,\n disabled,\n required,\n appearance: appearance ?? undefined,\n size: size ?? undefined,\n onValueChange: setValue,\n }}\n >\n <div\n ref={ref}\n role=\"radiogroup\"\n data-slot=\"radio-group\"\n data-orientation={orientation ?? \"vertical\"}\n className={cn(radioGroupRootVariants({ orientation }), className)}\n {...rest}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n}\n\nRadioGroupAnimated.displayName = \"RadioGroup\";\n\nexport function RadioGroupItemAnimated(props: RadioGroupItemAnimatedProps) {\n const {\n className,\n rootClassName,\n controlClassName,\n indicatorClassName,\n value,\n appearance: appearanceProp,\n size: sizeProp,\n disabled: disabledProp,\n required: requiredProp,\n children,\n label,\n id,\n ref,\n \"aria-label\": ariaLabel,\n animation = \"pop\",\n ...rest\n } = props;\n const generatedId = useId();\n const context = useRadioGroupContext();\n const controlId = id ?? generatedId;\n const checked = context?.value === value;\n const disabled = disabledProp ?? context?.disabled;\n const required = requiredProp ?? context?.required;\n const appearance = appearanceProp ?? context?.appearance;\n const size = sizeProp ?? context?.size;\n const labelContent = label ?? children;\n const hasVisibleLabel =\n labelContent !== undefined && labelContent !== null && labelContent !== false;\n const motionPreset = radioGroupAnimationPresets[animation];\n\n return (\n <label\n className={cn(radioGroupItemVariants({ size }), rootClassName, className)}\n data-disabled={disabled ? \"true\" : undefined}\n data-state={checked ? \"checked\" : \"unchecked\"}\n htmlFor={controlId}\n >\n <input\n ref={ref}\n id={controlId}\n type=\"radio\"\n data-slot=\"radio-group-item\"\n className=\"peer sr-only\"\n name={context?.name}\n value={value}\n checked={checked}\n disabled={disabled}\n required={required}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : value)}\n onChange={(event) => {\n if (event.currentTarget.checked) {\n context?.onValueChange(value);\n }\n }}\n {...rest}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n radioGroupControlVariants({ appearance, size }),\n controlClassName,\n )}\n data-slot=\"radio-group-control\"\n >\n {checked && (\n <motion.span\n className={cn(\n radioGroupIndicatorVariants({ size }),\n \"opacity-100\",\n indicatorClassName,\n )}\n data-slot=\"radio-group-indicator\"\n initial={motionPreset.initial}\n animate={motionPreset.animate}\n transition={motionPreset.transition}\n />\n )}\n </span>\n {hasVisibleLabel && (\n <span className=\"min-w-0 leading-6\" data-slot=\"radio-group-label\">\n {labelContent}\n </span>\n )}\n </label>\n );\n}\n\nRadioGroupItemAnimated.displayName = \"RadioGroupItem\";\n"]}
@@ -0,0 +1,4 @@
1
+ export { RadioGroup, RadioGroupItem } from "./radio-group";
2
+ export type { RadioGroupAppearance, RadioGroupControlVariantProps, RadioGroupIndicatorVariantProps, RadioGroupItemProps, RadioGroupItemVariantProps, RadioGroupProps, RadioGroupRootVariantProps, RadioGroupSize, } from "./types";
3
+ export { radioGroupControlVariants, radioGroupIndicatorVariants, radioGroupItemVariants, radioGroupRootVariants, } from "./variants";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/radio-group/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EACV,oBAAoB,EACpB,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,0BAA0B,EAC1B,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { RadioGroupAppearance, RadioGroupSize } from "./types";
2
+ export type RadioGroupContextValue = {
3
+ value: string | undefined;
4
+ name: string;
5
+ disabled?: boolean;
6
+ required?: boolean;
7
+ appearance?: RadioGroupAppearance;
8
+ size?: RadioGroupSize;
9
+ onValueChange: (value: string) => void;
10
+ };
11
+ export declare const RadioGroupContext: import("react").Context<RadioGroupContextValue | null>;
12
+ export declare function useRadioGroupContext(): RadioGroupContextValue | null;
13
+ //# sourceMappingURL=radio-group-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group-context.d.ts","sourceRoot":"","sources":["../../../src/ui/radio-group/radio-group-context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,iBAAiB,wDAE7B,CAAC;AAEF,wBAAgB,oBAAoB,kCAEnC"}
@@ -0,0 +1,10 @@
1
+ import type { RadioGroupItemProps, RadioGroupProps } from "./types";
2
+ export declare function RadioGroup(props: RadioGroupProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace RadioGroup {
4
+ var displayName: string;
5
+ }
6
+ export declare function RadioGroupItem(props: RadioGroupItemProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare namespace RadioGroupItem {
8
+ var displayName: string;
9
+ }
10
+ //# sourceMappingURL=radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../../src/ui/radio-group/radio-group.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQpE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAuDhD;yBAvDe,UAAU;;;AA2D1B,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA+ExD;yBA/Ee,cAAc"}
@@ -0,0 +1,26 @@
1
+ import type { VariantProps } from "class-variance-authority";
2
+ import type { ComponentPropsWithRef, ReactNode } from "react";
3
+ import type { radioGroupControlVariants, radioGroupIndicatorVariants, radioGroupItemVariants, radioGroupRootVariants } from "./variants";
4
+ export type RadioGroupRootVariantProps = VariantProps<typeof radioGroupRootVariants>;
5
+ export type RadioGroupItemVariantProps = VariantProps<typeof radioGroupItemVariants>;
6
+ export type RadioGroupControlVariantProps = VariantProps<typeof radioGroupControlVariants>;
7
+ export type RadioGroupIndicatorVariantProps = VariantProps<typeof radioGroupIndicatorVariants>;
8
+ export type RadioGroupAppearance = NonNullable<RadioGroupControlVariantProps["appearance"]>;
9
+ export type RadioGroupSize = NonNullable<RadioGroupItemVariantProps["size"]>;
10
+ export type RadioGroupProps = RadioGroupRootVariantProps & Pick<RadioGroupControlVariantProps, "appearance"> & RadioGroupItemVariantProps & Omit<ComponentPropsWithRef<"div">, "defaultValue" | "dir" | "onChange" | "role"> & {
11
+ value?: string;
12
+ defaultValue?: string;
13
+ name?: string;
14
+ disabled?: boolean;
15
+ required?: boolean;
16
+ onValueChange?: (value: string) => void;
17
+ };
18
+ export type RadioGroupItemProps = RadioGroupItemVariantProps & RadioGroupControlVariantProps & Omit<ComponentPropsWithRef<"input">, "type" | "size" | "name" | "checked" | "defaultChecked" | "onChange" | "children"> & {
19
+ value: string;
20
+ label?: ReactNode;
21
+ children?: ReactNode;
22
+ rootClassName?: string;
23
+ controlClassName?: string;
24
+ indicatorClassName?: string;
25
+ };
26
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/radio-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,0BAA0B,GAAG,YAAY,CACnD,OAAO,sBAAsB,CAC9B,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,YAAY,CACnD,OAAO,sBAAsB,CAC9B,CAAC;AACF,MAAM,MAAM,6BAA6B,GAAG,YAAY,CACtD,OAAO,yBAAyB,CACjC,CAAC;AACF,MAAM,MAAM,+BAA+B,GAAG,YAAY,CACxD,OAAO,2BAA2B,CACnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,6BAA6B,CAAC,YAAY,CAAC,CAC5C,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7E,MAAM,MAAM,eAAe,GAAG,0BAA0B,GACtD,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,GACjD,0BAA0B,GAC1B,IAAI,CACF,qBAAqB,CAAC,KAAK,CAAC,EAC5B,cAAc,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAC7C,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEJ,MAAM,MAAM,mBAAmB,GAAG,0BAA0B,GAC1D,6BAA6B,GAC7B,IAAI,CACF,qBAAqB,CAAC,OAAO,CAAC,EAC5B,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,GACT,gBAAgB,GAChB,UAAU,GACV,UAAU,CACb,GAAG;IACF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare const radioGroupRootVariants: (props?: ({
2
+ orientation?: "horizontal" | "vertical" | null | undefined;
3
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
4
+ export declare const radioGroupItemVariants: (props?: ({
5
+ size?: "md" | "sm" | "lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export declare const radioGroupControlVariants: (props?: ({
8
+ appearance?: "default" | "violet" | "amber" | "indigo" | "pink" | "error" | "success" | "warning" | "info" | null | undefined;
9
+ size?: "md" | "sm" | "lg" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
+ export declare const radioGroupIndicatorVariants: (props?: ({
12
+ size?: "md" | "sm" | "lg" | null | undefined;
13
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
+ //# sourceMappingURL=variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/ui/radio-group/variants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,sBAAsB;;8EAOjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;8EAWjC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;8EAapC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;8EAWtC,CAAC"}