@jarllyng/nostromo 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/dist/chunk-35I2BJC3.js +3 -0
  2. package/dist/chunk-35I2BJC3.js.map +1 -0
  3. package/dist/chunk-35RWQSO2.cjs +3 -0
  4. package/dist/chunk-35RWQSO2.cjs.map +1 -0
  5. package/dist/chunk-3QVQ2TNE.cjs +3 -0
  6. package/dist/chunk-3QVQ2TNE.cjs.map +1 -0
  7. package/dist/{chunk-ZC4HJSII.cjs → chunk-5Z3MYAVM.cjs} +2 -2
  8. package/dist/{chunk-ZC4HJSII.cjs.map → chunk-5Z3MYAVM.cjs.map} +1 -1
  9. package/dist/{chunk-ZQDFYSZB.cjs → chunk-AYEM2M4H.cjs} +2 -2
  10. package/dist/{chunk-ZQDFYSZB.cjs.map → chunk-AYEM2M4H.cjs.map} +1 -1
  11. package/dist/chunk-BL2TM4YT.js +3 -0
  12. package/dist/chunk-BL2TM4YT.js.map +1 -0
  13. package/dist/{chunk-BSUHBLZO.cjs → chunk-BZ5ZCZJX.cjs} +2 -2
  14. package/dist/{chunk-BSUHBLZO.cjs.map → chunk-BZ5ZCZJX.cjs.map} +1 -1
  15. package/dist/chunk-C7HZAQBX.cjs +3 -0
  16. package/dist/chunk-C7HZAQBX.cjs.map +1 -0
  17. package/dist/chunk-DNTPD3PJ.js +3 -0
  18. package/dist/chunk-DNTPD3PJ.js.map +1 -0
  19. package/dist/{chunk-TGPWW7FC.js → chunk-HRJXPCGF.js} +2 -2
  20. package/dist/{chunk-TGPWW7FC.js.map → chunk-HRJXPCGF.js.map} +1 -1
  21. package/dist/chunk-JCETHQ55.cjs +3 -0
  22. package/dist/chunk-JCETHQ55.cjs.map +1 -0
  23. package/dist/chunk-MDXW6IRM.cjs +3 -0
  24. package/dist/chunk-MDXW6IRM.cjs.map +1 -0
  25. package/dist/chunk-MOPCE5RA.js +3 -0
  26. package/dist/chunk-MOPCE5RA.js.map +1 -0
  27. package/dist/chunk-MY2KMTUS.js +3 -0
  28. package/dist/chunk-MY2KMTUS.js.map +1 -0
  29. package/dist/chunk-NBX6FKCA.cjs +3 -0
  30. package/dist/chunk-NBX6FKCA.cjs.map +1 -0
  31. package/dist/chunk-NC27D5Y3.cjs +3 -0
  32. package/dist/chunk-NC27D5Y3.cjs.map +1 -0
  33. package/dist/chunk-NPSIDFOF.cjs +3 -0
  34. package/dist/chunk-NPSIDFOF.cjs.map +1 -0
  35. package/dist/chunk-QKM5LPRW.js +3 -0
  36. package/dist/chunk-QKM5LPRW.js.map +1 -0
  37. package/dist/chunk-SVWQWRPZ.js +3 -0
  38. package/dist/chunk-SVWQWRPZ.js.map +1 -0
  39. package/dist/chunk-UIEGBT4T.js +3 -0
  40. package/dist/chunk-UIEGBT4T.js.map +1 -0
  41. package/dist/chunk-VNDL67OG.cjs +3 -0
  42. package/dist/chunk-VNDL67OG.cjs.map +1 -0
  43. package/dist/chunk-WK6LNC2E.cjs +3 -0
  44. package/dist/chunk-WK6LNC2E.cjs.map +1 -0
  45. package/dist/{chunk-M5IBD3KV.js → chunk-WO3KCAN6.js} +2 -2
  46. package/dist/{chunk-M5IBD3KV.js.map → chunk-WO3KCAN6.js.map} +1 -1
  47. package/dist/{chunk-7W456HZL.js → chunk-XJJJEWSU.js} +2 -2
  48. package/dist/{chunk-7W456HZL.js.map → chunk-XJJJEWSU.js.map} +1 -1
  49. package/dist/chunk-XLZJ6HBL.js +3 -0
  50. package/dist/chunk-XLZJ6HBL.js.map +1 -0
  51. package/dist/chunk-XRVHMGMD.js +3 -0
  52. package/dist/chunk-XRVHMGMD.js.map +1 -0
  53. package/dist/components/core/alert.d.cts +1 -1
  54. package/dist/components/core/alert.d.ts +1 -1
  55. package/dist/components/core/badge.d.cts +1 -1
  56. package/dist/components/core/badge.d.ts +1 -1
  57. package/dist/components/core/breadcrumb.cjs +1 -1
  58. package/dist/components/core/breadcrumb.d.cts +8 -2
  59. package/dist/components/core/breadcrumb.d.ts +8 -2
  60. package/dist/components/core/breadcrumb.js +1 -1
  61. package/dist/components/core/button.d.cts +2 -2
  62. package/dist/components/core/button.d.ts +2 -2
  63. package/dist/components/core/calendar.cjs +1 -1
  64. package/dist/components/core/calendar.js +1 -1
  65. package/dist/components/core/charts-lazy.cjs +1 -1
  66. package/dist/components/core/charts-lazy.js +1 -1
  67. package/dist/components/core/charts.cjs +1 -1
  68. package/dist/components/core/charts.js +1 -1
  69. package/dist/components/core/checkbox.cjs +1 -1
  70. package/dist/components/core/checkbox.d.cts +1 -1
  71. package/dist/components/core/checkbox.d.ts +1 -1
  72. package/dist/components/core/checkbox.js +1 -1
  73. package/dist/components/core/data-table.cjs +1 -1
  74. package/dist/components/core/data-table.js +1 -1
  75. package/dist/components/core/dialog.cjs +1 -1
  76. package/dist/components/core/dialog.d.cts +21 -3
  77. package/dist/components/core/dialog.d.ts +21 -3
  78. package/dist/components/core/dialog.js +1 -1
  79. package/dist/components/core/error-message.d.cts +1 -1
  80. package/dist/components/core/error-message.d.ts +1 -1
  81. package/dist/components/core/helper-text.d.cts +1 -1
  82. package/dist/components/core/helper-text.d.ts +1 -1
  83. package/dist/components/core/icon.cjs +1 -1
  84. package/dist/components/core/icon.d.cts +3 -3
  85. package/dist/components/core/icon.d.ts +3 -3
  86. package/dist/components/core/icon.js +1 -1
  87. package/dist/components/core/input.d.cts +1 -1
  88. package/dist/components/core/input.d.ts +1 -1
  89. package/dist/components/core/label.d.cts +1 -1
  90. package/dist/components/core/label.d.ts +1 -1
  91. package/dist/components/core/pagination.d.cts +1 -1
  92. package/dist/components/core/pagination.d.ts +1 -1
  93. package/dist/components/core/progress.d.cts +3 -3
  94. package/dist/components/core/progress.d.ts +3 -3
  95. package/dist/components/core/radio-group.d.cts +1 -1
  96. package/dist/components/core/radio-group.d.ts +1 -1
  97. package/dist/components/core/select.d.cts +3 -3
  98. package/dist/components/core/select.d.ts +3 -3
  99. package/dist/components/core/separator.cjs +1 -1
  100. package/dist/components/core/separator.js +1 -1
  101. package/dist/components/core/skeleton.cjs +1 -1
  102. package/dist/components/core/skeleton.d.cts +1 -1
  103. package/dist/components/core/skeleton.d.ts +1 -1
  104. package/dist/components/core/skeleton.js +1 -1
  105. package/dist/components/core/switch.d.cts +1 -1
  106. package/dist/components/core/switch.d.ts +1 -1
  107. package/dist/components/core/table.cjs +1 -1
  108. package/dist/components/core/table.d.cts +11 -1
  109. package/dist/components/core/table.d.ts +11 -1
  110. package/dist/components/core/table.js +1 -1
  111. package/dist/components/core/textarea.d.cts +1 -1
  112. package/dist/components/core/textarea.d.ts +1 -1
  113. package/dist/components/core/toast.cjs +1 -1
  114. package/dist/components/core/toast.d.cts +2 -2
  115. package/dist/components/core/toast.d.ts +2 -2
  116. package/dist/components/core/toast.js +1 -1
  117. package/dist/components/core/tooltip.cjs +1 -1
  118. package/dist/components/core/tooltip.d.cts +2 -2
  119. package/dist/components/core/tooltip.d.ts +2 -2
  120. package/dist/components/core/tooltip.js +1 -1
  121. package/dist/components/marketing/features.d.cts +2 -2
  122. package/dist/components/marketing/features.d.ts +2 -2
  123. package/dist/components/marketing/gallery.d.cts +1 -1
  124. package/dist/components/marketing/gallery.d.ts +1 -1
  125. package/dist/components/marketing/pricing.d.cts +1 -1
  126. package/dist/components/marketing/pricing.d.ts +1 -1
  127. package/dist/components/marketing/testimonials.d.cts +1 -1
  128. package/dist/components/marketing/testimonials.d.ts +1 -1
  129. package/dist/index.cjs +1 -1
  130. package/dist/index.cjs.map +1 -1
  131. package/dist/index.d.cts +3 -3
  132. package/dist/index.d.ts +3 -3
  133. package/dist/index.js +1 -1
  134. package/dist/index.js.map +1 -1
  135. package/package.json +2 -2
  136. package/dist/chunk-4PN7OGLX.cjs +0 -3
  137. package/dist/chunk-4PN7OGLX.cjs.map +0 -1
  138. package/dist/chunk-4TYVEXRA.cjs +0 -3
  139. package/dist/chunk-4TYVEXRA.cjs.map +0 -1
  140. package/dist/chunk-B2BWBKZA.cjs +0 -3
  141. package/dist/chunk-B2BWBKZA.cjs.map +0 -1
  142. package/dist/chunk-CVOSWGQZ.js +0 -3
  143. package/dist/chunk-CVOSWGQZ.js.map +0 -1
  144. package/dist/chunk-EGQ2Q37R.cjs +0 -3
  145. package/dist/chunk-EGQ2Q37R.cjs.map +0 -1
  146. package/dist/chunk-EIXD3Y4R.js +0 -3
  147. package/dist/chunk-EIXD3Y4R.js.map +0 -1
  148. package/dist/chunk-G5ZSOVJY.cjs +0 -3
  149. package/dist/chunk-G5ZSOVJY.cjs.map +0 -1
  150. package/dist/chunk-G6TR5RGR.js +0 -3
  151. package/dist/chunk-G6TR5RGR.js.map +0 -1
  152. package/dist/chunk-GUJB555L.js +0 -3
  153. package/dist/chunk-GUJB555L.js.map +0 -1
  154. package/dist/chunk-JZROH43C.js +0 -3
  155. package/dist/chunk-JZROH43C.js.map +0 -1
  156. package/dist/chunk-MRZOLUSF.js +0 -3
  157. package/dist/chunk-MRZOLUSF.js.map +0 -1
  158. package/dist/chunk-OZ3RIKZO.cjs +0 -3
  159. package/dist/chunk-OZ3RIKZO.cjs.map +0 -1
  160. package/dist/chunk-PEYPRWZP.js +0 -3
  161. package/dist/chunk-PEYPRWZP.js.map +0 -1
  162. package/dist/chunk-PVHTEE5T.cjs +0 -3
  163. package/dist/chunk-PVHTEE5T.cjs.map +0 -1
  164. package/dist/chunk-QF5CRDZI.js +0 -3
  165. package/dist/chunk-QF5CRDZI.js.map +0 -1
  166. package/dist/chunk-RPRISB7O.cjs +0 -3
  167. package/dist/chunk-RPRISB7O.cjs.map +0 -1
  168. package/dist/chunk-SD4IIQ2I.cjs +0 -3
  169. package/dist/chunk-SD4IIQ2I.cjs.map +0 -1
  170. package/dist/chunk-TJFZAMBB.js +0 -3
  171. package/dist/chunk-TJFZAMBB.js.map +0 -1
  172. package/dist/chunk-VXMDVKAD.js +0 -3
  173. package/dist/chunk-VXMDVKAD.js.map +0 -1
  174. package/dist/chunk-ZYP2PDSX.cjs +0 -3
  175. package/dist/chunk-ZYP2PDSX.cjs.map +0 -1
