@zentauri-ui/zentauri-components 0.0.84 → 0.0.92

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 (144) hide show
  1. package/README.md +47 -29
  2. package/dist/chunk-BZSIXBA7.js +70 -0
  3. package/dist/chunk-BZSIXBA7.js.map +1 -0
  4. package/dist/chunk-E5UX537J.js +11 -0
  5. package/dist/chunk-E5UX537J.js.map +1 -0
  6. package/dist/chunk-MEWYFWBX.mjs +14 -0
  7. package/dist/chunk-MEWYFWBX.mjs.map +1 -0
  8. package/dist/chunk-VJHD7QZH.mjs +73 -0
  9. package/dist/chunk-VJHD7QZH.mjs.map +1 -0
  10. package/dist/ui/accordion.d.mts +70 -0
  11. package/dist/ui/accordion.d.ts +70 -0
  12. package/dist/ui/accordion.js +280 -0
  13. package/dist/ui/accordion.js.map +1 -0
  14. package/dist/ui/accordion.mjs +282 -0
  15. package/dist/ui/accordion.mjs.map +1 -0
  16. package/dist/ui/alert.d.mts +66 -0
  17. package/dist/ui/alert.d.ts +66 -0
  18. package/dist/ui/alert.js +218 -0
  19. package/dist/ui/alert.js.map +1 -0
  20. package/dist/ui/alert.mjs +220 -0
  21. package/dist/ui/alert.mjs.map +1 -0
  22. package/dist/ui/badge.d.mts +37 -0
  23. package/dist/ui/badge.d.ts +37 -0
  24. package/dist/ui/badge.js +159 -0
  25. package/dist/ui/badge.js.map +1 -0
  26. package/dist/ui/badge.mjs +161 -0
  27. package/dist/ui/badge.mjs.map +1 -0
  28. package/dist/ui/buttons.d.mts +27 -0
  29. package/dist/ui/buttons.d.ts +27 -0
  30. package/dist/ui/buttons.js +107 -0
  31. package/dist/ui/buttons.js.map +1 -0
  32. package/dist/ui/buttons.mjs +109 -0
  33. package/dist/ui/buttons.mjs.map +1 -0
  34. package/dist/ui/card.d.mts +77 -0
  35. package/dist/ui/card.d.ts +77 -0
  36. package/dist/ui/card.js +252 -0
  37. package/dist/ui/card.js.map +1 -0
  38. package/dist/ui/card.mjs +254 -0
  39. package/dist/ui/card.mjs.map +1 -0
  40. package/dist/ui/divider.d.mts +39 -0
  41. package/dist/ui/divider.d.ts +39 -0
  42. package/dist/ui/divider.js +194 -0
  43. package/dist/ui/divider.js.map +1 -0
  44. package/dist/ui/divider.mjs +196 -0
  45. package/dist/ui/divider.mjs.map +1 -0
  46. package/dist/ui/drawer.d.mts +81 -0
  47. package/dist/ui/drawer.d.ts +81 -0
  48. package/dist/ui/drawer.js +377 -0
  49. package/dist/ui/drawer.js.map +1 -0
  50. package/dist/ui/drawer.mjs +379 -0
  51. package/dist/ui/drawer.mjs.map +1 -0
  52. package/dist/ui/dropdown.d.mts +50 -0
  53. package/dist/ui/dropdown.d.ts +50 -0
  54. package/dist/ui/dropdown.js +272 -0
  55. package/dist/ui/dropdown.js.map +1 -0
  56. package/dist/ui/dropdown.mjs +274 -0
  57. package/dist/ui/dropdown.mjs.map +1 -0
  58. package/dist/ui/empty-state.d.mts +55 -0
  59. package/dist/ui/empty-state.d.ts +55 -0
  60. package/dist/ui/empty-state.js +148 -0
  61. package/dist/ui/empty-state.js.map +1 -0
  62. package/dist/ui/empty-state.mjs +150 -0
  63. package/dist/ui/empty-state.mjs.map +1 -0
  64. package/dist/ui/inputs.d.mts +35 -0
  65. package/dist/ui/inputs.d.ts +35 -0
  66. package/dist/ui/inputs.js +426 -0
  67. package/dist/ui/inputs.js.map +1 -0
  68. package/dist/ui/inputs.mjs +428 -0
  69. package/dist/ui/inputs.mjs.map +1 -0
  70. package/dist/ui/modal.d.mts +84 -0
  71. package/dist/ui/modal.d.ts +84 -0
  72. package/dist/ui/modal.js +378 -0
  73. package/dist/ui/modal.js.map +1 -0
  74. package/dist/ui/modal.mjs +380 -0
  75. package/dist/ui/modal.mjs.map +1 -0
  76. package/dist/ui/pagination.d.mts +114 -0
  77. package/dist/ui/pagination.d.ts +114 -0
  78. package/dist/ui/pagination.js +425 -0
  79. package/dist/ui/pagination.js.map +1 -0
  80. package/dist/ui/pagination.mjs +427 -0
  81. package/dist/ui/pagination.mjs.map +1 -0
  82. package/dist/ui/progress.d.mts +61 -0
  83. package/dist/ui/progress.d.ts +61 -0
  84. package/dist/ui/progress.js +231 -0
  85. package/dist/ui/progress.js.map +1 -0
  86. package/dist/ui/progress.mjs +233 -0
  87. package/dist/ui/progress.mjs.map +1 -0
  88. package/dist/ui/select.d.mts +73 -0
  89. package/dist/ui/select.d.ts +73 -0
  90. package/dist/ui/select.js +321 -0
  91. package/dist/ui/select.js.map +1 -0
  92. package/dist/ui/select.mjs +323 -0
  93. package/dist/ui/select.mjs.map +1 -0
  94. package/dist/ui/skeleton.d.mts +90 -0
  95. package/dist/ui/skeleton.d.ts +90 -0
  96. package/dist/ui/skeleton.js +538 -0
  97. package/dist/ui/skeleton.js.map +1 -0
  98. package/dist/ui/skeleton.mjs +540 -0
  99. package/dist/ui/skeleton.mjs.map +1 -0
  100. package/dist/ui/spinner.d.mts +27 -0
  101. package/dist/ui/spinner.d.ts +27 -0
  102. package/dist/ui/spinner.js +187 -0
  103. package/dist/ui/spinner.js.map +1 -0
  104. package/dist/ui/spinner.mjs +189 -0
  105. package/dist/ui/spinner.mjs.map +1 -0
  106. package/dist/ui/table.d.mts +81 -0
  107. package/dist/ui/table.d.ts +81 -0
  108. package/dist/ui/table.js +287 -0
  109. package/dist/ui/table.js.map +1 -0
  110. package/dist/ui/table.mjs +289 -0
  111. package/dist/ui/table.mjs.map +1 -0
  112. package/dist/ui/tabs.d.mts +58 -0
  113. package/dist/ui/tabs.d.ts +58 -0
  114. package/dist/ui/tabs.js +268 -0
  115. package/dist/ui/tabs.js.map +1 -0
  116. package/dist/ui/tabs.mjs +270 -0
  117. package/dist/ui/tabs.mjs.map +1 -0
  118. package/dist/ui/toast.d.mts +86 -0
  119. package/dist/ui/toast.d.ts +86 -0
  120. package/dist/ui/toast.js +252 -0
  121. package/dist/ui/toast.js.map +1 -0
  122. package/dist/ui/toast.mjs +254 -0
  123. package/dist/ui/toast.mjs.map +1 -0
  124. package/dist/ui/toggle.d.mts +37 -0
  125. package/dist/ui/toggle.d.ts +37 -0
  126. package/dist/ui/toggle.js +152 -0
  127. package/dist/ui/toggle.js.map +1 -0
  128. package/dist/ui/toggle.mjs +154 -0
  129. package/dist/ui/toggle.mjs.map +1 -0
  130. package/dist/ui/tooltip.d.mts +46 -0
  131. package/dist/ui/tooltip.d.ts +46 -0
  132. package/dist/ui/tooltip.js +208 -0
  133. package/dist/ui/tooltip.js.map +1 -0
  134. package/dist/ui/tooltip.mjs +210 -0
  135. package/dist/ui/tooltip.mjs.map +1 -0
  136. package/dist/variants-Dd9pe-ov.d.mts +8 -0
  137. package/dist/variants-Dd9pe-ov.d.ts +8 -0
  138. package/package.json +15 -14
  139. package/dist/ui/index.cjs +0 -5764
  140. package/dist/ui/index.cjs.map +0 -1
  141. package/dist/ui/index.d.cts +0 -1164
  142. package/dist/ui/index.d.ts +0 -1164
  143. package/dist/ui/index.js +0 -5626
  144. package/dist/ui/index.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+ import { HTMLMotionProps } from 'framer-motion';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+
