@vritti/quantum-ui 0.3.8 → 0.3.9
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.
package/dist/TabsSkeleton.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { C as Content, L as List, T as Trigger, R as Root2 } from './index17.js';
|
|
3
|
-
import {
|
|
3
|
+
import { useState, useId } from 'react';
|
|
4
|
+
import { useParams, useNavigate, useLocation } from 'react-router-dom';
|
|
4
5
|
import { c as cn } from './utils.js';
|
|
5
6
|
import { L as LayoutGroup } from './index38.js';
|
|
6
7
|
import { m as motion, A as AnimatePresence } from './proxy.js';
|
|
@@ -56,27 +57,57 @@ function TabsContent$1({ className, ...props }) {
|
|
|
56
57
|
return /* @__PURE__ */ jsx(Content, { "data-slot": "tabs-content", className: cn("flex-1 outline-none", className), ...props });
|
|
57
58
|
}
|
|
58
59
|
|
|
59
|
-
function Tabs({
|
|
60
|
+
function Tabs(props) {
|
|
61
|
+
if (props.routeParam) return /* @__PURE__ */ jsx(RoutedTabs, { ...props, routeParam: props.routeParam });
|
|
62
|
+
return /* @__PURE__ */ jsx(StatefulTabs, { ...props });
|
|
63
|
+
}
|
|
64
|
+
Tabs.displayName = "Tabs";
|
|
65
|
+
function StatefulTabs({ routeParam: _routeParam, defaultValue, value, onValueChange, tabs, ...rest }) {
|
|
66
|
+
const [activeTab, setActiveTab] = useState(value ?? defaultValue ?? tabs[0]?.value);
|
|
67
|
+
function handleValueChange(newValue) {
|
|
68
|
+
setActiveTab(newValue);
|
|
69
|
+
onValueChange?.(newValue);
|
|
70
|
+
}
|
|
71
|
+
return /* @__PURE__ */ jsx(TabsView, { value: value ?? activeTab, onValueChange: handleValueChange, tabs, ...rest });
|
|
72
|
+
}
|
|
73
|
+
function RoutedTabs({ routeParam, defaultValue, onValueChange, tabs, ...rest }) {
|
|
74
|
+
const params = useParams();
|
|
75
|
+
const navigate = useNavigate();
|
|
76
|
+
const { pathname } = useLocation();
|
|
77
|
+
const fallback = defaultValue ?? tabs[0]?.value ?? "";
|
|
78
|
+
const current = params[routeParam] ?? fallback;
|
|
79
|
+
function handleValueChange(newValue) {
|
|
80
|
+
const existing = params[routeParam];
|
|
81
|
+
if (existing) {
|
|
82
|
+
const segments = pathname.split("/");
|
|
83
|
+
const index = segments.lastIndexOf(existing);
|
|
84
|
+
if (index >= 0) {
|
|
85
|
+
segments[index] = newValue;
|
|
86
|
+
navigate(segments.join("/"));
|
|
87
|
+
} else {
|
|
88
|
+
navigate(`${pathname.replace(/\/+$/, "")}/${newValue}`);
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
navigate(`${pathname.replace(/\/+$/, "")}/${newValue}`);
|
|
92
|
+
}
|
|
93
|
+
onValueChange?.(newValue);
|
|
94
|
+
}
|
|
95
|
+
return /* @__PURE__ */ jsx(TabsView, { value: current, onValueChange: handleValueChange, tabs, ...rest });
|
|
96
|
+
}
|
|
97
|
+
function TabsView({
|
|
98
|
+
value,
|
|
99
|
+
onValueChange,
|
|
60
100
|
tabs,
|
|
61
101
|
listClassName,
|
|
62
102
|
contentClassName,
|
|
63
103
|
disabled,
|
|
64
104
|
mountStrategy = "active",
|
|
65
105
|
animated = true,
|
|
66
|
-
defaultValue,
|
|
67
|
-
value,
|
|
68
|
-
onValueChange,
|
|
69
106
|
...props
|
|
70
107
|
}) {
|
|
71
108
|
const layoutId = useId();
|
|
72
|
-
const [activeTab, setActiveTab] = useState(value ?? defaultValue ?? tabs[0]?.value);
|
|
73
|
-
function handleValueChange(newValue) {
|
|
74
|
-
setActiveTab(newValue);
|
|
75
|
-
onValueChange?.(newValue);
|
|
76
|
-
}
|
|
77
|
-
const controlledValue = value ?? activeTab;
|
|
78
109
|
if (!animated) {
|
|
79
|
-
return /* @__PURE__ */ jsxs(Tabs$1, { value
|
|
110
|
+
return /* @__PURE__ */ jsxs(Tabs$1, { value, onValueChange, ...props, children: [
|
|
80
111
|
/* @__PURE__ */ jsx(TabsList$1, { className: listClassName, children: tabs.map((tab) => /* @__PURE__ */ jsx(
|
|
81
112
|
TabsTrigger$1,
|
|
82
113
|
{
|
|
@@ -99,8 +130,8 @@ function Tabs({
|
|
|
99
130
|
))
|
|
100
131
|
] });
|
|
101
132
|
}
|
|
102
|
-
const activeTabItem = tabs.find((t) => t.value ===
|
|
103
|
-
return /* @__PURE__ */ jsxs(Tabs$1, { value
|
|
133
|
+
const activeTabItem = tabs.find((t) => t.value === value);
|
|
134
|
+
return /* @__PURE__ */ jsxs(Tabs$1, { value, onValueChange, ...props, children: [
|
|
104
135
|
/* @__PURE__ */ jsx(LayoutGroup, { id: layoutId, children: /* @__PURE__ */ jsx(TabsList$1, { className: listClassName, children: tabs.map((tab) => /* @__PURE__ */ jsxs(
|
|
105
136
|
Trigger,
|
|
106
137
|
{
|
|
@@ -119,16 +150,12 @@ function Tabs({
|
|
|
119
150
|
tab.className
|
|
120
151
|
),
|
|
121
152
|
children: [
|
|
122
|
-
|
|
153
|
+
value === tab.value && /* @__PURE__ */ jsx(
|
|
123
154
|
motion.span,
|
|
124
155
|
{
|
|
125
156
|
layoutId: "tab-pill",
|
|
126
157
|
className: "absolute inset-0 rounded-md bg-background shadow-sm",
|
|
127
|
-
transition: {
|
|
128
|
-
type: "spring",
|
|
129
|
-
visualDuration: 0.3,
|
|
130
|
-
bounce: 0.05
|
|
131
|
-
}
|
|
158
|
+
transition: { type: "spring", visualDuration: 0.3, bounce: 0.05 }
|
|
132
159
|
}
|
|
133
160
|
),
|
|
134
161
|
/* @__PURE__ */ jsx("span", { className: "relative z-10", children: tab.label })
|
|
@@ -150,7 +177,6 @@ function Tabs({
|
|
|
150
177
|
) })
|
|
151
178
|
] });
|
|
152
179
|
}
|
|
153
|
-
Tabs.displayName = "Tabs";
|
|
154
180
|
const TabsList = TabsList$1;
|
|
155
181
|
const TabsContent = TabsContent$1;
|
|
156
182
|
const TabsTrigger = TabsTrigger$1;
|
package/dist/TabsSkeleton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsSkeleton.js","sources":["../shadcn/shadcnTabs/tabs.tsx","../lib/components/Tabs/Tabs.tsx","../lib/components/Tabs/TabsSkeleton.tsx"],"sourcesContent":["import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport type * as React from 'react';\nimport { cn } from '../utils';\n\n// Tabs root component wrapping Radix Tabs primitive\nfunction Tabs({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" className={cn('flex flex-col gap-2', className)} {...props} />;\n}\n\n// Container for tab trigger buttons\nfunction TabsList({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n 'bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]',\n className,\n )}\n {...props}\n />\n );\n}\n\n// Individual tab trigger button\nfunction TabsTrigger({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n // layout\n 'inline-flex items-center justify-center gap-1.5',\n // sizing & spacing\n 'rounded-md border border-transparent px-3 py-1',\n // typography\n 'text-sm font-medium whitespace-nowrap',\n // colors\n 'text-muted-foreground dark:text-muted-foreground',\n // active state\n 'data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n // transitions\n 'transition-all',\n // focus\n 'focus-visible:outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // disabled\n 'disabled:pointer-events-none disabled:opacity-50',\n // svg children\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n// Tab panel content shown when its trigger is active\nfunction TabsContent({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>) {\n return <TabsPrimitive.Content data-slot=\"tabs-content\" className={cn('flex-1 outline-none', className)} {...props} />;\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { AnimatePresence, LayoutGroup, motion } from 'motion/react';\nimport type React from 'react';\nimport { useId, useState } from 'react';\nimport {\n Tabs as ShadcnTabs,\n TabsContent as ShadcnTabsContent,\n TabsList as ShadcnTabsList,\n TabsTrigger as ShadcnTabsTrigger,\n} from '../../../shadcn/shadcnTabs';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n content: React.ReactNode;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n}\n\nexport interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n tabs: TabItem[];\n listClassName?: string;\n contentClassName?: string;\n disabled?: boolean;\n mountStrategy?: 'active' | 'all';\n animated?: boolean;\n}\n\n// Tabs root — renders list and content panels from the tabs array\nexport function Tabs({\n tabs,\n listClassName,\n contentClassName,\n disabled,\n mountStrategy = 'active',\n animated = true,\n defaultValue,\n value,\n onValueChange,\n ...props\n}: TabsProps) {\n const layoutId = useId();\n const [activeTab, setActiveTab] = useState(value ?? defaultValue ?? tabs[0]?.value);\n\n function handleValueChange(newValue: string) {\n setActiveTab(newValue);\n onValueChange?.(newValue);\n }\n\n const controlledValue = value ?? activeTab;\n\n if (!animated) {\n return (\n <ShadcnTabs value={controlledValue} onValueChange={handleValueChange} {...props}>\n <ShadcnTabsList className={listClassName}>\n {tabs.map((tab) => (\n <ShadcnTabsTrigger\n key={tab.value}\n value={tab.value}\n disabled={disabled || tab.disabled}\n className={tab.className}\n >\n {tab.label}\n </ShadcnTabsTrigger>\n ))}\n </ShadcnTabsList>\n {tabs.map((tab) => (\n <ShadcnTabsContent\n key={tab.value}\n value={tab.value}\n forceMount={mountStrategy === 'all' ? true : undefined}\n className={cn(contentClassName, tab.contentClassName)}\n >\n {tab.content}\n </ShadcnTabsContent>\n ))}\n </ShadcnTabs>\n );\n }\n\n const activeTabItem = tabs.find((t) => t.value === controlledValue);\n\n return (\n <ShadcnTabs value={controlledValue} onValueChange={handleValueChange} {...props}>\n <LayoutGroup id={layoutId}>\n <ShadcnTabsList className={listClassName}>\n {tabs.map((tab) => (\n <TabsPrimitive.Trigger\n key={tab.value}\n value={tab.value}\n disabled={disabled || tab.disabled}\n className={cn(\n 'relative inline-flex items-center justify-center gap-1.5',\n 'rounded-md px-3 py-1',\n 'text-sm font-medium whitespace-nowrap',\n 'text-muted-foreground',\n 'data-[state=active]:text-foreground',\n 'transition-colors duration-150',\n 'focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50',\n 'disabled:pointer-events-none disabled:opacity-50',\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n tab.className,\n )}\n >\n {controlledValue === tab.value && (\n <motion.span\n layoutId=\"tab-pill\"\n className=\"absolute inset-0 rounded-md bg-background shadow-sm\"\n transition={{\n type: 'spring',\n visualDuration: 0.3,\n bounce: 0.05,\n }}\n />\n )}\n <span className=\"relative z-10\">{tab.label}</span>\n </TabsPrimitive.Trigger>\n ))}\n </ShadcnTabsList>\n </LayoutGroup>\n <AnimatePresence mode=\"wait\" initial={false}>\n {activeTabItem && (\n <motion.div\n key={activeTabItem.value}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.15, ease: 'easeOut' }}\n className={cn('flex-1 outline-none', contentClassName, activeTabItem.contentClassName)}\n >\n {activeTabItem.content}\n </motion.div>\n )}\n </AnimatePresence>\n </ShadcnTabs>\n );\n}\n\nTabs.displayName = 'Tabs';\n\nexport const TabsList = ShadcnTabsList;\nexport const TabsContent = ShadcnTabsContent;\nexport const TabsTrigger = ShadcnTabsTrigger;\n","import type * as React from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport { Skeleton } from '../Skeleton';\n\nconst DEFAULT_TAB_WIDTHS = ['w-20', 'w-14', 'w-16', 'w-24', 'w-18'];\n\nexport interface TabsSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of tab triggers to render */\n count?: number;\n /** Height of the content area below the tabs */\n contentHeight?: string;\n /** Custom widths for each tab trigger (Tailwind width classes) */\n tabWidths?: string[];\n}\n\nexport const TabsSkeleton = ({\n count = 3,\n contentHeight = '500px',\n tabWidths,\n className,\n ...props\n}: TabsSkeletonProps) => {\n const widths = tabWidths ?? DEFAULT_TAB_WIDTHS;\n\n return (\n <div className={cn('flex flex-col gap-2', className)} {...props}>\n <div className=\"inline-flex h-9 w-fit items-center gap-0.5 rounded-lg bg-muted p-[3px]\">\n {Array.from({ length: count }, (_, i) => (\n <Skeleton\n // biome-ignore lint/suspicious/noArrayIndexKey: <static list of skeletons, not dynamic>\n key={i}\n className={cn('h-7 rounded-md', widths[i % widths.length], i === 0 && 'bg-background')}\n />\n ))}\n </div>\n <Skeleton className=\"w-full rounded-lg\" style={{ height: contentHeight }} />\n </div>\n );\n};\n\nTabsSkeleton.displayName = 'TabsSkeleton';\n"],"names":["Tabs","TabsPrimitive.Root","TabsList","TabsPrimitive.List","TabsTrigger","TabsPrimitive.Trigger","TabsContent","TabsPrimitive.Content","ShadcnTabs","ShadcnTabsList","ShadcnTabsTrigger","ShadcnTabsContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TabsSkeleton.js","sources":["../shadcn/shadcnTabs/tabs.tsx","../lib/components/Tabs/Tabs.tsx","../lib/components/Tabs/TabsSkeleton.tsx"],"sourcesContent":["import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport type * as React from 'react';\nimport { cn } from '../utils';\n\n// Tabs root component wrapping Radix Tabs primitive\nfunction Tabs({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" className={cn('flex flex-col gap-2', className)} {...props} />;\n}\n\n// Container for tab trigger buttons\nfunction TabsList({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n 'bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]',\n className,\n )}\n {...props}\n />\n );\n}\n\n// Individual tab trigger button\nfunction TabsTrigger({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n // layout\n 'inline-flex items-center justify-center gap-1.5',\n // sizing & spacing\n 'rounded-md border border-transparent px-3 py-1',\n // typography\n 'text-sm font-medium whitespace-nowrap',\n // colors\n 'text-muted-foreground dark:text-muted-foreground',\n // active state\n 'data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n // transitions\n 'transition-all',\n // focus\n 'focus-visible:outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // disabled\n 'disabled:pointer-events-none disabled:opacity-50',\n // svg children\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n// Tab panel content shown when its trigger is active\nfunction TabsContent({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>) {\n return <TabsPrimitive.Content data-slot=\"tabs-content\" className={cn('flex-1 outline-none', className)} {...props} />;\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { AnimatePresence, LayoutGroup, motion } from 'motion/react';\nimport type React from 'react';\nimport { useId, useState } from 'react';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport {\n Tabs as ShadcnTabs,\n TabsContent as ShadcnTabsContent,\n TabsList as ShadcnTabsList,\n TabsTrigger as ShadcnTabsTrigger,\n} from '../../../shadcn/shadcnTabs';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n content: React.ReactNode;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n}\n\nexport interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n tabs: TabItem[];\n listClassName?: string;\n contentClassName?: string;\n disabled?: boolean;\n mountStrategy?: 'active' | 'all';\n animated?: boolean;\n // When set, the active tab is bound to this URL path param (e.g. \"versionTab\").\n // The route must include that segment; switching tabs navigates to update it,\n // so the selection is deep-linkable and survives refresh.\n routeParam?: string;\n}\n\ninterface TabsViewProps extends Omit<TabsProps, 'routeParam' | 'defaultValue' | 'value' | 'onValueChange'> {\n value: string;\n onValueChange: (value: string) => void;\n}\n\n// Tabs root — URL-path-bound when routeParam is set, otherwise internal/controlled state\nexport function Tabs(props: TabsProps) {\n if (props.routeParam) return <RoutedTabs {...props} routeParam={props.routeParam} />;\n return <StatefulTabs {...props} />;\n}\n\nTabs.displayName = 'Tabs';\n\n// Internal-state mode — preserves the original uncontrolled/`value`-controlled behavior\nfunction StatefulTabs({ routeParam: _routeParam, defaultValue, value, onValueChange, tabs, ...rest }: TabsProps) {\n const [activeTab, setActiveTab] = useState(value ?? defaultValue ?? tabs[0]?.value);\n\n function handleValueChange(newValue: string) {\n setActiveTab(newValue);\n onValueChange?.(newValue);\n }\n\n return <TabsView value={(value ?? activeTab) as string} onValueChange={handleValueChange} tabs={tabs} {...rest} />;\n}\n\n// URL-path mode — the active tab is read from / written to a route path param\nfunction RoutedTabs({ routeParam, defaultValue, onValueChange, tabs, ...rest }: TabsProps & { routeParam: string }) {\n const params = useParams();\n const navigate = useNavigate();\n const { pathname } = useLocation();\n\n const fallback = ((defaultValue as string) ?? tabs[0]?.value) ?? '';\n const current = params[routeParam] ?? fallback;\n\n function handleValueChange(newValue: string) {\n const existing = params[routeParam];\n if (existing) {\n const segments = pathname.split('/');\n const index = segments.lastIndexOf(existing);\n if (index >= 0) {\n segments[index] = newValue;\n navigate(segments.join('/'));\n } else {\n navigate(`${pathname.replace(/\\/+$/, '')}/${newValue}`);\n }\n } else {\n navigate(`${pathname.replace(/\\/+$/, '')}/${newValue}`);\n }\n onValueChange?.(newValue);\n }\n\n return <TabsView value={current} onValueChange={handleValueChange} tabs={tabs} {...rest} />;\n}\n\n// Presentational tabs — fully controlled by value + onValueChange\nfunction TabsView({\n value,\n onValueChange,\n tabs,\n listClassName,\n contentClassName,\n disabled,\n mountStrategy = 'active',\n animated = true,\n ...props\n}: TabsViewProps) {\n const layoutId = useId();\n\n if (!animated) {\n return (\n <ShadcnTabs value={value} onValueChange={onValueChange} {...props}>\n <ShadcnTabsList className={listClassName}>\n {tabs.map((tab) => (\n <ShadcnTabsTrigger\n key={tab.value}\n value={tab.value}\n disabled={disabled || tab.disabled}\n className={tab.className}\n >\n {tab.label}\n </ShadcnTabsTrigger>\n ))}\n </ShadcnTabsList>\n {tabs.map((tab) => (\n <ShadcnTabsContent\n key={tab.value}\n value={tab.value}\n forceMount={mountStrategy === 'all' ? true : undefined}\n className={cn(contentClassName, tab.contentClassName)}\n >\n {tab.content}\n </ShadcnTabsContent>\n ))}\n </ShadcnTabs>\n );\n }\n\n const activeTabItem = tabs.find((t) => t.value === value);\n\n return (\n <ShadcnTabs value={value} onValueChange={onValueChange} {...props}>\n <LayoutGroup id={layoutId}>\n <ShadcnTabsList className={listClassName}>\n {tabs.map((tab) => (\n <TabsPrimitive.Trigger\n key={tab.value}\n value={tab.value}\n disabled={disabled || tab.disabled}\n className={cn(\n 'relative inline-flex items-center justify-center gap-1.5',\n 'rounded-md px-3 py-1',\n 'text-sm font-medium whitespace-nowrap',\n 'text-muted-foreground',\n 'data-[state=active]:text-foreground',\n 'transition-colors duration-150',\n 'focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50',\n 'disabled:pointer-events-none disabled:opacity-50',\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n tab.className,\n )}\n >\n {value === tab.value && (\n <motion.span\n layoutId=\"tab-pill\"\n className=\"absolute inset-0 rounded-md bg-background shadow-sm\"\n transition={{ type: 'spring', visualDuration: 0.3, bounce: 0.05 }}\n />\n )}\n <span className=\"relative z-10\">{tab.label}</span>\n </TabsPrimitive.Trigger>\n ))}\n </ShadcnTabsList>\n </LayoutGroup>\n <AnimatePresence mode=\"wait\" initial={false}>\n {activeTabItem && (\n <motion.div\n key={activeTabItem.value}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.15, ease: 'easeOut' }}\n className={cn('flex-1 outline-none', contentClassName, activeTabItem.contentClassName)}\n >\n {activeTabItem.content}\n </motion.div>\n )}\n </AnimatePresence>\n </ShadcnTabs>\n );\n}\n\nexport const TabsList = ShadcnTabsList;\nexport const TabsContent = ShadcnTabsContent;\nexport const TabsTrigger = ShadcnTabsTrigger;\n","import type * as React from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport { Skeleton } from '../Skeleton';\n\nconst DEFAULT_TAB_WIDTHS = ['w-20', 'w-14', 'w-16', 'w-24', 'w-18'];\n\nexport interface TabsSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of tab triggers to render */\n count?: number;\n /** Height of the content area below the tabs */\n contentHeight?: string;\n /** Custom widths for each tab trigger (Tailwind width classes) */\n tabWidths?: string[];\n}\n\nexport const TabsSkeleton = ({\n count = 3,\n contentHeight = '500px',\n tabWidths,\n className,\n ...props\n}: TabsSkeletonProps) => {\n const widths = tabWidths ?? DEFAULT_TAB_WIDTHS;\n\n return (\n <div className={cn('flex flex-col gap-2', className)} {...props}>\n <div className=\"inline-flex h-9 w-fit items-center gap-0.5 rounded-lg bg-muted p-[3px]\">\n {Array.from({ length: count }, (_, i) => (\n <Skeleton\n // biome-ignore lint/suspicious/noArrayIndexKey: <static list of skeletons, not dynamic>\n key={i}\n className={cn('h-7 rounded-md', widths[i % widths.length], i === 0 && 'bg-background')}\n />\n ))}\n </div>\n <Skeleton className=\"w-full rounded-lg\" style={{ height: contentHeight }} />\n </div>\n );\n};\n\nTabsSkeleton.displayName = 'TabsSkeleton';\n"],"names":["Tabs","TabsPrimitive.Root","TabsList","TabsPrimitive.List","TabsTrigger","TabsPrimitive.Trigger","TabsContent","TabsPrimitive.Content","ShadcnTabs","ShadcnTabsList","ShadcnTabsTrigger","ShadcnTabsContent"],"mappings":"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"}
|
package/dist/index17.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { P as Primitive, c as composeEventHandlers, u as useControllableState } from './index18.js';
|
|
3
3
|
import { c as createContextScope } from './index19.js';
|
|
4
|
-
import {
|
|
4
|
+
import { R as Root, I as Item, c as createRovingFocusGroupScope } from './index20.js';
|
|
5
5
|
import { P as Presence } from './index21.js';
|
|
6
6
|
import { u as useDirection } from './index22.js';
|
|
7
7
|
import { u as useId } from './index23.js';
|
|
@@ -16,8 +16,9 @@ export interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPri
|
|
|
16
16
|
disabled?: boolean;
|
|
17
17
|
mountStrategy?: 'active' | 'all';
|
|
18
18
|
animated?: boolean;
|
|
19
|
+
routeParam?: string;
|
|
19
20
|
}
|
|
20
|
-
export declare function Tabs(
|
|
21
|
+
export declare function Tabs(props: TabsProps): import("react/jsx-runtime").JSX.Element;
|
|
21
22
|
export declare namespace Tabs {
|
|
22
23
|
var displayName: string;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../lib/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../lib/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAEL,WAAW,IAAI,iBAAiB,EAChC,QAAQ,IAAI,cAAc,EAC1B,WAAW,IAAI,iBAAiB,EACjC,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC;IAC1F,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAQD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CAGpC;yBAHe,IAAI;;;AAiJpB,eAAO,MAAM,QAAQ,uBAAiB,CAAC;AACvC,eAAO,MAAM,WAAW,0BAAoB,CAAC;AAC7C,eAAO,MAAM,WAAW,0BAAoB,CAAC"}
|