@pos-360/horizon 0.12.1 → 0.14.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.
@@ -1292,6 +1292,7 @@ var Input = React.forwardRef(
1292
1292
  tabIndex = 0,
1293
1293
  tooltip,
1294
1294
  passwordRules,
1295
+ onKeyDown,
1295
1296
  onValidationChange,
1296
1297
  ...props
1297
1298
  }, ref) => {
@@ -1350,7 +1351,7 @@ var Input = React.forwardRef(
1350
1351
  if (precision > 0) {
1351
1352
  return parseFloat(num.toFixed(precision));
1352
1353
  }
1353
- return Math.round(num);
1354
+ return num;
1354
1355
  };
1355
1356
  const isValidNumber = (str) => {
1356
1357
  if (str === "" || str === "-") return true;
@@ -1377,7 +1378,7 @@ var Input = React.forwardRef(
1377
1378
  ];
1378
1379
  const isAllowedKey = allowedKeys.includes(e.key);
1379
1380
  const isDigit = /^[0-9]$/.test(e.key);
1380
- const isDecimalPoint = e.key === "." && precision > 0 && !inputValue.includes(".");
1381
+ const isDecimalPoint = e.key === "." && !inputValue.includes(".");
1381
1382
  const isNegativeSign = e.key === "-" && allowNegative && inputValue === "";
1382
1383
  const isCtrlOrMeta = e.ctrlKey || e.metaKey;
1383
1384
  if (!isAllowedKey && !isDigit && !isDecimalPoint && !isNegativeSign && !isCtrlOrMeta) {
@@ -1553,7 +1554,10 @@ var Input = React.forwardRef(
1553
1554
  inputMode: isMobileType ? "numeric" : isNumberType ? "numeric" : void 0,
1554
1555
  value: isNumberType || isPasswordType ? inputValue : value,
1555
1556
  onChange: handleInputChange,
1556
- onKeyDown: isNumberType ? handleKeyDown : void 0,
1557
+ onKeyDown: (e) => {
1558
+ if (isNumberType) handleKeyDown(e);
1559
+ onKeyDown?.(e);
1560
+ },
1557
1561
  onFocus: handleFocus,
1558
1562
  onBlur: handleBlur,
1559
1563
  placeholder,
@@ -2684,5 +2688,5 @@ exports.TextButton = TextButton;
2684
2688
  exports.Toast = Toast;
2685
2689
  exports.useDashboardContext = useDashboardContext;
2686
2690
  exports.useSideNavContext = useSideNavContext;
2687
- //# sourceMappingURL=chunk-BRG5D46G.js.map
2688
- //# sourceMappingURL=chunk-BRG5D46G.js.map
2691
+ //# sourceMappingURL=chunk-6CAMHXUV.js.map
2692
+ //# sourceMappingURL=chunk-6CAMHXUV.js.map
@@ -0,0 +1 @@
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","motion","createContext","useContext","forwardRef","useId","useMemo","cn","breakpoints","isResponsive","jsxs","Fragment","TrendingUp","TrendingDown","Minus","Text","scaleOrdinal","Group","Pie","scaleBand","scaleLinear","LinearGradient","GridRows","AreaClosed","curveMonotoneX","LinePath","AxisBottom","AxisLeft","Bar","ParentSize","ChevronLeft","ChevronRight","useState","useRef","useEffect","variantStyles","Info","ChevronDown","ChevronUp","EyeOff","Eye","Check","X","Sparkles","Orbit","Globe","Star","Rocket","Moon","React","LayoutGrid","List","AnimatePresence","ExternalLink","AlertTriangle","Badge","Tooltip","useCallback"],"mappings":"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","file":"chunk-6CAMHXUV.js","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 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 onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"search\" | \"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 readOnly?: boolean;\n tabIndex?: number;\n tooltip?: {\n content: ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n };\n passwordRules?: PasswordRules;\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n onValidationChange?: (valid: boolean) => void;\n}\n\nconst EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n placeholder,\n value,\n onChange,\n onNumberChange,\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 autoComplete,\n readOnly = false,\n tabIndex = 0,\n tooltip,\n passwordRules,\n onKeyDown,\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 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 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 === \".\" && !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);\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);\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 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 <input\n ref={(node) => {\n inputInternalRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | 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={(e) => {\n if (isNumberType) handleKeyDown(e);\n onKeyDown?.(e);\n }}\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 {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 {(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 initial={{\n width: isCollapsed ? collapsedItemWidth : expandedItemWidth,\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 initial={{\n width: isCollapsed ? collapsedWidth : expandedWidth,\n }}\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"]}
@@ -1271,6 +1271,7 @@ var Input = forwardRef(
1271
1271
  tabIndex = 0,
1272
1272
  tooltip,
1273
1273
  passwordRules,
1274
+ onKeyDown,
1274
1275
  onValidationChange,
1275
1276
  ...props
1276
1277
  }, ref) => {
@@ -1329,7 +1330,7 @@ var Input = forwardRef(
1329
1330
  if (precision > 0) {
1330
1331
  return parseFloat(num.toFixed(precision));
1331
1332
  }
1332
- return Math.round(num);
1333
+ return num;
1333
1334
  };
1334
1335
  const isValidNumber = (str) => {
1335
1336
  if (str === "" || str === "-") return true;
@@ -1356,7 +1357,7 @@ var Input = forwardRef(
1356
1357
  ];
1357
1358
  const isAllowedKey = allowedKeys.includes(e.key);
1358
1359
  const isDigit = /^[0-9]$/.test(e.key);
1359
- const isDecimalPoint = e.key === "." && precision > 0 && !inputValue.includes(".");
1360
+ const isDecimalPoint = e.key === "." && !inputValue.includes(".");
1360
1361
  const isNegativeSign = e.key === "-" && allowNegative && inputValue === "";
1361
1362
  const isCtrlOrMeta = e.ctrlKey || e.metaKey;
1362
1363
  if (!isAllowedKey && !isDigit && !isDecimalPoint && !isNegativeSign && !isCtrlOrMeta) {
@@ -1532,7 +1533,10 @@ var Input = forwardRef(
1532
1533
  inputMode: isMobileType ? "numeric" : isNumberType ? "numeric" : void 0,
1533
1534
  value: isNumberType || isPasswordType ? inputValue : value,
1534
1535
  onChange: handleInputChange,
1535
- onKeyDown: isNumberType ? handleKeyDown : void 0,
1536
+ onKeyDown: (e) => {
1537
+ if (isNumberType) handleKeyDown(e);
1538
+ onKeyDown?.(e);
1539
+ },
1536
1540
  onFocus: handleFocus,
1537
1541
  onBlur: handleBlur,
1538
1542
  placeholder,
@@ -2620,5 +2624,5 @@ var SideNavFooter = forwardRef(
2620
2624
  SideNavFooter.displayName = "SideNavFooter";
2621
2625
 
2622
2626
  export { AnimatedButton, ChartRenderer, CompactPanel, Dashboard, DashboardPanel, Input, LargePanel, MediumPanel, SideNav, SideNavFooter, SideNavHeader, SideNavItem, SideNavSection, StatDisplay, TableRenderer, TemplateSelector, TextButton, Toast, useDashboardContext, useSideNavContext };
2623
- //# sourceMappingURL=chunk-ZH36QN2D.mjs.map
2624
- //# sourceMappingURL=chunk-ZH36QN2D.mjs.map
2627
+ //# sourceMappingURL=chunk-A4QVL4JL.mjs.map
2628
+ //# sourceMappingURL=chunk-A4QVL4JL.mjs.map