@pos-360/horizon 0.10.0 → 0.12.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.
- package/dist/{chunk-3CJL52WY.mjs → chunk-HAK377GX.mjs} +8 -2
- package/dist/chunk-HAK377GX.mjs.map +1 -0
- package/dist/{chunk-LUUH457P.js → chunk-HHXZQTVH.js} +8 -2
- package/dist/chunk-HHXZQTVH.js.map +1 -0
- package/dist/{chunk-FIYD5CSW.mjs → chunk-RPR6I35V.mjs} +235 -26
- package/dist/{chunk-6B6UOXJJ.js.map → chunk-RPR6I35V.mjs.map} +1 -1
- package/dist/{chunk-6B6UOXJJ.js → chunk-U2QEAL7N.js} +244 -25
- package/dist/chunk-U2QEAL7N.js.map +1 -0
- package/dist/enhanced.js +27 -27
- package/dist/enhanced.mjs +1 -1
- package/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +145 -117
- package/dist/index.mjs +2 -2
- package/dist/primitives.d.mts +49 -6
- package/dist/primitives.d.ts +49 -6
- package/dist/primitives.js +118 -90
- package/dist/primitives.mjs +1 -1
- package/package.json +4 -1
- package/dist/chunk-3CJL52WY.mjs.map +0 -1
- package/dist/chunk-FIYD5CSW.mjs.map +0 -1
- package/dist/chunk-LUUH457P.js.map +0 -1
package/dist/primitives.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormLabel, FormMessage, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Skeleton, SkeletonAvatar, SkeletonBadge, SkeletonButton, SkeletonCard, SkeletonIcon, SkeletonInput, SkeletonSubtitle, SkeletonTableRow, SkeletonTableRows, SkeletonText, SkeletonTitle, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableRowCheckbox, TableSelectAll, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, buttonVariants, separatorVariants, toggleGroupVariants, toggleItemVariants, useFormContext, useFormFieldContext, useTableSelection } from './chunk-
|
|
1
|
+
export { Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormLabel, FormMessage, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Skeleton, SkeletonAvatar, SkeletonBadge, SkeletonButton, SkeletonCard, SkeletonIcon, SkeletonInput, SkeletonSubtitle, SkeletonTableRow, SkeletonTableRows, SkeletonText, SkeletonTitle, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableRowCheckbox, TableSelectAll, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, buttonVariants, segmentedControlItemVariants, segmentedControlVariants, separatorVariants, switchLabelVariants, switchThumbVariants, switchTrackVariants, toggleGroupVariants, toggleItemVariants, useFormContext, useFormFieldContext, useTableSelection } from './chunk-RPR6I35V.mjs';
|
|
2
2
|
export { Badge, Caption, Code, Heading, Label, Text, badgeVariants, captionVariants, codeVariants, headingVariants, labelVariants, textVariants } from './chunk-E3UN74IA.mjs';
|
|
3
3
|
import './chunk-WFBSFUC6.mjs';
|
|
4
4
|
//# sourceMappingURL=primitives.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pos-360/horizon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "POS-360 unified component library - the horizon all apps look toward",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -54,9 +54,12 @@
|
|
|
54
54
|
"@radix-ui/react-dropdown-menu": "^2.1.1",
|
|
55
55
|
"@radix-ui/react-label": "^2.1.0",
|
|
56
56
|
"@radix-ui/react-popover": "^1.1.1",
|
|
57
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
57
58
|
"@radix-ui/react-select": "^2.1.1",
|
|
58
59
|
"@radix-ui/react-slot": "^1.1.0",
|
|
60
|
+
"@radix-ui/react-switch": "^1.2.6",
|
|
59
61
|
"@radix-ui/react-tabs": "^1.1.0",
|
|
62
|
+
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
60
63
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
61
64
|
"@visx/axis": "^3.12.0",
|
|
62
65
|
"@visx/curve": "^3.12.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/enhanced/animated-button/animated-button.tsx","../src/components/enhanced/dashboard/dashboard.tsx","../src/components/enhanced/dashboard/dashboard-panel.tsx","../src/components/enhanced/dashboard/components/stat-display.tsx","../src/components/enhanced/dashboard/components/chart-renderer.tsx","../src/components/enhanced/dashboard/panels/compact-panel.tsx","../src/components/enhanced/dashboard/components/table-renderer.tsx","../src/components/enhanced/dashboard/panels/medium-panel.tsx","../src/components/enhanced/dashboard/panels/large-panel.tsx","../src/components/enhanced/input/input.tsx","../src/components/enhanced/template-selector/template-selector.tsx","../src/components/enhanced/text-button/text-button.tsx","../src/components/enhanced/toast/toast.tsx","../src/components/enhanced/side-nav/side-nav-context.tsx","../src/components/enhanced/side-nav/side-nav-item.tsx","../src/components/enhanced/side-nav/side-nav-section.tsx","../src/components/enhanced/side-nav/side-nav.tsx","../src/components/enhanced/side-nav/side-nav-header.tsx","../src/components/enhanced/side-nav/side-nav-footer.tsx"],"names":["jsx","breakpoints","isResponsive","forwardRef","useId","useMemo","jsxs","TrendingUp","TrendingDown","Minus","Fragment","createContext","variantStyles","useState","motion","Check","Info","useEffect","X","ChevronUp","ChevronDown","useContext","ChevronRight","AnimatePresence","useRef"],"mappings":"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","file":"chunk-3CJL52WY.mjs","sourcesContent":["\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nexport interface AnimatedButtonProps {\n label: string;\n variant?: \"primary\" | \"outlined\";\n buttonContainerClassName?: string;\n buttonTextClassName?: string;\n onClick?: () => void;\n}\n\nexport const AnimatedButton = ({\n label,\n variant = \"primary\",\n buttonContainerClassName,\n buttonTextClassName,\n onClick,\n}: AnimatedButtonProps) => {\n const handleOnClick = () => {\n onClick?.();\n };\n\n const baseButtonClass = \"text-xs tracking-wider font-medium\";\n\n const variantButtonClass = `${\n variant === \"outlined\" ? \"border border-1 bg-white\" : \"bg-[#0F62FE]\"\n }`;\n\n return (\n <motion.button\n whileHover={{\n scale: variant === \"primary\" ? 1.025 : 1,\n boxShadow:\n variant === \"primary\"\n ? \"0 0 4px rgba(15, 96, 254, 0.4), 0 0 16px rgba(15, 96, 254, 0.2)\"\n : \"\",\n }}\n whileTap={{ scale: variant === \"primary\" ? 0.98 : 1 }}\n onClick={handleOnClick}\n className={`w-fit p-2 px-4 ${variantButtonClass} ${buttonContainerClassName}`}\n >\n <span className={`${baseButtonClass} ${buttonTextClassName}`}>\n {label.toUpperCase()}\n </span>\n </motion.button>\n );\n};\n","\"use client\";\n\nimport { forwardRef, createContext, useContext, useId, useMemo } from \"react\";\nimport { cn } from \"@/utils\";\nimport type { DashboardProps, ResponsiveValue, Breakpoint } from \"./types\";\n\ninterface DashboardContextValue {\n columns: ResponsiveValue<number>;\n}\n\nconst DashboardContext = createContext<DashboardContextValue>({ columns: 12 });\n\nexport const useDashboardContext = () => useContext(DashboardContext);\n\n/** Tailwind breakpoint values in pixels */\nconst breakpoints: Record<Breakpoint, number> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\n/** Check if value is a responsive object */\nfunction isResponsive<T>(value: ResponsiveValue<T>): value is Partial<Record<\"default\" | Breakpoint, T>> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** Generate CSS for responsive grid properties */\nfunction generateResponsiveCSS(\n id: string,\n columns: ResponsiveValue<number>,\n rowHeight: ResponsiveValue<number> | undefined,\n gap: ResponsiveValue<number>\n): string {\n const cssRules: string[] = [];\n const selector = `[data-dashboard-id=\"${id}\"]`;\n\n // Helper to get value at breakpoint\n const getValue = <T,>(value: ResponsiveValue<T>, bp: \"default\" | Breakpoint): T | undefined => {\n if (!isResponsive(value)) return bp === \"default\" ? value : undefined;\n return value[bp];\n };\n\n // Collect all breakpoints that have any value defined\n const allBreakpoints: (\"default\" | Breakpoint)[] = [\"default\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n\n // Track last known values for cascading\n let lastColumns: number | undefined;\n let lastRowHeight: number | undefined;\n let lastGap: number | undefined;\n\n for (const bp of allBreakpoints) {\n const colVal = getValue(columns, bp);\n const rowVal = rowHeight ? getValue(rowHeight, bp) : undefined;\n const gapVal = getValue(gap, bp);\n\n // Update tracked values if defined\n if (colVal !== undefined) lastColumns = colVal;\n if (rowVal !== undefined) lastRowHeight = rowVal;\n if (gapVal !== undefined) lastGap = gapVal;\n\n // Only generate rule if something changed at this breakpoint\n if (colVal !== undefined || rowVal !== undefined || gapVal !== undefined) {\n const props: string[] = [];\n\n if (lastColumns !== undefined) {\n props.push(`grid-template-columns: repeat(${lastColumns}, minmax(0, 1fr))`);\n }\n if (lastRowHeight !== undefined) {\n props.push(`grid-auto-rows: ${lastRowHeight}px`);\n }\n if (lastGap !== undefined) {\n props.push(`gap: ${lastGap * 0.25}rem`);\n }\n\n if (props.length > 0) {\n const rule = `${selector} { ${props.join(\"; \")}; }`;\n if (bp === \"default\") {\n cssRules.push(rule);\n } else {\n cssRules.push(`@media (min-width: ${breakpoints[bp]}px) { ${rule} }`);\n }\n }\n }\n }\n\n return cssRules.join(\"\\n\");\n}\n\nexport const Dashboard = forwardRef<HTMLDivElement, DashboardProps>(\n ({ columns = 12, rowHeight, gap = 4, className, children }, ref) => {\n const reactId = useId();\n const dashboardId = `dashboard-${reactId.replace(/:/g, \"\")}`;\n\n const responsiveCSS = useMemo(\n () => generateResponsiveCSS(dashboardId, columns, rowHeight, gap),\n [dashboardId, columns, rowHeight, gap]\n );\n\n return (\n <DashboardContext.Provider value={{ columns }}>\n <style dangerouslySetInnerHTML={{ __html: responsiveCSS }} />\n <div\n ref={ref}\n data-dashboard-id={dashboardId}\n className={cn(\"hz-rounded grid w-full\", className)}\n >\n {children}\n </div>\n </DashboardContext.Provider>\n );\n }\n);\n\nDashboard.displayName = \"Dashboard\";\n","\"use client\";\n\nimport { forwardRef, useId, useMemo } from \"react\";\nimport { cn } from \"@/utils\";\nimport type { DashboardPanelProps, ResponsiveValue, Breakpoint } from \"./types\";\n\n/** Tailwind breakpoint values in pixels */\nconst breakpoints: Record<Breakpoint, number> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\n/** Check if value is a responsive object */\nfunction isResponsive<T>(value: ResponsiveValue<T>): value is Partial<Record<\"default\" | Breakpoint, T>> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** Generate CSS for responsive panel spans */\nfunction generatePanelCSS(\n id: string,\n span: ResponsiveValue<number>,\n rowSpan: ResponsiveValue<number>\n): string {\n const cssRules: string[] = [];\n const selector = `[data-panel-id=\"${id}\"]`;\n\n const getValue = <T,>(value: ResponsiveValue<T>, bp: \"default\" | Breakpoint): T | undefined => {\n if (!isResponsive(value)) return bp === \"default\" ? value : undefined;\n return value[bp];\n };\n\n const allBreakpoints: (\"default\" | Breakpoint)[] = [\"default\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n\n let lastSpan: number | undefined;\n let lastRowSpan: number | undefined;\n\n for (const bp of allBreakpoints) {\n const spanVal = getValue(span, bp);\n const rowSpanVal = getValue(rowSpan, bp);\n\n if (spanVal !== undefined) lastSpan = spanVal;\n if (rowSpanVal !== undefined) lastRowSpan = rowSpanVal;\n\n if (spanVal !== undefined || rowSpanVal !== undefined) {\n const props: string[] = [];\n\n if (lastSpan !== undefined) {\n props.push(`grid-column: span ${lastSpan} / span ${lastSpan}`);\n }\n if (lastRowSpan !== undefined) {\n props.push(`grid-row: span ${lastRowSpan} / span ${lastRowSpan}`);\n }\n\n if (props.length > 0) {\n const rule = `${selector} { ${props.join(\"; \")}; }`;\n if (bp === \"default\") {\n cssRules.push(rule);\n } else {\n cssRules.push(`@media (min-width: ${breakpoints[bp]}px) { ${rule} }`);\n }\n }\n }\n }\n\n return cssRules.join(\"\\n\");\n}\n\nexport const DashboardPanel = forwardRef<HTMLDivElement, DashboardPanelProps>(\n ({ span = 1, rowSpan = 1, className, children }, ref) => {\n const reactId = useId();\n const panelId = `panel-${reactId.replace(/:/g, \"\")}`;\n\n // Check if we need responsive CSS\n const needsResponsiveCSS = isResponsive(span) || isResponsive(rowSpan);\n\n const responsiveCSS = useMemo(() => {\n if (!needsResponsiveCSS) return null;\n return generatePanelCSS(panelId, span, rowSpan);\n }, [needsResponsiveCSS, panelId, span, rowSpan]);\n\n // For simple non-responsive values, use inline styles\n const inlineStyle = !needsResponsiveCSS\n ? {\n gridColumn: `span ${span} / span ${span}`,\n gridRow: `span ${rowSpan} / span ${rowSpan}`,\n }\n : undefined;\n\n return (\n <>\n {responsiveCSS && <style dangerouslySetInnerHTML={{ __html: responsiveCSS }} />}\n <div\n ref={ref}\n data-panel-id={needsResponsiveCSS ? panelId : undefined}\n className={cn(\"min-w-0 h-full\", className)}\n style={inlineStyle}\n >\n {children}\n </div>\n </>\n );\n }\n);\n\nDashboardPanel.displayName = \"DashboardPanel\";\n","\"use client\";\n\nimport { forwardRef, useMemo } from \"react\";\nimport { cn } from \"@/utils\";\nimport { Text } from \"@/components/primitives/typography\";\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\";\nimport type { StatData, TrendData } from \"../types\";\n\ninterface StatDisplayProps {\n data: StatData;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst TrendBadge = ({ trend, size }: { trend: TrendData; size: \"sm\" | \"md\" | \"lg\" }) => {\n const Icon = trend.direction === \"up\"\n ? TrendingUp\n : trend.direction === \"down\"\n ? TrendingDown\n : Minus;\n\n const iconSize = size === \"sm\" ? \"w-3 h-3\" : \"w-3.5 h-3.5\";\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-1 px-2 py-0.5 rounded-hz-full font-medium\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-xs\",\n size === \"lg\" && \"text-sm\",\n trend.direction === \"up\" && \"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400\",\n trend.direction === \"down\" && \"bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-400\",\n trend.direction === \"neutral\" && \"bg-gray-100 text-gray-600 dark:bg-neutral-800 dark:text-gray-400\"\n )}\n >\n <Icon className={iconSize} />\n <span>{Math.abs(trend.value).toFixed(1)}%</span>\n </div>\n );\n};\n\nexport const StatDisplay = forwardRef<HTMLDivElement, StatDisplayProps>(\n ({ data, size = \"md\", className }, ref) => {\n const { value, label, trend, prefix = \"\", suffix = \"\" } = data;\n\n // Format value if it's a number\n const formattedValue = useMemo(() => {\n if (typeof value === \"number\") {\n return value.toLocaleString(\"en-US\", {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n });\n }\n return value;\n }, [value]);\n\n return (\n <div ref={ref} className={cn(\"flex flex-col\", className)}>\n {/* Label */}\n <Text\n as=\"span\"\n size=\"xs\"\n color=\"muted\"\n className=\"uppercase tracking-wide\"\n >\n {label}\n </Text>\n\n {/* Value */}\n <span\n className={cn(\n \"font-bold text-gray-900 dark:text-gray-100 mt-0.5\",\n size === \"sm\" && \"text-lg\",\n size === \"md\" && \"text-xl\",\n size === \"lg\" && \"text-2xl\"\n )}\n >\n {prefix}{formattedValue}{suffix}\n </span>\n\n {/* Trend */}\n {trend && (\n <div className=\"flex items-center gap-2 mt-1\">\n <TrendBadge trend={trend} size={size} />\n {trend.label && (\n <Text as=\"span\" size=\"xs\" color=\"muted\">\n {trend.label}\n </Text>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nStatDisplay.displayName = \"StatDisplay\";\n","\"use client\";\n\nimport { forwardRef, useMemo } from \"react\";\nimport { Pie } from \"@visx/shape\";\nimport { Group } from \"@visx/group\";\nimport { scaleOrdinal, scaleLinear, scaleBand } from \"@visx/scale\";\nimport { LinePath, AreaClosed, Bar } from \"@visx/shape\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { LinearGradient } from \"@visx/gradient\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { curveMonotoneX } from \"@visx/curve\";\nimport { cn } from \"@/utils\";\nimport { Text } from \"@/components/primitives/typography\";\nimport type { ChartConfig, DonutChartData, LineChartData, LineChartSeries, BarChartData } from \"../types\";\n\n// Default color palette\nconst defaultColors = [\n \"#3b82f6\", // blue-500\n \"#8b5cf6\", // violet-500\n \"#ec4899\", // pink-500\n \"#f59e0b\", // amber-500\n \"#10b981\", // emerald-500\n \"#6366f1\", // indigo-500\n];\n\n// ============================================\n// Donut Chart\n// ============================================\n\ninterface DonutChartProps {\n data: DonutChartData[];\n width: number;\n height: number;\n centerLabel?: string;\n centerValue?: string;\n variant?: \"full\" | \"half\";\n}\n\nconst DonutChart = ({\n data,\n width,\n height,\n centerLabel,\n centerValue,\n variant = \"half\",\n}: DonutChartProps) => {\n const isHalf = variant === \"half\";\n const radius = isHalf ? Math.min(width, height * 2) / 2 : Math.min(width, height) / 2;\n const innerRadius = radius * 0.65;\n const centerX = width / 2;\n const centerY = isHalf ? height : height / 2;\n\n const colorScale = useMemo(\n () =>\n scaleOrdinal({\n domain: data.map((d) => d.label),\n range: data.map((d, i) => d.color || defaultColors[i % defaultColors.length]),\n }),\n [data]\n );\n\n const getValue = (d: DonutChartData) => d.value;\n\n return (\n <svg width={width} height={height}>\n <Group top={centerY} left={centerX}>\n <Pie\n data={data}\n pieValue={getValue}\n outerRadius={radius}\n innerRadius={innerRadius}\n startAngle={isHalf ? -Math.PI / 2 : 0}\n endAngle={isHalf ? Math.PI / 2 : Math.PI * 2}\n padAngle={0.02}\n cornerRadius={3}\n >\n {(pie) =>\n pie.arcs.map((arc, index) => (\n <path\n key={`arc-${index}`}\n d={pie.path(arc) || \"\"}\n fill={colorScale(arc.data.label)}\n className=\"transition-opacity hover:opacity-80\"\n />\n ))\n }\n </Pie>\n\n {(centerLabel || centerValue) && (\n <g>\n {centerValue && (\n <text\n y={isHalf ? -20 : -8}\n textAnchor=\"middle\"\n className=\"fill-gray-900 dark:fill-gray-100\"\n style={{ fontSize: \"1.25rem\", fontWeight: 700 }}\n >\n {centerValue}\n </text>\n )}\n {centerLabel && (\n <text\n y={isHalf ? 0 : 12}\n textAnchor=\"middle\"\n className=\"fill-gray-500 dark:fill-gray-400\"\n style={{ fontSize: \"0.75rem\" }}\n >\n {centerLabel}\n </text>\n )}\n </g>\n )}\n </Group>\n </svg>\n );\n};\n\n// ============================================\n// Line Chart\n// ============================================\n\ninterface LineChartProps {\n data: LineChartData[];\n width: number;\n height: number;\n color?: string;\n showArea?: boolean;\n}\n\nconst margin = { top: 20, right: 20, bottom: 30, left: 50 };\n\nconst LineChart = ({ data, width, height, color = \"#3b82f6\", showArea = true }: LineChartProps) => {\n const innerWidth = width - margin.left - margin.right;\n const innerHeight = height - margin.top - margin.bottom;\n\n const xScale = useMemo(\n () =>\n scaleBand({\n domain: data.map((d) => d.label),\n range: [0, innerWidth],\n padding: 0.2,\n }),\n [data, innerWidth]\n );\n\n const yScale = useMemo(() => {\n const maxValue = Math.max(...data.map((d) => d.value));\n return scaleLinear({\n domain: [0, maxValue * 1.1],\n range: [innerHeight, 0],\n nice: true,\n });\n }, [data, innerHeight]);\n\n const getX = (d: LineChartData) => (xScale(d.label) || 0) + xScale.bandwidth() / 2;\n const getY = (d: LineChartData) => yScale(d.value);\n\n if (width < 100 || height < 80) return null;\n\n return (\n <svg width={width} height={height}>\n <LinearGradient id=\"area-gradient\" from={color} to={color} fromOpacity={0.3} toOpacity={0} />\n\n <Group left={margin.left} top={margin.top}>\n <GridRows\n scale={yScale}\n width={innerWidth}\n strokeDasharray=\"3,3\"\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n className=\"text-gray-400 dark:text-neutral-600\"\n />\n\n {showArea && (\n <AreaClosed\n data={data}\n x={getX}\n y={getY}\n yScale={yScale}\n curve={curveMonotoneX}\n fill=\"url(#area-gradient)\"\n />\n )}\n\n <LinePath data={data} x={getX} y={getY} stroke={color} strokeWidth={2.5} curve={curveMonotoneX} />\n\n {data.map((d, i) => (\n <circle\n key={`point-${i}`}\n cx={getX(d)}\n cy={getY(d)}\n r={3}\n fill=\"white\"\n stroke={color}\n strokeWidth={2}\n />\n ))}\n\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n tickLabelProps={() => ({\n fill: \"currentColor\",\n fontSize: 10,\n textAnchor: \"middle\",\n className: \"text-gray-500 dark:text-gray-400\",\n })}\n hideAxisLine\n tickStroke=\"transparent\"\n />\n\n <AxisLeft\n scale={yScale}\n numTicks={4}\n tickLabelProps={() => ({\n fill: \"currentColor\",\n fontSize: 10,\n textAnchor: \"end\",\n dx: -4,\n dy: 4,\n className: \"text-gray-500 dark:text-gray-400\",\n })}\n hideAxisLine\n tickStroke=\"transparent\"\n />\n </Group>\n </svg>\n );\n};\n\n// ============================================\n// Multi-Line Chart\n// ============================================\n\ninterface MultiLineChartProps {\n series: LineChartSeries[];\n width: number;\n height: number;\n showArea?: boolean;\n}\n\nconst MultiLineChart = ({ series, width, height, showArea = false }: MultiLineChartProps) => {\n const innerWidth = width - margin.left - margin.right;\n const innerHeight = height - margin.top - margin.bottom;\n\n // Get all unique labels across all series\n const allLabels = useMemo(() => {\n const labels = new Set<string>();\n series.forEach((s) => s.data.forEach((d) => labels.add(d.label)));\n return Array.from(labels);\n }, [series]);\n\n const xScale = useMemo(\n () =>\n scaleBand({\n domain: allLabels,\n range: [0, innerWidth],\n padding: 0.2,\n }),\n [allLabels, innerWidth]\n );\n\n const yScale = useMemo(() => {\n const maxValue = Math.max(...series.flatMap((s) => s.data.map((d) => d.value)));\n return scaleLinear({\n domain: [0, maxValue * 1.1],\n range: [innerHeight, 0],\n nice: true,\n });\n }, [series, innerHeight]);\n\n const getX = (d: LineChartData) => (xScale(d.label) || 0) + xScale.bandwidth() / 2;\n const getY = (d: LineChartData) => yScale(d.value);\n\n if (width < 100 || height < 80) return null;\n\n return (\n <svg width={width} height={height}>\n {/* Gradients for each series */}\n {series.map((s, i) => (\n <LinearGradient\n key={`gradient-${i}`}\n id={`area-gradient-${i}`}\n from={s.color || defaultColors[i % defaultColors.length]}\n to={s.color || defaultColors[i % defaultColors.length]}\n fromOpacity={0.2}\n toOpacity={0}\n />\n ))}\n\n <Group left={margin.left} top={margin.top}>\n <GridRows\n scale={yScale}\n width={innerWidth}\n strokeDasharray=\"3,3\"\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n className=\"text-gray-400 dark:text-neutral-600\"\n />\n\n {/* Render each series */}\n {series.map((s, i) => {\n const color = s.color || defaultColors[i % defaultColors.length];\n return (\n <g key={`series-${i}`}>\n {showArea && (\n <AreaClosed\n data={s.data}\n x={getX}\n y={getY}\n yScale={yScale}\n curve={curveMonotoneX}\n fill={`url(#area-gradient-${i})`}\n />\n )}\n <LinePath\n data={s.data}\n x={getX}\n y={getY}\n stroke={color}\n strokeWidth={2}\n curve={curveMonotoneX}\n />\n {s.data.map((d, j) => (\n <circle\n key={`point-${i}-${j}`}\n cx={getX(d)}\n cy={getY(d)}\n r={2.5}\n fill=\"white\"\n stroke={color}\n strokeWidth={1.5}\n />\n ))}\n </g>\n );\n })}\n\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n tickLabelProps={() => ({\n fill: \"currentColor\",\n fontSize: 10,\n textAnchor: \"middle\",\n className: \"text-gray-500 dark:text-gray-400\",\n })}\n hideAxisLine\n tickStroke=\"transparent\"\n />\n\n <AxisLeft\n scale={yScale}\n numTicks={4}\n tickLabelProps={() => ({\n fill: \"currentColor\",\n fontSize: 10,\n textAnchor: \"end\",\n dx: -4,\n dy: 4,\n className: \"text-gray-500 dark:text-gray-400\",\n })}\n hideAxisLine\n tickStroke=\"transparent\"\n />\n </Group>\n </svg>\n );\n};\n\n// ============================================\n// Bar Chart\n// ============================================\n\ninterface BarChartProps {\n data: BarChartData[];\n width: number;\n height: number;\n color?: string;\n}\n\nconst BarChart = ({ data, width, height, color = \"#3b82f6\" }: BarChartProps) => {\n const innerWidth = width - margin.left - margin.right;\n const innerHeight = height - margin.top - margin.bottom;\n\n const xScale = useMemo(\n () =>\n scaleBand({\n domain: data.map((d) => d.label),\n range: [0, innerWidth],\n padding: 0.3,\n }),\n [data, innerWidth]\n );\n\n const yScale = useMemo(() => {\n const maxValue = Math.max(...data.map((d) => d.value));\n return scaleLinear({\n domain: [0, maxValue * 1.1],\n range: [innerHeight, 0],\n nice: true,\n });\n }, [data, innerHeight]);\n\n if (width < 100 || height < 80) return null;\n\n return (\n <svg width={width} height={height}>\n <Group left={margin.left} top={margin.top}>\n <GridRows\n scale={yScale}\n width={innerWidth}\n strokeDasharray=\"3,3\"\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n className=\"text-gray-400 dark:text-neutral-600\"\n />\n\n {data.map((d, i) => {\n const barWidth = xScale.bandwidth();\n const barHeight = innerHeight - yScale(d.value);\n const barX = xScale(d.label) || 0;\n const barY = yScale(d.value);\n\n return (\n <Bar\n key={`bar-${i}`}\n x={barX}\n y={barY}\n width={barWidth}\n height={barHeight}\n fill={d.color || color}\n rx={4}\n className=\"transition-opacity hover:opacity-80\"\n />\n );\n })}\n\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n tickLabelProps={() => ({\n fill: \"currentColor\",\n fontSize: 10,\n textAnchor: \"middle\",\n className: \"text-gray-500 dark:text-gray-400\",\n })}\n hideAxisLine\n tickStroke=\"transparent\"\n />\n\n <AxisLeft\n scale={yScale}\n numTicks={4}\n tickLabelProps={() => ({\n fill: \"currentColor\",\n fontSize: 10,\n textAnchor: \"end\",\n dx: -4,\n dy: 4,\n className: \"text-gray-500 dark:text-gray-400\",\n })}\n hideAxisLine\n tickStroke=\"transparent\"\n />\n </Group>\n </svg>\n );\n};\n\n// ============================================\n// Horizontal Bar Chart\n// ============================================\n\ninterface HorizontalBarChartProps {\n data: BarChartData[];\n width: number;\n height: number;\n color?: string;\n}\n\nconst horizontalMargin = { top: 10, right: 20, bottom: 10, left: 80 };\n\nconst HorizontalBarChart = ({ data, width, height, color = \"#3b82f6\" }: HorizontalBarChartProps) => {\n const innerWidth = width - horizontalMargin.left - horizontalMargin.right;\n const innerHeight = height - horizontalMargin.top - horizontalMargin.bottom;\n\n const yScale = useMemo(\n () =>\n scaleBand({\n domain: data.map((d) => d.label),\n range: [0, innerHeight],\n padding: 0.3,\n }),\n [data, innerHeight]\n );\n\n const xScale = useMemo(() => {\n const maxValue = Math.max(...data.map((d) => d.value));\n return scaleLinear({\n domain: [0, maxValue * 1.1],\n range: [0, innerWidth],\n nice: true,\n });\n }, [data, innerWidth]);\n\n if (width < 100 || height < 80) return null;\n\n return (\n <svg width={width} height={height}>\n <Group left={horizontalMargin.left} top={horizontalMargin.top}>\n {/* Vertical grid lines */}\n {xScale.ticks(4).map((tick, i) => (\n <line\n key={`grid-${i}`}\n x1={xScale(tick)}\n x2={xScale(tick)}\n y1={0}\n y2={innerHeight}\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n strokeDasharray=\"3,3\"\n className=\"text-gray-400 dark:text-neutral-600\"\n />\n ))}\n\n {data.map((d, i) => {\n const barHeight = yScale.bandwidth();\n const barWidth = xScale(d.value);\n const barY = yScale(d.label) || 0;\n\n return (\n <g key={`bar-${i}`}>\n <Bar\n x={0}\n y={barY}\n width={barWidth}\n height={barHeight}\n fill={d.color || color}\n rx={4}\n className=\"transition-opacity hover:opacity-80\"\n />\n {/* Value label at end of bar */}\n <text\n x={barWidth + 6}\n y={barY + barHeight / 2}\n dy=\".35em\"\n fill=\"currentColor\"\n fontSize={10}\n className=\"text-gray-600 dark:text-gray-400\"\n >\n {d.value.toLocaleString()}\n </text>\n </g>\n );\n })}\n\n {/* Y axis labels */}\n {data.map((d, i) => (\n <text\n key={`label-${i}`}\n x={-8}\n y={(yScale(d.label) || 0) + yScale.bandwidth() / 2}\n dy=\".35em\"\n fill=\"currentColor\"\n fontSize={10}\n textAnchor=\"end\"\n className=\"text-gray-500 dark:text-gray-400\"\n >\n {d.label}\n </text>\n ))}\n </Group>\n </svg>\n );\n};\n\n// ============================================\n// Chart Renderer (Main Export)\n// ============================================\n\ninterface ChartRendererProps {\n config: ChartConfig;\n /** Fixed height in pixels, or omit to fill available space */\n height?: number;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const ChartRenderer = forwardRef<HTMLDivElement, ChartRendererProps>(\n ({ config, height, showLegend = true, className }, ref) => {\n const total = useMemo(() => {\n if (config.type === \"donut\") {\n return config.data.reduce((sum, d) => sum + d.value, 0);\n }\n return 0;\n }, [config]);\n\n // If no height specified, fill available space\n const fillMode = height === undefined;\n\n return (\n <div ref={ref} className={cn(\"flex flex-col\", fillMode && \"flex-1 min-h-0\", className)}>\n {/* Chart */}\n <div\n className={cn(\"w-full\", fillMode && \"flex-1 min-h-0\")}\n style={height !== undefined ? { height } : undefined}\n >\n <ParentSize>\n {({ width, height: h }) => {\n switch (config.type) {\n case \"donut\":\n return (\n <DonutChart\n data={config.data}\n width={width}\n height={h}\n centerLabel={config.centerLabel}\n centerValue={config.centerValue}\n />\n );\n case \"line\":\n return (\n <LineChart\n data={config.data}\n width={width}\n height={h}\n color={config.color}\n showArea={config.showArea}\n />\n );\n case \"line-multi\":\n return (\n <MultiLineChart\n series={config.series}\n width={width}\n height={h}\n showArea={config.showArea}\n />\n );\n case \"bar\":\n return (\n <BarChart data={config.data} width={width} height={h} color={config.color} />\n );\n case \"bar-horizontal\":\n return (\n <HorizontalBarChart data={config.data} width={width} height={h} color={config.color} />\n );\n default:\n return null;\n }\n }}\n </ParentSize>\n </div>\n\n {/* Legend for donut charts */}\n {showLegend && config.type === \"donut\" && (\n <div className=\"flex flex-wrap gap-x-4 gap-y-2 mt-3\">\n {config.data.map((item, index) => (\n <div key={item.label} className=\"flex items-center gap-2\">\n <div\n className=\"w-2.5 h-2.5 rounded-full\"\n style={{ backgroundColor: item.color || defaultColors[index % defaultColors.length] }}\n />\n <Text as=\"span\" size=\"xs\" color=\"muted\">\n {item.label}\n </Text>\n <Text as=\"span\" size=\"xs\" weight=\"medium\" className=\"text-gray-700 dark:text-gray-300\">\n {((item.value / total) * 100).toFixed(0)}%\n </Text>\n </div>\n ))}\n </div>\n )}\n\n {/* Legend for multi-line charts */}\n {showLegend && config.type === \"line-multi\" && (\n <div className=\"flex flex-wrap gap-x-4 gap-y-2 mt-3\">\n {config.series.map((s, index) => (\n <div key={s.name} className=\"flex items-center gap-2\">\n <div\n className=\"w-2.5 h-2.5 rounded-full\"\n style={{ backgroundColor: s.color || defaultColors[index % defaultColors.length] }}\n />\n <Text as=\"span\" size=\"xs\" color=\"muted\">\n {s.name}\n </Text>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nChartRenderer.displayName = \"ChartRenderer\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { cn } from \"@/utils\";\nimport { Text } from \"@/components/primitives/typography\";\nimport { StatDisplay } from \"../components/stat-display\";\nimport { ChartRenderer } from \"../components/chart-renderer\";\nimport type { CompactPanelProps } from \"../types\";\n\nexport const CompactPanel = forwardRef<HTMLDivElement, CompactPanelProps>(\n (props, ref) => {\n const { className, title, fillHeight = true, headerControls, lastUpdated } = props;\n const isChartMode = props.mode === \"chart\";\n\n return (\n <div\n ref={ref}\n className={cn(\n fillHeight && \"h-full\",\n \"rounded-hz-lg bg-white dark:bg-neutral-900\",\n \"border border-gray-200 dark:border-neutral-800\",\n \"p-4 shadow-sm flex flex-col\",\n className\n )}\n >\n {/* Header */}\n {(title || headerControls || lastUpdated) && (\n <div className=\"flex items-start justify-between gap-2 mb-3\">\n <div className=\"flex items-center gap-2\">\n {title && (\n <Text\n as=\"span\"\n size=\"xs\"\n weight=\"medium\"\n color=\"muted\"\n >\n {title}\n </Text>\n )}\n {lastUpdated && (\n <Text as=\"span\" size=\"xs\" className=\"text-gray-400 dark:text-gray-500\">\n · {lastUpdated}\n </Text>\n )}\n </div>\n {headerControls && (\n <div className=\"flex items-center gap-1 -mt-1 -mr-1\">\n {headerControls}\n </div>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className={cn(\n \"flex-1 flex flex-col min-h-0\",\n isChartMode ? \"justify-center\" : \"justify-end\"\n )}>\n {isChartMode ? (\n <ChartRenderer config={props.chart} showLegend={false} className=\"flex-1\" />\n ) : (\n <StatDisplay\n data={{\n value: props.value,\n label: props.label || \"\",\n prefix: props.prefix,\n suffix: props.suffix,\n trend: props.trend,\n }}\n size=\"sm\"\n />\n )}\n </div>\n </div>\n );\n }\n);\n\nCompactPanel.displayName = \"CompactPanel\";\n","\"use client\";\n\nimport { forwardRef, useMemo } from \"react\";\nimport { cn } from \"@/utils\";\nimport { TrendingUp, TrendingDown, Minus, ChevronLeft, ChevronRight } from \"lucide-react\";\nimport type { TableConfig, TableCellValue, TrendData, TableColumn } from \"../types\";\n\ninterface TableRendererProps {\n config: TableConfig;\n className?: string;\n}\n\nconst TrendIndicator = ({ trend }: { trend: TrendData }) => {\n const Icon =\n trend.direction === \"up\"\n ? TrendingUp\n : trend.direction === \"down\"\n ? TrendingDown\n : Minus;\n\n return (\n <span\n className={cn(\n \"inline-flex items-center gap-1\",\n trend.direction === \"up\" && \"text-emerald-600 dark:text-emerald-400\",\n trend.direction === \"down\" && \"text-rose-600 dark:text-rose-400\",\n trend.direction === \"neutral\" && \"text-gray-500 dark:text-gray-400\"\n )}\n >\n <Icon className=\"w-4 h-4\" />\n <span className=\"text-sm font-semibold\">{Math.abs(trend.value).toFixed(1)}%</span>\n </span>\n );\n};\n\nconst isTableCellValue = (\n value: string | number | TableCellValue | undefined\n): value is TableCellValue => {\n return typeof value === \"object\" && value !== null && \"value\" in value;\n};\n\nconst formatValue = (value: string | number): string => {\n if (typeof value === \"number\") {\n return value.toLocaleString(\"en-US\", {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n });\n }\n return value;\n};\n\nconst renderCellContent = (\n cellValue: string | number | TableCellValue | undefined,\n align?: TableColumn[\"align\"]\n) => {\n if (cellValue === undefined || cellValue === null) {\n return <span className=\"text-gray-400\">—</span>;\n }\n\n if (isTableCellValue(cellValue)) {\n const { value, trend, prefix = \"\", suffix = \"\", image } = cellValue;\n return (\n <div\n className={cn(\n \"flex items-center gap-2\",\n align === \"right\" && \"justify-end\",\n align === \"center\" && \"justify-center\"\n )}\n >\n {image && (\n <img\n src={image}\n alt=\"\"\n className=\"w-8 h-8 rounded-hz-md object-contain flex-shrink-0\"\n />\n )}\n <span>\n {prefix}\n {formatValue(value)}\n {suffix}\n </span>\n {trend && <TrendIndicator trend={trend} />}\n </div>\n );\n }\n\n return formatValue(cellValue);\n};\n\nexport const TableRenderer = forwardRef<HTMLDivElement, TableRendererProps>(\n ({ config, className }, ref) => {\n const { columns, data, striped = false, compact = false, maxRows, pagination } = config;\n\n const displayData = useMemo(() => {\n if (maxRows && maxRows > 0) {\n return data.slice(0, maxRows);\n }\n return data;\n }, [data, maxRows]);\n\n return (\n <div ref={ref} className={cn(\"h-full flex flex-col\", className)}>\n <div className=\"flex-1 overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-gray-200 dark:border-neutral-700\">\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n \"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider\",\n \"border-r border-gray-200 dark:border-neutral-700 last:border-r-0\",\n compact ? \"py-2 px-3\" : \"py-3 px-4\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n (!column.align || column.align === \"left\") && \"text-left\"\n )}\n style={column.width ? { width: column.width } : undefined}\n >\n {column.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {displayData.map((row, rowIndex) => (\n <tr\n key={row.id}\n className={cn(\n \"border-b border-gray-100 dark:border-neutral-800 last:border-0\",\n striped && rowIndex % 2 === 1 && \"bg-gray-50 dark:bg-neutral-800/50\"\n )}\n >\n {columns.map((column) => (\n <td\n key={`${row.id}-${column.key}`}\n className={cn(\n \"text-gray-900 dark:text-gray-100\",\n \"border-r border-gray-200 dark:border-neutral-700 last:border-r-0\",\n compact ? \"py-2 px-3\" : \"py-3 px-4\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n (!column.align || column.align === \"left\") && \"text-left\"\n )}\n >\n {renderCellContent(row[column.key], column.align)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n\n {displayData.length === 0 && (\n <div className=\"py-8 text-center text-gray-500 dark:text-gray-400 text-sm\">\n No data available\n </div>\n )}\n </div>\n\n {/* Footer with pagination */}\n {pagination && (\n <footer className=\"flex items-center justify-between px-4 py-3 bg-gray-50 dark:bg-neutral-800/50 border-t border-gray-200 dark:border-neutral-700 rounded-b-hz-lg\">\n <div className=\"flex items-center gap-3 text-xs text-gray-500 dark:text-gray-400\">\n {pagination.totalItems !== undefined && pagination.pageSize !== undefined ? (\n <span>\n Showing {Math.min((pagination.currentPage - 1) * pagination.pageSize + 1, pagination.totalItems)}\n –{Math.min(pagination.currentPage * pagination.pageSize, pagination.totalItems)} of {pagination.totalItems}\n </span>\n ) : (\n <span>Page {pagination.currentPage} of {pagination.totalPages}</span>\n )}\n {pagination.lastUpdated && (\n <>\n <span className=\"text-gray-300 dark:text-gray-600\">·</span>\n <span>Updated {pagination.lastUpdated}</span>\n </>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => pagination.onPageChange(pagination.currentPage - 1)}\n disabled={pagination.currentPage <= 1}\n className={cn(\n \"p-1.5 rounded-hz-md transition-colors\",\n pagination.currentPage <= 1\n ? \"text-gray-300 dark:text-gray-600 cursor-not-allowed\"\n : \"text-gray-500 hover:text-gray-700 hover:bg-gray-200 dark:text-gray-400 dark:hover:text-gray-200 dark:hover:bg-neutral-700\"\n )}\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => pagination.onPageChange(pagination.currentPage + 1)}\n disabled={pagination.currentPage >= pagination.totalPages}\n className={cn(\n \"p-1.5 rounded-hz-md transition-colors\",\n pagination.currentPage >= pagination.totalPages\n ? \"text-gray-300 dark:text-gray-600 cursor-not-allowed\"\n : \"text-gray-500 hover:text-gray-700 hover:bg-gray-200 dark:text-gray-400 dark:hover:text-gray-200 dark:hover:bg-neutral-700\"\n )}\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n </footer>\n )}\n </div>\n );\n }\n);\n\nTableRenderer.displayName = \"TableRenderer\";\n","\"use client\";\n\nimport { forwardRef, createContext } from \"react\";\nimport { cn } from \"@/utils\";\nimport { Text } from \"@/components/primitives/typography\";\nimport { StatDisplay } from \"../components/stat-display\";\nimport { ChartRenderer } from \"../components/chart-renderer\";\nimport { TableRenderer } from \"../components/table-renderer\";\nimport type {\n MediumPanelProps,\n MediumPanelStatProps,\n MediumPanelChartProps,\n MediumPanelTableProps,\n} from \"../types\";\n\n// ============================================\n// Context for composition mode\n// ============================================\n\nconst MediumPanelContext = createContext<{ inPanel: boolean }>({ inPanel: false });\n\n// ============================================\n// Sub-components for composition\n// ============================================\n\nconst MediumPanelStat = forwardRef<HTMLDivElement, MediumPanelStatProps>(\n ({ data, className }, ref) => {\n return (\n <div ref={ref} className={cn(\"px-5 pt-4\", className)}>\n <StatDisplay data={data} size=\"md\" />\n </div>\n );\n }\n);\nMediumPanelStat.displayName = \"MediumPanel.Stat\";\n\nconst MediumPanelChart = forwardRef<HTMLDivElement, MediumPanelChartProps>(\n ({ config, className }, ref) => {\n return (\n <ChartRenderer ref={ref} config={config} className={cn(\"flex-1 px-5 pt-4\", className)} />\n );\n }\n);\nMediumPanelChart.displayName = \"MediumPanel.Chart\";\n\nconst MediumPanelTable = forwardRef<HTMLDivElement, MediumPanelTableProps>(\n ({ config, className }, ref) => {\n return (\n <TableRenderer\n ref={ref}\n config={{ ...config, compact: true }}\n className={cn(\"flex-1\", className)}\n />\n );\n }\n);\nMediumPanelTable.displayName = \"MediumPanel.Table\";\n\n// ============================================\n// Main Component\n// ============================================\n\ninterface MediumPanelComponent\n extends React.ForwardRefExoticComponent<MediumPanelProps & React.RefAttributes<HTMLDivElement>> {\n Stat: typeof MediumPanelStat;\n Chart: typeof MediumPanelChart;\n Table: typeof MediumPanelTable;\n}\n\nconst MediumPanelBase = forwardRef<HTMLDivElement, MediumPanelProps>(\n ({ title, subtitle, stat, chart, children, className, fillHeight = true, headerControls, lastUpdated }, ref) => {\n // Determine if using props mode or composition mode\n const hasPropsContent = stat || chart;\n const hasChildren = !!children;\n\n return (\n <MediumPanelContext.Provider value={{ inPanel: true }}>\n <div\n ref={ref}\n className={cn(\n fillHeight && \"h-full\",\n \"rounded-hz-lg bg-white dark:bg-neutral-900\",\n \"border border-gray-200 dark:border-neutral-800\",\n \"shadow-sm flex flex-col\",\n className\n )}\n >\n {/* Header */}\n {(title || subtitle || headerControls || lastUpdated) && (\n <>\n <div className=\"flex items-start justify-between gap-2 px-5 py-4\">\n <div>\n <div className=\"flex items-center gap-2\">\n {title && (\n <Text\n as=\"span\"\n weight=\"semibold\"\n size=\"sm\"\n className=\"text-gray-900 dark:text-gray-100\"\n >\n {title}\n </Text>\n )}\n {lastUpdated && (\n <Text as=\"span\" size=\"xs\" className=\"text-gray-400 dark:text-gray-500\">\n · {lastUpdated}\n </Text>\n )}\n </div>\n {subtitle && (\n <Text as=\"p\" size=\"xs\" color=\"muted\" className=\"mt-0.5\">\n {subtitle}\n </Text>\n )}\n </div>\n {headerControls && (\n <div className=\"flex items-center gap-1\">\n {headerControls}\n </div>\n )}\n </div>\n <div className=\"border-b border-gray-200 dark:border-neutral-800\" />\n </>\n )}\n\n {/* Props mode content */}\n {hasPropsContent && !hasChildren && (\n <div className=\"flex-1 flex flex-col gap-4 min-h-0 px-5 py-4\">\n {stat && <StatDisplay data={stat} size=\"md\" />}\n {chart && <ChartRenderer config={chart} />}\n </div>\n )}\n\n {/* Composition mode content */}\n {hasChildren && <div className=\"flex-1 flex flex-col min-h-0\">{children}</div>}\n </div>\n </MediumPanelContext.Provider>\n );\n }\n);\nMediumPanelBase.displayName = \"MediumPanel\";\n\n// Attach sub-components\nexport const MediumPanel = MediumPanelBase as MediumPanelComponent;\nMediumPanel.Stat = MediumPanelStat;\nMediumPanel.Chart = MediumPanelChart;\nMediumPanel.Table = MediumPanelTable;\n","\"use client\";\n\nimport { forwardRef, createContext } from \"react\";\nimport { cn } from \"@/utils\";\nimport { Text } from \"@/components/primitives/typography\";\nimport { StatDisplay } from \"../components/stat-display\";\nimport { ChartRenderer } from \"../components/chart-renderer\";\nimport { TableRenderer } from \"../components/table-renderer\";\nimport type {\n LargePanelProps,\n LargePanelHeaderProps,\n LargePanelStatsProps,\n LargePanelChartProps,\n LargePanelContentProps,\n LargePanelTableProps,\n} from \"../types\";\n\n// ============================================\n// Context\n// ============================================\n\nconst LargePanelContext = createContext<{ inPanel: boolean }>({ inPanel: false });\n\n// ============================================\n// Sub-components\n// ============================================\n\nconst LargePanelHeader = forwardRef<HTMLDivElement, LargePanelHeaderProps>(\n ({ children, className }, ref) => {\n return (\n <div ref={ref} className={cn(\"mb-4\", className)}>\n {children}\n </div>\n );\n }\n);\nLargePanelHeader.displayName = \"LargePanel.Header\";\n\nconst LargePanelStats = forwardRef<HTMLDivElement, LargePanelStatsProps>(\n ({ data, columns = 3, className }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"grid gap-4 px-6 pt-4\",\n columns === 2 && \"grid-cols-2\",\n columns === 3 && \"grid-cols-3\",\n columns === 4 && \"grid-cols-4\",\n className\n )}\n >\n {data.map((stat, index) => (\n <StatDisplay key={index} data={stat} size=\"sm\" />\n ))}\n </div>\n );\n }\n);\nLargePanelStats.displayName = \"LargePanel.Stats\";\n\nconst LargePanelChart = forwardRef<HTMLDivElement, LargePanelChartProps>(\n ({ config, height, className }, ref) => {\n return (\n <ChartRenderer ref={ref} config={config} height={height} className={cn(\"flex-1 min-h-0 px-6 pt-4\", className)} />\n );\n }\n);\nLargePanelChart.displayName = \"LargePanel.Chart\";\n\nconst LargePanelContent = forwardRef<HTMLDivElement, LargePanelContentProps>(\n ({ children, className }, ref) => {\n return (\n <div ref={ref} className={cn(\"px-6\", className)}>\n {children}\n </div>\n );\n }\n);\nLargePanelContent.displayName = \"LargePanel.Content\";\n\nconst LargePanelTable = forwardRef<HTMLDivElement, LargePanelTableProps>(\n ({ config, className }, ref) => {\n return (\n <TableRenderer ref={ref} config={config} className={cn(\"flex-1 min-h-0\", className)} />\n );\n }\n);\nLargePanelTable.displayName = \"LargePanel.Table\";\n\n// ============================================\n// Main Component\n// ============================================\n\ninterface LargePanelComponent\n extends React.ForwardRefExoticComponent<LargePanelProps & React.RefAttributes<HTMLDivElement>> {\n Header: typeof LargePanelHeader;\n Stats: typeof LargePanelStats;\n Chart: typeof LargePanelChart;\n Content: typeof LargePanelContent;\n Table: typeof LargePanelTable;\n}\n\nconst LargePanelBase = forwardRef<HTMLDivElement, LargePanelProps>(\n ({ title, subtitle, children, className, fillHeight = true, headerControls, lastUpdated }, ref) => {\n return (\n <LargePanelContext.Provider value={{ inPanel: true }}>\n <div\n ref={ref}\n className={cn(\n fillHeight && \"h-full\",\n \"rounded-hz-lg bg-white dark:bg-neutral-900\",\n \"border border-gray-200 dark:border-neutral-800\",\n \"shadow-sm flex flex-col\",\n className\n )}\n >\n {/* Default header if title/subtitle provided */}\n {(title || subtitle || headerControls || lastUpdated) && (\n <>\n <div className=\"flex items-start justify-between gap-2 px-6 py-4\">\n <div>\n <div className=\"flex items-center gap-2\">\n {title && (\n <Text\n as=\"span\"\n weight=\"semibold\"\n size=\"sm\"\n className=\"text-gray-900 dark:text-gray-100\"\n >\n {title}\n </Text>\n )}\n {lastUpdated && (\n <Text as=\"span\" size=\"xs\" className=\"text-gray-400 dark:text-gray-500\">\n · {lastUpdated}\n </Text>\n )}\n </div>\n {subtitle && (\n <Text as=\"p\" size=\"xs\" color=\"muted\" className=\"mt-0.5\">\n {subtitle}\n </Text>\n )}\n </div>\n {headerControls && (\n <div className=\"flex items-center gap-1\">\n {headerControls}\n </div>\n )}\n </div>\n <div className=\"border-b border-gray-200 dark:border-neutral-800\" />\n </>\n )}\n\n {/* Content via composition */}\n <div className=\"flex-1 flex flex-col min-h-0\">{children}</div>\n </div>\n </LargePanelContext.Provider>\n );\n }\n);\nLargePanelBase.displayName = \"LargePanel\";\n\n// Attach sub-components\nexport const LargePanel = LargePanelBase as LargePanelComponent;\nLargePanel.Header = LargePanelHeader;\nLargePanel.Stats = LargePanelStats;\nLargePanel.Chart = LargePanelChart;\nLargePanel.Content = LargePanelContent;\nLargePanel.Table = LargePanelTable;\n","\"use client\";\n\nimport { ReactNode, forwardRef, useState, useEffect, useRef } from \"react\";\nimport { ChevronUp, ChevronDown, Info, Check, X, Eye, EyeOff } from \"lucide-react\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface PasswordRules {\n minLength?: number;\n requireUppercase?: boolean;\n requireLowercase?: boolean;\n requireNumber?: boolean;\n requireSpecialChar?: boolean;\n}\n\nexport interface InputProps {\n label?: string;\n placeholder?: string;\n value?: string | number;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onNumberChange?: (value: number) => void;\n onSelectChange?: (value: string) => void;\n onFocus?: (e: React.FocusEvent<HTMLInputElement | HTMLSelectElement>) => void;\n onBlur?: (e: React.FocusEvent<HTMLInputElement | HTMLSelectElement>) => void;\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"search\" | \"select\" | \"mobile\" | \"date\";\n disabled?: boolean;\n required?: boolean;\n error?: string;\n helperText?: string;\n autoComplete?: string;\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n leadingDecorator?: ReactNode;\n trailingDecorator?: ReactNode;\n onLeadingClick?: () => void;\n onTrailingClick?: () => void;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"filled\";\n className?: string;\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n allowNegative?: boolean;\n showControls?: boolean;\n options?: SelectOption[];\n readOnly?: boolean;\n tabIndex?: number;\n tooltip?: {\n content: ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n };\n passwordRules?: PasswordRules;\n onValidationChange?: (valid: boolean) => void;\n}\n\nconst EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport const Input = forwardRef<HTMLInputElement | HTMLSelectElement, InputProps>(\n (\n {\n label,\n placeholder,\n value,\n onChange,\n onNumberChange,\n onSelectChange,\n onFocus,\n onBlur,\n type = \"text\",\n disabled = false,\n required = false,\n error,\n helperText,\n leadingIcon,\n trailingIcon,\n leadingDecorator,\n trailingDecorator,\n onLeadingClick,\n onTrailingClick,\n size = \"md\",\n variant = \"default\",\n className = \"\",\n min,\n max,\n step = 1,\n precision = 0,\n allowNegative = true,\n showControls = false,\n options = [],\n autoComplete,\n readOnly = false,\n tabIndex = 0,\n tooltip,\n passwordRules,\n onValidationChange,\n ...props\n },\n ref\n ) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [internalError, setInternalError] = useState(\"\");\n const [hasBeenBlurred, setHasBeenBlurred] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n const inputInternalRef = useRef<HTMLInputElement | null>(null);\n\n const handleTogglePassword = () => {\n const input = inputInternalRef.current;\n const start = input?.selectionStart ?? null;\n const end = input?.selectionEnd ?? null;\n setShowPassword((v) => !v);\n requestAnimationFrame(() => {\n if (input && start !== null && end !== null) {\n input.focus();\n input.setSelectionRange(start, end);\n }\n });\n };\n\n const isNumberType = type === \"number\";\n const isSelectType = type === \"select\";\n const isMobileType = type === \"mobile\";\n const isEmailType = type === \"email\";\n const isPasswordType = type === \"password\";\n\n const [inputValue, setInputValue] = useState<string>(\n value !== undefined ? value.toString() : \"\"\n );\n\n useEffect(() => {\n if (value !== undefined) {\n setInputValue(value.toString());\n }\n }, [value]);\n\n // The external error prop always takes priority over internal validation errors\n const displayError = error || internalError;\n\n // --- Password rules helpers ---\n // inputValue tracks the live value for both number and password types\n const currentPasswordValue = isPasswordType ? inputValue : \"\";\n\n const passwordRuleResults = passwordRules\n ? {\n minLength:\n passwordRules.minLength !== undefined\n ? currentPasswordValue.length >= passwordRules.minLength\n : null,\n uppercase: passwordRules.requireUppercase\n ? /[A-Z]/.test(currentPasswordValue)\n : null,\n lowercase: passwordRules.requireLowercase\n ? /[a-z]/.test(currentPasswordValue)\n : null,\n number: passwordRules.requireNumber\n ? /[0-9]/.test(currentPasswordValue)\n : null,\n specialChar: passwordRules.requireSpecialChar\n ? /[^a-zA-Z0-9]/.test(currentPasswordValue)\n : null,\n }\n : null;\n\n // true when every active rule passes (null means rule is not enabled)\n const isPasswordValid = passwordRuleResults\n ? Object.values(passwordRuleResults).every((v) => v === null || v === true)\n : true;\n\n useEffect(() => {\n if (isPasswordType && onValidationChange) {\n onValidationChange(isPasswordValid);\n }\n }, [isPasswordValid, isPasswordType, onValidationChange]);\n\n const passwordRuleLabels: Record<string, (rules: PasswordRules) => string> = {\n minLength: (r: PasswordRules) => `At least ${r.minLength} characters`,\n uppercase: () => \"One uppercase letter\",\n lowercase: () => \"One lowercase letter\",\n number: () => \"One number\",\n specialChar: () => \"One special character\",\n };\n\n // --- Number helpers ---\n const formatNumber = (num: number): number => {\n if (precision > 0) {\n return parseFloat(num.toFixed(precision));\n }\n return Math.round(num);\n };\n\n const isValidNumber = (str: string): boolean => {\n if (str === \"\" || str === \"-\") return true;\n const num = parseFloat(str);\n if (isNaN(num)) return false;\n if (!allowNegative && num < 0) return false;\n if (min !== undefined && num < min) return false;\n if (max !== undefined && num > max) return false;\n return true;\n };\n\n // --- Handlers ---\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!isNumberType) return;\n\n const allowedKeys = [\n \"Backspace\", \"Delete\", \"Tab\", \"Enter\",\n \"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\",\n \"Home\", \"End\",\n ];\n const isAllowedKey = allowedKeys.includes(e.key);\n const isDigit = /^[0-9]$/.test(e.key);\n const isDecimalPoint = e.key === \".\" && precision > 0 && !inputValue.includes(\".\");\n const isNegativeSign = e.key === \"-\" && allowNegative && inputValue === \"\";\n const isCtrlOrMeta = e.ctrlKey || e.metaKey;\n\n if (!isAllowedKey && !isDigit && !isDecimalPoint && !isNegativeSign && !isCtrlOrMeta) {\n e.preventDefault();\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (isMobileType) {\n const digits = (e.target.value || \"\").replace(/\\D/g, \"\").slice(0, 10);\n onChange?.({\n target: { value: digits },\n } as React.ChangeEvent<HTMLInputElement>);\n return;\n }\n\n if (isPasswordType) {\n const filtered = e.target.value.replace(/\\s/g, \"\");\n setInputValue(filtered);\n if (filtered !== e.target.value && onChange) {\n onChange({ ...e, target: { ...e.target, value: filtered } } as React.ChangeEvent<HTMLInputElement>);\n } else {\n onChange?.(e);\n }\n } else if (isNumberType) {\n const newValue = e.target.value;\n\n if (newValue === \"\" || (allowNegative && newValue === \"-\")) {\n setInputValue(newValue);\n return;\n }\n\n if (isValidNumber(newValue)) {\n setInputValue(newValue);\n const numValue = parseFloat(newValue);\n if (!isNaN(numValue)) {\n onNumberChange?.(formatNumber(numValue));\n }\n }\n } else {\n onChange?.(e);\n }\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n // Clear validation errors while the user is editing\n if (isEmailType || isMobileType) {\n setInternalError(\"\");\n }\n onFocus?.(e as React.FocusEvent<HTMLInputElement | HTMLSelectElement>);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setHasBeenBlurred(true);\n\n if (isEmailType) {\n const val = (e.target.value || \"\").trim();\n if (val && !EMAIL_REGEX.test(val)) {\n setInternalError(\"Please enter a valid email address\");\n } else {\n setInternalError(\"\");\n }\n }\n\n if (isMobileType) {\n const digits = (e.target.value || \"\").replace(/\\D/g, \"\");\n if (digits && digits.length !== 10) {\n setInternalError(\"Please enter a valid 10-digit phone number\");\n } else {\n setInternalError(\"\");\n }\n }\n\n if (isNumberType) {\n if (inputValue !== \"\" && inputValue !== \"-\") {\n const numValue = parseFloat(inputValue);\n if (!isNaN(numValue)) {\n const cleanValue = formatNumber(numValue);\n setInputValue(cleanValue.toString());\n onNumberChange?.(cleanValue);\n }\n } else if (inputValue === \"\" || inputValue === \"-\") {\n setInputValue(\"\");\n }\n }\n\n onBlur?.(e as React.FocusEvent<HTMLInputElement | HTMLSelectElement>);\n };\n\n const handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n onSelectChange?.(e.target.value);\n };\n\n const handleIncrement = () => {\n if (disabled || !isNumberType) return;\n\n const currentNum = parseFloat(inputValue) || 0;\n const newValue = currentNum + step;\n const constrainedValue =\n max !== undefined ? Math.min(newValue, max) : newValue;\n const finalValue = formatNumber(constrainedValue);\n\n setInputValue(finalValue.toString());\n onNumberChange?.(finalValue);\n };\n\n const handleDecrement = () => {\n if (disabled || !isNumberType) return;\n\n const currentNum = parseFloat(inputValue) || 0;\n const newValue = currentNum - step;\n const constrainedValue =\n min !== undefined ? Math.max(newValue, min) : newValue;\n const finalValue = formatNumber(constrainedValue);\n\n setInputValue(finalValue.toString());\n onNumberChange?.(finalValue);\n };\n\n // --- Styles ---\n const baseInputStyles = \"w-full transition-colors focus:outline-none\";\n\n const sizeStyles = {\n sm: \"px-3 py-2 text-sm\",\n md: \"px-4 py-3 text-base\",\n lg: \"px-5 py-4 text-lg\",\n };\n\n const controlSizeStyles = {\n sm: \"w-6 h-5\",\n md: \"w-8 h-6\",\n lg: \"w-10 h-8\",\n };\n\n const iconSizeStyles = {\n sm: 12,\n md: 16,\n lg: 20,\n };\n\n const variantStyles = {\n default:\n \"border bg-white/60 dark:bg-neutral-800/60 backdrop-blur-sm transition-colors duration-hz-slow ease-hz-default rounded-hz-md\",\n filled:\n \"border border-transparent bg-neutral-50/60 dark:bg-neutral-700/60 backdrop-blur-sm transition-colors duration-hz-slow ease-hz-default rounded-hz-md\",\n };\n\n const stateStyles = displayError\n ? \"border-rose-500/50 dark:border-rose-400/50 focus:border-rose-600/70 dark:focus:border-rose-500/70 focus:ring-1 focus:ring-rose-500/50 dark:focus:ring-rose-400/50\"\n : \"border-neutral-300/50 dark:border-neutral-600/50 focus:border-blue-500/70 dark:focus:border-blue-400/70 focus:ring-1 focus:ring-blue-500/50 dark:focus:ring-blue-400/50\";\n\n const disabledStyles = disabled\n ? \"bg-neutral-100/60 dark:bg-neutral-700/60 text-neutral-500 dark:text-neutral-400 cursor-not-allowed\"\n : \"text-neutral-900 dark:text-neutral-100\";\n\n const hasControls = isNumberType && showControls;\n const hasLeadingContent = leadingIcon || leadingDecorator;\n const hasTrailingContent = trailingIcon || trailingDecorator || hasControls || isPasswordType;\n\n const inputClasses = `\n ${baseInputStyles}\n ${sizeStyles[size]}\n ${variantStyles[variant]}\n ${stateStyles}\n ${disabledStyles}\n ${hasLeadingContent || isMobileType ? \"pl-10\" : \"\"}\n ${hasTrailingContent ? (hasControls ? \"pr-20\" : \"pr-10\") : \"\"}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, \" \");\n\n const selectClasses = `\n ${baseInputStyles}\n ${sizeStyles[size]}\n ${variantStyles[variant]}\n ${stateStyles}\n ${disabledStyles}\n ${hasLeadingContent ? \"pl-10\" : \"\"}\n ${hasTrailingContent ? \"pr-10\" : \"\"}\n ${className}\n appearance-none cursor-pointer\n `\n .trim()\n .replace(/\\s+/g, \" \");\n\n const canDecrement =\n !disabled && (min === undefined || (parseFloat(inputValue) || 0) > min);\n const canIncrement =\n !disabled && (max === undefined || (parseFloat(inputValue) || 0) < max);\n\n const showPasswordRules = isPasswordType && passwordRules && hasBeenBlurred;\n\n return (\n <div className=\"w-full\">\n {label && (\n <div className=\"relative mb-2\">\n <label className=\"text-sm font-medium text-neutral-700 dark:text-neutral-300 transition-colors duration-hz-slow ease-hz-default flex items-center\">\n <span className=\"text-xs sm:text-sm\">{label}</span>\n {required && <span className=\"text-rose-500 ml-1\">*</span>}\n {tooltip && (\n <button\n type=\"button\"\n className=\"ml-2 text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 transition-colors duration-hz-slow ease-hz-default\"\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onFocus={() => setShowTooltip(true)}\n onBlur={() => setShowTooltip(false)}\n >\n <Info className=\"w-4 h-4\" />\n </button>\n )}\n </label>\n {tooltip && showTooltip && (\n <div className=\"absolute z-[9999] pointer-events-none left-0 bottom-full mt-2\">\n <div className=\"bg-neutral-900/80 dark:bg-neutral-100/80 backdrop-blur-md text-white dark:text-neutral-900 text-sm rounded-hz-lg p-3 shadow-lg w-80 transition-colors duration-hz-slow ease-hz-default\">\n {tooltip.content}\n </div>\n </div>\n )}\n </div>\n )}\n\n <div className=\"relative\">\n {hasLeadingContent && (\n <div\n className={`absolute inset-y-0 left-0 pl-3 flex items-center z-10 ${\n onLeadingClick ? \"cursor-pointer\" : \"pointer-events-none\"\n }`}\n onClick={onLeadingClick}\n >\n {leadingDecorator ? (\n <span className=\"text-neutral-400\">{leadingDecorator}</span>\n ) : (\n <span className=\"text-neutral-400\">{leadingIcon}</span>\n )}\n </div>\n )}\n\n {isMobileType && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center z-10 pointer-events-none border-r pr-3 border-neutral-300/50 dark:border-neutral-600/50\">\n <span className=\"text-neutral-500 dark:text-neutral-300\">+1</span>\n </div>\n )}\n\n {isSelectType ? (\n <select\n ref={ref as React.Ref<HTMLSelectElement>}\n value={value}\n onChange={handleSelectChange}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n required={required}\n className={selectClasses}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))}\n </select>\n ) : (\n <input\n ref={(node) => {\n inputInternalRef.current = node;\n if (typeof ref === \"function\") ref(node as HTMLInputElement | HTMLSelectElement | null);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | HTMLSelectElement | null>).current = node;\n }}\n type={isMobileType ? \"tel\" : isNumberType ? \"text\" : isPasswordType ? (showPassword ? \"text\" : \"password\") : type}\n inputMode={\n isMobileType ? \"numeric\" : isNumberType ? \"numeric\" : undefined\n }\n value={isNumberType || isPasswordType ? inputValue : value}\n onChange={handleInputChange}\n onKeyDown={isNumberType ? handleKeyDown : undefined}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n autoComplete={isMobileType ? autoComplete ?? \"tel\" : autoComplete}\n className={inputClasses}\n readOnly={readOnly}\n tabIndex={tabIndex}\n {...props}\n />\n )}\n\n {hasControls && (\n <div className=\"absolute inset-y-0 right-0 flex items-center pr-1\">\n <div className=\"flex\">\n <button\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleDecrement}\n disabled={!canDecrement}\n className={`\n ${controlSizeStyles[size]}\n flex items-center justify-center\n text-neutral-500 hover:text-neutral-700 hover:bg-neutral-100\n disabled:text-neutral-300 disabled:cursor-not-allowed\n transition-colors\n border-r border-neutral-300\n `}\n >\n <ChevronDown size={iconSizeStyles[size]} />\n </button>\n <button\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleIncrement}\n disabled={!canIncrement}\n className={`\n ${controlSizeStyles[size]}\n flex items-center justify-center\n text-neutral-500 hover:text-neutral-700 hover:bg-neutral-100\n disabled:text-neutral-300 disabled:cursor-not-allowed\n transition-colors\n `}\n >\n <ChevronUp size={iconSizeStyles[size]} />\n </button>\n </div>\n </div>\n )}\n\n {isPasswordType && (\n <button\n type=\"button\"\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleTogglePassword}\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-300 transition-colors\"\n >\n {showPassword ? (\n <EyeOff size={iconSizeStyles[size]} />\n ) : (\n <Eye size={iconSizeStyles[size]} />\n )}\n </button>\n )}\n\n {isSelectType && !trailingIcon && !trailingDecorator && (\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none\">\n <ChevronDown\n size={iconSizeStyles[size]}\n className=\"text-neutral-400\"\n />\n </div>\n )}\n\n {(trailingIcon || trailingDecorator) && !hasControls && (\n <div\n className={`absolute top-1/2 -translate-y-1/3 right-0 pr-3 flex items-center ${\n onTrailingClick ? \"cursor-pointer\" : \"\"\n }`}\n onClick={onTrailingClick}\n onMouseEnter={tooltip ? () => setShowTooltip(true) : undefined}\n onMouseLeave={tooltip ? () => setShowTooltip(false) : undefined}\n onFocus={tooltip ? () => setShowTooltip(true) : undefined}\n onBlur={tooltip ? () => setShowTooltip(false) : undefined}\n >\n {trailingDecorator ? (\n <span className=\"text-neutral-400\">{trailingDecorator}</span>\n ) : (\n <span className=\"text-neutral-400\">{trailingIcon}</span>\n )}\n </div>\n )}\n </div>\n\n {/* Error / helper text */}\n {(displayError || helperText) && (\n <div className=\"mt-2\">\n {displayError && (\n <p className=\"text-sm text-rose-600 dark:text-rose-400 transition-colors duration-hz-slow ease-hz-default\">\n {displayError}\n </p>\n )}\n {helperText && !displayError && (\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400 transition-colors duration-hz-slow ease-hz-default\">\n {helperText}\n </p>\n )}\n </div>\n )}\n\n {/* Password rules checklist — shown after first blur */}\n {showPasswordRules && passwordRuleResults && (\n <ul className=\"mt-2 space-y-1\">\n {(Object.keys(passwordRuleResults) as Array<keyof typeof passwordRuleResults>)\n .filter((key) => passwordRuleResults[key] !== null)\n .map((key) => {\n const passed = passwordRuleResults[key] as boolean;\n return (\n <li\n key={key}\n className={`flex items-center gap-1.5 text-xs transition-colors ${\n passed\n ? \"text-green-600 dark:text-green-400\"\n : \"text-rose-500 dark:text-rose-400\"\n }`}\n >\n {passed ? (\n <Check className=\"w-3 h-3 shrink-0\" />\n ) : (\n <X className=\"w-3 h-3 shrink-0\" />\n )}\n {passwordRules && passwordRuleLabels[key](passwordRules)}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n ExternalLink,\n LayoutGrid,\n List,\n Check,\n Sparkles,\n Orbit,\n Globe,\n Star,\n Rocket,\n Moon,\n type LucideIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/utils\";\n\nexport type AccentColor = \"blue\" | \"violet\" | \"emerald\" | \"rose\" | \"amber\";\n\nexport interface Template {\n id: string;\n title: string;\n name?: string;\n icon?: LucideIcon;\n previewUrl: string;\n}\n\nexport interface TemplateSelectorProps {\n templates: Template[];\n value?: string;\n onChange?: (templateId: string) => void;\n onNameChange?: (templateId: string, newName: string) => void;\n defaultView?: \"card\" | \"list\";\n showViewToggle?: boolean;\n editable?: boolean;\n className?: string;\n cardClassName?: string;\n columns?: 2 | 3 | 4;\n accentColor?: AccentColor;\n}\n\n// Accent color class mappings\nconst accentColors: Record<AccentColor, {\n selected: string;\n selectedBorder: string;\n selectedGlow: string;\n hoverBg: string;\n hoverBgDark: string;\n iconSelected: string;\n iconHover: string;\n checkBg: string;\n inputBorder: string;\n inputRing: string;\n textHover: string;\n toggleActive: string;\n}> = {\n blue: {\n selected: \"bg-blue-100/80 dark:bg-blue-900/30\",\n selectedBorder: \"border-blue-500 dark:border-blue-400\",\n selectedGlow: \"shadow-lg shadow-blue-500/20 dark:shadow-blue-400/20\",\n hoverBg: \"group-hover:bg-blue-50/60 dark:group-hover:bg-blue-900/20\",\n hoverBgDark: \"hover:bg-blue-50 dark:hover:bg-blue-900/30\",\n iconSelected: \"text-blue-600 dark:text-blue-400\",\n iconHover: \"group-hover:text-blue-500 dark:group-hover:text-blue-400\",\n checkBg: \"bg-blue-500 border-blue-500 dark:bg-blue-400 dark:border-blue-400\",\n inputBorder: \"border-blue-500 dark:border-blue-400\",\n inputRing: \"focus:ring-blue-500/20\",\n textHover: \"hover:text-blue-600 dark:hover:text-blue-400\",\n toggleActive: \"text-blue-600 dark:text-blue-400\",\n },\n violet: {\n selected: \"bg-violet-100/80 dark:bg-violet-900/30\",\n selectedBorder: \"border-violet-500 dark:border-violet-400\",\n selectedGlow: \"shadow-lg shadow-violet-500/20 dark:shadow-violet-400/20\",\n hoverBg: \"group-hover:bg-violet-50/60 dark:group-hover:bg-violet-900/20\",\n hoverBgDark: \"hover:bg-violet-50 dark:hover:bg-violet-900/30\",\n iconSelected: \"text-violet-600 dark:text-violet-400\",\n iconHover: \"group-hover:text-violet-500 dark:group-hover:text-violet-400\",\n checkBg: \"bg-violet-500 border-violet-500 dark:bg-violet-400 dark:border-violet-400\",\n inputBorder: \"border-violet-500 dark:border-violet-400\",\n inputRing: \"focus:ring-violet-500/20\",\n textHover: \"hover:text-violet-600 dark:hover:text-violet-400\",\n toggleActive: \"text-violet-600 dark:text-violet-400\",\n },\n emerald: {\n selected: \"bg-emerald-100/80 dark:bg-emerald-900/30\",\n selectedBorder: \"border-emerald-500 dark:border-emerald-400\",\n selectedGlow: \"shadow-lg shadow-emerald-500/20 dark:shadow-emerald-400/20\",\n hoverBg: \"group-hover:bg-emerald-50/60 dark:group-hover:bg-emerald-900/20\",\n hoverBgDark: \"hover:bg-emerald-50 dark:hover:bg-emerald-900/30\",\n iconSelected: \"text-emerald-600 dark:text-emerald-400\",\n iconHover: \"group-hover:text-emerald-500 dark:group-hover:text-emerald-400\",\n checkBg: \"bg-emerald-500 border-emerald-500 dark:bg-emerald-400 dark:border-emerald-400\",\n inputBorder: \"border-emerald-500 dark:border-emerald-400\",\n inputRing: \"focus:ring-emerald-500/20\",\n textHover: \"hover:text-emerald-600 dark:hover:text-emerald-400\",\n toggleActive: \"text-emerald-600 dark:text-emerald-400\",\n },\n rose: {\n selected: \"bg-rose-100/80 dark:bg-rose-900/30\",\n selectedBorder: \"border-rose-500 dark:border-rose-400\",\n selectedGlow: \"shadow-lg shadow-rose-500/20 dark:shadow-rose-400/20\",\n hoverBg: \"group-hover:bg-rose-50/60 dark:group-hover:bg-rose-900/20\",\n hoverBgDark: \"hover:bg-rose-50 dark:hover:bg-rose-900/30\",\n iconSelected: \"text-rose-600 dark:text-rose-400\",\n iconHover: \"group-hover:text-rose-500 dark:group-hover:text-rose-400\",\n checkBg: \"bg-rose-500 border-rose-500 dark:bg-rose-400 dark:border-rose-400\",\n inputBorder: \"border-rose-500 dark:border-rose-400\",\n inputRing: \"focus:ring-rose-500/20\",\n textHover: \"hover:text-rose-600 dark:hover:text-rose-400\",\n toggleActive: \"text-rose-600 dark:text-rose-400\",\n },\n amber: {\n selected: \"bg-amber-100/80 dark:bg-amber-900/30\",\n selectedBorder: \"border-amber-500 dark:border-amber-400\",\n selectedGlow: \"shadow-lg shadow-amber-500/20 dark:shadow-amber-400/20\",\n hoverBg: \"group-hover:bg-amber-50/60 dark:group-hover:bg-amber-900/20\",\n hoverBgDark: \"hover:bg-amber-50 dark:hover:bg-amber-900/30\",\n iconSelected: \"text-amber-600 dark:text-amber-400\",\n iconHover: \"group-hover:text-amber-500 dark:group-hover:text-amber-400\",\n checkBg: \"bg-amber-500 border-amber-500 dark:bg-amber-400 dark:border-amber-400\",\n inputBorder: \"border-amber-500 dark:border-amber-400\",\n inputRing: \"focus:ring-amber-500/20\",\n textHover: \"hover:text-amber-600 dark:hover:text-amber-400\",\n toggleActive: \"text-amber-600 dark:text-amber-400\",\n },\n};\n\n// Default icon mapping for space-themed templates\nconst defaultIconMap: Record<string, LucideIcon> = {\n nebula: Sparkles,\n andromeda: Orbit,\n cosmos: Globe,\n stellar: Star,\n voyager: Rocket,\n eclipse: Moon,\n};\n\nconst getTemplateIcon = (template: Template): LucideIcon => {\n if (template.icon) return template.icon;\n const key = template.title.toLowerCase();\n return defaultIconMap[key] || Star;\n};\n\nexport const TemplateSelector = ({\n templates,\n value,\n onChange,\n onNameChange,\n defaultView = \"card\",\n showViewToggle = true,\n editable = false,\n className,\n cardClassName,\n columns = 3,\n accentColor = \"blue\",\n}: TemplateSelectorProps) => {\n const colors = accentColors[accentColor];\n const [view, setView] = useState<\"card\" | \"list\">(defaultView);\n const [selectedId, setSelectedId] = useState<string | undefined>(value);\n\n React.useEffect(() => {\n setSelectedId(value);\n }, [value]);\n\n const handleSelect = (templateId: string) => {\n setSelectedId(templateId);\n onChange?.(templateId);\n };\n\n const handlePreviewClick = (e: React.MouseEvent, previewUrl: string) => {\n e.stopPropagation();\n window.open(previewUrl, \"_blank\", \"noopener,noreferrer\");\n };\n\n const handleNameChange = (templateId: string, newName: string) => {\n onNameChange?.(templateId, newName);\n };\n\n const columnClasses = {\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\",\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n {showViewToggle && (\n <div className=\"flex justify-end mb-4\">\n <div className=\"inline-flex rounded-hz-md border border-neutral-200 dark:border-neutral-700 p-1 bg-neutral-100 dark:bg-neutral-800\">\n <button\n type=\"button\"\n onClick={() => setView(\"card\")}\n className={cn(\n \"p-2 rounded-hz-sm text-sm font-medium transition-all duration-hz-normal ease-hz-default\",\n view === \"card\"\n ? `bg-white dark:bg-neutral-700 shadow-sm ${colors.toggleActive}`\n : \"text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300\"\n )}\n aria-label=\"Card view\"\n >\n <LayoutGrid size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => setView(\"list\")}\n className={cn(\n \"p-2 rounded-hz-sm text-sm font-medium transition-all duration-hz-normal ease-hz-default\",\n view === \"list\"\n ? `bg-white dark:bg-neutral-700 shadow-sm ${colors.toggleActive}`\n : \"text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300\"\n )}\n aria-label=\"List view\"\n >\n <List size={16} />\n </button>\n </div>\n </div>\n )}\n\n <AnimatePresence mode=\"wait\">\n {view === \"card\" ? (\n <motion.div\n key=\"card-view\"\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n className={cn(\"grid gap-4\", columnClasses[columns])}\n >\n {templates.map((template) => (\n <TemplateCard\n key={template.id}\n template={template}\n isSelected={selectedId === template.id}\n onSelect={handleSelect}\n onPreviewClick={handlePreviewClick}\n onNameChange={handleNameChange}\n editable={editable}\n className={cardClassName}\n colors={colors}\n />\n ))}\n </motion.div>\n ) : (\n <motion.div\n key=\"list-view\"\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n className=\"flex flex-col gap-2\"\n >\n {templates.map((template) => (\n <TemplateListItem\n key={template.id}\n template={template}\n isSelected={selectedId === template.id}\n onSelect={handleSelect}\n onPreviewClick={handlePreviewClick}\n onNameChange={handleNameChange}\n editable={editable}\n colors={colors}\n />\n ))}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n};\n\ninterface TemplateItemProps {\n template: Template;\n isSelected: boolean;\n onSelect: (id: string) => void;\n onPreviewClick: (e: React.MouseEvent, url: string) => void;\n onNameChange: (id: string, name: string) => void;\n editable: boolean;\n className?: string;\n colors: typeof accentColors[AccentColor];\n}\n\nconst TemplateCard = ({\n template,\n isSelected,\n onSelect,\n onPreviewClick,\n onNameChange,\n editable,\n className,\n colors,\n}: TemplateItemProps) => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState(template.name || template.title);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const displayName = template.name || template.title;\n const IconComponent = getTemplateIcon(template);\n\n const handleDoubleClick = (e: React.MouseEvent) => {\n if (editable) {\n e.stopPropagation();\n setIsEditing(true);\n setEditValue(displayName);\n }\n };\n\n const handleBlur = () => {\n setIsEditing(false);\n if (editValue.trim() && editValue !== displayName) {\n onNameChange(template.id, editValue.trim());\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n handleBlur();\n } else if (e.key === \"Escape\") {\n setIsEditing(false);\n setEditValue(displayName);\n }\n };\n\n React.useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, [isEditing]);\n\n return (\n <motion.div\n whileHover={{ y: -4, scale: 1.02 }}\n whileTap={{ scale: 0.98 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\n onClick={() => onSelect(template.id)}\n className={cn(\n \"group relative cursor-pointer rounded-hz-lg overflow-hidden border transition-all duration-hz-slow ease-hz-default\",\n \"bg-white dark:bg-neutral-800\",\n isSelected\n ? `${colors.selectedBorder} ${colors.selectedGlow}`\n : \"border-neutral-200 dark:border-neutral-700 hover:border-neutral-300 dark:hover:border-neutral-600 hover:shadow-md\",\n className\n )}\n >\n {/* Selection indicator */}\n <div\n className={cn(\n \"absolute top-3 left-3 z-10 w-5 h-5 rounded-hz-full border-2 flex items-center justify-center transition-all duration-hz-normal ease-hz-default\",\n isSelected\n ? colors.checkBg\n : \"bg-white dark:bg-neutral-800 border-neutral-300 dark:border-neutral-600\"\n )}\n >\n {isSelected && <Check size={12} className=\"text-white\" strokeWidth={3} />}\n </div>\n\n {/* Preview link button */}\n <button\n type=\"button\"\n onClick={(e) => onPreviewClick(e, template.previewUrl)}\n className={cn(\n \"absolute top-3 right-3 z-10 p-1.5 rounded-hz-md transition-all duration-hz-normal ease-hz-default\",\n \"bg-white dark:bg-neutral-700\",\n \"border border-neutral-200 dark:border-neutral-600\",\n \"text-neutral-500 dark:text-neutral-400\",\n \"opacity-0 group-hover:opacity-100\",\n \"hover:bg-blue-50 dark:hover:bg-blue-900/30 hover:text-blue-600 dark:hover:text-blue-400 hover:border-blue-300 dark:hover:border-blue-600\"\n )}\n aria-label={`Preview ${displayName}`}\n >\n <ExternalLink size={14} />\n </button>\n\n {/* Icon preview with subtle tinted background */}\n <div className=\"aspect-[4/3] overflow-hidden bg-neutral-50 dark:bg-neutral-800/80 flex items-center justify-center\">\n <motion.div\n initial={{ scale: 0.9, opacity: 0.5 }}\n animate={{ scale: 1, opacity: 1 }}\n className={cn(\n \"p-6 rounded-hz-full transition-all duration-hz-slow ease-hz-default\",\n isSelected\n ? colors.selected\n : `bg-neutral-100 dark:bg-neutral-700/50 ${colors.hoverBg}`\n )}\n >\n <IconComponent\n size={48}\n strokeWidth={1.5}\n className={cn(\n \"transition-colors duration-hz-slow ease-hz-default\",\n isSelected\n ? colors.iconSelected\n : `text-neutral-400 dark:text-neutral-500 ${colors.iconHover}`\n )}\n />\n </motion.div>\n </div>\n\n {/* Title */}\n <div className=\"p-3 border-t border-neutral-100 dark:border-neutral-700\">\n {isEditing ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n className={cn(\n \"w-full px-2 py-1 text-sm font-medium rounded\",\n \"bg-neutral-100 dark:bg-neutral-700\",\n `border ${colors.inputBorder}`,\n \"text-neutral-900 dark:text-neutral-100\",\n `focus:outline-none focus:ring-2 ${colors.inputRing}`\n )}\n />\n ) : (\n <h3\n onDoubleClick={handleDoubleClick}\n className={cn(\n \"text-sm font-medium text-neutral-900 dark:text-neutral-100 truncate\",\n editable && `cursor-text ${colors.textHover}`\n )}\n title={editable ? \"Double-click to rename\" : displayName}\n >\n {displayName}\n </h3>\n )}\n </div>\n </motion.div>\n );\n};\n\nconst TemplateListItem = ({\n template,\n isSelected,\n onSelect,\n onPreviewClick,\n onNameChange,\n editable,\n colors,\n}: TemplateItemProps) => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState(template.name || template.title);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const displayName = template.name || template.title;\n const IconComponent = getTemplateIcon(template);\n\n const handleDoubleClick = (e: React.MouseEvent) => {\n if (editable) {\n e.stopPropagation();\n setIsEditing(true);\n setEditValue(displayName);\n }\n };\n\n const handleBlur = () => {\n setIsEditing(false);\n if (editValue.trim() && editValue !== displayName) {\n onNameChange(template.id, editValue.trim());\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n handleBlur();\n } else if (e.key === \"Escape\") {\n setIsEditing(false);\n setEditValue(displayName);\n }\n };\n\n React.useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, [isEditing]);\n\n return (\n <motion.div\n whileHover={{ x: 4, scale: 1.01 }}\n whileTap={{ scale: 0.995 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\n onClick={() => onSelect(template.id)}\n className={cn(\n \"group flex items-center gap-4 p-3 cursor-pointer rounded-hz-lg border transition-all duration-hz-slow ease-hz-default\",\n \"bg-white dark:bg-neutral-800\",\n isSelected\n ? `${colors.selectedBorder} shadow-md ${colors.selectedGlow}`\n : \"border-neutral-200 dark:border-neutral-700 hover:border-neutral-300 dark:hover:border-neutral-600\"\n )}\n >\n {/* Selection indicator */}\n <div\n className={cn(\n \"w-5 h-5 rounded-hz-full border-2 flex items-center justify-center flex-shrink-0 transition-all duration-hz-normal ease-hz-default\",\n isSelected\n ? colors.checkBg\n : \"bg-white dark:bg-neutral-800 border-neutral-300 dark:border-neutral-600\"\n )}\n >\n {isSelected && <Check size={12} className=\"text-white\" strokeWidth={3} />}\n </div>\n\n {/* Icon thumbnail with subtle tint */}\n <div\n className={cn(\n \"w-12 h-12 rounded-hz-md flex items-center justify-center flex-shrink-0 transition-colors duration-hz-slow ease-hz-default\",\n isSelected\n ? colors.selected\n : `bg-neutral-100 dark:bg-neutral-700/50 ${colors.hoverBg}`\n )}\n >\n <IconComponent\n size={24}\n strokeWidth={1.5}\n className={cn(\n \"transition-colors duration-hz-slow ease-hz-default\",\n isSelected\n ? colors.iconSelected\n : `text-neutral-400 dark:text-neutral-500 ${colors.iconHover}`\n )}\n />\n </div>\n\n {/* Title */}\n <div className=\"flex-1 min-w-0\">\n {isEditing ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n className={cn(\n \"w-full px-2 py-1 text-sm font-medium rounded\",\n \"bg-neutral-100 dark:bg-neutral-700\",\n `border ${colors.inputBorder}`,\n \"text-neutral-900 dark:text-neutral-100\",\n `focus:outline-none focus:ring-2 ${colors.inputRing}`\n )}\n />\n ) : (\n <h3\n onDoubleClick={handleDoubleClick}\n className={cn(\n \"text-sm font-medium text-neutral-900 dark:text-neutral-100 truncate\",\n editable && `cursor-text ${colors.textHover}`\n )}\n title={editable ? \"Double-click to rename\" : displayName}\n >\n {displayName}\n </h3>\n )}\n </div>\n\n {/* Preview link button */}\n <button\n type=\"button\"\n onClick={(e) => onPreviewClick(e, template.previewUrl)}\n className={cn(\n \"p-2 rounded-hz-md transition-all duration-hz-normal ease-hz-default flex-shrink-0\",\n \"text-neutral-400 dark:text-neutral-500\",\n \"opacity-0 group-hover:opacity-100\",\n colors.hoverBgDark,\n colors.textHover\n )}\n aria-label={`Preview ${displayName}`}\n >\n <ExternalLink size={16} />\n </button>\n </motion.div>\n );\n};\n\nTemplateSelector.displayName = \"TemplateSelector\";\n\n// Re-export icons for consumers who want to use custom icons\nexport { Sparkles, Orbit, Globe, Star, Rocket, Moon };\n","import { ReactNode, ButtonHTMLAttributes } from \"react\";\n\nexport interface TextButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n leadingDecorator?: ReactNode;\n trailingDecorator?: ReactNode;\n variant?: \"primary\" | \"secondary\" | \"danger\" | \"success\" | \"disabled\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n type?: \"button\" | \"submit\" | \"reset\";\n}\n\nexport const TextButton = ({\n children,\n onClick,\n disabled = false,\n leadingDecorator,\n trailingDecorator,\n variant = \"primary\",\n size = \"md\",\n className = \"\",\n type = \"button\",\n ...buttonProps\n}: TextButtonProps) => {\n const baseStyles = `group inline-flex justify-center items-center gap-2 font-medium uppercase tracking-wide transition-all duration-hz-normal ease-hz-default ${\n disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n }`;\n\n const variantStyles = {\n primary: \"text-blue-600 hover:text-blue-700 focus:ring-blue-500\",\n secondary: \"text-neutral-600 hover:text-neutral-700 focus:ring-neutral-500\",\n danger: \"text-rose-600 hover:text-rose-700 focus:ring-rose-500\",\n success: \"text-emerald-600 hover:text-emerald-700 focus:ring-emerald-500\",\n disabled: \"text-neutral-400 cursor-not-allowed\",\n };\n\n const sizeStyles = {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-2\",\n lg: \"text-base px-4 py-3\",\n };\n\n const disabledStyles = disabled\n ? \"opacity-50 cursor-not-allowed\"\n : \"cursor-pointer\";\n\n return (\n <button\n type={type}\n className={`${baseStyles} ${variantStyles[variant]} ${sizeStyles[size]} ${disabledStyles} ${className}`}\n onClick={onClick}\n disabled={disabled}\n {...buttonProps}\n >\n {leadingDecorator && (\n <span className=\"animate-in slide-in-from-left-1 duration-200\">\n {leadingDecorator}\n </span>\n )}\n\n <span>{children}</span>\n\n {trailingDecorator && (\n <span className=\"animate-in slide-in-from-right-1 duration-200 group-hover:translate-x-1\">\n {trailingDecorator}\n </span>\n )}\n </button>\n );\n};\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { Check, X, AlertTriangle, Info, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"@/utils\";\n\nexport type ToastVariant = \"neutral\" | \"danger\" | \"caution\" | \"success\";\nexport type ToastAction = \"dismissable\" | \"collapsible\" | \"none\";\n\nexport interface ToastProps {\n message: string;\n variant?: ToastVariant;\n duration?: number;\n onDismiss?: () => void;\n isVisible: boolean;\n icon?: React.ReactNode | boolean;\n action?: ToastAction;\n /** Additional content shown when expanded (only for collapsible toasts) */\n expandedContent?: React.ReactNode;\n}\n\nconst variantStyles: Record<ToastVariant, { container: string; icon: string; progress: string }> = {\n neutral: {\n container: \"bg-neutral-50 dark:bg-neutral-800 border-neutral-200 dark:border-neutral-700 text-neutral-800 dark:text-neutral-200\",\n icon: \"text-neutral-600 dark:text-neutral-400\",\n progress: \"bg-neutral-500 dark:bg-neutral-400\",\n },\n danger: {\n container: \"bg-rose-50 dark:bg-rose-900/70 border-rose-200 dark:border-rose-700 text-rose-800 dark:text-rose-200\",\n icon: \"text-rose-600 dark:text-rose-400\",\n progress: \"bg-rose-500 dark:bg-rose-400\",\n },\n caution: {\n container: \"bg-amber-50 dark:bg-amber-900/70 border-amber-200 dark:border-amber-700 text-amber-800 dark:text-amber-200\",\n icon: \"text-amber-600 dark:text-amber-400\",\n progress: \"bg-amber-500 dark:bg-amber-400\",\n },\n success: {\n container: \"bg-emerald-50 dark:bg-emerald-900/70 border-emerald-200 dark:border-emerald-700 text-emerald-800 dark:text-emerald-200\",\n icon: \"text-emerald-600 dark:text-emerald-400\",\n progress: \"bg-emerald-500 dark:bg-emerald-400\",\n },\n};\n\nconst defaultIcons: Record<ToastVariant, React.ReactNode> = {\n neutral: <Info className=\"w-5 h-5\" />,\n danger: <AlertTriangle className=\"w-5 h-5\" />,\n caution: <AlertTriangle className=\"w-5 h-5\" />,\n success: <Check className=\"w-5 h-5\" />,\n};\n\nexport const Toast: React.FC<ToastProps> = ({\n message,\n variant = \"neutral\",\n duration = 5000,\n onDismiss,\n isVisible,\n icon = true,\n action = \"dismissable\",\n expandedContent,\n}) => {\n const [isDismissing, setIsDismissing] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const [progressWidth, setProgressWidth] = useState(100);\n\n const styles = variantStyles[variant];\n\n // Auto-dismiss after specified duration\n useEffect(() => {\n if (isVisible && !isDismissing) {\n const timer = setTimeout(() => {\n setIsDismissing(true);\n setTimeout(() => {\n onDismiss?.();\n }, 300);\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [isVisible, isDismissing, duration, onDismiss]);\n\n // Reset state when toast becomes visible\n useEffect(() => {\n if (isVisible) {\n setIsDismissing(false);\n setIsExpanded(false);\n setProgressWidth(0);\n }\n }, [isVisible]);\n\n // Animate progress bar\n useEffect(() => {\n if (isVisible && !isDismissing) {\n const progressTimer = setInterval(() => {\n setProgressWidth((prev) => {\n if (prev >= 100) return 100;\n return prev + 100 / (duration / 100);\n });\n }, 100);\n\n return () => clearInterval(progressTimer);\n }\n }, [isVisible, isDismissing, duration]);\n\n if (!isVisible) return null;\n\n const handleDismiss = () => {\n setIsDismissing(true);\n setTimeout(() => {\n onDismiss?.();\n }, 300);\n };\n\n const handleToggleExpand = () => {\n setIsExpanded((prev) => !prev);\n };\n\n // Determine which icon to render\n const renderIcon = () => {\n if (icon === false) return null;\n if (icon === true) return defaultIcons[variant];\n return icon;\n };\n\n const iconElement = renderIcon();\n\n return (\n <div\n className={cn(\n \"fixed top-4 right-4 z-50 max-w-sm w-[calc(100vw-2rem)] sm:w-auto transition-all duration-hz-slow ease-hz-default\",\n isDismissing ? \"translate-x-full opacity-0\" : \"translate-x-0 opacity-100\"\n )}\n >\n <div\n className={cn(\n \"p-3 sm:p-4 shadow-hz-lg border rounded-hz-md transition-all duration-hz-normal ease-hz-default\",\n styles.container\n )}\n >\n <div className=\"flex items-start gap-3\">\n {iconElement && (\n <div className={cn(\"w-5 h-5 mt-0.5 flex-shrink-0\", styles.icon)}>\n {iconElement}\n </div>\n )}\n <div className=\"flex-1\">\n <p className=\"text-sm\">{message}</p>\n {action === \"collapsible\" && isExpanded && expandedContent && (\n <div className=\"mt-2 text-sm opacity-90\">\n {expandedContent}\n </div>\n )}\n </div>\n {action === \"dismissable\" && (\n <button\n onClick={handleDismiss}\n className=\"text-neutral-400 hover:text-neutral-600 dark:text-neutral-500 dark:hover:text-neutral-300 transition-colors duration-hz-normal ease-hz-default\"\n aria-label=\"Dismiss\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n {action === \"collapsible\" && (\n <button\n onClick={handleToggleExpand}\n className=\"text-neutral-400 hover:text-neutral-600 dark:text-neutral-500 dark:hover:text-neutral-300 transition-colors duration-hz-normal ease-hz-default\"\n aria-label={isExpanded ? \"Collapse\" : \"Expand\"}\n >\n {isExpanded ? (\n <ChevronUp className=\"w-4 h-4\" />\n ) : (\n <ChevronDown className=\"w-4 h-4\" />\n )}\n </button>\n )}\n </div>\n\n {/* Progress Bar Timer */}\n <div className=\"mt-3 w-full bg-neutral-200 dark:bg-neutral-600 h-1 rounded-hz-full overflow-hidden transition-all duration-hz-normal\">\n <div\n className={cn(\"h-full rounded-hz-full transition-all duration-100 ease-linear\", styles.progress)}\n style={{ width: `${progressWidth}%` }}\n />\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport type { SideNavContextValue } from \"./types\";\n\nconst SideNavContext = createContext<SideNavContextValue | null>(null);\n\nexport const useSideNavContext = () => {\n const context = useContext(SideNavContext);\n if (!context) {\n throw new Error(\"SideNav components must be used within a SideNav\");\n }\n return context;\n};\n\nexport const SideNavProvider = SideNavContext.Provider;\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport * as Tooltip from \"@radix-ui/react-tooltip\";\nimport { ChevronRight } from \"lucide-react\";\nimport { cn } from \"@/utils\";\nimport { Badge } from \"@/components/primitives/badge\";\nimport { Text } from \"@/components/primitives/typography\";\nimport { useSideNavContext } from \"./side-nav-context\";\nimport type { SideNavItemProps } from \"./types\";\n\nexport const SideNavItem = forwardRef<HTMLDivElement, SideNavItemProps>(\n ({ item, depth = 0 }, ref) => {\n const {\n isCollapsed,\n expandedWidth,\n activeId,\n expandedItems,\n toggleItem,\n onItemSelect,\n } = useSideNavContext();\n\n const { id, label, icon, href, onClick, badge, disabled, children } = item;\n const hasChildren = children && children.length > 0;\n const isActive = activeId === id;\n const isExpanded = expandedItems.has(id);\n const isNested = depth > 0;\n\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) return;\n\n if (hasChildren) {\n e.preventDefault();\n toggleItem(id);\n } else {\n onClick?.();\n onItemSelect?.(id);\n }\n };\n\n // Calculate widths based on collapsed state - 1:1 aspect ratio when collapsed\n const collapsedItemWidth = isNested ? 40 : 44; // matches height for 1:1 ratio\n const expandedItemWidth = expandedWidth; // full width, no wrapper padding\n\n const itemContent = (\n <motion.div\n ref={ref}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClick(e as any);\n }\n }}\n animate={{\n width: isCollapsed ? collapsedItemWidth : expandedItemWidth,\n }}\n transition={{\n type: \"spring\",\n stiffness: 400,\n damping: 30,\n mass: 0.8,\n }}\n className={cn(\n // Base styles\n \"relative flex items-center cursor-pointer overflow-hidden\",\n \"rounded-hz-md transition-colors duration-hz-normal ease-hz-default\",\n // Fixed height for consistent layout\n isNested ? \"h-10\" : \"h-11\",\n // Conditional gap and padding based on icon presence\n icon ? \"gap-3 pl-3.5 pr-3\" : \"\",\n // Left padding for nested items when expanded\n !isCollapsed && isNested && \"pl-4\",\n // States\n isActive\n ? \"bg-blue-50 dark:bg-blue-900/20 text-blue-600 dark:text-blue-400\"\n : \"text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-neutral-800 hover:text-gray-900 dark:hover:text-gray-100\",\n // Disabled\n disabled && \"opacity-50 cursor-not-allowed pointer-events-none\",\n // Focus\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-neutral-900\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n aria-disabled={disabled}\n aria-expanded={hasChildren ? isExpanded : undefined}\n >\n {/* Icon - only render if provided */}\n {icon && (\n <span className=\"flex-shrink-0 w-4 h-4 flex items-center justify-center\">\n {icon}\n </span>\n )}\n\n <div className=\"flex w-full justify-between items-center gap-2\">\n {/* Label - opacity transition, clipped by parent overflow */}\n <Text\n as=\"span\"\n size=\"xs\"\n weight=\"medium\"\n className={cn(\n \"whitespace-nowrap transition-opacity duration-200\",\n isCollapsed ? \"opacity-0\" : \"opacity-100\"\n )}\n >\n {label}\n </Text>\n\n {/* Badge - opacity transition, clipped by parent overflow */}\n {badge && !hasChildren && (\n <Badge\n variant=\"info\"\n className={cn(\n \"flex-shrink-0 whitespace-nowrap transition-opacity duration-200\",\n isCollapsed ? \"opacity-0\" : \"opacity-100\"\n )}\n >\n {badge}\n </Badge>\n )}\n\n {/* Chevron for expandable items - CSS transitions only */}\n {hasChildren && (\n <span\n className={cn(\n \"flex-shrink-0 w-4 h-4 text-gray-400 transition-all duration-200\",\n isCollapsed ? \"opacity-0\" : \"opacity-100\",\n isExpanded && \"rotate-90\"\n )}\n >\n <ChevronRight className=\"w-4 h-4\" />\n </span>\n )}\n\n {/* Collapsed badge indicator - small dot */}\n {isCollapsed && badge && (\n <span className=\"absolute top-1 right-1 w-2 h-2 rounded-hz-full bg-blue-500\" />\n )}\n </div>\n </motion.div>\n );\n\n // Wrap with link if href provided and no children\n const wrappedContent = href && !hasChildren ? (\n <a href={href} className=\"block\">\n {itemContent}\n </a>\n ) : (\n itemContent\n );\n\n // Wrap with tooltip when collapsed and no children\n const finalContent = isCollapsed && !hasChildren ? (\n <Tooltip.Provider delayDuration={100}>\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n {wrappedContent}\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content\n side=\"right\"\n sideOffset={8}\n className={cn(\n \"z-50 px-3 py-1.5 text-sm font-medium rounded-hz-md\",\n \"bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900\",\n \"shadow-lg\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=right]:slide-in-from-left-2\"\n )}\n >\n {label}\n {badge && (\n <Badge variant=\"default\" className=\"ml-2\">\n {badge}\n </Badge>\n )}\n <Tooltip.Arrow className=\"fill-gray-900 dark:fill-gray-100\" />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n ) : (\n wrappedContent\n );\n\n return (\n <div className=\"\">\n <div className=\"flex justify-start\">\n {finalContent}\n </div>\n\n {/* Nested children with tracking line */}\n <AnimatePresence>\n {hasChildren && isExpanded && !isCollapsed && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: \"auto\", opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2, ease: \"easeInOut\" }}\n className=\"overflow-hidden\"\n >\n <div className=\"ml-8 border-l-[1px] border-gray-200 dark:border-neutral-700\">\n {children.map((child) => (\n <SideNavItem key={child.id} item={child} depth={depth + 1} />\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n }\n);\n\nSideNavItem.displayName = \"SideNavItem\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { cn } from \"@/utils\";\nimport { useSideNavContext } from \"./side-nav-context\";\nimport { SideNavItem } from \"./side-nav-item\";\nimport type { SideNavSectionProps } from \"./types\";\n\nexport const SideNavSection = forwardRef<HTMLDivElement, SideNavSectionProps>(\n ({ section }, ref) => {\n const { isCollapsed } = useSideNavContext();\n const { title, items } = section;\n\n return (\n <div ref={ref} className=\"overflow-hidden border-b border-gray-200 dark:border-neutral-800 last:border-b-0\">\n {/* Section title - opacity transition, clipped by parent overflow */}\n {title && (\n <div\n className={cn(\n \"px-2 py-2 text-xs uppercase tracking-wider whitespace-nowrap transition-opacity duration-200\",\n \"text-gray-500 dark:text-gray-500\",\n isCollapsed ? \"opacity-0\" : \"opacity-100\"\n )}\n >\n {title}\n </div>\n )}\n\n {/* Section items */}\n <div>\n {items.map((item) => (\n <SideNavItem key={item.id} item={item} />\n ))}\n </div>\n </div>\n );\n }\n);\n\nSideNavSection.displayName = \"SideNavSection\";\n","\"use client\";\n\nimport { forwardRef, useState, useRef, useEffect, useCallback } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { cn } from \"@/utils\";\nimport { SideNavProvider } from \"./side-nav-context\";\nimport { SideNavSection } from \"./side-nav-section\";\nimport type { SideNavProps, SideNavContextValue } from \"./types\";\n\nconst springTransition = {\n type: \"spring\" as const,\n stiffness: 400,\n damping: 30,\n mass: 0.8,\n};\n\nexport const SideNav = forwardRef<HTMLElement, SideNavProps>(\n (\n {\n sections,\n activeId,\n collapsedWidth = 44,\n expandedWidth = 240,\n defaultCollapsed = true,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n onItemSelect,\n header,\n footer,\n className,\n position = \"fixed\",\n },\n ref\n ) => {\n const [isHovered, setIsHovered] = useState(false);\n const [expandedItems, setExpandedItems] = useState<Set<string>>(new Set());\n const hoverTimeoutRef = useRef<NodeJS.Timeout>();\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledCollapsed !== undefined;\n\n // Calculate actual collapsed state\n // When defaultCollapsed is true: collapsed unless hovered\n // When controlled: use controlled value\n const isCollapsed = isControlled\n ? controlledCollapsed\n : defaultCollapsed\n ? !isHovered\n : false;\n\n const handleMouseEnter = useCallback(() => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(true);\n if (!isControlled) {\n onCollapsedChange?.(false);\n }\n }, 50);\n }, [isControlled, onCollapsedChange]);\n\n const handleMouseLeave = useCallback(() => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n if (!isControlled) {\n onCollapsedChange?.(true);\n }\n }, 200);\n }, [isControlled, onCollapsedChange]);\n\n const toggleItem = useCallback((id: string) => {\n setExpandedItems((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n }, []);\n\n // Cleanup timeout on unmount\n useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n };\n }, []);\n\n // Collapse all sub-menus when sidenav collapses\n useEffect(() => {\n if (isCollapsed) {\n setExpandedItems(new Set());\n }\n }, [isCollapsed]);\n\n const contextValue: SideNavContextValue = {\n isCollapsed,\n collapsedWidth,\n expandedWidth,\n activeId,\n expandedItems,\n toggleItem,\n onItemSelect,\n };\n\n return (\n <SideNavProvider value={contextValue}>\n <motion.nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Main navigation\"\n aria-expanded={!isCollapsed}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n animate={{\n width: isCollapsed ? collapsedWidth : expandedWidth,\n }}\n transition={springTransition}\n className={cn(\n // Position\n position === \"fixed\" ? \"fixed left-0 top-0 h-screen\" : \"relative h-full\",\n // Base styles\n \"flex flex-col overflow-hidden\",\n \"bg-white dark:bg-neutral-900\",\n \"border-r border-gray-200 dark:border-neutral-800\",\n \"z-40\",\n className\n )}\n >\n {/* Header slot */}\n {header}\n\n {/* Navigation sections */}\n <div className=\"flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin scrollbar-thumb-gray-300 dark:scrollbar-thumb-neutral-700\">\n {sections.map((section) => (\n <SideNavSection key={section.id} section={section} />\n ))}\n </div>\n\n {/* Footer slot */}\n {footer}\n </motion.nav>\n </SideNavProvider>\n );\n }\n);\n\nSideNav.displayName = \"SideNav\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { cn } from \"@/utils\";\nimport type { SideNavHeaderProps } from \"./types\";\n\nexport const SideNavHeader = forwardRef<HTMLDivElement, SideNavHeaderProps>(\n ({ children, className }, ref) => {\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-start h-11 overflow-hidden\",\n \"border-b border-gray-200 dark:border-neutral-800\",\n className\n )}\n >\n {children}\n </div>\n );\n }\n);\n\nSideNavHeader.displayName = \"SideNavHeader\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { cn } from \"@/utils\";\nimport type { SideNavFooterProps } from \"./types\";\n\nexport const SideNavFooter = forwardRef<HTMLDivElement, SideNavFooterProps>(\n ({ children, className }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-start h-11 overflow-hidden\",\n \"border-t border-gray-200 dark:border-neutral-800\",\n className\n )}\n >\n {children}\n </div>\n );\n }\n);\n\nSideNavFooter.displayName = \"SideNavFooter\";\n"]}
|