@shipfox/react-ui 0.12.0 → 0.13.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 (63) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/.turbo/turbo-check.log +2 -2
  3. package/.turbo/turbo-type.log +1 -1
  4. package/CHANGELOG.md +6 -0
  5. package/dist/components/badge/index.d.ts +4 -4
  6. package/dist/components/badge/index.d.ts.map +1 -1
  7. package/dist/components/badge/index.js +4 -4
  8. package/dist/components/badge/index.js.map +1 -1
  9. package/dist/components/dropdown-menu/index.d.ts +1 -2
  10. package/dist/components/dropdown-menu/index.d.ts.map +1 -1
  11. package/dist/components/dropdown-menu/index.js +1 -1
  12. package/dist/components/dropdown-menu/index.js.map +1 -1
  13. package/dist/components/index.d.ts +2 -0
  14. package/dist/components/index.d.ts.map +1 -1
  15. package/dist/components/index.js +2 -0
  16. package/dist/components/index.js.map +1 -1
  17. package/dist/components/modal/index.d.ts +1 -2
  18. package/dist/components/modal/index.d.ts.map +1 -1
  19. package/dist/components/modal/index.js +1 -1
  20. package/dist/components/modal/index.js.map +1 -1
  21. package/dist/components/modal/modal.d.ts +2 -1
  22. package/dist/components/modal/modal.d.ts.map +1 -1
  23. package/dist/components/modal/modal.js +5 -3
  24. package/dist/components/modal/modal.js.map +1 -1
  25. package/dist/components/modal/modal.stories.js +2 -0
  26. package/dist/components/modal/modal.stories.js.map +1 -1
  27. package/dist/components/tabs/index.d.ts +2 -0
  28. package/dist/components/tabs/index.d.ts.map +1 -0
  29. package/dist/components/tabs/index.js +3 -0
  30. package/dist/components/tabs/index.js.map +1 -0
  31. package/dist/components/tabs/tabs.d.ts +50 -0
  32. package/dist/components/tabs/tabs.d.ts.map +1 -0
  33. package/dist/components/tabs/tabs.js +243 -0
  34. package/dist/components/tabs/tabs.js.map +1 -0
  35. package/dist/components/tabs/tabs.stories.js +179 -0
  36. package/dist/components/tabs/tabs.stories.js.map +1 -0
  37. package/dist/components/toast/index.d.ts +2 -2
  38. package/dist/components/toast/index.d.ts.map +1 -1
  39. package/dist/components/toast/index.js +2 -2
  40. package/dist/components/toast/index.js.map +1 -1
  41. package/dist/styles.css +1 -1
  42. package/dist/utils/debounce.d.ts +2 -0
  43. package/dist/utils/debounce.d.ts.map +1 -0
  44. package/dist/utils/debounce.js +13 -0
  45. package/dist/utils/debounce.js.map +1 -0
  46. package/dist/utils/index.d.ts +1 -0
  47. package/dist/utils/index.d.ts.map +1 -1
  48. package/dist/utils/index.js +1 -0
  49. package/dist/utils/index.js.map +1 -1
  50. package/index.css +3 -0
  51. package/package.json +1 -1
  52. package/src/components/badge/index.ts +4 -4
  53. package/src/components/dropdown-menu/index.ts +1 -29
  54. package/src/components/index.ts +2 -0
  55. package/src/components/modal/index.ts +1 -23
  56. package/src/components/modal/modal.stories.tsx +2 -2
  57. package/src/components/modal/modal.tsx +4 -2
  58. package/src/components/tabs/index.ts +1 -0
  59. package/src/components/tabs/tabs.stories.tsx +100 -0
  60. package/src/components/tabs/tabs.tsx +380 -0
  61. package/src/components/toast/index.ts +2 -2
  62. package/src/utils/debounce.ts +15 -0
  63. package/src/utils/index.ts +1 -0