@@ -1,3 +0,0 @@
1
- "use client";
2
- 'use strict';var chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),r=require('react'),recharts=require('recharts'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var U=classVarianceAuthority.cva("w-full",{variants:{variant:{default:"",minimal:"",detailed:""},size:{sm:"h-48",md:"h-64",lg:"h-96",xl:"h-[500px]"}},defaultVariants:{variant:"default",size:"md"}}),s=["hsl(var(--nostromo-color-brand-500))","hsl(var(--nostromo-color-brand-600))","hsl(var(--nostromo-color-success-500))","hsl(var(--nostromo-color-warning-500))","hsl(var(--nostromo-color-error-500))","hsl(var(--nostromo-color-info-500))","hsl(var(--nostromo-color-brand-400))","hsl(var(--nostromo-color-brand-700))"],g=({active:u,payload:t,label:i})=>u&&t&&t.length?r__default.default.createElement("div",{className:"rounded-lg border border-border bg-popover p-3 shadow-lg"},r__default.default.createElement("p",{className:"mb-2 font-semibold text-popover-foreground"},String(i??"")),t.map((m,n)=>r__default.default.createElement("p",{key:n,className:"text-sm",style:{color:m.color}},`${m.name??""}: ${m.value??""}`))):null,v=({payload:u})=>r__default.default.createElement("div",{className:"mt-4 flex flex-wrap justify-center gap-4"},u?.map((t,i)=>r__default.default.createElement("div",{key:i,className:"flex items-center gap-2"},r__default.default.createElement("div",{className:"h-3 w-3 rounded",style:{backgroundColor:t.color},"aria-hidden":"true"}),r__default.default.createElement("span",{className:"text-sm text-popover-foreground"},t.value)))),w=r__default.default.forwardRef(({type:u,data:t,dataKeys:i,xAxisKey:m="name",colors:n=s,showGrid:b=true,showLegend:h=true,showTooltip:d=true,title:C,description:N,className:z,variant:A,size:p,height:K,ariaLabel:T,ariaLabelledBy:V,strokeWidth:D=2,fillOpacity:B=.6,...I},j)=>{let L=K||(p==="sm"?192:p==="lg"?384:p==="xl"?500:256),H=()=>{if(typeof window>"u")return r__default.default.createElement("div",{className:"flex items-center justify-center h-full text-muted-foreground"},r__default.default.createElement("p",null,"Chart loading..."));let y={data:t,margin:{top:5,right:5,left:5,bottom:5}};switch(u){case "line":return r__default.default.createElement(recharts.LineChart,{...y},b&&r__default.default.createElement(recharts.CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r__default.default.createElement(recharts.XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r__default.default.createElement(recharts.YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r__default.default.createElement(recharts.Tooltip,{content:r__default.default.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r__default.default.createElement(recharts.Line,{key:e,type:"monotone",dataKey:e,stroke:l,strokeWidth:D,dot:{r:4,fill:l},activeDot:{r:6}})}),h&&r__default.default.createElement(recharts.Legend,{content:r__default.default.createElement(v,null)}));case "bar":return r__default.default.createElement(recharts.BarChart,{...y},b&&r__default.default.createElement(recharts.CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r__default.default.createElement(recharts.XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r__default.default.createElement(recharts.YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r__default.default.createElement(recharts.Tooltip,{content:r__default.default.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r__default.default.createElement(recharts.Bar,{key:e,dataKey:e,fill:l})}),h&&r__default.default.createElement(recharts.Legend,{content:r__default.default.createElement(v,null)}));case "area":return r__default.default.createElement(recharts.AreaChart,{...y},b&&r__default.default.createElement(recharts.CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r__default.default.createElement(recharts.XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r__default.default.createElement(recharts.YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r__default.default.createElement(recharts.Tooltip,{content:r__default.default.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r__default.default.createElement(recharts.Area,{key:e,type:"monotone",dataKey:e,stroke:l,fill:l,fillOpacity:B,strokeWidth:D})}),h&&r__default.default.createElement(recharts.Legend,{content:r__default.default.createElement(v,null)}));case "pie":{let e=i[0]||"value";return r__default.default.createElement(recharts.PieChart,null,r__default.default.createElement(recharts.Pie,{data:t,dataKey:e,nameKey:m,cx:"50%",cy:"50%",outerRadius:L/4,label:a=>`${a.name??""}: ${((a.percent??0)*100).toFixed(0)}%`},t.map((a,o)=>{let l=n[o%n.length]||s[o%s.length];return r__default.default.createElement(recharts.Cell,{key:`cell-${o}`,fill:l??"#8884d8"})})),d&&r__default.default.createElement(recharts.Tooltip,{content:r__default.default.createElement(g,null)}),h&&r__default.default.createElement(recharts.Legend,{content:r__default.default.createElement(v,null)}))}default:return null}};return r__default.default.createElement("div",{ref:j,className:chunkITRGJNWL_cjs.a(U({variant:A,size:p}),z),role:"img","aria-label":T||C||`${u} chart`,"aria-labelledby":V,...I},C&&r__default.default.createElement("h3",{className:"mb-2 text-lg font-semibold text-foreground"},C),N&&r__default.default.createElement("p",{className:"mb-4 text-sm text-muted-foreground"},N),r__default.default.createElement(recharts.ResponsiveContainer,{width:"100%",height:L},H()))});w.displayName="Chart";var tr=chunk7SPPGTBT_cjs.a(w);exports.a=U;exports.b=tr;//# sourceMappingURL=chunk-G5ZSOVJY.cjs.map
3
- //# sourceMappingURL=chunk-G5ZSOVJY.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/charts.tsx"],"names":["chartContainerVariants","cva","defaultColors","CustomTooltip","active","payload","label","React","entry","index","CustomLegend","ChartComponent","type","data","dataKeys","xAxisKey","colors","showGrid","showLegend","showTooltip","title","description","className","variant","size","height","ariaLabel","ariaLabelledBy","strokeWidth","fillOpacity","props","ref","chartHeight","renderChart","commonProps","LineChart","CartesianGrid","XAxis","YAxis","Tooltip","key","colorIndex","color","Line","Legend","BarChart","Bar","AreaChart","Area","pieDataKey","PieChart","Pie","fillColor","Cell","cn","ResponsiveContainer","Chart","memo"],"mappings":"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","file":"chunk-G5ZSOVJY.cjs","sourcesContent":["import React from \"react\";\nimport {\n LineChart,\n Line,\n BarChart,\n Bar,\n PieChart,\n Pie,\n AreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n Cell,\n} from \"recharts\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Chart container variants\nconst chartContainerVariants = cva(\"w-full\", {\n variants: {\n variant: {\n default: \"\",\n minimal: \"\",\n detailed: \"\",\n },\n size: {\n sm: \"h-48\",\n md: \"h-64\",\n lg: \"h-96\",\n xl: \"h-[500px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport type ChartType = \"line\" | \"bar\" | \"pie\" | \"area\";\n\nexport interface ChartDataPoint {\n name: string;\n [key: string]: string | number;\n}\n\nexport interface ChartProps extends VariantProps<\n typeof chartContainerVariants\n> {\n type: ChartType;\n data: ChartDataPoint[];\n dataKeys: string[];\n xAxisKey?: string;\n colors?: (string | undefined)[];\n showGrid?: boolean;\n showLegend?: boolean;\n showTooltip?: boolean;\n title?: string;\n description?: string;\n className?: string;\n height?: number;\n // Accessibility\n ariaLabel?: string;\n ariaLabelledBy?: string;\n // Styling\n strokeWidth?: number;\n fillOpacity?: number;\n}\n\n// Default color palette matching Nostromo theme\nconst defaultColors = [\n \"hsl(var(--nostromo-color-brand-500))\",\n \"hsl(var(--nostromo-color-brand-600))\",\n \"hsl(var(--nostromo-color-success-500))\",\n \"hsl(var(--nostromo-color-warning-500))\",\n \"hsl(var(--nostromo-color-error-500))\",\n \"hsl(var(--nostromo-color-info-500))\",\n \"hsl(var(--nostromo-color-brand-400))\",\n \"hsl(var(--nostromo-color-brand-700))\",\n];\n\n// Custom tooltip component with Tailwind styling\ninterface CustomTooltipProps {\n active?: boolean;\n payload?: Array<{\n name?: string;\n value?: number | string;\n color?: string;\n }>;\n label?: string | number;\n}\n\nconst CustomTooltip = ({ active, payload, label }: CustomTooltipProps) => {\n if (active && payload && payload.length) {\n return (\n <div className=\"rounded-lg border border-border bg-popover p-3 shadow-lg\">\n <p className=\"mb-2 font-semibold text-popover-foreground\">\n {String(label ?? \"\")}\n </p>\n {payload.map((entry, index: number) => (\n <p key={index} className=\"text-sm\" style={{ color: entry.color }}>\n {`${entry.name ?? \"\"}: ${entry.value ?? \"\"}`}\n </p>\n ))}\n </div>\n );\n }\n return null;\n};\n\n// Custom legend component with Tailwind styling\ninterface CustomLegendProps {\n payload?: Array<{\n value?: string;\n color?: string;\n }>;\n}\n\nconst CustomLegend = ({ payload }: CustomLegendProps) => {\n return (\n <div className=\"mt-4 flex flex-wrap justify-center gap-4\">\n {payload?.map((entry, index: number) => (\n <div key={index} className=\"flex items-center gap-2\">\n <div\n className=\"h-3 w-3 rounded\"\n style={{ backgroundColor: entry.color }}\n aria-hidden=\"true\"\n />\n <span className=\"text-sm text-popover-foreground\">{entry.value}</span>\n </div>\n ))}\n </div>\n );\n};\n\nconst ChartComponent = React.forwardRef<HTMLDivElement, ChartProps>(\n (\n {\n type,\n data,\n dataKeys,\n xAxisKey = \"name\",\n colors = defaultColors,\n showGrid = true,\n showLegend = true,\n showTooltip = true,\n title,\n description,\n className,\n variant,\n size,\n height,\n ariaLabel,\n ariaLabelledBy,\n strokeWidth = 2,\n fillOpacity = 0.6,\n ...props\n },\n ref,\n ) => {\n const chartHeight =\n height ||\n (size === \"sm\" ? 192 : size === \"lg\" ? 384 : size === \"xl\" ? 500 : 256);\n\n const renderChart = () => {\n // SSR guard: recharts requires browser environment\n if (typeof window === \"undefined\") {\n return (\n <div className=\"flex items-center justify-center h-full text-muted-foreground\">\n <p>Chart loading...</p>\n </div>\n );\n }\n\n const commonProps = {\n data,\n margin: { top: 5, right: 5, left: 5, bottom: 5 },\n };\n\n switch (type) {\n case \"line\":\n return (\n <LineChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return (\n <Line\n key={key}\n type=\"monotone\"\n dataKey={key}\n stroke={color}\n strokeWidth={strokeWidth}\n dot={{ r: 4, fill: color }}\n activeDot={{ r: 6 }}\n />\n );\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </LineChart>\n );\n\n case \"bar\":\n return (\n <BarChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return <Bar key={key} dataKey={key} fill={color} />;\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </BarChart>\n );\n\n case \"area\":\n return (\n <AreaChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return (\n <Area\n key={key}\n type=\"monotone\"\n dataKey={key}\n stroke={color}\n fill={color}\n fillOpacity={fillOpacity}\n strokeWidth={strokeWidth}\n />\n );\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </AreaChart>\n );\n\n case \"pie\": {\n const pieDataKey = dataKeys[0] || \"value\";\n return (\n <PieChart>\n <Pie\n data={data}\n dataKey={pieDataKey}\n nameKey={xAxisKey}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius={chartHeight / 4}\n label={(props: { name?: string; percent?: number }) =>\n `${props.name ?? \"\"}: ${((props.percent ?? 0) * 100).toFixed(0)}%`\n }\n >\n {data.map((entry, index) => {\n const fillColor =\n colors[index % colors.length] ||\n defaultColors[index % defaultColors.length];\n return (\n <Cell key={`cell-${index}`} fill={fillColor ?? \"#8884d8\"} />\n );\n })}\n </Pie>\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {showLegend && <Legend content={<CustomLegend />} />}\n </PieChart>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(chartContainerVariants({ variant, size }), className)}\n role=\"img\"\n aria-label={ariaLabel || title || `${type} chart`}\n aria-labelledby={ariaLabelledBy}\n {...props}\n >\n {title && (\n <h3 className=\"mb-2 text-lg font-semibold text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"mb-4 text-sm text-muted-foreground\">{description}</p>\n )}\n <ResponsiveContainer width=\"100%\" height={chartHeight}>\n {renderChart()}\n </ResponsiveContainer>\n </div>\n );\n },\n);\n\nChartComponent.displayName = \"Chart\";\n\n// Memoize Chart component for performance optimization\n// Charts are expensive to render, so memoization helps prevent unnecessary re-renders\nexport const Chart = memo(ChartComponent) as typeof ChartComponent;\n\nexport { chartContainerVariants };\n"]}
@@ -1,3 +0,0 @@
1
- "use client";
2
- import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';var v=cva("peer h-4 w-4 shrink-0 rounded-sm border border-border shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200",{variants:{variant:{default:"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary",error:"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive",success:"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500"},size:{default:"h-4 w-4",sm:"h-3 w-3",lg:"h-5 w-5"}},defaultVariants:{variant:"default",size:"default"}}),x=e.forwardRef(({className:o,error:t,helperText:s,label:d,required:c,id:n,variant:l,size:b,...u},p)=>{let m=e.useId(),r=n||m,i=s?`${r}-helper`:void 0,f=t?`${r}-error`:void 0;return e.createElement("div",{className:"space-y-2"},e.createElement("div",{className:"flex items-center space-x-3"},e.createElement("input",{type:"checkbox",className:a(v({variant:t?"error":l||"default",size:b,className:o})),ref:p,id:r,"aria-describedby":a(i,f)||void 0,"aria-invalid":t,required:c,...u}),d&&e.createElement("label",{htmlFor:r,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},d,c&&e.createElement("span",{className:"text-error-500 ml-1"},"*"))),s&&e.createElement("p",{id:i,className:a("text-sm text-muted-foreground",t&&"text-destructive")},s))});x.displayName="Checkbox";export{v as a,x as b};//# sourceMappingURL=chunk-G6TR5RGR.js.map
3
- //# sourceMappingURL=chunk-G6TR5RGR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/checkbox.tsx"],"names":["checkboxVariants","cva","Checkbox","className","error","helperText","label","required","id","variant","size","props","ref","generatedId","checkboxId","helperTextId","errorId","cn"],"mappings":"uGAIA,IAAMA,CAAAA,CAAmBC,GAAAA,CACvB,kWAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CACE,wGACF,KAAA,CACE,+HAAA,CACF,OAAA,CACE,+HACJ,EACA,IAAA,CAAM,CACJ,OAAA,CAAS,SAAA,CACT,GAAI,SAAA,CACJ,EAAA,CAAI,SACN,CACF,EACA,eAAA,CAAiB,CACf,QAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CA0BMC,CAAAA,CAAiB,aACrB,CACE,CACE,SAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,GAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,EACAC,CAAAA,GACG,CACH,IAAMC,CAAAA,CAAoB,SAAM,CAC1BC,CAAAA,CAAaN,CAAAA,EAAMK,CAAAA,CACnBE,EAAeV,CAAAA,CAAa,CAAA,EAAGS,CAAU,CAAA,OAAA,CAAA,CAAY,MAAA,CACrDE,EAAUZ,CAAAA,CAAQ,CAAA,EAAGU,CAAU,CAAA,MAAA,CAAA,CAAW,OAKhD,OACE,CAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aACb,CAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BAAA,CAAA,CACb,gBAAC,OAAA,CAAA,CACC,IAAA,CAAK,WACL,SAAA,CAAWG,CAAAA,CACTjB,EAAiB,CAAE,OAAA,CARLI,CAAAA,CAAQ,OAAA,CAAUK,GAAW,SAAA,CAQE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAP,CAAU,CAAC,CAChE,CAAA,CACA,GAAA,CAAKS,EACL,EAAA,CAAIE,CAAAA,CACJ,mBAAkBG,CAAAA,CAAGF,CAAAA,CAAcC,CAAO,CAAA,EAAK,MAAA,CAC/C,cAAA,CAAcZ,CAAAA,CACd,SAAUG,CAAAA,CACT,GAAGI,CAAAA,CACN,CAAA,CACCL,GACC,CAAA,CAAA,aAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAASQ,CAAAA,CACT,UAAU,4FAAA,CAAA,CAETR,CAAAA,CACAC,GAAY,CAAA,CAAA,aAAA,CAAC,MAAA,CAAA,CAAK,UAAU,qBAAA,CAAA,CAAsB,GAAC,CACtD,CAEJ,EACCF,CAAAA,EACC,CAAA,CAAA,aAAA,CAAC,KACC,EAAA,CAAIU,CAAAA,CACJ,UAAWE,CAAAA,CACT,+BAAA,CACAb,CAAAA,EAAS,kBACX,GAECC,CACH,CAEJ,CAEJ,CACF,EACAH,EAAS,WAAA,CAAc,UAAA","file":"chunk-G6TR5RGR.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst checkboxVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-border shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200\",\n {\n variants: {\n variant: {\n default:\n \"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n error:\n \"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive\",\n success:\n \"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500\",\n },\n size: {\n default: \"h-4 w-4\",\n sm: \"h-3 w-3\",\n lg: \"h-5 w-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface CheckboxProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof checkboxVariants> {\n /**\n * Whether the checkbox is in an error state\n * @default false\n */\n error?: boolean;\n /**\n * Helper text to display below the checkbox\n */\n helperText?: string;\n /**\n * Label text for the checkbox\n */\n label?: string;\n /**\n * Whether the checkbox is required\n * @default false\n */\n required?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n error,\n helperText,\n label,\n required,\n id,\n variant,\n size,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n const helperTextId = helperText ? `${checkboxId}-helper` : undefined;\n const errorId = error ? `${checkboxId}-error` : undefined;\n\n // Determine variant based on error state\n const checkboxVariant = error ? \"error\" : variant || \"default\";\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-3\">\n <input\n type=\"checkbox\"\n className={cn(\n checkboxVariants({ variant: checkboxVariant, size, className }),\n )}\n ref={ref}\n id={checkboxId}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n required={required}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n {required && <span className=\"text-error-500 ml-1\">*</span>}\n </label>\n )}\n </div>\n {helperText && (\n <p\n id={helperTextId}\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-destructive\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxVariants };\n"]}
@@ -1,3 +0,0 @@
1
- "use client";
2
- import {a}from'./chunk-AC2JBXHQ.js';import e,{useState}from'react';import {cva}from'class-variance-authority';var q=cva("w-full border-collapse transition-all duration-200",{variants:{variant:{default:"border border-border shadow-sm hover:shadow-md",striped:"border border-border shadow-sm hover:shadow-md",bordered:"border-2 border-border shadow-md hover:shadow-lg",hover:"border border-border shadow-sm hover:shadow-md",elevated:"border border-border shadow-lg hover:shadow-xl",interactive:"border border-border shadow-sm hover:shadow-md hover:border-primary"},size:{sm:"text-xs sm:text-sm",md:"text-sm sm:text-base",lg:"text-base sm:text-lg"}},defaultVariants:{variant:"default",size:"md"}}),O=cva("font-medium text-left transition-all duration-200",{variants:{variant:{default:"bg-muted text-foreground hover:bg-muted/80",striped:"bg-muted text-foreground hover:bg-muted/80",bordered:"bg-muted text-foreground hover:bg-muted/80",hover:"bg-muted text-foreground hover:bg-muted/80",elevated:"bg-muted text-foreground hover:bg-muted/80",interactive:"bg-muted text-foreground hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}}),w=cva("border-border transition-all duration-200",{variants:{variant:{default:"border-b border-border hover:bg-muted/50",striped:"border-b border-border even:bg-muted/50 hover:bg-muted/80",bordered:"border border-border hover:bg-muted/50",hover:"border-b border-border hover:bg-muted/50",elevated:"border-b border-border hover:bg-muted/80",interactive:"border-b border-border hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}});function U({data:s,columns:n,loading:i=false,emptyText:m="No data",className:c,variant:d,size:p,rowKey:g="id",onRowClick:P,onSort:K,sortColumn:T,sortDirection:E,pagination:t,selection:l,caption:z,...L},B){let[I,D]=useState(null),H=T!==void 0,u=H&&T?{column:T,direction:E||"asc"}:I,j=r=>{if(!r.sortable)return;let a=u?.column===r.key&&u?.direction==="asc"?"desc":"asc";H||D({column:r.key,direction:a}),K?.(r,a);},h=(r,a)=>typeof g=="function"?g(r):r[g]||a,N=(r,a)=>{if(!l)return false;let o=h(r,a);return l.selectedRowKeys.includes(o)},A=(r,a,o)=>{if(!l)return;let x=h(r,a),v=o?[...l.selectedRowKeys,x]:l.selectedRowKeys.filter(S=>S!==x),C=s.filter((S,J)=>v.includes(h(S,J)));l.onChange(v,C);},G=r=>{if(!l)return;let a=s.map((v,C)=>h(v,C)),o=r?a:[],x=r?s:[];l.onChange(o,x);},$=l&&s.length>0&&l.selectedRowKeys.length===s.length,F=l&&l.selectedRowKeys.length>0&&l.selectedRowKeys.length<s.length;return e.createElement("div",{className:"w-full overflow-x-auto"},e.createElement("div",{className:"min-w-full"},e.createElement("table",{ref:B,className:a(q({variant:d,size:p}),c),...L},z&&e.createElement("caption",{className:"sr-only"},z),e.createElement(V,null,e.createElement(y,null,l&&e.createElement("th",{className:a(w({variant:d,size:p})),scope:"col",role:"columnheader"},e.createElement("input",{type:"checkbox",checked:$,ref:r=>{r&&(r.indeterminate=F||false);},onChange:r=>G(r.target.checked),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500","aria-label":"Select all rows"})),n.map(r=>e.createElement("th",{key:r.key,className:a(w({variant:d,size:p}),r.className,r.align==="center"&&"text-center",r.align==="right"&&"text-right"),scope:"col",role:"columnheader",...r.width&&{style:{width:r.width}}},e.createElement("div",{className:"flex items-center gap-2"},e.createElement("span",null,r.title),r.sortable&&e.createElement("button",{type:"button",onClick:()=>j(r),className:"flex flex-col text-gray-400 hover:text-gray-600","aria-label":`Sort by ${r.title}`},e.createElement("svg",{className:a("w-3 h-3",u?.column===r.key&&u?.direction==="asc"?"text-blue-600":"text-gray-400"),fill:"currentColor",viewBox:"0 0 20 20"},e.createElement("path",{d:"M5 8l5-5 5 5H5z"})),e.createElement("svg",{className:a("w-3 h-3 -mt-1",u?.column===r.key&&u?.direction==="desc"?"text-blue-600":"text-gray-400"),fill:"currentColor",viewBox:"0 0 20 20"},e.createElement("path",{d:"M5 12l5 5 5-5H5z"})))))))),e.createElement(M,null,i?e.createElement(y,null,e.createElement(f,{colSpan:n.length+(l?1:0),variant:d,size:p,className:"text-center py-8"},e.createElement("div",{className:"flex items-center justify-center gap-2"},e.createElement("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600"}),e.createElement("span",null,"Loading...")))):s.length===0?e.createElement(y,null,e.createElement(f,{colSpan:n.length+(l?1:0),variant:d,size:p,className:"text-center py-8 text-gray-500"},m)):s.map((r,a$1)=>e.createElement(y,{key:h(r,a$1),onClick:()=>P?.(r,a$1),selected:N(r,a$1),className:a(P&&"cursor-pointer hover:bg-gray-50",N(r,a$1)&&"bg-blue-50")},l&&e.createElement(f,{variant:d,size:p},e.createElement("input",{type:"checkbox",checked:N(r,a$1),onChange:o=>A(r,a$1,o.target.checked),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500","aria-label":`Select row ${a$1+1}`,...l.getCheckboxProps?.(r)})),n.map(o=>e.createElement(f,{key:o.key,variant:d,size:p,className:a(o.className,o.align==="center"&&"text-center",o.align==="right"&&"text-right")},o.render?o.render(o.dataIndex?r[o.dataIndex]:r,r,a$1):o.dataIndex?r[o.dataIndex]:r[o.key]))))))),t&&e.createElement("div",{className:"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0"},e.createElement("div",{className:"flex items-center gap-2"},e.createElement("span",{className:"text-sm text-muted-foreground"},"Showing ",(t.current-1)*t.pageSize+1," to"," ",Math.min(t.current*t.pageSize,t.total)," ","of ",t.total," results")),e.createElement("div",{className:"flex items-center gap-2"},t.showSizeChanger&&e.createElement("select",{value:t.pageSize,onChange:r=>t.onChange(1,Number(r.target.value)),className:"rounded border-gray-300 text-sm","aria-label":"Select page size"},e.createElement("option",{value:10},"10 / page"),e.createElement("option",{value:20},"20 / page"),e.createElement("option",{value:50},"50 / page"),e.createElement("option",{value:100},"100 / page")),e.createElement("div",{className:"flex items-center gap-1"},e.createElement("button",{type:"button",onClick:()=>t.onChange(t.current-1,t.pageSize),disabled:t.current<=1,className:"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to previous page"},"Previous"),e.createElement("span",{className:"px-3 py-1 text-sm"},"Page ",t.current," of"," ",Math.ceil(t.total/t.pageSize)),e.createElement("button",{type:"button",onClick:()=>t.onChange(t.current+1,t.pageSize),disabled:t.current>=Math.ceil(t.total/t.pageSize),className:"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to next page"},"Next")))))}var R=e.forwardRef(U);R.displayName="Table";var _=R,V=e.forwardRef(({className:s,variant:n,size:i,children:m,...c},d)=>e.createElement("thead",{ref:d,className:a(O({variant:n,size:i}),s),...c},m));V.displayName="TableHeader";var M=e.forwardRef(({className:s,children:n,...i},m)=>e.createElement("tbody",{ref:m,className:a(s),...i},n));M.displayName="TableBody";var y=e.forwardRef(({className:s,children:n,onClick:i,selected:m,...c},d)=>e.createElement("tr",{ref:d,className:a("border-b border-gray-200",m&&"bg-blue-50",i&&"cursor-pointer hover:bg-gray-50",s),onClick:i,...c},n));y.displayName="TableRow";var f=e.forwardRef(({className:s,children:n,variant:i,size:m,colSpan:c,rowSpan:d,...p},g)=>e.createElement("td",{ref:g,className:a(w({variant:i,size:m}),s),colSpan:c,rowSpan:d,...p},n));f.displayName="TableCell";var W=e.forwardRef(({className:s,children:n,variant:i,size:m,colSpan:c,rowSpan:d,...p},g)=>e.createElement("th",{ref:g,className:a(w({variant:i,size:m}),"font-medium",s),colSpan:c,rowSpan:d,...p},n));W.displayName="TableHead";export{q as a,O as b,w as c,_ as d,V as e,M as f,y as g,f as h,W as i};//# sourceMappingURL=chunk-GUJB555L.js.map
3
- //# sourceMappingURL=chunk-GUJB555L.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/table.tsx"],"names":["tableVariants","cva","tableHeaderVariants","tableCellVariants","TableComponent","data","columns","loading","emptyText","className","variant","size","rowKey","onRowClick","onSort","controlledSortColumn","controlledSortDirection","pagination","selection","caption","props","ref","internalSortState","setInternalSortState","useState","isControlled","sortState","handleSort","column","newDirection","getRowKey","record","index","isRowSelected","key","handleRowSelection","checked","newSelectedKeys","k","newSelectedRows","_","i","handleSelectAll","allKeys","isAllSelected","isIndeterminate","React","cn","TableHeader","TableRow","input","e","TableBody","TableCell","TableForwardRef","Table","children","onClick","selected","colSpan","rowSpan","TableHead"],"mappings":"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","file":"chunk-GUJB555L.js","sourcesContent":["import React, { useState } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n// Table variants\nconst tableVariants = cva(\n \"w-full border-collapse transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border border-border shadow-sm hover:shadow-md\",\n striped: \"border border-border shadow-sm hover:shadow-md\",\n bordered: \"border-2 border-border shadow-md hover:shadow-lg\",\n hover: \"border border-border shadow-sm hover:shadow-md\",\n elevated: \"border border-border shadow-lg hover:shadow-xl\",\n interactive:\n \"border border-border shadow-sm hover:shadow-md hover:border-primary\",\n },\n size: {\n sm: \"text-xs sm:text-sm\",\n md: \"text-sm sm:text-base\",\n lg: \"text-base sm:text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst tableHeaderVariants = cva(\n \"font-medium text-left transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted text-foreground hover:bg-muted/80\",\n striped: \"bg-muted text-foreground hover:bg-muted/80\",\n bordered: \"bg-muted text-foreground hover:bg-muted/80\",\n hover: \"bg-muted text-foreground hover:bg-muted/80\",\n elevated: \"bg-muted text-foreground hover:bg-muted/80\",\n interactive:\n \"bg-muted text-foreground hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst tableCellVariants = cva(\"border-border transition-all duration-200\", {\n variants: {\n variant: {\n default: \"border-b border-border hover:bg-muted/50\",\n striped: \"border-b border-border even:bg-muted/50 hover:bg-muted/80\",\n bordered: \"border border-border hover:bg-muted/50\",\n hover: \"border-b border-border hover:bg-muted/50\",\n elevated: \"border-b border-border hover:bg-muted/80\",\n interactive:\n \"border-b border-border hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\n// Types\nexport interface TableColumn<T = Record<string, unknown>> {\n key: string;\n title: string;\n dataIndex?: keyof T;\n render?: (value: unknown, record: T, index: number) => React.ReactNode;\n sortable?: boolean;\n width?: string | number;\n align?: \"left\" | \"center\" | \"right\";\n className?: string;\n}\n\nexport interface TableProps<T = Record<string, unknown>> extends VariantProps<\n typeof tableVariants\n> {\n data: T[];\n columns: TableColumn<T>[];\n loading?: boolean;\n emptyText?: string;\n caption?: string;\n className?: string;\n rowKey?: keyof T | ((record: T) => string | number);\n onRowClick?: (record: T, index: number) => void;\n onSort?: (column: TableColumn<T>, direction: \"asc\" | \"desc\") => void;\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n pagination?: {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n };\n selection?: {\n selectedRowKeys: (string | number)[];\n onChange: (selectedRowKeys: (string | number)[], selectedRows: T[]) => void;\n getCheckboxProps?: (record: T) => { disabled?: boolean };\n };\n}\n\nexport interface TableHeaderProps extends VariantProps<\n typeof tableHeaderVariants\n> {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableBodyProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableRowProps {\n className?: string;\n children: React.ReactNode;\n onClick?: () => void;\n selected?: boolean;\n}\n\nexport interface TableCellProps extends VariantProps<typeof tableCellVariants> {\n className?: string;\n children: React.ReactNode;\n colSpan?: number;\n rowSpan?: number;\n}\n\n// Table Components\nfunction TableComponent<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n {\n data,\n columns,\n loading = false,\n emptyText = \"No data\",\n className,\n variant,\n size,\n rowKey = \"id\",\n onRowClick,\n onSort,\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n pagination,\n selection,\n caption,\n ...props\n }: TableProps<T>,\n ref: React.Ref<HTMLTableElement>,\n) {\n // Use controlled props if provided, otherwise use internal state\n const [internalSortState, setInternalSortState] = useState<{\n column: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n\n // Determine current sort state (controlled takes precedence)\n const isControlled = controlledSortColumn !== undefined;\n const sortState =\n isControlled && controlledSortColumn\n ? {\n column: controlledSortColumn,\n direction: controlledSortDirection || \"asc\",\n }\n : internalSortState;\n\n // Sync internal state with controlled props when they change\n // Sync internal state with controlled props when they change\n // Note: unneeded re-render caused by resetting state. We derive sortState above so stale internal state is ignored.\n /* \n useEffect(() => {\n if (isControlled && controlledSortColumn) {\n setInternalSortState(null);\n }\n }, [isControlled, controlledSortColumn]); \n */\n\n const handleSort = (column: TableColumn<T>) => {\n if (!column.sortable) return;\n\n const newDirection =\n sortState?.column === column.key && sortState?.direction === \"asc\"\n ? \"desc\"\n : \"asc\";\n\n // Only update internal state if not controlled\n if (!isControlled) {\n setInternalSortState({ column: column.key, direction: newDirection });\n }\n\n // Always call onSort callback for controlled usage\n onSort?.(column, newDirection);\n };\n\n const getRowKey = (record: T, index: number): string | number => {\n if (typeof rowKey === \"function\") {\n return rowKey(record);\n }\n return (record[rowKey] as string | number) || index;\n };\n\n const isRowSelected = (record: T, index: number): boolean => {\n if (!selection) return false;\n const key = getRowKey(record, index);\n return selection.selectedRowKeys.includes(key);\n };\n\n const handleRowSelection = (\n record: T,\n index: number,\n checked: boolean,\n ): void => {\n if (!selection) return;\n\n const key = getRowKey(record, index);\n const newSelectedKeys = checked\n ? [...selection.selectedRowKeys, key]\n : selection.selectedRowKeys.filter((k) => k !== key);\n\n const newSelectedRows = data.filter((_, i) =>\n newSelectedKeys.includes(getRowKey(_, i)),\n );\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const handleSelectAll = (checked: boolean) => {\n if (!selection) return;\n\n const allKeys = data.map((record, index) => getRowKey(record, index));\n const newSelectedKeys = checked ? allKeys : [];\n const newSelectedRows = checked ? data : [];\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const isAllSelected =\n selection &&\n data.length > 0 &&\n selection.selectedRowKeys.length === data.length;\n\n const isIndeterminate =\n selection &&\n selection.selectedRowKeys.length > 0 &&\n selection.selectedRowKeys.length < data.length;\n\n return (\n <div className=\"w-full overflow-x-auto\">\n <div className=\"min-w-full\">\n <table\n ref={ref}\n className={cn(tableVariants({ variant, size }), className)}\n {...props}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n <TableHeader>\n <TableRow>\n {selection && (\n <th\n className={cn(tableCellVariants({ variant, size }))}\n scope=\"col\"\n role=\"columnheader\"\n >\n <input\n type=\"checkbox\"\n checked={isAllSelected}\n ref={(input) => {\n if (input) input.indeterminate = isIndeterminate || false;\n }}\n onChange={(e) => handleSelectAll(e.target.checked)}\n className=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n tableCellVariants({ variant, size }),\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n scope=\"col\"\n role=\"columnheader\"\n {...(column.width && { style: { width: column.width } })}\n >\n <div className=\"flex items-center gap-2\">\n <span>{column.title}</span>\n {column.sortable && (\n <button\n type=\"button\"\n onClick={() => handleSort(column)}\n className=\"flex flex-col text-gray-400 hover:text-gray-600\"\n aria-label={`Sort by ${column.title}`}\n >\n <svg\n className={cn(\n \"w-3 h-3\",\n sortState?.column === column.key &&\n sortState?.direction === \"asc\"\n ? \"text-blue-600\"\n : \"text-gray-400\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 8l5-5 5 5H5z\" />\n </svg>\n <svg\n className={cn(\n \"w-3 h-3 -mt-1\",\n sortState?.column === column.key &&\n sortState?.direction === \"desc\"\n ? \"text-blue-600\"\n : \"text-gray-400\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 12l5 5 5-5H5z\" />\n </svg>\n </button>\n )}\n </div>\n </th>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600\"></div>\n <span>Loading...</span>\n </div>\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8 text-gray-500\"\n >\n {emptyText}\n </TableCell>\n </TableRow>\n ) : (\n data.map((record, index) => (\n <TableRow\n key={getRowKey(record, index)}\n onClick={() => onRowClick?.(record, index)}\n selected={isRowSelected(record, index)}\n className={cn(\n onRowClick && \"cursor-pointer hover:bg-gray-50\",\n isRowSelected(record, index) && \"bg-blue-50\",\n )}\n >\n {selection && (\n <TableCell variant={variant} size={size}>\n <input\n type=\"checkbox\"\n checked={isRowSelected(record, index)}\n onChange={(e) =>\n handleRowSelection(record, index, e.target.checked)\n }\n className=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n aria-label={`Select row ${index + 1}`}\n {...selection.getCheckboxProps?.(record)}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell\n key={column.key}\n variant={variant}\n size={size}\n className={cn(\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n >\n {column.render\n ? column.render(\n column.dataIndex\n ? record[column.dataIndex]\n : record,\n record,\n index,\n )\n : column.dataIndex\n ? (record[column.dataIndex] as React.ReactNode)\n : ((record as Record<string, unknown>)[\n column.key\n ] as React.ReactNode)}\n </TableCell>\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </table>\n </div>\n\n {pagination && (\n <div className=\"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">\n Showing {(pagination.current - 1) * pagination.pageSize + 1} to{\" \"}\n {Math.min(\n pagination.current * pagination.pageSize,\n pagination.total,\n )}{\" \"}\n of {pagination.total} results\n </span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {pagination.showSizeChanger && (\n <select\n value={pagination.pageSize}\n onChange={(e) => pagination.onChange(1, Number(e.target.value))}\n className=\"rounded border-gray-300 text-sm\"\n aria-label=\"Select page size\"\n >\n <option value={10}>10 / page</option>\n <option value={20}>20 / page</option>\n <option value={50}>50 / page</option>\n <option value={100}>100 / page</option>\n </select>\n )}\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current - 1,\n pagination.pageSize,\n )\n }\n disabled={pagination.current <= 1}\n className=\"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to previous page\"\n >\n Previous\n </button>\n\n <span className=\"px-3 py-1 text-sm\">\n Page {pagination.current} of{\" \"}\n {Math.ceil(pagination.total / pagination.pageSize)}\n </span>\n\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current + 1,\n pagination.pageSize,\n )\n }\n disabled={\n pagination.current >=\n Math.ceil(pagination.total / pagination.pageSize)\n }\n className=\"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to next page\"\n >\n Next\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nconst TableForwardRef = React.forwardRef(TableComponent) as <\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n props: TableProps<T> & { ref?: React.Ref<HTMLTableElement> },\n) => React.ReactElement;\n\n(\n TableForwardRef as React.ComponentType<TableProps<unknown>> & {\n displayName?: string;\n }\n).displayName = \"Table\";\n\nexport const Table = TableForwardRef;\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n TableHeaderProps\n>(({ className, variant, size, children, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(tableHeaderVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </thead>\n));\n\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, children, ...props }, ref) => (\n <tbody ref={ref} className={cn(className)} {...props}>\n {children}\n </tbody>\n));\n\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, children, onClick, selected, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-gray-200\",\n selected && \"bg-blue-50\",\n onClick && \"cursor-pointer hover:bg-gray-50\",\n className,\n )}\n onClick={onClick}\n {...props}\n >\n {children}\n </tr>\n ),\n);\n\nTableRow.displayName = \"TableRow\";\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(tableCellVariants({ variant, size }), className)}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </td>\n ),\n);\n\nTableCell.displayName = \"TableCell\";\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n tableCellVariants({ variant, size }),\n \"font-medium\",\n className,\n )}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </th>\n ),\n);\n\nTableHead.displayName = \"TableHead\";\n\n// Export variants for external use\nexport { tableVariants, tableHeaderVariants, tableCellVariants };\n"]}
@@ -1,3 +0,0 @@
1
- "use client";
2
- import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import r from'react';import {ResponsiveContainer,PieChart,Pie,Cell,Tooltip,Legend,AreaChart,CartesianGrid,XAxis,YAxis,Area,BarChart,Bar,LineChart,Line}from'recharts';import {cva}from'class-variance-authority';var U=cva("w-full",{variants:{variant:{default:"",minimal:"",detailed:""},size:{sm:"h-48",md:"h-64",lg:"h-96",xl:"h-[500px]"}},defaultVariants:{variant:"default",size:"md"}}),s=["hsl(var(--nostromo-color-brand-500))","hsl(var(--nostromo-color-brand-600))","hsl(var(--nostromo-color-success-500))","hsl(var(--nostromo-color-warning-500))","hsl(var(--nostromo-color-error-500))","hsl(var(--nostromo-color-info-500))","hsl(var(--nostromo-color-brand-400))","hsl(var(--nostromo-color-brand-700))"],g=({active:u,payload:t,label:i})=>u&&t&&t.length?r.createElement("div",{className:"rounded-lg border border-border bg-popover p-3 shadow-lg"},r.createElement("p",{className:"mb-2 font-semibold text-popover-foreground"},String(i??"")),t.map((m,n)=>r.createElement("p",{key:n,className:"text-sm",style:{color:m.color}},`${m.name??""}: ${m.value??""}`))):null,v=({payload:u})=>r.createElement("div",{className:"mt-4 flex flex-wrap justify-center gap-4"},u?.map((t,i)=>r.createElement("div",{key:i,className:"flex items-center gap-2"},r.createElement("div",{className:"h-3 w-3 rounded",style:{backgroundColor:t.color},"aria-hidden":"true"}),r.createElement("span",{className:"text-sm text-popover-foreground"},t.value)))),w=r.forwardRef(({type:u,data:t,dataKeys:i,xAxisKey:m="name",colors:n=s,showGrid:b=true,showLegend:h=true,showTooltip:d=true,title:C,description:N,className:z,variant:A,size:p,height:K,ariaLabel:T,ariaLabelledBy:V,strokeWidth:D=2,fillOpacity:B=.6,...I},j)=>{let L=K||(p==="sm"?192:p==="lg"?384:p==="xl"?500:256),H=()=>{if(typeof window>"u")return r.createElement("div",{className:"flex items-center justify-center h-full text-muted-foreground"},r.createElement("p",null,"Chart loading..."));let y={data:t,margin:{top:5,right:5,left:5,bottom:5}};switch(u){case "line":return r.createElement(LineChart,{...y},b&&r.createElement(CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r.createElement(XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r.createElement(YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r.createElement(Line,{key:e,type:"monotone",dataKey:e,stroke:l,strokeWidth:D,dot:{r:4,fill:l},activeDot:{r:6}})}),h&&r.createElement(Legend,{content:r.createElement(v,null)}));case "bar":return r.createElement(BarChart,{...y},b&&r.createElement(CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r.createElement(XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r.createElement(YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r.createElement(Bar,{key:e,dataKey:e,fill:l})}),h&&r.createElement(Legend,{content:r.createElement(v,null)}));case "area":return r.createElement(AreaChart,{...y},b&&r.createElement(CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r.createElement(XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r.createElement(YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r.createElement(Area,{key:e,type:"monotone",dataKey:e,stroke:l,fill:l,fillOpacity:B,strokeWidth:D})}),h&&r.createElement(Legend,{content:r.createElement(v,null)}));case "pie":{let e=i[0]||"value";return r.createElement(PieChart,null,r.createElement(Pie,{data:t,dataKey:e,nameKey:m,cx:"50%",cy:"50%",outerRadius:L/4,label:a=>`${a.name??""}: ${((a.percent??0)*100).toFixed(0)}%`},t.map((a,o)=>{let l=n[o%n.length]||s[o%s.length];return r.createElement(Cell,{key:`cell-${o}`,fill:l??"#8884d8"})})),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),h&&r.createElement(Legend,{content:r.createElement(v,null)}))}default:return null}};return r.createElement("div",{ref:j,className:a(U({variant:A,size:p}),z),role:"img","aria-label":T||C||`${u} chart`,"aria-labelledby":V,...I},C&&r.createElement("h3",{className:"mb-2 text-lg font-semibold text-foreground"},C),N&&r.createElement("p",{className:"mb-4 text-sm text-muted-foreground"},N),r.createElement(ResponsiveContainer,{width:"100%",height:L},H()))});w.displayName="Chart";var tr=a$1(w);export{U as a,tr as b};//# sourceMappingURL=chunk-JZROH43C.js.map
3
- //# sourceMappingURL=chunk-JZROH43C.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/charts.tsx"],"names":["chartContainerVariants","cva","defaultColors","CustomTooltip","active","payload","label","React","entry","index","CustomLegend","ChartComponent","type","data","dataKeys","xAxisKey","colors","showGrid","showLegend","showTooltip","title","description","className","variant","size","height","ariaLabel","ariaLabelledBy","strokeWidth","fillOpacity","props","ref","chartHeight","renderChart","commonProps","LineChart","CartesianGrid","XAxis","YAxis","Tooltip","key","colorIndex","color","Line","Legend","BarChart","Bar","AreaChart","Area","pieDataKey","PieChart","Pie","fillColor","Cell","cn","ResponsiveContainer","Chart","memo"],"mappings":"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","file":"chunk-JZROH43C.js","sourcesContent":["import React from \"react\";\nimport {\n LineChart,\n Line,\n BarChart,\n Bar,\n PieChart,\n Pie,\n AreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n Cell,\n} from \"recharts\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Chart container variants\nconst chartContainerVariants = cva(\"w-full\", {\n variants: {\n variant: {\n default: \"\",\n minimal: \"\",\n detailed: \"\",\n },\n size: {\n sm: \"h-48\",\n md: \"h-64\",\n lg: \"h-96\",\n xl: \"h-[500px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport type ChartType = \"line\" | \"bar\" | \"pie\" | \"area\";\n\nexport interface ChartDataPoint {\n name: string;\n [key: string]: string | number;\n}\n\nexport interface ChartProps extends VariantProps<\n typeof chartContainerVariants\n> {\n type: ChartType;\n data: ChartDataPoint[];\n dataKeys: string[];\n xAxisKey?: string;\n colors?: (string | undefined)[];\n showGrid?: boolean;\n showLegend?: boolean;\n showTooltip?: boolean;\n title?: string;\n description?: string;\n className?: string;\n height?: number;\n // Accessibility\n ariaLabel?: string;\n ariaLabelledBy?: string;\n // Styling\n strokeWidth?: number;\n fillOpacity?: number;\n}\n\n// Default color palette matching Nostromo theme\nconst defaultColors = [\n \"hsl(var(--nostromo-color-brand-500))\",\n \"hsl(var(--nostromo-color-brand-600))\",\n \"hsl(var(--nostromo-color-success-500))\",\n \"hsl(var(--nostromo-color-warning-500))\",\n \"hsl(var(--nostromo-color-error-500))\",\n \"hsl(var(--nostromo-color-info-500))\",\n \"hsl(var(--nostromo-color-brand-400))\",\n \"hsl(var(--nostromo-color-brand-700))\",\n];\n\n// Custom tooltip component with Tailwind styling\ninterface CustomTooltipProps {\n active?: boolean;\n payload?: Array<{\n name?: string;\n value?: number | string;\n color?: string;\n }>;\n label?: string | number;\n}\n\nconst CustomTooltip = ({ active, payload, label }: CustomTooltipProps) => {\n if (active && payload && payload.length) {\n return (\n <div className=\"rounded-lg border border-border bg-popover p-3 shadow-lg\">\n <p className=\"mb-2 font-semibold text-popover-foreground\">\n {String(label ?? \"\")}\n </p>\n {payload.map((entry, index: number) => (\n <p key={index} className=\"text-sm\" style={{ color: entry.color }}>\n {`${entry.name ?? \"\"}: ${entry.value ?? \"\"}`}\n </p>\n ))}\n </div>\n );\n }\n return null;\n};\n\n// Custom legend component with Tailwind styling\ninterface CustomLegendProps {\n payload?: Array<{\n value?: string;\n color?: string;\n }>;\n}\n\nconst CustomLegend = ({ payload }: CustomLegendProps) => {\n return (\n <div className=\"mt-4 flex flex-wrap justify-center gap-4\">\n {payload?.map((entry, index: number) => (\n <div key={index} className=\"flex items-center gap-2\">\n <div\n className=\"h-3 w-3 rounded\"\n style={{ backgroundColor: entry.color }}\n aria-hidden=\"true\"\n />\n <span className=\"text-sm text-popover-foreground\">{entry.value}</span>\n </div>\n ))}\n </div>\n );\n};\n\nconst ChartComponent = React.forwardRef<HTMLDivElement, ChartProps>(\n (\n {\n type,\n data,\n dataKeys,\n xAxisKey = \"name\",\n colors = defaultColors,\n showGrid = true,\n showLegend = true,\n showTooltip = true,\n title,\n description,\n className,\n variant,\n size,\n height,\n ariaLabel,\n ariaLabelledBy,\n strokeWidth = 2,\n fillOpacity = 0.6,\n ...props\n },\n ref,\n ) => {\n const chartHeight =\n height ||\n (size === \"sm\" ? 192 : size === \"lg\" ? 384 : size === \"xl\" ? 500 : 256);\n\n const renderChart = () => {\n // SSR guard: recharts requires browser environment\n if (typeof window === \"undefined\") {\n return (\n <div className=\"flex items-center justify-center h-full text-muted-foreground\">\n <p>Chart loading...</p>\n </div>\n );\n }\n\n const commonProps = {\n data,\n margin: { top: 5, right: 5, left: 5, bottom: 5 },\n };\n\n switch (type) {\n case \"line\":\n return (\n <LineChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return (\n <Line\n key={key}\n type=\"monotone\"\n dataKey={key}\n stroke={color}\n strokeWidth={strokeWidth}\n dot={{ r: 4, fill: color }}\n activeDot={{ r: 6 }}\n />\n );\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </LineChart>\n );\n\n case \"bar\":\n return (\n <BarChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return <Bar key={key} dataKey={key} fill={color} />;\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </BarChart>\n );\n\n case \"area\":\n return (\n <AreaChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return (\n <Area\n key={key}\n type=\"monotone\"\n dataKey={key}\n stroke={color}\n fill={color}\n fillOpacity={fillOpacity}\n strokeWidth={strokeWidth}\n />\n );\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </AreaChart>\n );\n\n case \"pie\": {\n const pieDataKey = dataKeys[0] || \"value\";\n return (\n <PieChart>\n <Pie\n data={data}\n dataKey={pieDataKey}\n nameKey={xAxisKey}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius={chartHeight / 4}\n label={(props: { name?: string; percent?: number }) =>\n `${props.name ?? \"\"}: ${((props.percent ?? 0) * 100).toFixed(0)}%`\n }\n >\n {data.map((entry, index) => {\n const fillColor =\n colors[index % colors.length] ||\n defaultColors[index % defaultColors.length];\n return (\n <Cell key={`cell-${index}`} fill={fillColor ?? \"#8884d8\"} />\n );\n })}\n </Pie>\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {showLegend && <Legend content={<CustomLegend />} />}\n </PieChart>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(chartContainerVariants({ variant, size }), className)}\n role=\"img\"\n aria-label={ariaLabel || title || `${type} chart`}\n aria-labelledby={ariaLabelledBy}\n {...props}\n >\n {title && (\n <h3 className=\"mb-2 text-lg font-semibold text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"mb-4 text-sm text-muted-foreground\">{description}</p>\n )}\n <ResponsiveContainer width=\"100%\" height={chartHeight}>\n {renderChart()}\n </ResponsiveContainer>\n </div>\n );\n },\n);\n\nChartComponent.displayName = \"Chart\";\n\n// Memoize Chart component for performance optimization\n// Charts are expensive to render, so memoization helps prevent unnecessary re-renders\nexport const Chart = memo(ChartComponent) as typeof ChartComponent;\n\nexport { chartContainerVariants };\n"]}
@@ -1,3 +0,0 @@
1
- "use client";
2
- import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import s,{useState,useRef,useCallback,useEffect}from'react';import {cva}from'class-variance-authority';var Y=cva("absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200",{variants:{variant:{default:"bg-popover text-popover-foreground border border-border",light:"bg-popover text-popover-foreground border border-border",dark:"bg-popover text-popover-foreground border border-border",success:"bg-success text-success-foreground",warning:"bg-warning text-warning-foreground",error:"bg-destructive text-destructive-foreground",info:"bg-info text-info-foreground"},size:{sm:"text-xs px-2 py-1",md:"text-sm px-3 py-2",lg:"text-base px-4 py-3"},placement:{top:"bottom-full left-1/2 -translate-x-1/2 mb-2","top-start":"bottom-full left-0 mb-2","top-end":"bottom-full right-0 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2","bottom-start":"top-full left-0 mt-2","bottom-end":"top-full right-0 mt-2",left:"right-full top-1/2 -translate-y-1/2 mr-2","left-start":"right-full top-0 mr-2","left-end":"right-full bottom-0 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2","right-start":"left-full top-0 ml-2","right-end":"left-full bottom-0 ml-2"}},defaultVariants:{variant:"default",size:"md",placement:"top"}}),Z=cva("absolute w-2 h-2 rotate-45",{variants:{variant:{default:"bg-popover border border-border",light:"bg-popover border border-border",dark:"bg-popover border border-border",success:"bg-success-500",warning:"bg-warning-500",error:"bg-destructive",info:"bg-info-500"},placement:{top:"top-full left-1/2 -translate-x-1/2 -translate-y-1/2","top-start":"top-full left-4 -translate-y-1/2","top-end":"top-full right-4 -translate-y-1/2",bottom:"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2","bottom-start":"bottom-full left-4 translate-y-1/2","bottom-end":"bottom-full right-4 translate-y-1/2",left:"left-full top-1/2 -translate-x-1/2 -translate-y-1/2","left-start":"left-full top-4 -translate-x-1/2","left-end":"left-full bottom-4 -translate-x-1/2",right:"right-full top-1/2 translate-x-1/2 -translate-y-1/2","right-start":"right-full top-4 translate-x-1/2","right-end":"right-full bottom-4 translate-x-1/2"}},defaultVariants:{variant:"default",placement:"top"}}),S=s.createContext(void 0),$=()=>{let c=s.useContext(S);if(!c)throw new Error("Tooltip components must be used within a Tooltip");return c},q=s.forwardRef(({children:c,content:h,trigger:T="hover",open:i,onOpenChange:f,delayDuration:e=700,skipDelayDuration:v=300,disabled:d=false,className:x,contentClassName:u,sideOffset:M=4,alignOffset:C=0,avoidCollisions:E=true,collisionBoundary:w,collisionPadding:o=8,hideWhenDetached:R=false,sticky:L="partial",updatePositionDeps:H,closeOnBlur:D=true,...a$1},N)=>{let[t,l]=useState(false),g=useRef(null),n=useRef(null),r=i!==void 0,y=r?i:t,p=useCallback(_=>{d||(r||l(_),f?.(_));},[d,r,f]),m=useCallback(()=>{g.current!=null&&(clearTimeout(g.current),g.current=null),n.current!=null&&(clearTimeout(n.current),n.current=null);},[]),W=useCallback(()=>{m(),p(true);},[m,p]),B=useCallback(()=>{m(),p(false);},[m,p]),V=useCallback(()=>{m(),!d&&(e>0?g.current=window.setTimeout(()=>{p(true);},e):p(true));},[m,d,e,p]),z=useCallback(()=>{m(),v>0?n.current=window.setTimeout(()=>{p(false);},v):p(false);},[m,v,p]),G=useCallback(()=>{y?z():V();},[y,V,z]),J=useCallback(()=>{y?B():W();},[y,W,B]);useEffect(()=>()=>{m();},[m]);let Q={open:y,setOpen:p,trigger:T,delayDuration:e,skipDelayDuration:v,openNow:W,closeNow:B,openWithDelay:V,closeWithDelay:z,toggleWithDelay:G,toggleNow:J,closeOnBlur:D},U=y===true;return s.createElement(S.Provider,{value:Q},s.createElement("div",{ref:N,className:a("relative inline-block",x),"data-open":y,...a$1},c,U?s.createElement(O,{className:u||"",sideOffset:M,alignOffset:C,avoidCollisions:E,collisionBoundary:w||null,collisionPadding:o,hideWhenDetached:R,sticky:L,updatePositionDeps:H||[],variant:a$1.variant,size:a$1.size,placement:a$1.placement},h):null))});q.displayName="Tooltip";var A=s.forwardRef(({children:c,asChild:h=true,className:T,...i},f)=>{let{trigger:e,openNow:v,closeNow:d,openWithDelay:x,closeWithDelay:u,toggleNow:M,closeOnBlur:C}=$(),E=useRef(null),w={ref:o=>{E.current=o,typeof f=="function"?f(o):f&&(f.current=o);},className:a(T),"data-tooltip-trigger":true,onMouseEnter:o=>{i.onMouseEnter?.(o),e==="hover"&&x();},onMouseLeave:o=>{i.onMouseLeave?.(o),e==="hover"&&u();},onPointerEnter:o=>{i.onPointerEnter?.(o),e==="hover"&&x();},onPointerLeave:o=>{i.onPointerLeave?.(o),e==="hover"&&u();},onClick:o=>{i.onClick?.(o),e==="click"&&M();},onFocus:o=>{i.onFocus?.(o),e==="focus"&&v();},onBlur:o=>{i.onBlur?.(o),C&&d();},onKeyDown:o=>{i.onKeyDown?.(o),o.key==="Escape"&&d();}};return h&&s.isValidElement(c)?s.cloneElement(c,{...c.props||{},...w}):s.createElement("span",{...w,tabIndex:e==="focus"?0:void 0,role:e==="click"?"button":void 0},c)});A.displayName="TooltipTrigger";var O=s.forwardRef(({children:c,variant:h="default",size:T="md",placement:i="top",className:f,sideOffset:e=4,alignOffset:v=0,avoidCollisions:d=true,collisionBoundary:x,collisionPadding:u=8,hideWhenDetached:M=false,sticky:C="partial",updatePositionDeps:E,...w},o)=>{let R=useRef(null),[L,H]=useState({top:0,left:0}),D=useCallback(()=>{if(!R.current)return;let a=R.current,N=a.parentElement?.querySelector("[data-tooltip-trigger]");if(!N)return;let t=N.getBoundingClientRect(),l=a.getBoundingClientRect(),g={width:window.innerWidth,height:window.innerHeight},n=0,r=0;switch(i){case "top":n=t.top-l.height-e,r=t.left+t.width/2-l.width/2;break;case "top-start":n=t.top-l.height-e,r=t.left;break;case "top-end":n=t.top-l.height-e,r=t.right-l.width;break;case "bottom":n=t.bottom+e,r=t.left+t.width/2-l.width/2;break;case "bottom-start":n=t.bottom+e,r=t.left;break;case "bottom-end":n=t.bottom+e,r=t.right-l.width;break;case "left":n=t.top+t.height/2-l.height/2,r=t.left-l.width-e;break;case "left-start":n=t.top,r=t.left-l.width-e;break;case "left-end":n=t.bottom-l.height,r=t.left-l.width-e;break;case "right":n=t.top+t.height/2-l.height/2,r=t.right+e;break;case "right-start":n=t.top,r=t.right+e;break;case "right-end":n=t.bottom-l.height,r=t.right+e;break}d&&(r<u?r=u:r+l.width>g.width-u&&(r=g.width-l.width-u),n<u?n=u:n+l.height>g.height-u&&(n=g.height-l.height-u)),H({top:n,left:r});},[i,e,d,u]);return s.useLayoutEffect(()=>{D();let a=()=>D();return window.addEventListener("resize",a),window.addEventListener("scroll",a),()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",a);}},[D,E]),s.createElement("div",{ref:a=>{R.current=a,typeof o=="function"?o(a):o&&(o.current=a);},role:"tooltip","data-tooltip-instance":"nostromo",className:a(Y({variant:h,size:T,placement:i}),f),style:{position:"fixed",top:L.top,left:L.left,zIndex:50},...w},c,s.createElement("div",{className:a(Z({variant:h,placement:i}))}))});O.displayName="TooltipContent";var tt=({children:c,delayDuration:h=700,skipDelayDuration:T=300,defaultOpen:i=false})=>s.createElement("div",{"data-tooltip-provider":true},c),F=a$1(q);F.Trigger=A;F.Content=O;F.Provider=tt;export{Y as a,Z as b,A as c,O as d,tt as e,F as f};//# sourceMappingURL=chunk-MRZOLUSF.js.map
3
- //# sourceMappingURL=chunk-MRZOLUSF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/tooltip.tsx"],"names":["tooltipVariants","cva","arrowVariants","TooltipContext","React","useTooltipContext","context","TooltipComponent","children","content","trigger","controlledOpen","onOpenChange","delayDuration","skipDelayDuration","disabled","className","contentClassName","sideOffset","alignOffset","avoidCollisions","collisionBoundary","collisionPadding","hideWhenDetached","sticky","updatePositionDeps","closeOnBlur","props","ref","internalOpen","setInternalOpen","useState","delayTimerRef","useRef","skipDelayTimerRef","isControlled","open","setOpen","useCallback","newOpen","clearTimers","openNow","closeNow","openWithDelay","closeWithDelay","toggleWithDelay","toggleNow","useEffect","contextValue","shouldRenderContent","cn","TooltipContent","TooltipTrigger","asChild","triggerRef","triggerProps","node","e","variant","size","placement","_alignOffset","_collisionBoundary","_hideWhenDetached","_sticky","contentRef","position","setPosition","updatePosition","triggerRect","contentRect","viewport","top","left","handleResize","TooltipProvider","_delayDuration","_skipDelayDuration","_defaultOpen","Tooltip","memo"],"mappings":"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","file":"chunk-MRZOLUSF.js","sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Tooltip variants\nconst tooltipVariants = cva(\n \"absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground border border-border\",\n light: \"bg-popover text-popover-foreground border border-border\",\n dark: \"bg-popover text-popover-foreground border border-border\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n error: \"bg-destructive text-destructive-foreground\",\n info: \"bg-info text-info-foreground\",\n },\n size: {\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 placement: {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n \"top-start\": \"bottom-full left-0 mb-2\",\n \"top-end\": \"bottom-full right-0 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n \"bottom-start\": \"top-full left-0 mt-2\",\n \"bottom-end\": \"top-full right-0 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n \"left-start\": \"right-full top-0 mr-2\",\n \"left-end\": \"right-full bottom-0 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n \"right-start\": \"left-full top-0 ml-2\",\n \"right-end\": \"left-full bottom-0 ml-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n placement: \"top\",\n },\n },\n);\n\nconst arrowVariants = cva(\"absolute w-2 h-2 rotate-45\", {\n variants: {\n variant: {\n default: \"bg-popover border border-border\",\n light: \"bg-popover border border-border\",\n dark: \"bg-popover border border-border\",\n success: \"bg-success-500\",\n warning: \"bg-warning-500\",\n error: \"bg-destructive\",\n info: \"bg-info-500\",\n },\n placement: {\n top: \"top-full left-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"top-start\": \"top-full left-4 -translate-y-1/2\",\n \"top-end\": \"top-full right-4 -translate-y-1/2\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2\",\n \"bottom-start\": \"bottom-full left-4 translate-y-1/2\",\n \"bottom-end\": \"bottom-full right-4 translate-y-1/2\",\n left: \"left-full top-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"left-start\": \"left-full top-4 -translate-x-1/2\",\n \"left-end\": \"left-full bottom-4 -translate-x-1/2\",\n right: \"right-full top-1/2 translate-x-1/2 -translate-y-1/2\",\n \"right-start\": \"right-full top-4 translate-x-1/2\",\n \"right-end\": \"right-full bottom-4 translate-x-1/2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n placement: \"top\",\n },\n});\n\n// Types\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n children: React.ReactNode;\n content: React.ReactNode;\n trigger?: \"hover\" | \"click\" | \"focus\" | \"manual\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n skipDelayDuration?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n closeOnBlur?: boolean;\n}\n\nexport interface TooltipContentProps extends VariantProps<\n typeof tooltipVariants\n> {\n children: React.ReactNode;\n className?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n}\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n asChild?: boolean;\n className?: string;\n}\n\n// Tooltip Context\ninterface TooltipContextType {\n open: boolean;\n setOpen: (open: boolean) => void;\n trigger: \"hover\" | \"click\" | \"focus\" | \"manual\";\n delayDuration: number;\n skipDelayDuration: number;\n openNow: () => void;\n closeNow: () => void;\n openWithDelay: () => void;\n closeWithDelay: () => void;\n toggleWithDelay: () => void;\n toggleNow: () => void;\n closeOnBlur: boolean;\n}\n\nconst TooltipContext = React.createContext<TooltipContextType | undefined>(\n undefined,\n);\n\nconst useTooltipContext = () => {\n const context = React.useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within a Tooltip\");\n }\n return context;\n};\n\n// Main Tooltip Component\nconst TooltipComponent = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n content,\n trigger = \"hover\",\n open: controlledOpen,\n onOpenChange,\n delayDuration = 700,\n skipDelayDuration = 300,\n disabled = false,\n className,\n contentClassName,\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached = false,\n sticky = \"partial\",\n updatePositionDeps,\n closeOnBlur = true,\n ...props\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const delayTimerRef = useRef<number | ReturnType<typeof setTimeout> | null>(\n null,\n );\n const skipDelayTimerRef = useRef<\n number | ReturnType<typeof setTimeout> | null\n >(null);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (disabled) return;\n\n if (isControlled) {\n onOpenChange?.(newOpen);\n } else {\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen); // notify i uncontrolled\n }\n },\n [disabled, isControlled, onOpenChange],\n );\n\n // --- Tooltip open/close/toggle helpers ---\n const clearTimers = useCallback(() => {\n if (delayTimerRef.current != null) {\n clearTimeout(delayTimerRef.current);\n delayTimerRef.current = null;\n }\n if (skipDelayTimerRef.current != null) {\n clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = null;\n }\n }, []);\n\n const openNow = useCallback(() => {\n clearTimers();\n setOpen(true);\n }, [clearTimers, setOpen]);\n\n const closeNow = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n const openWithDelay = useCallback(() => {\n clearTimers();\n if (disabled) return;\n if (delayDuration > 0) {\n delayTimerRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n } else {\n setOpen(true);\n }\n }, [clearTimers, disabled, delayDuration, setOpen]);\n\n const closeWithDelay = useCallback(() => {\n clearTimers();\n if (skipDelayDuration > 0) {\n skipDelayTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n }, skipDelayDuration);\n } else {\n setOpen(false);\n }\n }, [clearTimers, skipDelayDuration, setOpen]);\n\n const toggleWithDelay = useCallback(() => {\n if (open) {\n closeWithDelay();\n } else {\n openWithDelay();\n }\n }, [open, openWithDelay, closeWithDelay]);\n\n const toggleNow = useCallback(() => {\n if (open) closeNow();\n else openNow();\n }, [open, openNow, closeNow]);\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n clearTimers();\n };\n }, [clearTimers]);\n\n const contextValue: TooltipContextType = {\n open,\n setOpen,\n trigger,\n delayDuration,\n skipDelayDuration,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleWithDelay,\n toggleNow,\n closeOnBlur,\n };\n\n // Only render the TooltipContent when open is true (and no pending close timer),\n // to help guard against duplicate tooltips in StrictMode/rapid toggles.\n const shouldRenderContent = open === true;\n\n return (\n <TooltipContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n data-open={open}\n {...props}\n >\n {children}\n {shouldRenderContent ? (\n <TooltipContent\n className={contentClassName || \"\"}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary || null}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n updatePositionDeps={updatePositionDeps || []}\n variant={props.variant}\n size={props.size}\n placement={props.placement}\n >\n {content}\n </TooltipContent>\n ) : null}\n </div>\n </TooltipContext.Provider>\n );\n },\n);\n\nTooltipComponent.displayName = \"Tooltip\";\n\n// Note: Tooltip memoization and subcomponent attachment happens at end of file\n\n// Tooltip Trigger Component\nexport const TooltipTrigger = React.forwardRef<\n HTMLElement,\n TooltipTriggerProps\n>(({ children, asChild = true, className, ...props }, ref) => {\n const {\n trigger,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleNow,\n closeOnBlur,\n } = useTooltipContext();\n const triggerRef = useRef<HTMLElement>(null);\n\n const triggerProps = {\n ref: (node: HTMLElement) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n },\n className: cn(className),\n \"data-tooltip-trigger\": true,\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\n // Call external handler first\n props.onMouseEnter?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") {\n openWithDelay();\n }\n },\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseLeave?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") closeWithDelay();\n },\n onPointerEnter: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerEnter?.(e);\n if (trigger === \"hover\") openWithDelay();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerLeave?.(e);\n if (trigger === \"hover\") closeWithDelay();\n },\n onClick: (e: React.MouseEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onClick?.(e);\n if (trigger === \"click\") toggleNow();\n },\n onFocus: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onFocus?.(e);\n if (trigger === \"focus\") openNow();\n },\n onBlur: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onBlur?.(e);\n if (closeOnBlur) closeNow();\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onKeyDown?.(e);\n if (e.key === \"Escape\") closeNow();\n },\n };\n\n if (asChild && React.isValidElement(children)) {\n // eslint-disable-next-line react-hooks/refs -- cloneElement merges triggerProps (incl. ref) onto the child; the ref is not read here\n return React.cloneElement(children, {\n ...(children.props || {}),\n ...triggerProps,\n });\n }\n\n return (\n <span\n {...triggerProps}\n tabIndex={trigger === \"focus\" ? 0 : undefined}\n role={trigger === \"click\" ? \"button\" : undefined}\n >\n {children}\n </span>\n );\n});\n\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\n// Tooltip Content Component\nexport const TooltipContent = React.forwardRef<\n HTMLDivElement,\n TooltipContentProps\n>(\n (\n {\n children,\n variant = \"default\",\n size = \"md\",\n placement = \"top\",\n className,\n sideOffset = 4,\n alignOffset: _alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary: _collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached: _hideWhenDetached = false,\n sticky: _sticky = \"partial\",\n updatePositionDeps,\n ...props\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const updatePosition = useCallback(() => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n const trigger = content.parentElement?.querySelector(\n \"[data-tooltip-trigger]\",\n ) as HTMLElement;\n\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n // Calculate position based on placement\n switch (placement) {\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"top-start\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.left;\n break;\n case \"top-end\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"bottom\":\n top = triggerRect.bottom + sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.left;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"left\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-start\":\n top = triggerRect.top;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"right\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-start\":\n top = triggerRect.top;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.right + sideOffset;\n break;\n }\n\n // Apply collision detection if enabled\n if (avoidCollisions) {\n // Horizontal collision detection\n if (left < collisionPadding) {\n left = collisionPadding;\n } else if (\n left + contentRect.width >\n viewport.width - collisionPadding\n ) {\n left = viewport.width - contentRect.width - collisionPadding;\n }\n\n // Vertical collision detection\n if (top < collisionPadding) {\n top = collisionPadding;\n } else if (\n top + contentRect.height >\n viewport.height - collisionPadding\n ) {\n top = viewport.height - contentRect.height - collisionPadding;\n }\n }\n\n setPosition({ top, left });\n }, [placement, sideOffset, avoidCollisions, collisionPadding]);\n\n React.useLayoutEffect(() => {\n updatePosition();\n\n const handleResize = () => updatePosition();\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleResize);\n };\n }, [updatePosition, updatePositionDeps]);\n\n return (\n <div\n ref={(node) => {\n (\n contentRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }}\n role=\"tooltip\"\n data-tooltip-instance=\"nostromo\"\n className={cn(tooltipVariants({ variant, size, placement }), className)}\n style={{\n position: \"fixed\",\n top: position.top,\n left: position.left,\n zIndex: 50,\n }}\n {...props}\n >\n {children}\n <div className={cn(arrowVariants({ variant, placement }))} />\n </div>\n );\n },\n);\n\nTooltipContent.displayName = \"TooltipContent\";\n\n// Tooltip Provider for global configuration\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n defaultOpen?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n children,\n delayDuration: _delayDuration = 700,\n skipDelayDuration: _skipDelayDuration = 300,\n defaultOpen: _defaultOpen = false,\n}) => {\n return <div data-tooltip-provider>{children}</div>;\n};\n\n// Memoize Tooltip for performance optimization (after all subcomponents are defined)\nconst Tooltip = memo(TooltipComponent) as typeof TooltipComponent & {\n Trigger: typeof TooltipTrigger;\n Content: typeof TooltipContent;\n Provider: typeof TooltipProvider;\n};\n\n// Attach subcomponents to Tooltip for compound component pattern\nTooltip.Trigger = TooltipTrigger;\nTooltip.Content = TooltipContent;\nTooltip.Provider = TooltipProvider;\n\n// Export variants and Tooltip for external use\nexport { Tooltip, tooltipVariants, arrowVariants };\n"]}
@@ -1,3 +0,0 @@
1
- "use client";
2
- 'use strict';var chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var e__default=/*#__PURE__*/_interopDefault(e);var c=classVarianceAuthority.cva("animate-pulse rounded-md bg-muted",{variants:{variant:{default:"bg-muted",light:"bg-muted/50",dark:"bg-muted",primary:"bg-primary/10",success:"bg-success-200",warning:"bg-warning-200",error:"bg-error-200"},size:{xs:"h-2",sm:"h-3",md:"h-4",lg:"h-6",xl:"h-8","2xl":"h-12","3xl":"h-16"},shape:{rectangle:"rounded-md",circle:"rounded-full",square:"rounded-lg",pill:"rounded-full"},animation:{pulse:"animate-pulse",wave:"animate-wave",none:"animate-none"}},defaultVariants:{variant:"default",size:"md",shape:"rectangle",animation:"pulse"}}),N=e__default.default.forwardRef(({className:n,children:s,width:a,height:r,variant:t="default",size:o="md",shape:i="rectangle",animation:d="pulse",loading:u=true,...f},h)=>{if(!u&&s)return e__default.default.createElement(e__default.default.Fragment,null,s);let p={width:a||void 0,height:r||void 0};return e__default.default.createElement("div",{ref:h,className:chunkITRGJNWL_cjs.a(c({variant:t,size:o,shape:i,animation:d}),n),style:p,"aria-label":"Loading content",role:"status",...f})});N.displayName="Skeleton";var l=chunk7SPPGTBT_cjs.a(N),k=e__default.default.forwardRef(({className:n,lines:s=3,lastLineWidth:a="75%",spacing:r="md",variant:t="default",animation:o="pulse",loading:i=true,...d},u)=>i?e__default.default.createElement("div",{ref:u,className:chunkITRGJNWL_cjs.a("space-y-2",{none:"space-y-0",sm:"space-y-1",md:"space-y-2",lg:"space-y-3"}[r],n),"aria-label":"Loading text content",role:"status",...d},Array.from({length:s},(h,p)=>e__default.default.createElement("div",{key:p,className:chunkITRGJNWL_cjs.a(c({variant:t,animation:o}),"h-4 rounded-md",p===s-1&&"w-3/4"),style:{width:p===s-1?a:"100%"}}))):null);k.displayName="SkeletonText";var v=e__default.default.forwardRef(({className:n,size:s="md",variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={xs:"h-6 w-6",sm:"h-8 w-8",md:"h-10 w-10",lg:"h-12 w-12",xl:"h-16 w-16","2xl":"h-20 w-20"};return e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a(c({variant:a,animation:r}),"rounded-full",d[s],n),"aria-label":"Loading avatar",role:"status",...o})});v.displayName="SkeletonAvatar";var g=e__default.default.forwardRef(({className:n,size:s="md",variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={sm:"h-8 px-3",md:"h-10 px-4",lg:"h-12 px-6"},u={default:"bg-muted",primary:"bg-primary/10",secondary:"bg-secondary",outline:"bg-muted/50 border border-border",ghost:"bg-muted/50"},f=a||"default";return e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a(c({animation:r}),"rounded-md",d[s],u[f],n),"aria-label":"Loading button",role:"status",...o})});g.displayName="SkeletonButton";var y=e__default.default.forwardRef(({className:n,showAvatar:s=true,showActions:a=true,variant:r="default",animation:t="pulse",loading:o=true,...i},d)=>o?e__default.default.createElement("div",{ref:d,className:chunkITRGJNWL_cjs.a("p-6 border border-border rounded-lg bg-card",n),"aria-label":"Loading card content",role:"status",...i},e__default.default.createElement("div",{className:"space-y-4"},e__default.default.createElement("div",{className:"flex items-center space-x-3"},s&&e__default.default.createElement(v,{size:"md",variant:r,animation:t}),e__default.default.createElement("div",{className:"flex-1 space-y-2"},e__default.default.createElement(l,{className:"h-4 w-3/4",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-3 w-1/2",variant:r,animation:t}))),e__default.default.createElement("div",{className:"space-y-2"},e__default.default.createElement(l,{className:"h-4 w-full",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-4 w-5/6",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-4 w-4/5",variant:r,animation:t})),a&&e__default.default.createElement("div",{className:"flex space-x-2 pt-4"},e__default.default.createElement(g,{size:"sm",animation:t}),e__default.default.createElement(g,{size:"sm",animation:t})))):null);y.displayName="SkeletonCard";var S=e__default.default.forwardRef(({className:n,variant:s="default",animation:a="pulse",loading:r=true,...t},o)=>r?e__default.default.createElement("div",{ref:o,className:chunkITRGJNWL_cjs.a("space-y-3",n),"aria-label":"Loading table content",role:"status",...t},e__default.default.createElement("div",{className:"grid grid-cols-4 gap-4"},e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a})),Array.from({length:5},(i,d)=>e__default.default.createElement("div",{key:d,className:"grid grid-cols-4 gap-4"},e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a})))):null);S.displayName="SkeletonTable";var w=e__default.default.forwardRef(({className:n,items:s=5,variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>t?e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a("space-y-3",n),"aria-label":"Loading list content",role:"status",...o},Array.from({length:s},(d,u)=>e__default.default.createElement("div",{key:u,className:"flex items-center space-x-3"},e__default.default.createElement(v,{size:"sm",variant:a,animation:r}),e__default.default.createElement("div",{className:"flex-1 space-y-2"},e__default.default.createElement(l,{className:"h-4 w-3/4",variant:a,animation:r}),e__default.default.createElement(l,{className:"h-3 w-1/2",variant:a,animation:r}))))):null);w.displayName="SkeletonList";exports.a=c;exports.b=l;exports.c=k;exports.d=v;exports.e=g;exports.f=y;exports.g=S;exports.h=w;//# sourceMappingURL=chunk-OZ3RIKZO.cjs.map
3
- //# sourceMappingURL=chunk-OZ3RIKZO.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/skeleton.tsx"],"names":["skeletonVariants","cva","SkeletonComponent","React","className","children","width","height","variant","size","shape","animation","loading","props","ref","style","cn","Skeleton","memo","SkeletonText","lines","lastLineWidth","spacing","_","index","SkeletonAvatar","sizeClasses","SkeletonButton","variantClasses","finalVariant","SkeletonCard","showAvatar","showActions","SkeletonTable","SkeletonList","items"],"mappings":"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","file":"chunk-OZ3RIKZO.cjs","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Skeleton variants\nconst skeletonVariants = cva(\"animate-pulse rounded-md bg-muted\", {\n variants: {\n variant: {\n default: \"bg-muted\",\n light: \"bg-muted/50\",\n dark: \"bg-muted\",\n primary: \"bg-primary/10\",\n success: \"bg-success-200\",\n warning: \"bg-warning-200\",\n error: \"bg-error-200\",\n },\n size: {\n xs: \"h-2\",\n sm: \"h-3\",\n md: \"h-4\",\n lg: \"h-6\",\n xl: \"h-8\",\n \"2xl\": \"h-12\",\n \"3xl\": \"h-16\",\n },\n shape: {\n rectangle: \"rounded-md\",\n circle: \"rounded-full\",\n square: \"rounded-lg\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"animate-wave\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n shape: \"rectangle\",\n animation: \"pulse\",\n },\n});\n\n// Types\nexport interface SkeletonProps extends VariantProps<typeof skeletonVariants> {\n className?: string;\n children?: React.ReactNode;\n width?: string | number;\n height?: string | number;\n lines?: number;\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n loading?: boolean;\n}\n\nexport interface SkeletonTextProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n lines?: number;\n lastLineWidth?: string | number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n}\n\nexport interface SkeletonButtonProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\" | \"variant\"\n> {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"primary\" | \"secondary\" | \"outline\" | \"ghost\";\n}\n\nexport interface SkeletonCardProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n showAvatar?: boolean;\n showActions?: boolean;\n}\n\n// Main Skeleton Component\nconst SkeletonComponent = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n children,\n width,\n height,\n variant = \"default\",\n size = \"md\",\n shape = \"rectangle\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n const style = {\n width: width || undefined,\n height: height || undefined,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, size, shape, animation }),\n className,\n )}\n style={style}\n aria-label=\"Loading content\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonComponent.displayName = \"Skeleton\";\n\n// Memoize Skeleton for performance optimization\nexport const Skeleton = memo(SkeletonComponent) as typeof SkeletonComponent;\n\n// Skeleton Text Component\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n className,\n lines = 3,\n lastLineWidth = \"75%\",\n spacing = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const spacingClasses = {\n none: \"space-y-0\",\n sm: \"space-y-1\",\n md: \"space-y-2\",\n lg: \"space-y-3\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-2\", spacingClasses[spacing], className)}\n aria-label=\"Loading text content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: lines }, (_, index) => (\n <div\n key={index}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"h-4 rounded-md\",\n index === lines - 1 && \"w-3/4\",\n )}\n style={{\n width: index === lines - 1 ? lastLineWidth : \"100%\",\n }}\n />\n ))}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nexport const SkeletonAvatar = React.forwardRef<\n HTMLDivElement,\n SkeletonAvatarProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"rounded-full\",\n sizeClasses[size],\n className,\n )}\n aria-label=\"Loading avatar\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nexport const SkeletonButton = React.forwardRef<\n HTMLDivElement,\n SkeletonButtonProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n sm: \"h-8 px-3\",\n md: \"h-10 px-4\",\n lg: \"h-12 px-6\",\n };\n\n const variantClasses = {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary\",\n outline: \"bg-muted/50 border border-border\",\n ghost: \"bg-muted/50\",\n };\n\n const finalVariant = variant || \"default\";\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ animation }),\n \"rounded-md\",\n sizeClasses[size],\n variantClasses[finalVariant],\n className,\n )}\n aria-label=\"Loading button\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Card Component\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n className,\n showAvatar = true,\n showActions = true,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"p-6 border border-border rounded-lg bg-card\", className)}\n aria-label=\"Loading card content\"\n role=\"status\"\n {...props}\n >\n <div className=\"space-y-4\">\n {/* Header with avatar and title */}\n <div className=\"flex items-center space-x-3\">\n {showAvatar && (\n <SkeletonAvatar\n size=\"md\"\n variant={variant}\n animation={animation}\n />\n )}\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n\n {/* Content */}\n <div className=\"space-y-2\">\n <Skeleton\n className=\"h-4 w-full\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-5/6\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-4/5\"\n variant={variant}\n animation={animation}\n />\n </div>\n\n {/* Actions */}\n {showActions && (\n <div className=\"flex space-x-2 pt-4\">\n <SkeletonButton size=\"sm\" animation={animation} />\n <SkeletonButton size=\"sm\" animation={animation} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Table Component\nexport const SkeletonTable = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading table content\"\n role=\"status\"\n {...props}\n >\n {/* Header */}\n <div className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n\n {/* Rows */}\n {Array.from({ length: 5 }, (_, index) => (\n <div key={index} className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonTable.displayName = \"SkeletonTable\";\n\n// Skeleton List Component\nexport const SkeletonList = React.forwardRef<\n HTMLDivElement,\n SkeletonProps & { items?: number }\n>(\n (\n {\n className,\n items = 5,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading list content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: items }, (_, index) => (\n <div key={index} className=\"flex items-center space-x-3\">\n <SkeletonAvatar size=\"sm\" variant={variant} animation={animation} />\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonList.displayName = \"SkeletonList\";\n\n// Export variants for external use\nexport { skeletonVariants };\n"]}
@@ -1,3 +0,0 @@
1
- "use client";
2
- import {b}from'./chunk-AVTJE2O2.js';import {a as a$1}from'./chunk-AC2JBXHQ.js';import a,{useState,useRef,useMemo,useEffect}from'react';import*as v from'@radix-ui/react-popover';import {cva}from'class-variance-authority';import {format,getDay,startOfMonth,getDaysInMonth,isSameDay,isWithinInterval,startOfDay,endOfDay,isBefore,isAfter}from'date-fns';var ye=cva("inline-block rounded-lg border bg-background shadow-lg",{variants:{variant:{default:"border-border bg-card",outline:"border-2 border-border",ghost:"border-transparent bg-transparent shadow-none"},size:{sm:"p-2",md:"p-3",lg:"p-4"}},defaultVariants:{variant:"default",size:"md"}}),we=cva("flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"hover:bg-muted text-foreground",selected:"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold",range:"bg-primary/10 text-primary hover:bg-primary/20 font-medium",today:"border-2 border-primary text-foreground font-semibold",outside:"text-muted-foreground",disabled:"text-muted-foreground/50 cursor-not-allowed"},size:{sm:"h-7 w-7 text-xs",md:"h-9 w-9 text-sm",lg:"h-11 w-11 text-base"}},defaultVariants:{variant:"default",size:"md"}}),W=n=>getDaysInMonth(n),xe=(n,o)=>{let s=getDay(startOfMonth(n));return o===1?s===0?6:s-1:s},h=(n,o)=>!n||!o?false:isSameDay(n,o),Ce=(n,o,s)=>!o&&!s?false:o&&s?isWithinInterval(startOfDay(n),{start:startOfDay(o),end:endOfDay(s)}):o?!isBefore(startOfDay(n),startOfDay(o)):s?!isAfter(startOfDay(n),endOfDay(s)):false,_=(n,o,s,V,N)=>!!(o&&isBefore(startOfDay(n),startOfDay(o))||s&&isAfter(startOfDay(n),endOfDay(s))||V?.some(Y=>h(Y,n))||N?.includes(getDay(n))),C=(n,o="en-US")=>n?format(n,"MMM d, yyyy"):"",ke=(n,o,s="en-US")=>!n&&!o?"":n&&o?`${C(n,s)} - ${C(o,s)}`:n?C(n,s):o?C(o,s):"",Fe=(n,o="en-US")=>n.length===0?"":n.length===1?C(n[0],o):`${n.length} dates selected`,Ne=a.forwardRef(({mode:n="single",value:o,defaultValue:s,onChange:V,minDate:N,maxDate:Y,disabledDates:A,disabledDays:H,locale:y="en-US",placeholder:X,label:I,error:L,helperText:U,className:Z,inputClassName:R,calendarClassName:ee,variant:te,size:K,showOutsideDays:k=true,firstDayOfWeek:P=1,...ne},re)=>{let[F,w]=useState(false),[i,D]=useState(new Date),[p,m]=useState(null),ae=useRef(null),$=useRef(new Map),[oe,se]=useState(s),j=o!==void 0,l=j?o:oe;a.useLayoutEffect(()=>{if(F&&!p){let e=new Date;e.setHours(0,0,0,0),m(e);}},[F,p]);let x=e=>{j||se(e),V?.(e);},z=e=>{if(!_(e,N,Y,A,H)){if(n==="single")x(e),w(false);else if(n==="range"){let r=l;if(!r?.from||r.from&&r.to)x({from:e});else {let t=r.from,d=e;d<t?x({from:d,to:t}):x({from:t,to:d}),w(false);}}else if(n==="multiple"){let r=l||[],t=r.findIndex(d=>h(d,e));t>=0?x(r.filter((d,u)=>u!==t)):x([...r,e]);}}},ie=useMemo(()=>{if(!l)return "";if(n==="single")return C(l,y);if(n==="range"){let e=l;return ke(e.from,e.to,y)}else return Fe(l,y)},[l,n,y]),le=useMemo(()=>{let e=[],r=new Date;r.setHours(0,0,0,0);let t=xe(i,P),d=W(i);if(k&&t>0){let u=new Date(i.getFullYear(),i.getMonth()-1),g=W(u);for(let c=g-t+1;c<=g;c++){let f=new Date(u.getFullYear(),u.getMonth(),c);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}for(let u=1;u<=d;u++){let g=new Date(i.getFullYear(),i.getMonth(),u);e.push({date:g,isCurrentMonth:true,isToday:h(g,r)});}if(k){let u=42-e.length,g=new Date(i.getFullYear(),i.getMonth()+1);for(let c=1;c<=u;c++){let f=new Date(g.getFullYear(),g.getMonth(),c);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}return e},[i,k,P]),ue=()=>{D(new Date(i.getFullYear(),i.getMonth()-1,1));},de=()=>{D(new Date(i.getFullYear(),i.getMonth()+1,1));},fe=()=>{let e=new Date;D(e),m(e);},ge=(e,r)=>{if(e.key==="Enter"||e.key===" "){e.preventDefault(),z(r);return}if(e.key==="ArrowRight"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+1),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowLeft"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-1),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowDown"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+7),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowUp"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-7),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Home"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth(),1);m(t);return}if(e.key==="End"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,0);m(t);return}if(e.key==="PageUp"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()-1,r.getDate());m(t),D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="PageDown"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,r.getDate());m(t),D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Escape"){e.preventDefault(),w(false);return}};useEffect(()=>{if(p&&F){let e=`${p.getFullYear()}-${p.getMonth()}-${p.getDate()}`,r=$.current.get(e);r&&r.focus();}},[p,F]);let De=useMemo(()=>{let e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];return P===1?[...e.slice(1),e[0]]:e},[P]),me=i.toLocaleDateString(y,{month:"long",year:"numeric"});return a.createElement("div",{ref:re,className:a$1("w-full",Z),...ne},a.createElement(v.Root,{open:F,onOpenChange:w},a.createElement("div",{className:"space-y-2"},I&&a.createElement("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},I),a.createElement(v.Trigger,{asChild:true},a.createElement("button",{type:"button",className:a$1("flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background","placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left",L?"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500":"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary","h-10",R),onClick:()=>w(true),onFocus:()=>w(true),"aria-label":I||"Open calendar","aria-invalid":L},ie||a.createElement("span",{className:"text-muted-foreground"},X||"Select date..."))),U&&a.createElement("p",{className:a$1("text-sm text-muted-foreground",L&&"text-error-600")},U)),a.createElement(v.Portal,null,a.createElement(v.Content,{className:a$1("z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),sideOffset:5,align:"start"},a.createElement("div",{ref:ae,className:a$1(ye({variant:te,size:K}),ee),role:"application","aria-label":"Calendar"},a.createElement("div",{className:"flex items-center justify-between mb-4"},a.createElement("div",{className:"flex items-center gap-2"},a.createElement(b,{variant:"ghost",size:"sm",onClick:ue,"aria-label":"Previous month"},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),a.createElement("h3",{className:"text-sm font-semibold text-popover-foreground","data-testid":"calendar-month-year"},me),a.createElement(b,{variant:"ghost",size:"sm",onClick:de,"aria-label":"Next month"},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})))),a.createElement(b,{variant:"ghost",size:"sm",onClick:fe,className:"text-xs"},"Today")),a.createElement("div",{className:"grid grid-cols-7 gap-1 mb-2"},De.map(e=>a.createElement("div",{key:e,className:"text-center text-xs font-medium text-muted-foreground"},e))),a.createElement("div",{className:"grid grid-cols-7 gap-1"},le.map((e,r)=>{let t=n==="single"?h(e.date,l):n==="range"?Ce(e.date,l?.from,l?.to):l?.some(f=>h(f,e.date)),d=_(e.date,N,Y,A,H),u=n==="range"&&l?.from&&!l?.to&&e.date>=l.from,g=`${e.date.getFullYear()}-${e.date.getMonth()}-${e.date.getDate()}`,c=p&&h(e.date,p);return a.createElement("button",{key:`${e.date.getTime()}-${r}`,ref:f=>{f?$.current.set(g,f):$.current.delete(g);},type:"button",onClick:()=>{k&&!e.isCurrentMonth?(D(new Date(e.date.getFullYear(),e.date.getMonth(),1)),setTimeout(()=>z(e.date),0)):z(e.date);},onKeyDown:f=>ge(f,e.date),disabled:d||(k?false:!e.isCurrentMonth),className:a$1(we({variant:t?"selected":u?"range":e.isToday?"today":e.isCurrentMonth?d?"disabled":"default":"outside",size:K}),!e.isCurrentMonth&&"opacity-50",c&&"ring-2 ring-brand-500 ring-offset-2 z-10"),"aria-label":e.date.toLocaleDateString(y,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),"aria-selected":t,"aria-disabled":d,tabIndex:c?0:-1},e.date.getDate())})),n==="range"&&l?.from&&!l?.to&&a.createElement("div",{className:"mt-4 pt-4 border-t border-border"},a.createElement("p",{className:"text-xs text-muted-foreground text-center"},"Select end date")))))))});Ne.displayName="Calendar";export{ye as a,we as b,Ne as c};//# sourceMappingURL=chunk-PEYPRWZP.js.map
3
- //# sourceMappingURL=chunk-PEYPRWZP.js.map