6
+ type TabsAnimation = "none" | "fade" | "slide";
7
+ type TabsPresetMotionProps = Pick<HTMLMotionProps<"div">, "initial" | "animate" | "transition">;
8
+ type TabsAnimationPresets = Record<TabsAnimation, TabsPresetMotionProps>;
9
+ type TabsOrientation = "horizontal" | "vertical";
10
+ declare const tabsContentAnimationPresets: TabsAnimationPresets;
11
+ declare function getTabsContentMotionProps(animation: TabsAnimation, orientation: TabsOrientation, reducedMotion: boolean): TabsPresetMotionProps;
12
+
13
+ type TabsValue = string;
14
+ type TabsProps = {
15
+ value?: TabsValue;
16
+ defaultValue?: TabsValue;
17
+ onValueChange?: (value: TabsValue) => void;
18
+ orientation?: "horizontal" | "vertical";
19
+ variant?: "default" | "underline" | "pills";
20
+ size?: "sm" | "md" | "lg";
21
+ appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange";
22
+ children: ReactNode;
23
+ className?: string;
24
+ };
25
+ type TabsListProps = {
26
+ children: ReactNode;
27
+ className?: string;
28
+ };
29
+ type TabsTriggerProps = {
30
+ value: TabsValue;
31
+ children: ReactNode;
32
+ disabled?: boolean;
33
+ className?: string;
34
+ };
35
+ type TabsContentProps = {
36
+ value: TabsValue;
37
+ children: ReactNode;
38
+ className?: string;
39
+ animation?: TabsAnimation;
40
+ };
41
+
42
+ declare function Tabs({ value, defaultValue, onValueChange, orientation, children, className, }: TabsProps): react_jsx_runtime.JSX.Element;
43
+ declare function TabsList({ children, className, ...props }: TabsListProps): react_jsx_runtime.JSX.Element;
44
+ declare function TabsTrigger({ value, children, disabled, className, ...props }: TabsTriggerProps): react_jsx_runtime.JSX.Element;
45
+ declare function TabsContent({ value, children, className, animation, ...props }: TabsContentProps): react_jsx_runtime.JSX.Element | null;
46
+
47
+ declare const tabsListVariants: (props?: ({
48
+ variant?: "default" | "underline" | "pills" | null | undefined;
49
+ size?: "sm" | "md" | "lg" | null | undefined;
50
+ orientation?: "horizontal" | "vertical" | null | undefined;
51
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
52
+ declare const tabsTriggerVariants: (props?: ({
53
+ appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
54
+ variant?: "default" | "underline" | "pills" | null | undefined;
55
+ size?: "sm" | "md" | "lg" | null | undefined;
56
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
57
+
58
+ export { Tabs, type TabsAnimation, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, getTabsContentMotionProps, tabsContentAnimationPresets, tabsListVariants, tabsTriggerVariants };
@@ -0,0 +1,268 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkE5UX537Jjs = require('../chunk-E5UX537J.js');
4
+
5
+ // src/ui/tabs/tabs.tsx
6
+ var _framermotion = require('framer-motion');
7
+
8
+
9
+
10
+
11
+
12
+ var _react = require('react');
13
+
14
+ // src/ui/tabs/animations.ts
15
+ var easeOutExpo = [0.16, 1, 0.3, 1];
16
+ var tabsContentAnimationPresets = {
17
+ none: {},
18
+ fade: {
19
+ initial: { opacity: 0, y: 6 },
20
+ animate: { opacity: 1, y: 0 },
21
+ transition: { duration: 0.2, ease: easeOutExpo }
22
+ },
23
+ slide: {
24
+ initial: { opacity: 0, y: 8 },
25
+ animate: { opacity: 1, y: 0 },
26
+ transition: {
27
+ type: "spring",
28
+ stiffness: 420,
29
+ damping: 34,
30
+ mass: 0.82
31
+ }
32
+ }
33
+ };
34
+ function getTabsContentMotionProps(animation, orientation, reducedMotion) {
35
+ if (reducedMotion || animation === "none") {
36
+ return {};
37
+ }
38
+ if (animation === "fade") {
39
+ return tabsContentAnimationPresets.fade;
40
+ }
41
+ if (animation === "slide") {
42
+ const offset = 12;
43
+ return {
44
+ initial: orientation === "horizontal" ? { opacity: 0, x: offset, y: 0 } : { opacity: 0, x: 0, y: offset },
45
+ animate: { opacity: 1, x: 0, y: 0 },
46
+ transition: { duration: 0.22, ease: easeOutExpo }
47
+ };
48
+ }
49
+ return {};
50
+ }
51
+
52
+ // src/ui/tabs/variants.ts
53
+ var _classvarianceauthority = require('class-variance-authority');
54
+ var tabsListVariants = _classvarianceauthority.cva.call(void 0,
55
+ "flex items-center gap-1",
56
+ {
57
+ variants: {
58
+ variant: {
59
+ default: "bg-transparent",
60
+ underline: "border-b-2 border-transparent",
61
+ pills: "rounded-md"
62
+ },
63
+ size: {
64
+ sm: "text-sm p-1",
65
+ md: "text-base p-1.5",
66
+ lg: "text-lg p-2"
67
+ },
68
+ orientation: {
69
+ horizontal: "flex-row",
70
+ vertical: "flex-col"
71
+ }
72
+ },
73
+ defaultVariants: {
74
+ size: "md",
75
+ orientation: "horizontal"
76
+ }
77
+ }
78
+ );
79
+ var tabsTriggerVariants = _classvarianceauthority.cva.call(void 0,
80
+ "px-3 py-1.5 rounded-md transition-all focus:outline-none focus:ring-2 focus:ring-ring",
81
+ {
82
+ variants: {
83
+ appearance: {
84
+ default: "bg-transparent",
85
+ sky: "bg-sky-500/75",
86
+ rose: "bg-rose-500/75",
87
+ purple: "bg-purple-500/75",
88
+ pink: "bg-pink-500/75",
89
+ orange: "bg-orange-500/75",
90
+ yellow: "bg-yellow-500/75",
91
+ teal: "bg-teal-500/75",
92
+ indigo: "bg-indigo-500/75",
93
+ emerald: "bg-emerald-500/75",
94
+ gray: "bg-gray-500/75",
95
+ "gradient-blue": "bg-gradient-to-r from-blue-600 to-purple-600",
96
+ "gradient-green": "bg-gradient-to-r from-green-600 to-lime-600",
97
+ "gradient-red": "bg-gradient-to-r from-red-600 to-pink-600",
98
+ "gradient-yellow": "bg-gradient-to-r from-yellow-600 to-orange-600",
99
+ "gradient-purple": "bg-gradient-to-r from-purple-600 to-pink-600",
100
+ "gradient-teal": "bg-gradient-to-r from-teal-600 to-cyan-600",
101
+ "gradient-indigo": "bg-gradient-to-r from-indigo-600 to-purple-600",
102
+ "gradient-pink": "bg-gradient-to-r from-pink-600 to-rose-600",
103
+ "gradient-orange": "bg-gradient-to-r from-orange-600 to-red-600"
104
+ },
105
+ variant: {
106
+ default: "data-[state=active]:bg-background",
107
+ underline: "border-b-2 border-transparent data-[state=active]:border-primary rounded-none",
108
+ pills: "data-[state=active]:bg-primary data-[state=active]:text-white"
109
+ },
110
+ size: {
111
+ sm: "px-2 py-1",
112
+ md: "px-3 py-1.5",
113
+ lg: "px-4 py-2"
114
+ }
115
+ },
116
+ defaultVariants: {
117
+ appearance: "default",
118
+ variant: "default",
119
+ size: "md"
120
+ }
121
+ }
122
+ );
123
+
124
+ // src/ui/tabs/tabs.tsx
125
+ var _jsxruntime = require('react/jsx-runtime');
126
+ var TabsContext = _react.createContext.call(void 0, null);
127
+ var useTabs = () => {
128
+ const ctx = _react.useContext.call(void 0, TabsContext);
129
+ if (!ctx) throw new Error("Tabs components must be used within Tabs");
130
+ return ctx;
131
+ };
132
+ function Tabs({
133
+ value,
134
+ defaultValue,
135
+ onValueChange,
136
+ orientation = "horizontal",
137
+ children,
138
+ className
139
+ }) {
140
+ const [internalValue, setInternalValue] = _react.useState.call(void 0, defaultValue);
141
+ const idPrefix = _react.useId.call(void 0, );
142
+ const isControlled = value !== void 0;
143
+ const currentValue = isControlled ? value : internalValue;
144
+ const setValue = (val) => {
145
+ if (!isControlled) setInternalValue(val);
146
+ _optionalChain([onValueChange, 'optionalCall', _ => _(val)]);
147
+ };
148
+ const tabTriggerId = (tabValue) => `${idPrefix}zentauri-tab-${tabValue}`;
149
+ const tabPanelId = (tabValue) => `${idPrefix}zentauri-panel-${tabValue}`;
150
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
151
+ TabsContext.Provider,
152
+ {
153
+ value: {
154
+ value: currentValue,
155
+ setValue,
156
+ orientation,
157
+ tabTriggerId,
158
+ tabPanelId
159
+ },
160
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "tabs", className: _chunkE5UX537Jjs.cn.call(void 0, "w-full", className), children })
161
+ }
162
+ );
163
+ }
164
+ function TabsList({
165
+ children,
166
+ className,
167
+ ...props
168
+ }) {
169
+ const { orientation, size } = useTabs();
170
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
171
+ "div",
172
+ {
173
+ role: "tablist",
174
+ "aria-orientation": orientation,
175
+ className: _chunkE5UX537Jjs.cn.call(void 0, tabsListVariants({ orientation, size }), className),
176
+ ...props,
177
+ children
178
+ }
179
+ );
180
+ }
181
+ function TabsTrigger({
182
+ value,
183
+ children,
184
+ disabled,
185
+ className,
186
+ ...props
187
+ }) {
188
+ const { value: activeValue, setValue, tabTriggerId, tabPanelId, size, appearance, variant } = useTabs();
189
+ const isActive = activeValue === value;
190
+ const handleKeyDown = (e) => {
191
+ const triggers = Array.from(
192
+ document.querySelectorAll('[role="tab"]')
193
+ );
194
+ const index = triggers.findIndex((el) => el === e.currentTarget);
195
+ if (e.key === "ArrowRight" || e.key === "ArrowDown") {
196
+ e.preventDefault();
197
+ _optionalChain([triggers, 'access', _2 => _2[index + 1], 'optionalAccess', _3 => _3.focus, 'call', _4 => _4()]);
198
+ }
199
+ if (e.key === "ArrowLeft" || e.key === "ArrowUp") {
200
+ e.preventDefault();
201
+ _optionalChain([triggers, 'access', _5 => _5[index - 1], 'optionalAccess', _6 => _6.focus, 'call', _7 => _7()]);
202
+ }
203
+ if (e.key === "Home") {
204
+ e.preventDefault();
205
+ _optionalChain([triggers, 'access', _8 => _8[0], 'optionalAccess', _9 => _9.focus, 'call', _10 => _10()]);
206
+ }
207
+ if (e.key === "End") {
208
+ e.preventDefault();
209
+ _optionalChain([triggers, 'access', _11 => _11[triggers.length - 1], 'optionalAccess', _12 => _12.focus, 'call', _13 => _13()]);
210
+ }
211
+ };
212
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
213
+ "button",
214
+ {
215
+ id: tabTriggerId(value),
216
+ type: "button",
217
+ role: "tab",
218
+ "data-state": isActive ? "active" : "inactive",
219
+ "aria-selected": isActive,
220
+ "aria-controls": tabPanelId(value),
221
+ disabled,
222
+ onClick: () => setValue(value),
223
+ onKeyDown: handleKeyDown,
224
+ className: _chunkE5UX537Jjs.cn.call(void 0, tabsTriggerVariants({ size, appearance, variant }), className, "cursor-pointer"),
225
+ ...props,
226
+ children
227
+ }
228
+ );
229
+ }
230
+ function TabsContent({
231
+ value,
232
+ children,
233
+ className,
234
+ animation = "fade",
235
+ ...props
236
+ }) {
237
+ const { value: activeValue, orientation, tabTriggerId, tabPanelId } = useTabs();
238
+ const prefersReducedMotion = _framermotion.useReducedMotion.call(void 0, );
239
+ if (activeValue !== value) return null;
240
+ const motionProps = getTabsContentMotionProps(
241
+ animation,
242
+ orientation,
243
+ Boolean(prefersReducedMotion)
244
+ );
245
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
246
+ _framermotion.motion.div,
247
+ {
248
+ id: tabPanelId(value),
249
+ role: "tabpanel",
250
+ "aria-labelledby": tabTriggerId(value),
251
+ ...props,
252
+ ...motionProps,
253
+ className: _chunkE5UX537Jjs.cn.call(void 0, "mt-2", className),
254
+ children
255
+ }
256
+ );
257
+ }
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+ exports.Tabs = Tabs; exports.TabsContent = TabsContent; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.getTabsContentMotionProps = getTabsContentMotionProps; exports.tabsContentAnimationPresets = tabsContentAnimationPresets; exports.tabsListVariants = tabsListVariants; exports.tabsTriggerVariants = tabsTriggerVariants;
268
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shubham/Desktop/Repos/NEXT%20JS/zentauri-ui/packages/components/dist/ui/tabs.js"],"names":[],"mappings":"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YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC;AAC5C,oBAAI,aAAa,wBAAE,CAAC,GAAG,GAAC;AACxB,EAAE,CAAC;AACH,EAAE,MAAM,aAAa,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,sBAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,sBAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,sBAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,sBAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/shubham/Desktop/Repos/NEXT JS/zentauri-ui/packages/components/dist/ui/tabs.js","sourcesContent":[null]}
@@ -0,0 +1,270 @@
1
+ "use client";
2
+
3
+ import {
4
+ cn
5
+ } from "../chunk-MEWYFWBX.mjs";
6
+
7
+ // src/ui/tabs/tabs.tsx
8
+ import { motion, useReducedMotion } from "framer-motion";
9
+ import {
10
+ createContext,
11
+ useContext,
12
+ useId,
13
+ useState
14
+ } from "react";
15
+
16
+ // src/ui/tabs/animations.ts
17
+ var easeOutExpo = [0.16, 1, 0.3, 1];
18
+ var tabsContentAnimationPresets = {
19
+ none: {},
20
+ fade: {
21
+ initial: { opacity: 0, y: 6 },
22
+ animate: { opacity: 1, y: 0 },
23
+ transition: { duration: 0.2, ease: easeOutExpo }
24
+ },
25
+ slide: {
26
+ initial: { opacity: 0, y: 8 },
27
+ animate: { opacity: 1, y: 0 },
28
+ transition: {
29
+ type: "spring",
30
+ stiffness: 420,
31
+ damping: 34,
32
+ mass: 0.82
33
+ }
34
+ }
35
+ };
36
+ function getTabsContentMotionProps(animation, orientation, reducedMotion) {
37
+ if (reducedMotion || animation === "none") {
38
+ return {};
39
+ }
40
+ if (animation === "fade") {
41
+ return tabsContentAnimationPresets.fade;
42
+ }
43
+ if (animation === "slide") {
44
+ const offset = 12;
45
+ return {
46
+ initial: orientation === "horizontal" ? { opacity: 0, x: offset, y: 0 } : { opacity: 0, x: 0, y: offset },
47
+ animate: { opacity: 1, x: 0, y: 0 },
48
+ transition: { duration: 0.22, ease: easeOutExpo }
49
+ };
50
+ }
51
+ return {};
52
+ }
53
+
54
+ // src/ui/tabs/variants.ts
55
+ import { cva } from "class-variance-authority";
56
+ var tabsListVariants = cva(
57
+ "flex items-center gap-1",
58
+ {
59
+ variants: {
60
+ variant: {
61
+ default: "bg-transparent",
62
+ underline: "border-b-2 border-transparent",
63
+ pills: "rounded-md"
64
+ },
65
+ size: {
66
+ sm: "text-sm p-1",
67
+ md: "text-base p-1.5",
68
+ lg: "text-lg p-2"
69
+ },
70
+ orientation: {
71
+ horizontal: "flex-row",
72
+ vertical: "flex-col"
73
+ }
74
+ },
75
+ defaultVariants: {
76
+ size: "md",
77
+ orientation: "horizontal"
78
+ }
79
+ }
80
+ );
81
+ var tabsTriggerVariants = cva(
82
+ "px-3 py-1.5 rounded-md transition-all focus:outline-none focus:ring-2 focus:ring-ring",
83
+ {
84
+ variants: {
85
+ appearance: {
86
+ default: "bg-transparent",
87
+ sky: "bg-sky-500/75",
88
+ rose: "bg-rose-500/75",
89
+ purple: "bg-purple-500/75",
90
+ pink: "bg-pink-500/75",
91
+ orange: "bg-orange-500/75",
92
+ yellow: "bg-yellow-500/75",
93
+ teal: "bg-teal-500/75",
94
+ indigo: "bg-indigo-500/75",
95
+ emerald: "bg-emerald-500/75",
96
+ gray: "bg-gray-500/75",
97
+ "gradient-blue": "bg-gradient-to-r from-blue-600 to-purple-600",
98
+ "gradient-green": "bg-gradient-to-r from-green-600 to-lime-600",
99
+ "gradient-red": "bg-gradient-to-r from-red-600 to-pink-600",
100
+ "gradient-yellow": "bg-gradient-to-r from-yellow-600 to-orange-600",
101
+ "gradient-purple": "bg-gradient-to-r from-purple-600 to-pink-600",
102
+ "gradient-teal": "bg-gradient-to-r from-teal-600 to-cyan-600",
103
+ "gradient-indigo": "bg-gradient-to-r from-indigo-600 to-purple-600",
104
+ "gradient-pink": "bg-gradient-to-r from-pink-600 to-rose-600",
105
+ "gradient-orange": "bg-gradient-to-r from-orange-600 to-red-600"
106
+ },
107
+ variant: {
108
+ default: "data-[state=active]:bg-background",
109
+ underline: "border-b-2 border-transparent data-[state=active]:border-primary rounded-none",
110
+ pills: "data-[state=active]:bg-primary data-[state=active]:text-white"
111
+ },
112
+ size: {
113
+ sm: "px-2 py-1",
114
+ md: "px-3 py-1.5",
115
+ lg: "px-4 py-2"
116
+ }
117
+ },
118
+ defaultVariants: {
119
+ appearance: "default",
120
+ variant: "default",
121
+ size: "md"
122
+ }
123
+ }
124
+ );
125
+
126
+ // src/ui/tabs/tabs.tsx
127
+ import { jsx } from "react/jsx-runtime";
128
+ var TabsContext = createContext(null);
129
+ var useTabs = () => {
130
+ const ctx = useContext(TabsContext);
131
+ if (!ctx) throw new Error("Tabs components must be used within Tabs");
132
+ return ctx;
133
+ };
134
+ function Tabs({
135
+ value,
136
+ defaultValue,
137
+ onValueChange,
138
+ orientation = "horizontal",
139
+ children,
140
+ className
141
+ }) {
142
+ const [internalValue, setInternalValue] = useState(defaultValue);
143
+ const idPrefix = useId();
144
+ const isControlled = value !== void 0;
145
+ const currentValue = isControlled ? value : internalValue;
146
+ const setValue = (val) => {
147
+ if (!isControlled) setInternalValue(val);
148
+ onValueChange?.(val);
149
+ };
150
+ const tabTriggerId = (tabValue) => `${idPrefix}zentauri-tab-${tabValue}`;
151
+ const tabPanelId = (tabValue) => `${idPrefix}zentauri-panel-${tabValue}`;
152
+ return /* @__PURE__ */ jsx(
153
+ TabsContext.Provider,
154
+ {
155
+ value: {
156
+ value: currentValue,
157
+ setValue,
158
+ orientation,
159
+ tabTriggerId,
160
+ tabPanelId
161
+ },
162
+ children: /* @__PURE__ */ jsx("div", { "data-slot": "tabs", className: cn("w-full", className), children })
163
+ }
164
+ );
165
+ }
166
+ function TabsList({
167
+ children,
168
+ className,
169
+ ...props
170
+ }) {
171
+ const { orientation, size } = useTabs();
172
+ return /* @__PURE__ */ jsx(
173
+ "div",
174
+ {
175
+ role: "tablist",
176
+ "aria-orientation": orientation,
177
+ className: cn(tabsListVariants({ orientation, size }), className),
178
+ ...props,
179
+ children
180
+ }
181
+ );
182
+ }
183
+ function TabsTrigger({
184
+ value,
185
+ children,
186
+ disabled,
187
+ className,
188
+ ...props
189
+ }) {
190
+ const { value: activeValue, setValue, tabTriggerId, tabPanelId, size, appearance, variant } = useTabs();
191
+ const isActive = activeValue === value;
192
+ const handleKeyDown = (e) => {
193
+ const triggers = Array.from(
194
+ document.querySelectorAll('[role="tab"]')
195
+ );
196
+ const index = triggers.findIndex((el) => el === e.currentTarget);
197
+ if (e.key === "ArrowRight" || e.key === "ArrowDown") {
198
+ e.preventDefault();
199
+ triggers[index + 1]?.focus();
200
+ }
201
+ if (e.key === "ArrowLeft" || e.key === "ArrowUp") {
202
+ e.preventDefault();
203
+ triggers[index - 1]?.focus();
204
+ }
205
+ if (e.key === "Home") {
206
+ e.preventDefault();
207
+ triggers[0]?.focus();
208
+ }
209
+ if (e.key === "End") {
210
+ e.preventDefault();
211
+ triggers[triggers.length - 1]?.focus();
212
+ }
213
+ };
214
+ return /* @__PURE__ */ jsx(
215
+ "button",
216
+ {
217
+ id: tabTriggerId(value),
218
+ type: "button",
219
+ role: "tab",
220
+ "data-state": isActive ? "active" : "inactive",
221
+ "aria-selected": isActive,
222
+ "aria-controls": tabPanelId(value),
223
+ disabled,
224
+ onClick: () => setValue(value),
225
+ onKeyDown: handleKeyDown,
226
+ className: cn(tabsTriggerVariants({ size, appearance, variant }), className, "cursor-pointer"),
227
+ ...props,
228
+ children
229
+ }
230
+ );
231
+ }
232
+ function TabsContent({
233
+ value,
234
+ children,
235
+ className,
236
+ animation = "fade",
237
+ ...props
238
+ }) {
239
+ const { value: activeValue, orientation, tabTriggerId, tabPanelId } = useTabs();
240
+ const prefersReducedMotion = useReducedMotion();
241
+ if (activeValue !== value) return null;
242
+ const motionProps = getTabsContentMotionProps(
243
+ animation,
244
+ orientation,
245
+ Boolean(prefersReducedMotion)
246
+ );
247
+ return /* @__PURE__ */ jsx(
248
+ motion.div,
249
+ {
250
+ id: tabPanelId(value),
251
+ role: "tabpanel",
252
+ "aria-labelledby": tabTriggerId(value),
253
+ ...props,
254
+ ...motionProps,
255
+ className: cn("mt-2", className),
256
+ children
257
+ }
258
+ );
259
+ }
260
+ export {
261
+ Tabs,
262
+ TabsContent,
263
+ TabsList,
264
+ TabsTrigger,
265
+ getTabsContentMotionProps,
266
+ tabsContentAnimationPresets,
267
+ tabsListVariants,
268
+ tabsTriggerVariants
269
+ };
270
+ //# sourceMappingURL=tabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/tabs/tabs.tsx","../../src/ui/tabs/animations.ts","../../src/ui/tabs/variants.ts"],"sourcesContent":["\"use client\"\n\nimport { motion, useReducedMotion } from \"framer-motion\"\nimport {\n createContext,\n KeyboardEvent,\n useContext,\n useId,\n useState,\n} from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nimport { getTabsContentMotionProps } from \"./animations\"\nimport {\n TabsContentProps,\n TabsListProps,\n TabsProps,\n TabsTriggerProps,\n TabsValue,\n TabsContextType,\n} from \"./types\"\nimport { tabsListVariants, tabsTriggerVariants } from \"./variants\"\n\n\nexport const TabsContext = createContext<TabsContextType | null>(null)\n\nexport const useTabs = () => {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error(\"Tabs components must be used within Tabs\")\n return ctx\n}\n\nexport function Tabs({\n value,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n children,\n className,\n}: TabsProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const idPrefix = useId()\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const setValue = (val: string) => {\n if (!isControlled) setInternalValue(val)\n onValueChange?.(val)\n }\n\n const tabTriggerId = (tabValue: TabsValue) =>\n `${idPrefix}zentauri-tab-${tabValue}`\n const tabPanelId = (tabValue: TabsValue) =>\n `${idPrefix}zentauri-panel-${tabValue}`\n\n return (\n <TabsContext.Provider\n value={{\n value: currentValue,\n setValue,\n orientation,\n tabTriggerId,\n tabPanelId,\n }}\n >\n <div data-slot=\"tabs\" className={cn(\"w-full\", className)}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n}\n\nexport function TabsList({\n children,\n className,\n ...props\n}: TabsListProps) {\n const { orientation, size } = useTabs()\n\n return (\n <div\n role=\"tablist\"\n aria-orientation={orientation}\n className={cn(tabsListVariants({ orientation, size }), className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function TabsTrigger({\n value,\n children,\n disabled,\n className,\n ...props\n}: TabsTriggerProps) {\n const { value: activeValue, setValue, tabTriggerId, tabPanelId, size, appearance, variant } = useTabs()\n\n const isActive = activeValue === value\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n const triggers = Array.from(\n document.querySelectorAll('[role=\"tab\"]'),\n ) as HTMLElement[]\n\n const index = triggers.findIndex((el) => el === e.currentTarget)\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault()\n triggers[index + 1]?.focus()\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault()\n triggers[index - 1]?.focus()\n }\n\n if (e.key === \"Home\") {\n e.preventDefault()\n triggers[0]?.focus()\n }\n\n if (e.key === \"End\") {\n e.preventDefault()\n triggers[triggers.length - 1]?.focus()\n }\n }\n\n return (\n <button\n id={tabTriggerId(value)}\n type=\"button\"\n role=\"tab\"\n data-state={isActive ? \"active\" : \"inactive\"}\n aria-selected={isActive}\n aria-controls={tabPanelId(value)}\n disabled={disabled}\n onClick={() => setValue(value)}\n onKeyDown={handleKeyDown}\n className={cn(tabsTriggerVariants({ size, appearance, variant }), className, \"cursor-pointer\")}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n animation = \"fade\",\n ...props\n}: TabsContentProps) {\n const { value: activeValue, orientation, tabTriggerId, tabPanelId } =\n useTabs()\n const prefersReducedMotion = useReducedMotion()\n\n if (activeValue !== value) return null\n\n const motionProps = getTabsContentMotionProps(\n animation,\n orientation,\n Boolean(prefersReducedMotion),\n )\n\n return (\n <motion.div\n id={tabPanelId(value)}\n role=\"tabpanel\"\n aria-labelledby={tabTriggerId(value)}\n {...props}\n {...motionProps}\n className={cn(\"mt-2\", className)}\n >\n {children}\n </motion.div>\n )\n}\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type TabsAnimation = \"none\" | \"fade\" | \"slide\";\n\ntype TabsPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\"\n>;\n\nexport type TabsAnimationPresets = Record<TabsAnimation, TabsPresetMotionProps>;\n\ntype TabsOrientation = \"horizontal\" | \"vertical\";\n\nconst easeOutExpo: [number, number, number, number] = [0.16, 1, 0.3, 1];\n\nexport const tabsContentAnimationPresets: TabsAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0, y: 6 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.2, ease: easeOutExpo },\n },\n slide: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: {\n type: \"spring\",\n stiffness: 420,\n damping: 34,\n mass: 0.82,\n },\n },\n};\n\nexport function getTabsContentMotionProps(\n animation: TabsAnimation,\n orientation: TabsOrientation,\n reducedMotion: boolean,\n): TabsPresetMotionProps {\n if (reducedMotion || animation === \"none\") {\n return {};\n }\n if (animation === \"fade\") {\n return tabsContentAnimationPresets.fade;\n }\n if (animation === \"slide\") {\n const offset = 12;\n return {\n initial:\n orientation === \"horizontal\"\n ? { opacity: 0, x: offset, y: 0 }\n : { opacity: 0, x: 0, y: offset },\n animate: { opacity: 1, x: 0, y: 0 },\n transition: { duration: 0.22, ease: easeOutExpo },\n };\n }\n return {};\n}\n","import { cva } from \"class-variance-authority\"\n\nexport const tabsListVariants = cva(\n \"flex items-center gap-1\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n underline: \"border-b-2 border-transparent\",\n pills: \"rounded-md\",\n },\n size: {\n sm: \"text-sm p-1\",\n md: \"text-base p-1.5\",\n lg: \"text-lg p-2\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n },\n defaultVariants: {\n size: \"md\",\n orientation: \"horizontal\",\n },\n }\n)\n\nexport const tabsTriggerVariants = cva(\n \"px-3 py-1.5 rounded-md transition-all focus:outline-none focus:ring-2 focus:ring-ring\",\n {\n variants: {\n appearance: {\n default: \"bg-transparent\",\n sky: \"bg-sky-500/75\",\n rose: \"bg-rose-500/75\",\n purple: \"bg-purple-500/75\",\n pink: \"bg-pink-500/75\",\n orange: \"bg-orange-500/75\",\n yellow: \"bg-yellow-500/75\",\n teal: \"bg-teal-500/75\",\n indigo: \"bg-indigo-500/75\",\n emerald: \"bg-emerald-500/75\",\n gray: \"bg-gray-500/75\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600\",\n },\n variant: {\n default: \"data-[state=active]:bg-background\",\n underline:\n \"border-b-2 border-transparent data-[state=active]:border-primary rounded-none\",\n pills:\n \"data-[state=active]:bg-primary data-[state=active]:text-white\",\n },\n size: {\n sm: \"px-2 py-1\",\n md: \"px-3 py-1.5\",\n lg: \"px-4 py-2\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n variant: \"default\",\n size: \"md\",\n },\n }\n)"],"mappings":"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","names":[]}