@@ -0,0 +1,243 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { motion } from 'framer-motion';
3
+ import { Children, createContext, forwardRef, isValidElement, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
4
+ import { cn } from '../../utils/cn.js';
5
+ import { debounce } from '../../utils/debounce.js';
6
+ const TabsContext = /*#__PURE__*/ createContext(undefined);
7
+ function useTabs() {
8
+ const context = useContext(TabsContext);
9
+ if (!context) {
10
+ throw new Error('useTabs must be used within a Tabs component');
11
+ }
12
+ return context;
13
+ }
14
+ function Tabs({ defaultValue, value, onValueChange, children, className, ...props }) {
15
+ const [activeValue, setActiveValue] = useState(defaultValue ?? undefined);
16
+ const triggersRef = useRef(new Map());
17
+ const initialSet = useRef(false);
18
+ const isControlled = value !== undefined;
19
+ useEffect(()=>{
20
+ if (!isControlled && activeValue === undefined && triggersRef.current.size > 0 && !initialSet.current) {
21
+ const firstTab = Array.from(triggersRef.current.keys())[0];
22
+ setActiveValue(firstTab);
23
+ initialSet.current = true;
24
+ }
25
+ }, [
26
+ activeValue,
27
+ isControlled
28
+ ]);
29
+ const registerTrigger = useCallback((value, node)=>{
30
+ if (node) {
31
+ triggersRef.current.set(value, node);
32
+ if (!isControlled && activeValue === undefined && !initialSet.current) {
33
+ setActiveValue(value);
34
+ initialSet.current = true;
35
+ }
36
+ } else {
37
+ triggersRef.current.delete(value);
38
+ }
39
+ }, [
40
+ isControlled,
41
+ activeValue
42
+ ]);
43
+ const handleValueChange = useCallback((val)=>{
44
+ if (!isControlled) setActiveValue(val);
45
+ else onValueChange?.(val);
46
+ }, [
47
+ isControlled,
48
+ onValueChange
49
+ ]);
50
+ const getTriggerElement = useCallback((val)=>{
51
+ return triggersRef.current.get(val);
52
+ }, []);
53
+ const getAllTriggerValues = useCallback(()=>{
54
+ return Array.from(triggersRef.current.keys());
55
+ }, []);
56
+ const resolvedActiveValue = useMemo(()=>{
57
+ if (value !== undefined) return value;
58
+ if (activeValue !== undefined) return activeValue;
59
+ const firstKey = Array.from(triggersRef.current.keys())[0];
60
+ return firstKey ?? '';
61
+ }, [
62
+ value,
63
+ activeValue
64
+ ]);
65
+ return /*#__PURE__*/ _jsx(TabsContext.Provider, {
66
+ value: {
67
+ activeValue: resolvedActiveValue,
68
+ handleValueChange: handleValueChange,
69
+ registerTrigger,
70
+ getTriggerElement,
71
+ getAllTriggerValues
72
+ },
73
+ children: /*#__PURE__*/ _jsx("div", {
74
+ "data-slot": "tabs",
75
+ className: cn('flex flex-col gap-2', className),
76
+ ...props,
77
+ children: children
78
+ })
79
+ });
80
+ }
81
+ function TabsList({ children, className, activeClassName, transition = {
82
+ type: 'spring',
83
+ stiffness: 400,
84
+ damping: 30
85
+ }, ...props }) {
86
+ const { activeValue, getTriggerElement } = useTabs();
87
+ const [indicatorStyle, setIndicatorStyle] = useState(null);
88
+ const listRef = useRef(null);
89
+ const updateIndicator = useCallback(()=>{
90
+ const activeTrigger = getTriggerElement(activeValue);
91
+ if (activeTrigger && listRef.current) {
92
+ const listRect = listRef.current.getBoundingClientRect();
93
+ const triggerRect = activeTrigger.getBoundingClientRect();
94
+ setIndicatorStyle({
95
+ left: triggerRect.left - listRect.left,
96
+ width: triggerRect.width
97
+ });
98
+ }
99
+ }, [
100
+ activeValue,
101
+ getTriggerElement
102
+ ]);
103
+ useEffect(()=>{
104
+ const debouncedUpdate = debounce(updateIndicator, 100);
105
+ window.addEventListener('resize', debouncedUpdate);
106
+ requestAnimationFrame(updateIndicator);
107
+ return ()=>{
108
+ window.removeEventListener('resize', debouncedUpdate);
109
+ };
110
+ }, [
111
+ updateIndicator
112
+ ]);
113
+ return /*#__PURE__*/ _jsxs("div", {
114
+ ref: listRef,
115
+ role: "tablist",
116
+ "data-slot": "tabs-list",
117
+ className: cn('relative inline-flex items-center gap-8', className),
118
+ ...props,
119
+ children: [
120
+ children,
121
+ indicatorStyle && /*#__PURE__*/ _jsx(motion.div, {
122
+ className: cn('absolute bottom-0 h-2 bg-foreground-highlight-interactive', activeClassName),
123
+ initial: false,
124
+ animate: {
125
+ left: indicatorStyle.left,
126
+ width: indicatorStyle.width
127
+ },
128
+ transition: transition
129
+ })
130
+ ]
131
+ });
132
+ }
133
+ const TabsTrigger = /*#__PURE__*/ forwardRef(({ value, children, className, onKeyDown, ...props }, ref)=>{
134
+ const { activeValue, handleValueChange, registerTrigger, getAllTriggerValues, getTriggerElement } = useTabs();
135
+ const localRef = useRef(null);
136
+ useImperativeHandle(ref, ()=>localRef.current);
137
+ useEffect(()=>{
138
+ registerTrigger(value, localRef.current);
139
+ return ()=>registerTrigger(value, null);
140
+ }, [
141
+ value,
142
+ registerTrigger
143
+ ]);
144
+ const isActive = activeValue === value;
145
+ const handleKeyDown = useCallback((event)=>{
146
+ onKeyDown?.(event);
147
+ const allValues = getAllTriggerValues();
148
+ const currentIndex = allValues.indexOf(value);
149
+ if (currentIndex === -1) return;
150
+ let targetIndex = currentIndex;
151
+ let shouldPreventDefault = true;
152
+ switch(event.key){
153
+ case 'ArrowLeft':
154
+ {
155
+ targetIndex = currentIndex > 0 ? currentIndex - 1 : allValues.length - 1;
156
+ break;
157
+ }
158
+ case 'ArrowRight':
159
+ {
160
+ targetIndex = currentIndex < allValues.length - 1 ? currentIndex + 1 : 0;
161
+ break;
162
+ }
163
+ case 'Home':
164
+ {
165
+ targetIndex = 0;
166
+ break;
167
+ }
168
+ case 'End':
169
+ {
170
+ targetIndex = allValues.length - 1;
171
+ break;
172
+ }
173
+ default:
174
+ {
175
+ shouldPreventDefault = false;
176
+ return;
177
+ }
178
+ }
179
+ if (shouldPreventDefault) {
180
+ event.preventDefault();
181
+ const targetValue = allValues[targetIndex];
182
+ if (targetValue) {
183
+ handleValueChange(targetValue);
184
+ const targetElement = getTriggerElement(targetValue);
185
+ targetElement?.focus();
186
+ }
187
+ }
188
+ }, [
189
+ value,
190
+ getAllTriggerValues,
191
+ getTriggerElement,
192
+ handleValueChange,
193
+ onKeyDown
194
+ ]);
195
+ return /*#__PURE__*/ _jsx(motion.button, {
196
+ ref: localRef,
197
+ "data-slot": "tabs-trigger",
198
+ role: "tab",
199
+ tabIndex: isActive ? 0 : -1,
200
+ whileTap: {
201
+ scale: 0.95
202
+ },
203
+ onClick: ()=>handleValueChange(value),
204
+ onKeyDown: handleKeyDown,
205
+ "data-state": isActive ? 'active' : 'inactive',
206
+ "aria-selected": isActive,
207
+ "aria-controls": `tabpanel-${value}`,
208
+ id: `tab-${value}`,
209
+ className: cn('relative inline-flex cursor-pointer items-center justify-center whitespace-nowrap px-0 py-10 text-sm font-medium transition-colors outline-none focus-visible:shadow-border-interactive-with-active focus-visible:rounded-2 disabled:pointer-events-none disabled:opacity-50', isActive ? 'text-foreground-neutral-base' : 'text-foreground-neutral-muted', className),
210
+ ...props,
211
+ children: children
212
+ });
213
+ });
214
+ TabsTrigger.displayName = 'TabsTrigger';
215
+ function TabsContents({ children, className, ...props }) {
216
+ const { activeValue } = useTabs();
217
+ const childrenArray = Children.toArray(children);
218
+ const activeChild = childrenArray.find((child)=>/*#__PURE__*/ isValidElement(child) && typeof child.props === 'object' && child.props !== null && 'value' in child.props && child.props.value === activeValue);
219
+ return /*#__PURE__*/ _jsx("div", {
220
+ "data-slot": "tabs-contents",
221
+ className: cn(className),
222
+ ...props,
223
+ children: activeChild
224
+ });
225
+ }
226
+ function TabsContent({ children, value, className, ...props }) {
227
+ const { activeValue } = useTabs();
228
+ const isActive = activeValue === value;
229
+ if (!isActive) {
230
+ return null;
231
+ }
232
+ return /*#__PURE__*/ _jsx("div", {
233
+ role: "tabpanel",
234
+ "data-slot": "tabs-content",
235
+ "aria-labelledby": `tab-${value}`,
236
+ className: cn(className),
237
+ ...props,
238
+ children: children
239
+ });
240
+ }
241
+ export { Tabs, TabsList, TabsTrigger, TabsContents, TabsContent, useTabs };
242
+
243
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"sourcesContent":["import {type HTMLMotionProps, motion, type Transition} from 'framer-motion';\nimport {\n Children,\n type ComponentProps,\n createContext,\n forwardRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {cn} from 'utils/cn';\nimport {debounce} from 'utils/debounce';\n\ntype TabsContextType<T extends string = string> = {\n activeValue: T;\n handleValueChange: (value: T) => void;\n registerTrigger: (value: string, node: HTMLElement | null) => void;\n getTriggerElement: (value: string) => HTMLElement | undefined;\n getAllTriggerValues: () => string[];\n};\n\nconst TabsContext = createContext<TabsContextType<string> | undefined>(undefined);\n\nfunction useTabs<T extends string = string>(): TabsContextType<T> {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('useTabs must be used within a Tabs component');\n }\n return context as unknown as TabsContextType<T>;\n}\n\ntype BaseTabsProps = ComponentProps<'div'> & {\n children: ReactNode;\n};\n\ntype UnControlledTabsProps<T extends string = string> = BaseTabsProps & {\n defaultValue?: T;\n value?: never;\n onValueChange?: never;\n};\n\ntype ControlledTabsProps<T extends string = string> = BaseTabsProps & {\n value: T;\n onValueChange?: (value: T) => void;\n defaultValue?: never;\n};\n\ntype TabsProps<T extends string = string> = UnControlledTabsProps<T> | ControlledTabsProps<T>;\n\nfunction Tabs<T extends string = string>({\n defaultValue,\n value,\n onValueChange,\n children,\n className,\n ...props\n}: TabsProps<T>) {\n const [activeValue, setActiveValue] = useState<T | undefined>(defaultValue ?? undefined);\n const triggersRef = useRef(new Map<string, HTMLElement>());\n const initialSet = useRef(false);\n const isControlled = value !== undefined;\n\n useEffect(() => {\n if (\n !isControlled &&\n activeValue === undefined &&\n triggersRef.current.size > 0 &&\n !initialSet.current\n ) {\n const firstTab = Array.from(triggersRef.current.keys())[0];\n setActiveValue(firstTab as T);\n initialSet.current = true;\n }\n }, [activeValue, isControlled]);\n\n const registerTrigger = useCallback(\n (value: string, node: HTMLElement | null) => {\n if (node) {\n triggersRef.current.set(value, node);\n if (!isControlled && activeValue === undefined && !initialSet.current) {\n setActiveValue(value as T);\n initialSet.current = true;\n }\n } else {\n triggersRef.current.delete(value);\n }\n },\n [isControlled, activeValue],\n );\n\n const handleValueChange = useCallback(\n (val: T) => {\n if (!isControlled) setActiveValue(val);\n else onValueChange?.(val);\n },\n [isControlled, onValueChange],\n );\n\n const getTriggerElement = useCallback((val: string) => {\n return triggersRef.current.get(val);\n }, []);\n\n const getAllTriggerValues = useCallback(() => {\n return Array.from(triggersRef.current.keys());\n }, []);\n\n const resolvedActiveValue: T = useMemo(() => {\n if (value !== undefined) return value;\n if (activeValue !== undefined) return activeValue;\n const firstKey = Array.from(triggersRef.current.keys())[0];\n return (firstKey ?? '') as T;\n }, [value, activeValue]);\n\n return (\n <TabsContext.Provider\n value={{\n activeValue: resolvedActiveValue as string,\n handleValueChange: handleValueChange as (value: string) => void,\n registerTrigger,\n getTriggerElement,\n getAllTriggerValues,\n }}\n >\n <div\n data-slot=\"tabs\"\n className={cn('flex flex-col gap-2', className)}\n {...(props as ComponentProps<'div'>)}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\ntype TabsListProps = ComponentProps<'div'> & {\n children: ReactNode;\n activeClassName?: string;\n transition?: Transition;\n};\n\nfunction TabsList({\n children,\n className,\n activeClassName,\n transition = {\n type: 'spring',\n stiffness: 400,\n damping: 30,\n },\n ...props\n}: TabsListProps) {\n const {activeValue, getTriggerElement} = useTabs();\n const [indicatorStyle, setIndicatorStyle] = useState<{\n left: number;\n width: number;\n } | null>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const updateIndicator = useCallback(() => {\n const activeTrigger = getTriggerElement(activeValue);\n\n if (activeTrigger && listRef.current) {\n const listRect = listRef.current.getBoundingClientRect();\n const triggerRect = activeTrigger.getBoundingClientRect();\n setIndicatorStyle({\n left: triggerRect.left - listRect.left,\n width: triggerRect.width,\n });\n }\n }, [activeValue, getTriggerElement]);\n\n useEffect(() => {\n const debouncedUpdate = debounce(updateIndicator, 100);\n window.addEventListener('resize', debouncedUpdate);\n requestAnimationFrame(updateIndicator);\n\n return () => {\n window.removeEventListener('resize', debouncedUpdate);\n };\n }, [updateIndicator]);\n\n return (\n <div\n ref={listRef}\n role=\"tablist\"\n data-slot=\"tabs-list\"\n className={cn('relative inline-flex items-center gap-8', className)}\n {...(props as ComponentProps<'div'>)}\n >\n {children}\n {indicatorStyle && (\n <motion.div\n className={cn(\n 'absolute bottom-0 h-2 bg-foreground-highlight-interactive',\n activeClassName,\n )}\n initial={false}\n animate={{\n left: indicatorStyle.left,\n width: indicatorStyle.width,\n }}\n transition={transition}\n />\n )}\n </div>\n );\n}\n\ntype TabsTriggerProps = Omit<HTMLMotionProps<'button'>, 'ref'> & {\n value: string;\n children: ReactNode;\n};\n\nconst TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({value, children, className, onKeyDown, ...props}, ref) => {\n const {\n activeValue,\n handleValueChange,\n registerTrigger,\n getAllTriggerValues,\n getTriggerElement,\n } = useTabs();\n\n const localRef = useRef<HTMLButtonElement | null>(null);\n useImperativeHandle(ref, () => localRef.current as HTMLButtonElement);\n\n useEffect(() => {\n registerTrigger(value, localRef.current);\n return () => registerTrigger(value, null);\n }, [value, registerTrigger]);\n\n const isActive = activeValue === value;\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n\n const allValues = getAllTriggerValues();\n const currentIndex = allValues.indexOf(value);\n\n if (currentIndex === -1) return;\n\n let targetIndex = currentIndex;\n let shouldPreventDefault = true;\n\n switch (event.key) {\n case 'ArrowLeft': {\n targetIndex = currentIndex > 0 ? currentIndex - 1 : allValues.length - 1;\n break;\n }\n case 'ArrowRight': {\n targetIndex = currentIndex < allValues.length - 1 ? currentIndex + 1 : 0;\n break;\n }\n case 'Home': {\n targetIndex = 0;\n break;\n }\n case 'End': {\n targetIndex = allValues.length - 1;\n break;\n }\n default: {\n shouldPreventDefault = false;\n return;\n }\n }\n\n if (shouldPreventDefault) {\n event.preventDefault();\n const targetValue = allValues[targetIndex];\n if (targetValue) {\n handleValueChange(targetValue);\n const targetElement = getTriggerElement(targetValue);\n targetElement?.focus();\n }\n }\n },\n [value, getAllTriggerValues, getTriggerElement, handleValueChange, onKeyDown],\n );\n\n return (\n <motion.button\n ref={localRef}\n data-slot=\"tabs-trigger\"\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n whileTap={{scale: 0.95}}\n onClick={() => handleValueChange(value)}\n onKeyDown={handleKeyDown}\n data-state={isActive ? 'active' : 'inactive'}\n aria-selected={isActive}\n aria-controls={`tabpanel-${value}`}\n id={`tab-${value}`}\n className={cn(\n 'relative inline-flex cursor-pointer items-center justify-center whitespace-nowrap px-0 py-10 text-sm font-medium transition-colors outline-none focus-visible:shadow-border-interactive-with-active focus-visible:rounded-2 disabled:pointer-events-none disabled:opacity-50',\n isActive ? 'text-foreground-neutral-base' : 'text-foreground-neutral-muted',\n className,\n )}\n {...props}\n >\n {children}\n </motion.button>\n );\n },\n);\n\nTabsTrigger.displayName = 'TabsTrigger';\n\ntype TabsContentsProps = ComponentProps<'div'> & {\n children: ReactNode;\n};\n\nfunction TabsContents({children, className, ...props}: TabsContentsProps) {\n const {activeValue} = useTabs();\n const childrenArray = Children.toArray(children);\n\n const activeChild = childrenArray.find(\n (child): child is ReactElement<{value: string}> =>\n isValidElement(child) &&\n typeof child.props === 'object' &&\n child.props !== null &&\n 'value' in child.props &&\n child.props.value === activeValue,\n );\n\n return (\n <div data-slot=\"tabs-contents\" className={cn(className)} {...(props as ComponentProps<'div'>)}>\n {activeChild}\n </div>\n );\n}\n\ntype TabsContentProps = ComponentProps<'div'> & {\n value: string;\n children: ReactNode;\n};\n\nfunction TabsContent({children, value, className, ...props}: TabsContentProps) {\n const {activeValue} = useTabs();\n const isActive = activeValue === value;\n\n if (!isActive) {\n return null;\n }\n\n return (\n <div\n role=\"tabpanel\"\n data-slot=\"tabs-content\"\n aria-labelledby={`tab-${value}`}\n className={cn(className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContents,\n TabsContent,\n useTabs,\n type TabsContextType,\n type TabsProps,\n type TabsListProps,\n type TabsTriggerProps,\n type TabsContentsProps,\n type TabsContentProps,\n};\n"],"names":["motion","Children","createContext","forwardRef","isValidElement","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","cn","debounce","TabsContext","undefined","useTabs","context","Error","Tabs","defaultValue","value","onValueChange","children","className","props","activeValue","setActiveValue","triggersRef","Map","initialSet","isControlled","current","size","firstTab","Array","from","keys","registerTrigger","node","set","delete","handleValueChange","val","getTriggerElement","get","getAllTriggerValues","resolvedActiveValue","firstKey","Provider","div","data-slot","TabsList","activeClassName","transition","type","stiffness","damping","indicatorStyle","setIndicatorStyle","listRef","updateIndicator","activeTrigger","listRect","getBoundingClientRect","triggerRect","left","width","debouncedUpdate","window","addEventListener","requestAnimationFrame","removeEventListener","ref","role","initial","animate","TabsTrigger","onKeyDown","localRef","isActive","handleKeyDown","event","allValues","currentIndex","indexOf","targetIndex","shouldPreventDefault","key","length","preventDefault","targetValue","targetElement","focus","button","tabIndex","whileTap","scale","onClick","data-state","aria-selected","aria-controls","id","displayName","TabsContents","childrenArray","toArray","activeChild","find","child","TabsContent","aria-labelledby"],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Tabs, TabsContent, TabsContents, TabsList, TabsTrigger } from './index.js';
4
+ const meta = {
5
+ title: 'Components/Tabs',
6
+ component: Tabs,
7
+ parameters: {
8
+ layout: 'centered'
9
+ },
10
+ tags: [
11
+ 'autodocs'
12
+ ]
13
+ };
14
+ export default meta;
15
+ export const Default = {
16
+ args: {
17
+ defaultValue: 'analytics'
18
+ },
19
+ render: ()=>/*#__PURE__*/ _jsx("div", {
20
+ className: "bg-background-neutral-background p-24 w-[80vw]",
21
+ children: /*#__PURE__*/ _jsx(Tabs, {
22
+ defaultValue: "analytics",
23
+ children: /*#__PURE__*/ _jsxs(TabsList, {
24
+ className: "gap-12 border-b border-neutral-strong",
25
+ children: [
26
+ /*#__PURE__*/ _jsx(TabsTrigger, {
27
+ value: "analytics",
28
+ children: "Analytics"
29
+ }),
30
+ /*#__PURE__*/ _jsx(TabsTrigger, {
31
+ value: "jobs",
32
+ children: "Jobs"
33
+ })
34
+ ]
35
+ })
36
+ })
37
+ })
38
+ };
39
+ export const Controlled = {
40
+ args: {
41
+ value: 'analytics',
42
+ onValueChange: ()=>undefined
43
+ },
44
+ render: ()=>{
45
+ const [value, setValue] = useState('analytics');
46
+ return /*#__PURE__*/ _jsx("div", {
47
+ className: "bg-background-neutral-background p-24 w-[80vw]",
48
+ children: /*#__PURE__*/ _jsxs(Tabs, {
49
+ value: value,
50
+ onValueChange: setValue,
51
+ children: [
52
+ /*#__PURE__*/ _jsxs(TabsList, {
53
+ className: "gap-12 border-b border-neutral-strong",
54
+ children: [
55
+ /*#__PURE__*/ _jsx(TabsTrigger, {
56
+ value: "analytics",
57
+ children: "Analytics"
58
+ }),
59
+ /*#__PURE__*/ _jsx(TabsTrigger, {
60
+ value: "jobs",
61
+ children: "Jobs"
62
+ })
63
+ ]
64
+ }),
65
+ /*#__PURE__*/ _jsxs(TabsContents, {
66
+ children: [
67
+ /*#__PURE__*/ _jsx(TabsContent, {
68
+ value: "analytics",
69
+ children: /*#__PURE__*/ _jsx("div", {
70
+ className: "py-16",
71
+ children: /*#__PURE__*/ _jsxs("p", {
72
+ className: "text-foreground-neutral-base",
73
+ children: [
74
+ "Analytics content - Current value: ",
75
+ value
76
+ ]
77
+ })
78
+ })
79
+ }),
80
+ /*#__PURE__*/ _jsx(TabsContent, {
81
+ value: "jobs",
82
+ children: /*#__PURE__*/ _jsx("div", {
83
+ className: "py-16",
84
+ children: /*#__PURE__*/ _jsxs("p", {
85
+ className: "text-foreground-neutral-base",
86
+ children: [
87
+ "Jobs content - Current value: ",
88
+ value
89
+ ]
90
+ })
91
+ })
92
+ })
93
+ ]
94
+ })
95
+ ]
96
+ })
97
+ });
98
+ }
99
+ };
100
+ export const MultipleTabs = {
101
+ args: {
102
+ defaultValue: 'tab1'
103
+ },
104
+ render: ()=>/*#__PURE__*/ _jsx("div", {
105
+ className: "bg-background-neutral-background p-24 w-[80vw]",
106
+ children: /*#__PURE__*/ _jsxs(Tabs, {
107
+ defaultValue: "tab1",
108
+ children: [
109
+ /*#__PURE__*/ _jsxs(TabsList, {
110
+ className: "gap-12 border-b border-neutral-strong",
111
+ children: [
112
+ /*#__PURE__*/ _jsx(TabsTrigger, {
113
+ value: "tab1",
114
+ children: "Tab 1"
115
+ }),
116
+ /*#__PURE__*/ _jsx(TabsTrigger, {
117
+ value: "tab2",
118
+ children: "Tab 2"
119
+ }),
120
+ /*#__PURE__*/ _jsx(TabsTrigger, {
121
+ value: "tab3",
122
+ children: "Tab 3"
123
+ }),
124
+ /*#__PURE__*/ _jsx(TabsTrigger, {
125
+ value: "tab4",
126
+ children: "Tab 4"
127
+ })
128
+ ]
129
+ }),
130
+ /*#__PURE__*/ _jsxs(TabsContents, {
131
+ children: [
132
+ /*#__PURE__*/ _jsx(TabsContent, {
133
+ value: "tab1",
134
+ children: /*#__PURE__*/ _jsx("div", {
135
+ className: "py-16",
136
+ children: /*#__PURE__*/ _jsx("p", {
137
+ className: "text-foreground-neutral-base",
138
+ children: "Content for Tab 1"
139
+ })
140
+ })
141
+ }),
142
+ /*#__PURE__*/ _jsx(TabsContent, {
143
+ value: "tab2",
144
+ children: /*#__PURE__*/ _jsx("div", {
145
+ className: "py-16",
146
+ children: /*#__PURE__*/ _jsx("p", {
147
+ className: "text-foreground-neutral-base",
148
+ children: "Content for Tab 2"
149
+ })
150
+ })
151
+ }),
152
+ /*#__PURE__*/ _jsx(TabsContent, {
153
+ value: "tab3",
154
+ children: /*#__PURE__*/ _jsx("div", {
155
+ className: "py-16",
156
+ children: /*#__PURE__*/ _jsx("p", {
157
+ className: "text-foreground-neutral-base",
158
+ children: "Content for Tab 3"
159
+ })
160
+ })
161
+ }),
162
+ /*#__PURE__*/ _jsx(TabsContent, {
163
+ value: "tab4",
164
+ children: /*#__PURE__*/ _jsx("div", {
165
+ className: "py-16",
166
+ children: /*#__PURE__*/ _jsx("p", {
167
+ className: "text-foreground-neutral-base",
168
+ children: "Content for Tab 4"
169
+ })
170
+ })
171
+ })
172
+ ]
173
+ })
174
+ ]
175
+ })
176
+ })
177
+ };
178
+
179
+ //# sourceMappingURL=tabs.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/tabs/tabs.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {useState} from 'react';\nimport {Tabs, TabsContent, TabsContents, TabsList, TabsTrigger} from '.';\n\nconst meta = {\n title: 'Components/Tabs',\n component: Tabs,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Tabs>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n args: {defaultValue: 'analytics'} as never,\n render: () => (\n <div className=\"bg-background-neutral-background p-24 w-[80vw]\">\n <Tabs defaultValue=\"analytics\">\n <TabsList className=\"gap-12 border-b border-neutral-strong\">\n <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n <TabsTrigger value=\"jobs\">Jobs</TabsTrigger>\n </TabsList>\n </Tabs>\n </div>\n ),\n};\n\nexport const Controlled: Story = {\n args: {value: 'analytics', onValueChange: () => undefined} as never,\n render: () => {\n const [value, setValue] = useState('analytics');\n return (\n <div className=\"bg-background-neutral-background p-24 w-[80vw]\">\n <Tabs value={value} onValueChange={setValue}>\n <TabsList className=\"gap-12 border-b border-neutral-strong\">\n <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n <TabsTrigger value=\"jobs\">Jobs</TabsTrigger>\n </TabsList>\n <TabsContents>\n <TabsContent value=\"analytics\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">\n Analytics content - Current value: {value}\n </p>\n </div>\n </TabsContent>\n <TabsContent value=\"jobs\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">\n Jobs content - Current value: {value}\n </p>\n </div>\n </TabsContent>\n </TabsContents>\n </Tabs>\n </div>\n );\n },\n};\n\nexport const MultipleTabs: Story = {\n args: {defaultValue: 'tab1'} as never,\n render: () => (\n <div className=\"bg-background-neutral-background p-24 w-[80vw]\">\n <Tabs defaultValue=\"tab1\">\n <TabsList className=\"gap-12 border-b border-neutral-strong\">\n <TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n <TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n <TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n <TabsTrigger value=\"tab4\">Tab 4</TabsTrigger>\n </TabsList>\n <TabsContents>\n <TabsContent value=\"tab1\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 1</p>\n </div>\n </TabsContent>\n <TabsContent value=\"tab2\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 2</p>\n </div>\n </TabsContent>\n <TabsContent value=\"tab3\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 3</p>\n </div>\n </TabsContent>\n <TabsContent value=\"tab4\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 4</p>\n </div>\n </TabsContent>\n </TabsContents>\n </Tabs>\n </div>\n ),\n};\n"],"names":["useState","Tabs","TabsContent","TabsContents","TabsList","TabsTrigger","meta","title","component","parameters","layout","tags","Default","args","defaultValue","render","div","className","value","Controlled","onValueChange","undefined","setValue","p","MultipleTabs"],"mappings":";AACA,SAAQA,QAAQ,QAAO,QAAQ;AAC/B,SAAQC,IAAI,EAAEC,WAAW,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,WAAW,QAAO,IAAI;AAEzE,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWP;IACXQ,YAAY;QACVC,QAAQ;IACV;IACAC,MAAM;QAAC;KAAW;AACpB;AAEA,eAAeL,KAAK;AAGpB,OAAO,MAAMM,UAAiB;IAC5BC,MAAM;QAACC,cAAc;IAAW;IAChCC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,KAAChB;gBAAKa,cAAa;0BACjB,cAAA,MAACV;oBAASa,WAAU;;sCAClB,KAACZ;4BAAYa,OAAM;sCAAY;;sCAC/B,KAACb;4BAAYa,OAAM;sCAAO;;;;;;AAKpC,EAAE;AAEF,OAAO,MAAMC,aAAoB;IAC/BN,MAAM;QAACK,OAAO;QAAaE,eAAe,IAAMC;IAAS;IACzDN,QAAQ;QACN,MAAM,CAACG,OAAOI,SAAS,GAAGtB,SAAS;QACnC,qBACE,KAACgB;YAAIC,WAAU;sBACb,cAAA,MAAChB;gBAAKiB,OAAOA;gBAAOE,eAAeE;;kCACjC,MAAClB;wBAASa,WAAU;;0CAClB,KAACZ;gCAAYa,OAAM;0CAAY;;0CAC/B,KAACb;gCAAYa,OAAM;0CAAO;;;;kCAE5B,MAACf;;0CACC,KAACD;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,MAACM;wCAAEN,WAAU;;4CAA+B;4CACNC;;;;;0CAI1C,KAAChB;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,MAACM;wCAAEN,WAAU;;4CAA+B;4CACXC;;;;;;;;;;IAQ/C;AACF,EAAE;AAEF,OAAO,MAAMM,eAAsB;IACjCX,MAAM;QAACC,cAAc;IAAM;IAC3BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,MAAChB;gBAAKa,cAAa;;kCACjB,MAACV;wBAASa,WAAU;;0CAClB,KAACZ;gCAAYa,OAAM;0CAAO;;0CAC1B,KAACb;gCAAYa,OAAM;0CAAO;;0CAC1B,KAACb;gCAAYa,OAAM;0CAAO;;0CAC1B,KAACb;gCAAYa,OAAM;0CAAO;;;;kCAE5B,MAACf;;0CACC,KAACD;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;0CAGhD,KAACf;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;0CAGhD,KAACf;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;0CAGhD,KAACf;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;;;;;;AAO1D,EAAE"}
@@ -1,3 +1,3 @@
1
- export { Toaster, type ToasterProps, toast } from './toast';
2
- export { ToastCustom, type ToastCustomProps } from './toast-custom';
1
+ export * from './toast';
2
+ export * from './toast-custom';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAE,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toast/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { Toaster, toast } from './toast.js';
2
- export { ToastCustom } from './toast-custom.js';
1
+ export * from './toast.js';
2
+ export * from './toast-custom.js';
3
3
 
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export {Toaster, type ToasterProps, toast} from './toast';\nexport {ToastCustom, type ToastCustomProps} from './toast-custom';\n"],"names":["Toaster","toast","ToastCustom"],"mappings":"AAAA,SAAQA,OAAO,EAAqBC,KAAK,QAAO,UAAU;AAC1D,SAAQC,WAAW,QAA8B,iBAAiB"}
1
+ {"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export * from './toast';\nexport * from './toast-custom';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,iBAAiB"}