@acronis-platform/ui-react 3.0.0 → 4.0.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 (219) hide show
  1. package/dist/components/ui/accordion-container/accordion-container.js +14 -14
  2. package/dist/components/ui/accordion-container/accordion-container.js.map +1 -1
  3. package/dist/components/ui/app-shell-chat/app-shell-chat.js.map +1 -1
  4. package/dist/components/ui/area-chart/area-chart.js +141 -139
  5. package/dist/components/ui/area-chart/area-chart.js.map +1 -1
  6. package/dist/components/ui/bar-chart/bar-chart.js +295 -293
  7. package/dist/components/ui/bar-chart/bar-chart.js.map +1 -1
  8. package/dist/components/ui/category-bar/category-bar.js +109 -93
  9. package/dist/components/ui/category-bar/category-bar.js.map +1 -1
  10. package/dist/components/ui/chart/chart-palette.js +113 -0
  11. package/dist/components/ui/chart/chart-palette.js.map +1 -0
  12. package/dist/components/ui/chart/chart.js +176 -129
  13. package/dist/components/ui/chart/chart.js.map +1 -1
  14. package/dist/components/ui/chart-state/chart-state-illustrations.js +310 -0
  15. package/dist/components/ui/chart-state/chart-state-illustrations.js.map +1 -0
  16. package/dist/components/ui/chart-state/chart-state.js +48 -34
  17. package/dist/components/ui/chart-state/chart-state.js.map +1 -1
  18. package/dist/components/ui/chart-widget/chart-widget.js +87 -0
  19. package/dist/components/ui/chart-widget/chart-widget.js.map +1 -0
  20. package/dist/components/ui/composed-chart/composed-chart.js +117 -115
  21. package/dist/components/ui/composed-chart/composed-chart.js.map +1 -1
  22. package/dist/components/ui/confidence-cone/confidence-cone.js +166 -158
  23. package/dist/components/ui/confidence-cone/confidence-cone.js.map +1 -1
  24. package/dist/components/ui/funnel-chart/funnel-chart.js +162 -161
  25. package/dist/components/ui/funnel-chart/funnel-chart.js.map +1 -1
  26. package/dist/components/ui/histogram/histogram.js +94 -92
  27. package/dist/components/ui/histogram/histogram.js.map +1 -1
  28. package/dist/components/ui/input/input.js.map +1 -1
  29. package/dist/components/ui/label/label.js +2 -9
  30. package/dist/components/ui/label/label.js.map +1 -1
  31. package/dist/components/ui/line-chart/line-chart.js +143 -141
  32. package/dist/components/ui/line-chart/line-chart.js.map +1 -1
  33. package/dist/components/ui/metric/metric.js +74 -185
  34. package/dist/components/ui/metric/metric.js.map +1 -1
  35. package/dist/components/ui/page-content/page-content.js.map +1 -1
  36. package/dist/components/ui/pie-chart/pie-chart.js +201 -195
  37. package/dist/components/ui/pie-chart/pie-chart.js.map +1 -1
  38. package/dist/components/ui/radar-chart/radar-chart.js +133 -131
  39. package/dist/components/ui/radar-chart/radar-chart.js.map +1 -1
  40. package/dist/components/ui/radial-bar-chart/radial-bar-chart.js +297 -265
  41. package/dist/components/ui/radial-bar-chart/radial-bar-chart.js.map +1 -1
  42. package/dist/components/ui/sankey-chart/sankey-chart.js +123 -101
  43. package/dist/components/ui/sankey-chart/sankey-chart.js.map +1 -1
  44. package/dist/components/ui/scatter-chart/scatter-chart.js +76 -74
  45. package/dist/components/ui/scatter-chart/scatter-chart.js.map +1 -1
  46. package/dist/components/ui/section/section.js +157 -31
  47. package/dist/components/ui/section/section.js.map +1 -1
  48. package/dist/components/ui/stepper/stepper.js +24 -24
  49. package/dist/components/ui/stepper/stepper.js.map +1 -1
  50. package/dist/components/ui/stepper-item/stepper-item.js +43 -24
  51. package/dist/components/ui/stepper-item/stepper-item.js.map +1 -1
  52. package/dist/components/ui/treemap/treemap.js +133 -124
  53. package/dist/components/ui/treemap/treemap.js.map +1 -1
  54. package/dist/components/ui/trend-indicator/trend-indicator.js +34 -69
  55. package/dist/components/ui/trend-indicator/trend-indicator.js.map +1 -1
  56. package/dist/components/ui/wizard/wizard.js +59 -0
  57. package/dist/components/ui/wizard/wizard.js.map +1 -0
  58. package/dist/hooks/use-wizard.js +75 -0
  59. package/dist/hooks/use-wizard.js.map +1 -0
  60. package/dist/index.js +502 -497
  61. package/dist/index.js.map +1 -1
  62. package/dist/llms/accordion-container.md +181 -0
  63. package/dist/llms/accordion.md +124 -0
  64. package/dist/llms/alert.md +225 -0
  65. package/dist/llms/app-shell-chat.md +415 -0
  66. package/dist/llms/area-chart.md +355 -0
  67. package/dist/llms/avatar.md +208 -0
  68. package/dist/llms/bar-chart.md +406 -0
  69. package/dist/llms/breadcrumb.md +326 -0
  70. package/dist/llms/button-group.md +298 -0
  71. package/dist/llms/button-icon-input.md +142 -0
  72. package/dist/llms/button-icon-menu.md +209 -0
  73. package/dist/llms/button-icon.md +128 -0
  74. package/dist/llms/button-menu.md +172 -0
  75. package/dist/llms/button.md +185 -0
  76. package/dist/llms/calendar-panel.md +733 -0
  77. package/dist/llms/calendar.md +188 -0
  78. package/dist/llms/card-filter.md +214 -0
  79. package/dist/llms/card-section.md +293 -0
  80. package/dist/llms/card.md +447 -0
  81. package/dist/llms/carousel-dialog.md +156 -0
  82. package/dist/llms/category-bar.md +193 -0
  83. package/dist/llms/chart-state.md +190 -0
  84. package/dist/llms/chart-widget.md +209 -0
  85. package/dist/llms/chart.md +182 -0
  86. package/dist/llms/checkbox.md +257 -0
  87. package/dist/llms/chip.md +195 -0
  88. package/dist/llms/combobox.md +164 -0
  89. package/dist/llms/composed-chart.md +508 -0
  90. package/dist/llms/confidence-cone.md +277 -0
  91. package/dist/llms/data-table.md +474 -0
  92. package/dist/llms/date-range-picker.md +272 -0
  93. package/dist/llms/description-list.md +131 -0
  94. package/dist/llms/dialog-footer-carousel.md +147 -0
  95. package/dist/llms/dialog-footer-default.md +142 -0
  96. package/dist/llms/dialog-root.md +246 -0
  97. package/dist/llms/dialog-welcome.md +223 -0
  98. package/dist/llms/dialog.md +403 -0
  99. package/dist/llms/dropdown-menu.md +193 -0
  100. package/dist/llms/empty-overlay.md +146 -0
  101. package/dist/llms/empty.md +156 -0
  102. package/dist/llms/field.md +185 -0
  103. package/dist/llms/filter-cards.md +157 -0
  104. package/dist/llms/filter-chips.md +323 -0
  105. package/dist/llms/filter-search.md +512 -0
  106. package/dist/llms/form.md +154 -0
  107. package/dist/llms/funnel-chart.md +333 -0
  108. package/dist/llms/grid.md +80 -0
  109. package/dist/llms/histogram.md +190 -0
  110. package/dist/llms/input-date-picker.md +203 -0
  111. package/dist/llms/input-otp.md +173 -0
  112. package/dist/llms/input-password.md +197 -0
  113. package/dist/llms/input-search.md +170 -0
  114. package/dist/llms/input-select.md +278 -0
  115. package/dist/llms/input-text-area.md +271 -0
  116. package/dist/llms/input-text.md +192 -0
  117. package/dist/llms/line-chart.md +369 -0
  118. package/dist/llms/link.md +209 -0
  119. package/dist/llms/loading.md +130 -0
  120. package/dist/llms/meter.md +177 -0
  121. package/dist/llms/metric.md +204 -0
  122. package/dist/llms/number-field.md +122 -0
  123. package/dist/llms/page-content.md +69 -0
  124. package/dist/llms/page-header.md +182 -0
  125. package/dist/llms/pagination.md +133 -0
  126. package/dist/llms/pie-chart.md +307 -0
  127. package/dist/llms/popover.md +252 -0
  128. package/dist/llms/progress-circle.md +126 -0
  129. package/dist/llms/progress.md +111 -0
  130. package/dist/llms/radar-chart.md +316 -0
  131. package/dist/llms/radial-bar-chart.md +319 -0
  132. package/dist/llms/radio.md +255 -0
  133. package/dist/llms/resizable.md +195 -0
  134. package/dist/llms/sankey-chart.md +208 -0
  135. package/dist/llms/scatter-chart.md +239 -0
  136. package/dist/llms/scroll-area.md +183 -0
  137. package/dist/llms/section.md +401 -0
  138. package/dist/llms/select.md +210 -0
  139. package/dist/llms/separator.md +87 -0
  140. package/dist/llms/sheet.md +202 -0
  141. package/dist/llms/sidebar-primary.md +360 -0
  142. package/dist/llms/sidebar-secondary.md +417 -0
  143. package/dist/llms/skeleton.md +81 -0
  144. package/dist/llms/slider.md +97 -0
  145. package/dist/llms/spinner.md +100 -0
  146. package/dist/llms/stack.md +80 -0
  147. package/dist/llms/stepper-item.md +309 -0
  148. package/dist/llms/stepper.md +251 -0
  149. package/dist/llms/switch.md +140 -0
  150. package/dist/llms/table.md +436 -0
  151. package/dist/llms/tabs.md +197 -0
  152. package/dist/llms/tag.md +139 -0
  153. package/dist/llms/timeline.md +361 -0
  154. package/dist/llms/timer.md +259 -0
  155. package/dist/llms/toast.md +241 -0
  156. package/dist/llms/toggle-group.md +121 -0
  157. package/dist/llms/toolbar.md +453 -0
  158. package/dist/llms/tooltip.md +164 -0
  159. package/dist/llms/treemap.md +254 -0
  160. package/dist/llms/trend-indicator.md +132 -0
  161. package/dist/llms/widget-placeholder.md +169 -0
  162. package/dist/llms/wizard.md +412 -0
  163. package/dist/llms.txt +142 -0
  164. package/dist/react.js +502 -497
  165. package/dist/react.js.map +1 -1
  166. package/dist/src/components/ui/area-chart/area-chart.d.ts +9 -4
  167. package/dist/src/components/ui/avatar/avatar.d.ts +1 -1
  168. package/dist/src/components/ui/bar-chart/bar-chart.d.ts +9 -4
  169. package/dist/src/components/ui/category-bar/category-bar.d.ts +10 -4
  170. package/dist/src/components/ui/chart/__stories__/palette-control.d.ts +48 -0
  171. package/dist/src/components/ui/chart/__tests__/chart-palette.test.d.ts +1 -0
  172. package/dist/src/components/ui/chart/chart-palette.d.ts +128 -0
  173. package/dist/src/components/ui/chart/chart.d.ts +66 -15
  174. package/dist/src/components/ui/chart/index.d.ts +4 -2
  175. package/dist/src/components/ui/chart-state/chart-state-illustrations.d.ts +6 -0
  176. package/dist/src/components/ui/chart-state/chart-state.d.ts +13 -2
  177. package/dist/src/components/ui/chart-state/index.d.ts +1 -0
  178. package/dist/src/components/ui/chart-widget/chart-widget.d.ts +64 -0
  179. package/dist/src/components/ui/chart-widget/index.d.ts +1 -0
  180. package/dist/src/components/ui/composed-chart/composed-chart.d.ts +12 -7
  181. package/dist/src/components/ui/confidence-cone/confidence-cone.d.ts +10 -5
  182. package/dist/src/components/ui/empty-overlay/empty-overlay.d.ts +1 -1
  183. package/dist/src/components/ui/funnel-chart/funnel-chart.d.ts +11 -5
  184. package/dist/src/components/ui/histogram/histogram.d.ts +10 -4
  185. package/dist/src/components/ui/label/index.d.ts +1 -1
  186. package/dist/src/components/ui/label/label.d.ts +1 -5
  187. package/dist/src/components/ui/line-chart/line-chart.d.ts +9 -4
  188. package/dist/src/components/ui/metric/metric.d.ts +13 -14
  189. package/dist/src/components/ui/pie-chart/pie-chart.d.ts +17 -8
  190. package/dist/src/components/ui/radar-chart/radar-chart.d.ts +10 -5
  191. package/dist/src/components/ui/radial-bar-chart/radial-bar-chart.d.ts +17 -6
  192. package/dist/src/components/ui/sankey-chart/sankey-chart.d.ts +10 -5
  193. package/dist/src/components/ui/scatter-chart/scatter-chart.d.ts +10 -5
  194. package/dist/src/components/ui/section/index.d.ts +1 -1
  195. package/dist/src/components/ui/section/section.d.ts +75 -6
  196. package/dist/src/components/ui/stepper-item/stepper-item.d.ts +6 -5
  197. package/dist/src/components/ui/tag/tag.d.ts +1 -1
  198. package/dist/src/components/ui/treemap/treemap.d.ts +11 -5
  199. package/dist/src/components/ui/trend-indicator/trend-indicator.d.ts +3 -7
  200. package/dist/src/components/ui/wizard/index.d.ts +1 -0
  201. package/dist/src/components/ui/wizard/wizard.d.ts +6 -0
  202. package/dist/src/hooks/index.d.ts +1 -0
  203. package/dist/src/hooks/use-wizard.d.ts +80 -0
  204. package/dist/src/index.d.ts +2 -3
  205. package/dist/ui-react.css +1 -1
  206. package/package.json +9 -3
  207. package/dist/components/ui/app-shell/app-shell.js +0 -75
  208. package/dist/components/ui/app-shell/app-shell.js.map +0 -1
  209. package/dist/components/ui/auth-layout/auth-layout.js +0 -56
  210. package/dist/components/ui/auth-layout/auth-layout.js.map +0 -1
  211. package/dist/components/ui/collapsible/collapsible.js +0 -22
  212. package/dist/components/ui/collapsible/collapsible.js.map +0 -1
  213. package/dist/src/components/ui/app-shell/app-shell.d.ts +0 -8
  214. package/dist/src/components/ui/app-shell/index.d.ts +0 -1
  215. package/dist/src/components/ui/auth-layout/auth-layout.d.ts +0 -6
  216. package/dist/src/components/ui/auth-layout/index.d.ts +0 -1
  217. package/dist/src/components/ui/collapsible/collapsible.d.ts +0 -5
  218. package/dist/src/components/ui/collapsible/index.d.ts +0 -1
  219. package/dist/src/components/ui/label/label.docs.d.ts +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","sources":["../../../../src/components/ui/chart/chart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\nimport type { LegendPayload } from 'recharts/types/component/DefaultLegendContent';\nimport {\n NameType,\n Payload,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent';\nimport type { Props as LegendProps } from 'recharts/types/component/Legend';\nimport { TooltipContentProps } from 'recharts/types/component/Tooltip';\n\nimport { cn } from '@/lib/utils';\n\n// Format: { THEME_NAME: CSS_SELECTOR }. ui-react flips light/dark via the\n// `[data-theme]` attribute (the tokens resolve `light-dark()` through\n// `color-scheme`), not the legacy `.dark` class — so per-series `theme` colors\n// scope their dark value under `[data-theme='dark']`.\nconst THEMES = { light: '', dark: \"[data-theme='dark']\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\n/**\n * How a series is marked in the legend. A filled series reads as a square\n * swatch; a stroke-drawn one (line, area) as the line it paints — dashed when\n * the stroke is. The tooltip always dots its rows instead.\n */\ntype ChartSeriesMarker = 'swatch' | 'line' | 'dashed';\n\nexport type ChartTooltipContentProps = Partial<\n TooltipContentProps<ValueType, NameType>\n> & {\n className?: string;\n hideLabel?: boolean;\n hideIndicator?: boolean;\n nameKey?: string;\n labelKey?: string;\n labelFormatter?: (\n label: TooltipContentProps<number, string>['label'],\n payload: TooltipContentProps<number, string>['payload']\n ) => React.ReactNode;\n formatter?: (\n value: number | string,\n name: string,\n item: Payload<number | string, string>,\n index: number,\n payload: ReadonlyArray<Payload<number | string, string>>\n ) => React.ReactNode;\n labelClassName?: string;\n color?: string;\n};\n\nexport type ChartLegendContentProps = {\n className?: string;\n hideIcon?: boolean;\n verticalAlign?: LegendProps['verticalAlign'];\n payload?: LegendPayload[];\n nameKey?: string;\n /**\n * The series config the entries take their labels and icons from. Defaults to\n * the enclosing `ChartContainer`'s — pass it only to render the legend *outside*\n * the container, which a chart type has to do when the renderer can't lay a\n * legend out inside its plot (see `Treemap`).\n */\n config?: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nexport interface ChartContainerProps extends React.ComponentProps<'div'> {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: ChartContainerProps) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n id={id}\n data-slot=\"chart\"\n data-chart={chartId}\n // The `[stroke='#fff']` rules undo recharts' hardcoded white outlines —\n // on pie/radial sectors, line dots and funnel trapezoids. They don't\n // follow the theme, so in dark mode they read as a light hairline around\n // every segment.\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden [&_.recharts-trapezoid[stroke='#fff']]:stroke-transparent\",\n // A `<Brush>` traveller is the one `.recharts-layer` that is a real\n // control (`role=\"slider\"`, tabbable, arrow-key driven), so the blanket\n // `outline-hidden` above would leave it with no focus indicator. Restore\n // one — the `:focus-visible` pseudo-class outranks that rule, so this\n // wins regardless of the order Tailwind emits them in. An `outline`\n // rather than the usual `ring`: box-shadow doesn't paint on SVG children.\n '[&_.recharts-brush-traveller:focus-visible]:[outline:3px_solid_var(--ui-focus-primary)] [&_.recharts-brush-traveller:focus-visible]:[outline-offset:1px]',\n // recharts anchors its axis tick text with the *direction-relative*\n // SVG keywords (`text-anchor: start|end`, see `getTickTextAnchor` in\n // `CartesianAxis`), while placing every mark at a computed physical\n // coordinate. Inheriting `direction: rtl` therefore flips only the\n // text: an `end`-anchored Y tick mirrors about its anchor and lands\n // inside the plot (measured: +24px to +39px), rotated ticks shift\n // ~+15px, and a `ReferenceLine` label at the right edge overflows the\n // surface. Pinning the surface keeps the plot's own coordinate system\n // consistent with the geometry recharts computed for it. The chrome\n // that *should* mirror — tooltip and legend — is HTML outside\n // `.recharts-surface`, so it is unaffected.\n //\n // `Treemap` is the exception: its cell labels are HTML in a\n // `<foreignObject>` *inside* the surface, put there precisely so they\n // mirror with the page (see `treemap.tsx`). That is ordinary flow\n // layout, not a computed SVG coordinate, so the pin has to stop at the\n // `<foreignObject>` boundary and hand the page's direction back.\n '[&_.recharts-surface]:[direction:ltr] rtl:[&_.recharts-surface_foreignObject]:[direction:rtl]',\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n // Rendered as a text child (not dangerouslySetInnerHTML): React sets it via\n // textContent, which the browser does not HTML-parse, so a `</style>` in a\n // config color can't break out of the tag.\n return (\n <style>\n {Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n ${prefix} [data-chart=${id}] {\n ${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n }\n `\n )\n .join('\\n')}\n </style>\n );\n};\n\n/** The marker drawn next to a series' name in the legend. */\nfunction SeriesMarker({\n marker,\n color,\n className,\n}: {\n marker: ChartSeriesMarker;\n color?: string;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'shrink-0',\n marker === 'swatch'\n ? 'h-2.5 w-2.5 rounded-sm'\n : 'h-[3px] w-4 rounded-full',\n className\n )}\n style={\n marker === 'dashed'\n ? {\n // A dashed stroke can't be drawn with a background color, so the\n // dash pattern is painted as a gradient.\n backgroundImage: `repeating-linear-gradient(90deg, ${color} 0 4px, transparent 4px 7px)`,\n }\n : { backgroundColor: color }\n }\n />\n );\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\n/** The `content` a caller passes to override the default tooltip (recharts' `Tooltip['content']`). */\nexport type ChartTooltipContentType = React.ComponentProps<\n typeof ChartTooltip\n>['content'];\n\n/**\n * What `getPayloadConfigFromPayload` resolves a payload item to — the lookup can\n * miss, so every consumer has to cope with `undefined`. Derived from the helper\n * rather than restated, so the two can't drift.\n */\ntype ChartItemConfig = ReturnType<typeof getPayloadConfigFromPayload>;\n\n/** One row of the tooltip's payload, after the `active`/empty guard. */\ntype ChartTooltipItem = NonNullable<\n ChartTooltipContentProps['payload']\n>[number];\n\n/**\n * One tooltip row. Its own three-way branching (caller formatter, config icon,\n * default dot) is what drove the nesting in `ChartTooltipContent`; as a\n * component the map body reads as a single element.\n */\nfunction ChartTooltipRow({\n item,\n index,\n payload,\n itemConfig,\n indicatorColor,\n hideIndicator,\n formatter,\n}: {\n item: ChartTooltipItem;\n index: number;\n payload: NonNullable<ChartTooltipContentProps['payload']>;\n itemConfig: ChartItemConfig;\n indicatorColor?: string;\n hideIndicator: boolean;\n formatter: ChartTooltipContentProps['formatter'];\n}) {\n return (\n <div className=\"flex w-full flex-wrap items-center gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\">\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n // A row is always dotted, whatever marker the legend\n // gives that series.\n <div\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: indicatorColor }}\n />\n )\n )}\n {/*\n * `gap-4` puts a floor under the name/value separation.\n * `justify-between` alone only separates them while the\n * container has free space to distribute — which the tooltip's\n * `min-w-[8rem]` guarantees for a short value and not for a\n * long one (a currency `tickFormatter`, a `labelFormatter`\n * with units, a value plus its share), where the two would\n * otherwise butt up against each other. A minimum, so a row\n * with slack renders as before.\n */}\n <div className=\"flex flex-1 items-center justify-between gap-4 leading-none\">\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n {item.value != null && (\n <span className=\"font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n}\n\nfunction ChartTooltipContent({\n active,\n payload,\n label,\n className,\n hideLabel = false,\n hideIndicator = false,\n labelFormatter,\n formatter,\n labelClassName,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = (() => {\n const v =\n !labelKey && typeof label === 'string'\n ? (config[label as keyof typeof config]?.label ?? label)\n : itemConfig?.label;\n\n return typeof v === 'string' || typeof v === 'number' ? v : undefined;\n })();\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'grid min-w-[8rem] items-start gap-1.5 rounded-[var(--ui-tooltip-container-border-radius)] border border-border bg-background px-[var(--ui-tooltip-container-padding-x)] py-[var(--ui-tooltip-container-padding-y)] text-xs text-foreground shadow-md',\n className\n )}\n >\n {tooltipLabel}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n\n return (\n <ChartTooltipRow\n key={key}\n item={item}\n index={index}\n payload={payload}\n itemConfig={getPayloadConfigFromPayload(config, item, key)}\n indicatorColor={color || item.payload.fill || item.color}\n hideIndicator={hideIndicator}\n formatter={formatter}\n />\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\n/**\n * One legend entry. Split out so the marker it has to derive from the payload\n * sits next to the markup that uses it, instead of above a nested map body.\n */\nfunction ChartLegendEntry({\n item,\n itemConfig,\n hideIcon,\n}: {\n item: LegendPayload;\n itemConfig: ChartItemConfig;\n hideIcon: boolean;\n}) {\n // recharts types stroke-drawn series (<Line>, <Area>) as `line`; a chart\n // that wants a swatch instead sets the series' `legendType=\"rect\"`.\n const dashArray = (\n item.payload as { strokeDasharray?: string | number } | undefined\n )?.strokeDasharray;\n const marker: ChartSeriesMarker =\n item.type !== 'line' ? 'swatch' : dashArray ? 'dashed' : 'line';\n\n return (\n <div\n className={cn(\n 'flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground'\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <SeriesMarker marker={marker} color={item.color} />\n )}\n {/*\n * Falls back to the series key, the way the tooltip row and the\n * treemap's on-cell label both do. `label` is optional on a\n * `ChartConfig` entry, and `getPayloadConfigFromPayload` can miss\n * entirely, so without this an entry renders as a marker with no\n * text — worst on the charts whose legend is the only place a series\n * is named.\n */}\n {itemConfig?.label ?? item.value}\n </div>\n );\n}\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey,\n config: configFromProps,\n}: ChartLegendContentProps) {\n // The context read directly rather than through `useChart()`: a caller that\n // passes its own `config` is rendering the legend outside the container, where\n // the context is absent by design rather than by mistake. Every other caller\n // still gets `useChart()`'s error — the legend has no way to label itself\n // without a config, and failing loudly beats rendering an empty row.\n const contextConfig = React.useContext(ChartContext)?.config;\n const config = configFromProps ?? contextConfig;\n\n if (!config) {\n throw new Error(\n 'ChartLegendContent must be used within a <ChartContainer /> or given a `config` prop'\n );\n }\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n // Wraps rather than overflowing: a legend with many entries (a treemap's\n // one-per-tile, a pie's one-per-slice) is wider than the chart on a narrow\n // surface, and a row that can't wrap paints past the chart's edge. The\n // column gap is unchanged, so a legend that already fits on one row keeps\n // its exact layout.\n 'flex flex-wrap items-center justify-start gap-x-4 gap-y-2',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n\n return (\n <ChartLegendEntry\n key={item.value}\n item={item}\n itemConfig={getPayloadConfigFromPayload(config, item, key)}\n hideIcon={hideIcon}\n />\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload &&\n typeof payload.payload === 'object' &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n"],"names":["THEMES","ChartContext","React","useChart","context","ChartContainer","id","className","children","config","props","uniqueId","chartId","jsxs","cn","jsx","ChartStyle","RechartsPrimitive","colorConfig","theme","prefix","key","itemConfig","color","_a","SeriesMarker","marker","ChartTooltip","ChartTooltipRow","item","index","payload","indicatorColor","hideIndicator","formatter","Fragment","ChartTooltipContent","active","label","hideLabel","labelFormatter","labelClassName","nameKey","labelKey","tooltipLabel","getPayloadConfigFromPayload","value","v","ChartLegend","ChartLegendEntry","hideIcon","dashArray","ChartLegendContent","verticalAlign","configFromProps","contextConfig","payloadPayload","configLabelKey"],"mappings":"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"}
1
+ {"version":3,"file":"chart.js","sources":["../../../../src/components/ui/chart/chart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\nimport type { LegendPayload } from 'recharts/types/component/DefaultLegendContent';\nimport {\n NameType,\n Payload,\n ValueType,\n} from 'recharts/types/component/DefaultTooltipContent';\nimport type { Props as LegendProps } from 'recharts/types/component/Legend';\nimport { TooltipContentProps } from 'recharts/types/component/Tooltip';\n\nimport { cn } from '@/lib/utils';\nimport {\n CHART_DEFAULT_PALETTE,\n CHART_STATUS_TOKENS,\n resolveSeriesColor,\n type ChartPalette,\n type ChartSeriesTone,\n} from './chart-palette';\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n /**\n * Which stop of the container's `palette` this series paints with. Left\n * unset, it is assigned from the series' position. See `ChartSeriesTone`.\n *\n * There is deliberately no free-form `color` here: every series colour\n * comes from the chart's palette, so a chart cannot paint a hue the design\n * system does not define. Pick a different palette on `ChartContainer`, or\n * a different stop of it with this.\n */\n tone?: ChartSeriesTone;\n };\n};\n\n/**\n * A `ChartConfig` with every series' palette colour filled in. This is what the\n * container puts on the context, so the plot, the tooltip rows and the legend\n * markers all read the same resolved colour.\n */\nexport type ResolvedChartConfig = {\n [k in string]: ChartConfig[string] & { color: string };\n};\n\n/**\n * Resolve each series' colour out of `palette` — in the palette's defined\n * order, honouring any `tone` a series named.\n *\n * Exported for tests and for the widget editor, which needs the same resolved\n * map to detect duplicate colours (`findDuplicateTones`) without re-deriving it.\n */\nexport function resolveChartColors(\n config: ChartConfig,\n palette: ChartPalette\n): ResolvedChartConfig {\n const entries = Object.entries(config);\n\n // An aliased series (`tone: { sameAs }`) doesn't take a stop of its own — it\n // is the same metric drawn a second way, so it must not consume a colour or\n // shift the series after it along the palette.\n const isAlias = (item: ChartConfig[string]) => Boolean(item.tone?.sameAs);\n let index = 0;\n const resolved: Record<string, ChartConfig[string] & { color: string }> = {};\n\n for (const [key, item] of entries) {\n if (isAlias(item)) {\n continue;\n }\n resolved[key] = {\n ...item,\n color: resolveSeriesColor(palette, { index: index++, tone: item.tone }),\n };\n }\n\n // An alias may point at another alias, in any order, so a single pass over\n // the aliases can miss a chain that is fully resolvable. Keep sweeping the\n // pending set until nothing more resolves; what is left is a cycle or a\n // target that isn't in this config at all.\n const pending = new Map<string, string>();\n for (const [key, item] of entries) {\n if (isAlias(item)) {\n pending.set(key, item.tone!.sameAs as string);\n }\n }\n\n let changed = true;\n while (changed && pending.size > 0) {\n changed = false;\n for (const [key, target] of pending) {\n const targetColor = resolved[target]?.color;\n if (targetColor !== undefined) {\n resolved[key] = { ...config[key], color: targetColor };\n pending.delete(key);\n changed = true;\n }\n }\n }\n\n for (const [key, target] of pending) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[ui-react] Chart series \"${key}\" aliases \"${target}\", which is not a palette-assigned series in this config. Falling back to neutral.`\n );\n }\n resolved[key] = { ...config[key], color: CHART_STATUS_TOKENS.neutral };\n }\n\n // Rebuilt in the config's own order: the passes above visit non-aliases\n // first, and callers (legend order, `Object.entries` consumers) rely on the\n // order they wrote.\n return Object.fromEntries(entries.map(([key]) => [key, resolved[key]]));\n}\n\ntype ChartContextProps = {\n config: ResolvedChartConfig;\n};\n\nexport type ChartTooltipContentProps = Partial<\n TooltipContentProps<ValueType, NameType>\n> & {\n className?: string;\n hideLabel?: boolean;\n hideIndicator?: boolean;\n nameKey?: string;\n labelKey?: string;\n labelFormatter?: (\n label: TooltipContentProps<number, string>['label'],\n payload: TooltipContentProps<number, string>['payload']\n ) => React.ReactNode;\n formatter?: (\n value: number | string,\n name: string,\n item: Payload<number | string, string>,\n index: number,\n payload: ReadonlyArray<Payload<number | string, string>>\n ) => React.ReactNode;\n labelClassName?: string;\n color?: string;\n};\n\nexport type ChartLegendContentProps = {\n className?: string;\n hideIcon?: boolean;\n verticalAlign?: LegendProps['verticalAlign'];\n payload?: LegendPayload[];\n nameKey?: string;\n /**\n * The series config the entries take their labels and icons from. Defaults to\n * the enclosing `ChartContainer`'s — pass it only to render the legend *outside*\n * the container, which a chart type has to do when the renderer can't lay a\n * legend out inside its plot (see `Treemap`).\n */\n config?: ChartConfig;\n /**\n * `default` — the current horizontal wrap layout (one row of chips).\n * `list` — a vertical list where each entry is `[dot] [label flex-1] [value]`,\n * matching the Figma donut/radial widget legend. Use alongside a manually-built\n * `payload` passed from outside the chart's recharts composition.\n */\n variant?: 'default' | 'list';\n /**\n * When `variant=\"list\"`, the field on `payload[i].payload` to display as the\n * right-hand value. Typically the chart's `dataKey` (the numeric series field).\n */\n valueKey?: string;\n /**\n * Format the value shown in each list entry. When omitted the raw value is\n * stringified with `String()`.\n */\n valueFormatter?: (value: string | number) => string;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nexport interface ChartContainerProps extends React.ComponentProps<'div'> {\n /**\n * The series this chart draws, keyed by data field.\n *\n * Declare exactly what the chart plots. A stop is assigned by an entry's\n * position here, not by which series end up rendered, so an entry for a\n * series the chart doesn't draw still consumes a colour and shifts the ones\n * that follow it. (That is deliberate: a series then keeps its colour when a\n * sibling is toggled off, instead of the whole chart recolouring.)\n */\n config: ChartConfig;\n /**\n * The dataviz palette this chart's series are painted from. Series take a\n * stop of it in the palette's defined order, or the one their `tone` names.\n * Defaults to `categorical` — there is no \"no palette\" state.\n */\n palette?: ChartPalette;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n palette = CHART_DEFAULT_PALETTE,\n ...props\n}: ChartContainerProps) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n // Resolved once and shared with the context, so the tooltip rows and legend\n // markers read the same colors the plot paints with.\n const resolvedConfig = React.useMemo(\n () => resolveChartColors(config, palette),\n [config, palette]\n );\n\n return (\n <ChartContext.Provider value={{ config: resolvedConfig }}>\n <div\n id={id}\n data-slot=\"chart\"\n data-chart={chartId}\n // The `[stroke='#fff']` rules undo recharts' hardcoded white outlines —\n // on pie/radial sectors, line dots and funnel trapezoids. They don't\n // follow the theme, so in dark mode they read as a light hairline around\n // every segment.\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden [&_.recharts-trapezoid[stroke='#fff']]:stroke-transparent\",\n // A `<Brush>` traveller is the one `.recharts-layer` that is a real\n // control (`role=\"slider\"`, tabbable, arrow-key driven), so the blanket\n // `outline-hidden` above would leave it with no focus indicator. Restore\n // one — the `:focus-visible` pseudo-class outranks that rule, so this\n // wins regardless of the order Tailwind emits them in. An `outline`\n // rather than the usual `ring`: box-shadow doesn't paint on SVG children.\n '[&_.recharts-brush-traveller:focus-visible]:[outline:3px_solid_var(--ui-focus-primary)] [&_.recharts-brush-traveller:focus-visible]:[outline-offset:1px]',\n // recharts anchors its axis tick text with the *direction-relative*\n // SVG keywords (`text-anchor: start|end`, see `getTickTextAnchor` in\n // `CartesianAxis`), while placing every mark at a computed physical\n // coordinate. Inheriting `direction: rtl` therefore flips only the\n // text: an `end`-anchored Y tick mirrors about its anchor and lands\n // inside the plot (measured: +24px to +39px), rotated ticks shift\n // ~+15px, and a `ReferenceLine` label at the right edge overflows the\n // surface. Pinning the surface keeps the plot's own coordinate system\n // consistent with the geometry recharts computed for it. The chrome\n // that *should* mirror — tooltip and legend — is HTML outside\n // `.recharts-surface`, so it is unaffected.\n //\n // `Treemap` is the exception: its cell labels are HTML in a\n // `<foreignObject>` *inside* the surface, put there precisely so they\n // mirror with the page (see `treemap.tsx`). That is ordinary flow\n // layout, not a computed SVG coordinate, so the pin has to stop at the\n // `<foreignObject>` boundary and hand the page's direction back.\n '[&_.recharts-surface]:[direction:ltr] rtl:[&_.recharts-surface_foreignObject]:[direction:rtl]',\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={resolvedConfig} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({\n id,\n config,\n}: {\n id: string;\n config: ResolvedChartConfig;\n}) => {\n const entries = Object.entries(config);\n\n if (!entries.length) {\n return null;\n }\n\n // One block, no light/dark split: every colour is now a `--ui-dataviz-*`\n // token, and those are `light-dark()` pairs that follow `color-scheme`\n // themselves. The old per-theme `[data-theme='dark']` duplication existed\n // only for hand-written `theme: { light, dark }` config entries, which the\n // palette replaced.\n //\n // Rendered as a text child (not dangerouslySetInnerHTML): React sets it via\n // textContent, which the browser does not HTML-parse, so a `</style>` in a\n // colour can't break out of the tag.\n return (\n <style>\n {`[data-chart=${id}] {\\n${entries\n .map(([key, itemConfig]) => ` --color-${key}: ${itemConfig.color};`)\n .join('\\n')}\\n}`}\n </style>\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\n/** The `content` a caller passes to override the default tooltip (recharts' `Tooltip['content']`). */\nexport type ChartTooltipContentType = React.ComponentProps<\n typeof ChartTooltip\n>['content'];\n\n/**\n * What `getPayloadConfigFromPayload` resolves a payload item to — the lookup can\n * miss, so every consumer has to cope with `undefined`. Derived from the helper\n * rather than restated, so the two can't drift.\n */\ntype ChartItemConfig = ReturnType<typeof getPayloadConfigFromPayload>;\n\n/** One row of the tooltip's payload, after the `active`/empty guard. */\ntype ChartTooltipItem = NonNullable<\n ChartTooltipContentProps['payload']\n>[number];\n\n/**\n * One tooltip row. Its own three-way branching (caller formatter, config icon,\n * default dot) is what drove the nesting in `ChartTooltipContent`; as a\n * component the map body reads as a single element.\n */\nfunction ChartTooltipRow({\n item,\n index,\n payload,\n itemConfig,\n indicatorColor,\n hideIndicator,\n formatter,\n}: {\n item: ChartTooltipItem;\n index: number;\n payload: NonNullable<ChartTooltipContentProps['payload']>;\n itemConfig: ChartItemConfig;\n indicatorColor?: string;\n hideIndicator: boolean;\n formatter: ChartTooltipContentProps['formatter'];\n}) {\n return (\n <div className=\"flex w-full flex-wrap items-center gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\">\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n // A row is always dotted, whatever marker the legend\n // gives that series.\n <div\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: indicatorColor }}\n />\n )\n )}\n {/*\n * `gap-4` puts a floor under the name/value separation.\n * `justify-between` alone only separates them while the\n * container has free space to distribute — which the tooltip's\n * `min-w-[8rem]` guarantees for a short value and not for a\n * long one (a currency `tickFormatter`, a `labelFormatter`\n * with units, a value plus its share), where the two would\n * otherwise butt up against each other. A minimum, so a row\n * with slack renders as before.\n */}\n <div className=\"flex flex-1 items-center justify-between gap-4 leading-none\">\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n {item.value != null && (\n <span className=\"font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n}\n\nfunction ChartTooltipContent({\n active,\n payload,\n label,\n className,\n hideLabel = false,\n hideIndicator = false,\n labelFormatter,\n formatter,\n labelClassName,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = (() => {\n const v =\n !labelKey && typeof label === 'string'\n ? (config[label as keyof typeof config]?.label ?? label)\n : itemConfig?.label;\n\n return typeof v === 'string' || typeof v === 'number' ? v : undefined;\n })();\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'grid min-w-[8rem] items-start gap-1.5 rounded-[var(--ui-tooltip-container-border-radius)] border border-border bg-background px-[var(--ui-tooltip-container-padding-x)] py-[var(--ui-tooltip-container-padding-y)] text-xs text-foreground shadow-md',\n className\n )}\n >\n {tooltipLabel}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n\n return (\n <ChartTooltipRow\n key={key}\n item={item}\n index={index}\n payload={payload}\n itemConfig={getPayloadConfigFromPayload(config, item, key)}\n indicatorColor={color || item.payload.fill || item.color}\n hideIndicator={hideIndicator}\n formatter={formatter}\n />\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\n/**\n * One entry in the `variant=\"list\"` legend: `[dot] [label flex-1] [value]`.\n *\n * The dot is always a circle, regardless of the series' recharts type — the\n * list layout is only used for polar charts (donut, radial) where the fill\n * marker matches the slice/arc color.\n */\nfunction ChartLegendListEntry({\n item,\n itemConfig,\n valueKey,\n valueFormatter,\n}: {\n item: LegendPayload;\n itemConfig: ChartItemConfig;\n valueKey?: string;\n valueFormatter?: (value: string | number) => string;\n}) {\n const raw = valueKey\n ? (item.payload as Record<string, unknown> | undefined)?.[valueKey]\n : undefined;\n const displayValue =\n raw != null\n ? valueFormatter\n ? valueFormatter(raw as string | number)\n : String(raw)\n : undefined;\n\n return (\n <div className=\"flex w-full items-start gap-2 overflow-hidden\">\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n )}\n <span className=\"min-w-0 flex-1 truncate text-xs text-foreground\">\n {itemConfig?.label ?? item.value}\n </span>\n </div>\n {displayValue != null && (\n <span className=\"shrink-0 text-xs font-semibold text-[var(--ui-text-on-surface-link-idle)]\">\n {displayValue}\n </span>\n )}\n </div>\n );\n}\n\n/**\n * One legend entry. Split out so the marker it has to derive from the payload\n * sits next to the markup that uses it, instead of above a nested map body.\n */\nfunction ChartLegendEntry({\n item,\n itemConfig,\n hideIcon,\n}: {\n item: LegendPayload;\n itemConfig: ChartItemConfig;\n hideIcon: boolean;\n}) {\n return (\n <div\n className={cn(\n 'flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground'\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n )}\n {/*\n * Falls back to the series key, the way the tooltip row and the\n * treemap's on-cell label both do. `label` is optional on a\n * `ChartConfig` entry, and `getPayloadConfigFromPayload` can miss\n * entirely, so without this an entry renders as a marker with no\n * text — worst on the charts whose legend is the only place a series\n * is named.\n */}\n {itemConfig?.label ?? item.value}\n </div>\n );\n}\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey,\n config: configFromProps,\n variant = 'default',\n valueKey,\n valueFormatter,\n}: ChartLegendContentProps) {\n // The context read directly rather than through `useChart()`: a caller that\n // passes its own `config` is rendering the legend outside the container, where\n // the context is absent by design rather than by mistake. Every other caller\n // still gets `useChart()`'s error — the legend has no way to label itself\n // without a config, and failing loudly beats rendering an empty row.\n const contextConfig = React.useContext(ChartContext)?.config;\n const config = configFromProps ?? contextConfig;\n\n if (!config) {\n throw new Error(\n 'ChartLegendContent must be used within a <ChartContainer /> or given a `config` prop'\n );\n }\n\n if (!payload?.length) {\n return null;\n }\n\n if (variant === 'list') {\n return (\n <div className={cn('flex flex-col', className)}>\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n return (\n <ChartLegendListEntry\n key={item.value}\n item={item}\n itemConfig={getPayloadConfigFromPayload(config, item, key)}\n valueKey={valueKey}\n valueFormatter={valueFormatter}\n />\n );\n })}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n // Wraps rather than overflowing: a legend with many entries (a treemap's\n // one-per-tile, a pie's one-per-slice) is wider than the chart on a narrow\n // surface, and a row that can't wrap paints past the chart's edge. The\n // column gap is unchanged, so a legend that already fits on one row keeps\n // its exact layout.\n 'flex flex-wrap items-center justify-center gap-x-6 gap-y-2',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n\n return (\n <ChartLegendEntry\n key={item.value}\n item={item}\n itemConfig={getPayloadConfigFromPayload(config, item, key)}\n hideIcon={hideIcon}\n />\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload &&\n typeof payload.payload === 'object' &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n"],"names":["resolveChartColors","config","palette","entries","isAlias","item","_a","index","resolved","key","resolveSeriesColor","pending","changed","target","targetColor","CHART_STATUS_TOKENS","ChartContext","React","useChart","context","ChartContainer","id","className","children","CHART_DEFAULT_PALETTE","props","uniqueId","chartId","resolvedConfig","jsx","jsxs","cn","ChartStyle","RechartsPrimitive","itemConfig","ChartTooltip","ChartTooltipRow","payload","indicatorColor","hideIndicator","formatter","Fragment","ChartTooltipContent","active","label","hideLabel","labelFormatter","labelClassName","color","nameKey","labelKey","tooltipLabel","getPayloadConfigFromPayload","value","v","ChartLegend","ChartLegendListEntry","valueKey","valueFormatter","raw","displayValue","ChartLegendEntry","hideIcon","ChartLegendContent","verticalAlign","configFromProps","variant","contextConfig","payloadPayload","configLabelKey"],"mappings":"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"}
@@ -0,0 +1,310 @@
1
+ import { jsx as C, jsxs as t } from "react/jsx-runtime";
2
+ import * as n from "react";
3
+ const i = {
4
+ "aria-hidden": !0,
5
+ focusable: "false",
6
+ fill: "none",
7
+ xmlns: "http://www.w3.org/2000/svg"
8
+ }, e = 0.45;
9
+ function h({ className: r }) {
10
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 148 92", className: r, children: [
11
+ /* @__PURE__ */ C("ellipse", { cx: "9.2", cy: "82.8", rx: "6.9", ry: "6.9", fill: "currentColor" }),
12
+ /* @__PURE__ */ C("ellipse", { cx: "138", cy: "6.9", rx: "6.9", ry: "6.9", fill: "currentColor" }),
13
+ /* @__PURE__ */ C(
14
+ "path",
15
+ {
16
+ d: "M129.213 14.3192C127.879 17.2623 126.533 19.7915 125.134 21.8601C122.178 26.2285 119.652 27.6 117.3 27.6C115.694 27.6 114.26 27.033 112.65 25.842C111.124 24.7134 109.732 23.2628 108.01 21.4678C107.761 21.2089 107.506 20.9428 107.242 20.6695C103.458 16.7444 97.8376 11.095 88.8771 12.7242C84.1866 13.577 81.1305 17.5699 79.1076 20.8784C77.2754 23.8749 75.5684 27.5813 73.9527 31.0895C73.6606 31.7238 73.3714 32.3516 73.0851 32.9676C71.1236 37.1868 69.2308 41.0019 67.1009 43.8886C64.9517 46.8014 63.0642 48.0758 61.3437 48.3626C60.6908 48.4714 59.63 48.3451 57.8004 47.5114C56.2701 46.8142 54.6945 45.8665 52.7976 44.7255C52.4004 44.4866 51.9885 44.2388 51.5606 43.9835C47.1588 41.357 40.7043 37.609 33.5021 39.2095C29.6669 40.0618 26.2489 42.5651 23.3795 45.4942C20.447 48.4879 17.712 52.3115 15.2865 56.4804C12.6456 61.0194 10.2783 66.1297 8.37485 71.3202C8.64738 71.3009 8.92255 71.2911 9.2 71.2911C12.2343 71.2911 14.9943 72.4653 17.0504 74.3842C18.7583 69.7445 20.8805 65.1598 23.2385 61.107C25.413 57.3696 27.7092 54.2213 29.9516 51.9322C32.2573 49.5786 34.1581 48.4882 35.4978 48.1904C38.6456 47.4909 42.0209 49.0047 46.8465 51.884C47.1889 52.0883 47.5417 52.301 47.9028 52.5187L47.911 52.5236C49.8061 53.6662 51.9293 54.9463 53.9857 55.8833C56.4583 57.0099 59.5389 57.9903 62.8562 57.4374C68.0357 56.5741 71.7754 53.0487 74.5038 49.3508C77.2516 45.6268 79.487 41.0203 81.4276 36.846C81.7469 36.1591 82.0577 35.4854 82.3618 34.8262L82.365 34.8193C83.9947 31.2867 85.4321 28.1709 86.9567 25.6775C89.0266 22.2921 90.6144 21.881 91.9651 21.881C94.9987 21.881 96.6424 22.9306 100.62 27.0555C100.847 27.2912 101.082 27.5365 101.323 27.789L101.325 27.7908C102.985 29.5276 104.972 31.6062 107.18 33.2392C109.846 35.2107 113.156 36.8 117.3 36.8C124.148 36.8 129.096 32.4215 132.754 27.0149C134.443 24.5177 135.999 21.5999 137.469 18.388C134.16 18.2375 131.216 16.689 129.213 14.3192Z",
17
+ fill: "currentColor"
18
+ }
19
+ ),
20
+ /* @__PURE__ */ C(
21
+ "path",
22
+ {
23
+ d: "M20.1556 79.2645C20.5148 80.3785 20.7088 81.5666 20.7088 82.8C20.7088 84.4354 20.7 86.25 20.7088 87.4H32.1999V56.2775C30.5957 58.1198 28.8957 60.5306 27.2144 63.4203C25.004 67.2194 22.9923 71.5585 21.3672 75.9732L20.1556 79.2645Z",
24
+ fill: "currentColor"
25
+ }
26
+ ),
27
+ /* @__PURE__ */ C(
28
+ "path",
29
+ {
30
+ d: "M119.6 41.2712V87.4H142.6V20.5084C142.6 19.975 141.874 19.8168 141.652 20.3018C140.116 23.6578 138.441 26.818 136.564 29.5923C132.91 34.9934 127.457 40.3789 119.6 41.2712Z",
31
+ fill: "currentColor"
32
+ }
33
+ ),
34
+ /* @__PURE__ */ C(
35
+ "path",
36
+ {
37
+ d: "M91.9999 26.5657V87.4H115V41.271C110.666 40.7799 107.17 38.9529 104.445 36.9377C101.917 35.0683 99.7023 32.7512 98.0937 31.0679L97.9976 30.9673C97.7551 30.7136 97.5273 30.4754 97.3086 30.2486C95.3135 28.1795 94.2762 27.2916 93.5591 26.8582C93.1359 26.6025 92.8325 26.4923 92.0883 26.4818C92.0629 26.5047 92.0334 26.5324 91.9999 26.5657Z",
38
+ fill: "currentColor"
39
+ }
40
+ ),
41
+ /* @__PURE__ */ C(
42
+ "path",
43
+ {
44
+ d: "M64.3999 61.8266V87.4H87.3999V34.8918C87.1234 35.4863 86.8382 36.1041 86.5419 36.7463L86.5388 36.7531C86.235 37.4115 85.9214 38.0912 85.5988 38.7852C83.6676 42.9392 81.2614 47.94 78.2053 52.082C75.3059 56.0115 70.8807 60.4657 64.3999 61.8266Z",
45
+ fill: "currentColor"
46
+ }
47
+ ),
48
+ /* @__PURE__ */ C(
49
+ "path",
50
+ {
51
+ d: "M36.7999 52.6333V87.4H59.7999V62.1598C56.7424 61.9605 54.0785 60.9806 52.0784 60.0693C49.7792 59.0216 47.4671 57.6275 45.635 56.5228L45.5277 56.4581C45.1649 56.2394 44.8213 56.0323 44.4894 55.8342C42.1184 54.4195 40.3949 53.522 39.0092 53.0319C37.9439 52.6552 37.2695 52.5893 36.7999 52.6333Z",
52
+ fill: "currentColor"
53
+ }
54
+ )
55
+ ] });
56
+ }
57
+ function a({ className: r }) {
58
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 148 92", className: r, children: [
59
+ /* @__PURE__ */ C("ellipse", { cx: "9.2", cy: "82.8", rx: "6.9", ry: "6.9", fill: "currentColor" }),
60
+ /* @__PURE__ */ C("ellipse", { cx: "138", cy: "6.9", rx: "6.9", ry: "6.9", fill: "currentColor" }),
61
+ /* @__PURE__ */ C(
62
+ "path",
63
+ {
64
+ d: "M129.213 14.3192C127.879 17.2623 126.533 19.7915 125.134 21.8601C122.178 26.2285 119.652 27.6 117.3 27.6C115.694 27.6 114.26 27.033 112.65 25.842C111.124 24.7134 109.732 23.2628 108.01 21.4678C107.761 21.2089 107.506 20.9428 107.242 20.6695C103.458 16.7444 97.8376 11.095 88.8771 12.7242C84.1866 13.577 81.1305 17.5699 79.1076 20.8784C77.2754 23.8749 75.5684 27.5813 73.9527 31.0895C73.6606 31.7238 73.3714 32.3516 73.0851 32.9676C71.1236 37.1868 69.2308 41.0019 67.1009 43.8886C64.9517 46.8014 63.0642 48.0758 61.3437 48.3626C60.6908 48.4714 59.63 48.3451 57.8004 47.5114C56.2701 46.8142 54.6945 45.8665 52.7976 44.7255C52.4004 44.4866 51.9885 44.2388 51.5606 43.9835C47.1588 41.357 40.7043 37.609 33.5021 39.2095C29.6669 40.0618 26.2489 42.5651 23.3795 45.4942C20.447 48.4879 17.712 52.3115 15.2865 56.4804C12.6456 61.0194 10.2783 66.1297 8.37485 71.3202C8.64738 71.3009 8.92255 71.2911 9.2 71.2911C12.2343 71.2911 14.9943 72.4653 17.0504 74.3842C18.7583 69.7445 20.8805 65.1598 23.2385 61.107C25.413 57.3696 27.7092 54.2213 29.9516 51.9322C32.2573 49.5786 34.1581 48.4882 35.4978 48.1904C38.6456 47.4909 42.0209 49.0047 46.8465 51.884C47.1889 52.0883 47.5417 52.301 47.9028 52.5187L47.911 52.5236C49.8061 53.6662 51.9293 54.9463 53.9857 55.8833C56.4583 57.0099 59.5389 57.9903 62.8562 57.4374C68.0357 56.5741 71.7754 53.0487 74.5038 49.3508C77.2516 45.6268 79.487 41.0203 81.4276 36.846C81.7469 36.1591 82.0577 35.4854 82.3618 34.8262L82.365 34.8193C83.9947 31.2867 85.4321 28.1709 86.9567 25.6775C89.0266 22.2921 90.6144 21.881 91.9651 21.881C94.9987 21.881 96.6424 22.9306 100.62 27.0555C100.847 27.2912 101.082 27.5365 101.323 27.789L101.325 27.7908C102.985 29.5276 104.972 31.6062 107.18 33.2392C109.846 35.2107 113.156 36.8 117.3 36.8C124.148 36.8 129.096 32.4215 132.754 27.0149C134.443 24.5177 135.999 21.5999 137.469 18.388C134.16 18.2375 131.216 16.689 129.213 14.3192Z",
65
+ fill: "currentColor"
66
+ }
67
+ )
68
+ ] });
69
+ }
70
+ function f({ className: r }) {
71
+ return /* @__PURE__ */ C("svg", { ...i, viewBox: "0 0 148 92", className: r, children: [13.8, 46, 78.2].map((l) => /* @__PURE__ */ t(n.Fragment, { children: [
72
+ /* @__PURE__ */ C("ellipse", { cx: "16.1", cy: l, rx: "9.2", ry: "9.2", fill: "currentColor" }),
73
+ /* @__PURE__ */ C(
74
+ "rect",
75
+ {
76
+ x: "32.2",
77
+ y: l - 6.9,
78
+ width: "105.8",
79
+ height: "13.8",
80
+ rx: "6.9",
81
+ fill: "currentColor"
82
+ }
83
+ )
84
+ ] }, l)) });
85
+ }
86
+ function u({ className: r }) {
87
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 148 92", className: r, children: [
88
+ [25.179, 48.179, 71.179].map((l) => /* @__PURE__ */ t(n.Fragment, { children: [
89
+ /* @__PURE__ */ C(
90
+ "ellipse",
91
+ {
92
+ cx: "105.679",
93
+ cy: l,
94
+ rx: "6.9",
95
+ ry: "6.9",
96
+ fill: "currentColor"
97
+ }
98
+ ),
99
+ /* @__PURE__ */ C(
100
+ "rect",
101
+ {
102
+ x: "117.179",
103
+ y: l - 4.6,
104
+ width: "27.6",
105
+ height: "9.2",
106
+ rx: "4.6",
107
+ fill: "currentColor"
108
+ }
109
+ )
110
+ ] }, l)),
111
+ /* @__PURE__ */ C(
112
+ "path",
113
+ {
114
+ d: "M2.23955 48.179C2.50058 53.1318 3.60319 58.0098 5.50544 62.6023C5.73927 63.1668 5.9847 63.7258 6.2415 64.279C8.39654 68.9214 11.3526 73.1537 14.9784 76.7796C18.6043 80.4054 22.8365 83.3614 27.479 85.5165C28.0322 85.7733 28.5912 86.0187 29.1557 86.2525C33.7482 88.1548 38.6262 89.2574 43.579 89.5184V75.6918C28.8994 74.5752 17.1828 62.8585 16.0661 48.179H2.23955Z",
115
+ fill: "currentColor"
116
+ }
117
+ ),
118
+ /* @__PURE__ */ C(
119
+ "path",
120
+ {
121
+ d: "M27.479 6.24149C32.5057 3.90815 37.9667 2.53507 43.579 2.2395V16.0661C28.8995 17.1828 17.1828 28.8995 16.0661 43.579H2.2395C2.53507 37.9667 3.90815 32.5057 6.2415 27.479C8.37842 22.8754 11.3207 18.6361 14.9784 14.9784C18.6361 11.3207 22.8754 8.37842 27.479 6.24149Z",
122
+ fill: "currentColor"
123
+ }
124
+ ),
125
+ /* @__PURE__ */ C(
126
+ "path",
127
+ {
128
+ d: "M48.179 16.0661C63.6176 17.2406 75.779 30.1396 75.779 45.879C75.779 61.6184 63.6176 74.5174 48.179 75.6918V89.5184C53.1317 89.2574 58.0098 88.1548 62.6022 86.2525C63.1668 86.0187 63.7258 85.7733 64.279 85.5165C68.9214 83.3614 73.1537 80.4054 76.7795 76.7796C80.8375 72.7216 84.0564 67.9042 86.2525 62.6023C88.4486 57.3003 89.579 51.6178 89.579 45.879C89.579 40.1402 88.4487 34.4577 86.2525 29.1557C84.0564 23.8538 80.8375 19.0364 76.7796 14.9784C73.1537 11.3526 68.9214 8.39656 64.279 6.24151C63.7258 5.98472 63.1668 5.73929 62.6023 5.50546C58.0098 3.60321 53.1318 2.50059 48.179 2.23956V16.0661Z",
129
+ fill: "currentColor"
130
+ }
131
+ )
132
+ ] });
133
+ }
134
+ function L({ className: r }) {
135
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 256 120", className: r, children: [
136
+ /* @__PURE__ */ C(
137
+ "path",
138
+ {
139
+ d: "M97.8281 29.4253L75.4796 7.42528C74.2044 6.16997 75.0932 4 76.8826 4H179.051C180.85 4 181.734 6.18882 180.441 7.43841L157.668 29.4384C157.295 29.7987 156.797 30 156.278 30H99.2312C98.7062 30 98.2022 29.7936 97.8281 29.4253Z",
140
+ fill: "currentColor"
141
+ }
142
+ ),
143
+ /* @__PURE__ */ C(
144
+ "path",
145
+ {
146
+ d: "M152.797 34H102.222C100.738 34 99.7713 35.558 100.429 36.8873L111.32 58.8873C111.658 59.5688 112.352 60 113.113 60H142.047C142.812 60 143.509 59.5646 143.844 58.878L154.594 36.878C155.243 35.5494 154.276 34 152.797 34Z",
147
+ fill: "currentColor"
148
+ }
149
+ ),
150
+ /* @__PURE__ */ C(
151
+ "path",
152
+ {
153
+ d: "M140.242 64H114.775C113.41 64 112.446 65.3374 112.878 66.6325L120.211 88.6325C120.483 89.4491 121.247 90 122.108 90H133.05C133.915 90 134.682 89.4438 134.951 88.6215L142.143 66.6215C142.566 65.3286 141.602 64 140.242 64Z",
154
+ fill: "currentColor"
155
+ }
156
+ ),
157
+ /* @__PURE__ */ C(
158
+ "path",
159
+ {
160
+ d: "M132.415 94H123.539C122.245 94 121.291 95.2101 121.594 96.4681L125.868 114.222C126.355 116.246 129.226 116.271 129.749 114.255L134.351 96.5019C134.68 95.2355 133.724 94 132.415 94Z",
161
+ fill: "currentColor"
162
+ }
163
+ )
164
+ ] });
165
+ }
166
+ function d({ className: r }) {
167
+ return /* @__PURE__ */ C("svg", { ...i, viewBox: "0 0 116 121", className: r, children: /* @__PURE__ */ C(
168
+ "path",
169
+ {
170
+ d: "M66.3037 0C65.0751 0 63.8968 0.491806 63.028 1.36722C62.1592 2.24264 61.6711 3.42996 61.6711 4.66798C61.6711 5.90601 62.1592 7.09333 63.028 7.96875C63.8968 8.84416 65.0751 9.33597 66.3037 9.33597C67.5323 9.33597 68.7107 8.84416 69.5794 7.96875C70.4482 7.09333 70.9363 5.90601 70.9363 4.66798C70.9363 3.42996 70.4482 2.24264 69.5794 1.36722C68.7107 0.491806 67.5323 0 66.3037 0ZM57.0928 5.6344L8.37844 41.3007C9.86724 41.9643 11.1562 43.0115 12.1156 44.3367C13.075 45.662 13.671 47.2186 13.8434 48.8497L62.5578 13.1834C61.069 12.5198 59.78 11.4727 58.8206 10.1474C57.8612 8.82215 57.2653 7.26557 57.0928 5.6344ZM75.0621 7.67664C74.5389 9.23233 73.6175 10.6214 72.3911 11.7035C71.1646 12.7856 69.6766 13.5225 68.0771 13.8398L101.609 52.5878C102.133 51.0378 103.053 49.6541 104.276 48.5755C105.499 47.4969 106.982 46.7614 108.576 46.4428L75.0621 7.67664ZM64.8922 17.2497L61.6711 19.6019V63.583L20.1408 49.9985L16.9197 52.3507L21.6609 60.3191L58.7939 72.4814L42.3989 95.2013L44.7152 99.0853L50.5421 99.8146L66.3037 77.9699L85.214 104.191L91.5114 104.993L92.7057 98.6841L73.8135 72.4814L99.2927 64.1301H99.3108L100.415 58.2951L97.4831 54.9035L70.9363 63.583V24.2334L64.8922 17.2497ZM4.63257 45.1482C3.40394 45.1482 2.22563 45.64 1.35685 46.5154C0.488074 47.3908 0 48.5781 0 49.8161C0 51.0542 0.488074 52.2415 1.35685 53.1169C2.22563 53.9923 3.40394 54.4841 4.63257 54.4841C5.86121 54.4841 7.03952 53.9923 7.90829 53.1169C8.77707 52.2415 9.26514 51.0542 9.26514 49.8161C9.26514 48.5781 8.77707 47.3908 7.90829 46.5154C7.03952 45.64 5.86121 45.1482 4.63257 45.1482ZM110.367 50.9284C109.139 50.9284 107.96 51.4202 107.092 52.2956C106.223 53.1711 105.735 54.3584 105.735 55.5964C105.735 56.8344 106.223 58.0218 107.092 58.8972C107.96 59.7726 109.139 60.2644 110.367 60.2644C111.596 60.2644 112.774 59.7726 113.643 58.8972C114.512 58.0218 115 56.8344 115 55.5964C115 54.3584 114.512 53.1711 113.643 52.2956C112.774 51.4202 111.596 50.9284 110.367 50.9284ZM12.7034 54.3565C11.9131 55.7878 10.763 56.9844 9.36857 57.8261C7.97416 58.6679 6.38452 59.1252 4.75924 59.1521L30.9803 103.261C31.7683 101.826 32.9174 100.626 34.312 99.7809C35.7065 98.9358 37.2974 98.4758 38.9245 98.4471L12.7034 54.3565ZM104.305 62.6349L95.9268 106.525C96.9095 106.177 97.9434 105.998 98.9851 105.996C101.212 105.997 103.364 106.806 105.047 108.275L113.389 64.4036C112.418 64.7478 111.397 64.9265 110.367 64.9324C108.138 64.9263 105.986 64.1106 104.305 62.6349ZM39.0692 103.115C37.8406 103.115 36.6623 103.607 35.7935 104.482C34.9247 105.358 34.4367 106.545 34.4367 107.783C34.4367 109.021 34.9247 110.208 35.7935 111.084C36.6623 111.959 37.8406 112.451 39.0692 112.451C40.2979 112.451 41.4762 111.959 42.345 111.084C43.2137 110.208 43.7018 109.021 43.7018 107.783C43.7018 106.545 43.2137 105.358 42.345 104.482C41.4762 103.607 40.2979 103.115 39.0692 103.115ZM47.6105 104.154C48.0897 105.303 48.3358 106.537 48.3344 107.783C48.3331 109.818 47.6723 111.796 46.4524 113.417L90.4437 118.961C89.9646 117.812 89.7184 116.578 89.7199 115.332C89.7212 113.297 90.382 111.319 91.6019 109.698L47.6105 104.154ZM98.9851 110.664C97.7564 110.664 96.5781 111.156 95.7093 112.031C94.8406 112.907 94.3525 114.094 94.3525 115.332C94.3525 116.57 94.8406 117.757 95.7093 118.633C96.5781 119.508 97.7564 120 98.9851 120C100.214 120 101.392 119.508 102.261 118.633C103.13 117.757 103.618 116.57 103.618 115.332C103.618 114.094 103.13 112.907 102.261 112.031C101.392 111.156 100.214 110.664 98.9851 110.664Z",
171
+ fill: "currentColor"
172
+ }
173
+ ) });
174
+ }
175
+ function p({ className: r }) {
176
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 96 92", className: r, children: [
177
+ /* @__PURE__ */ C(
178
+ "path",
179
+ {
180
+ d: "M90.1 81.9571L18.1429 81.9571C10.8843 81.9571 5 76.0729 5 68.8143L5 10",
181
+ stroke: "currentColor",
182
+ strokeWidth: "10",
183
+ strokeLinecap: "round"
184
+ }
185
+ ),
186
+ [
187
+ [53.5, 63.5],
188
+ [33.5, 43.5],
189
+ [60.5, 30.5],
190
+ [33.5, 13.5],
191
+ [73.5, 49.5]
192
+ ].map(([l, o]) => /* @__PURE__ */ C(
193
+ "circle",
194
+ {
195
+ cx: l,
196
+ cy: o,
197
+ r: "6.5",
198
+ fill: "currentColor"
199
+ },
200
+ `${l}-${o}`
201
+ ))
202
+ ] });
203
+ }
204
+ function s({ className: r }) {
205
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 148 92", className: r, children: [
206
+ /* @__PURE__ */ C(
207
+ "path",
208
+ {
209
+ d: "M4.60001 9.20001C4.60001 6.6595 6.6595 4.60001 9.20001 4.60001H73.6V87.4H9.20001C6.6595 87.4 4.60001 85.3405 4.60001 82.8V9.20001Z",
210
+ fill: "currentColor"
211
+ }
212
+ ),
213
+ /* @__PURE__ */ C(
214
+ "path",
215
+ {
216
+ d: "M78.2 50.6H142.6V82.8C142.6 85.3405 140.541 87.4 138 87.4H78.2V50.6Z",
217
+ fill: "currentColor"
218
+ }
219
+ ),
220
+ /* @__PURE__ */ C("rect", { x: "78.2", y: "4.6", width: "29.9", height: "41.4", fill: "currentColor" }),
221
+ /* @__PURE__ */ C(
222
+ "path",
223
+ {
224
+ d: "M112.7 4.60001H138C140.541 4.60001 142.6 6.6595 142.6 9.20001V46H112.7V4.60001Z",
225
+ fill: "currentColor"
226
+ }
227
+ )
228
+ ] });
229
+ }
230
+ function x({ className: r }) {
231
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 64 40", className: r, children: [
232
+ /* @__PURE__ */ C("path", { d: "M 6 2 L 13 2 L 13 10 L 4 10 L 4 4 C 4 2.9 4.9 2 6 2 Z", fill: "currentColor" }),
233
+ /* @__PURE__ */ C("rect", { x: 15, y: 2, width: 24, height: 8, fill: "currentColor" }),
234
+ /* @__PURE__ */ C("path", { d: "M 41 2 L 62 2 C 63.1 2 64 2.9 64 4 L 64 10 L 41 10 Z", fill: "currentColor" }),
235
+ [12, 22].map((l) => /* @__PURE__ */ t(n.Fragment, { children: [
236
+ /* @__PURE__ */ C("rect", { x: 4, y: l, width: 9, height: 8, fill: "currentColor", fillOpacity: e }),
237
+ /* @__PURE__ */ C("rect", { x: 15, y: l, width: 24, height: 8, fill: "currentColor", fillOpacity: e }),
238
+ /* @__PURE__ */ C("rect", { x: 41, y: l, width: 23, height: 8, fill: "currentColor", fillOpacity: e })
239
+ ] }, l)),
240
+ /* @__PURE__ */ C(
241
+ "path",
242
+ {
243
+ d: "M 4 32 L 13 32 L 13 40 L 6 40 C 4.9 40 4 39.1 4 38 Z",
244
+ fill: "currentColor",
245
+ fillOpacity: e
246
+ }
247
+ ),
248
+ /* @__PURE__ */ C("rect", { x: 15, y: 32, width: 24, height: 8, fill: "currentColor", fillOpacity: e }),
249
+ /* @__PURE__ */ C(
250
+ "path",
251
+ {
252
+ d: "M 41 32 L 64 32 L 64 38 C 64 39.1 63.1 40 62 40 L 41 40 Z",
253
+ fill: "currentColor",
254
+ fillOpacity: e
255
+ }
256
+ )
257
+ ] });
258
+ }
259
+ function M({ className: r }) {
260
+ return /* @__PURE__ */ t("svg", { ...i, viewBox: "0 0 148 92", className: r, children: [
261
+ /* @__PURE__ */ C("rect", { x: 4, y: 5, width: 10, height: 36, rx: 2, fill: "currentColor" }),
262
+ /* @__PURE__ */ C("rect", { x: 4, y: 51, width: 10, height: 36, rx: 2, fill: "currentColor" }),
263
+ /* @__PURE__ */ C("rect", { x: 134, y: 5, width: 10, height: 22, rx: 2, fill: "currentColor" }),
264
+ /* @__PURE__ */ C("rect", { x: 134, y: 35, width: 10, height: 22, rx: 2, fill: "currentColor" }),
265
+ /* @__PURE__ */ C("rect", { x: 134, y: 65, width: 10, height: 22, rx: 2, fill: "currentColor" }),
266
+ /* @__PURE__ */ C("path", { d: "M 14 5 C 74 5 74 5 134 5 L 134 27 C 74 27 74 27 14 27 Z", fill: "currentColor", fillOpacity: e }),
267
+ /* @__PURE__ */ C("path", { d: "M 14 27 C 74 27 74 35 134 35 L 134 57 C 74 57 74 41 14 41 Z", fill: "currentColor", fillOpacity: e }),
268
+ /* @__PURE__ */ C("path", { d: "M 14 51 C 74 51 74 65 134 65 L 134 87 C 74 87 74 87 14 87 Z", fill: "currentColor", fillOpacity: e })
269
+ ] });
270
+ }
271
+ function Z({ className: r }) {
272
+ return /* @__PURE__ */ C("svg", { ...i, viewBox: "0 0 148 92", className: r, children: [
273
+ [13.8, 4.6],
274
+ [13.8, 55.2],
275
+ [87.4, 4.6],
276
+ [87.4, 55.2]
277
+ ].map(([o, c]) => /* @__PURE__ */ t(n.Fragment, { children: [
278
+ /* @__PURE__ */ C("circle", { cx: o + 9.2, cy: c + 9.2, r: "9.2", fill: "currentColor" }),
279
+ /* @__PURE__ */ C(
280
+ "rect",
281
+ {
282
+ x: o,
283
+ y: c + 23,
284
+ width: "46",
285
+ height: "9.2",
286
+ rx: "4.6",
287
+ fill: "currentColor",
288
+ fillOpacity: e
289
+ }
290
+ )
291
+ ] }, `${o}-${c}`)) });
292
+ }
293
+ const w = {
294
+ area: h,
295
+ bar: f,
296
+ line: a,
297
+ donut: u,
298
+ radial: u,
299
+ funnel: L,
300
+ radar: d,
301
+ sankey: M,
302
+ scatter: p,
303
+ treemap: s,
304
+ table: x,
305
+ text: Z
306
+ };
307
+ export {
308
+ w as CHART_STATE_ILLUSTRATIONS
309
+ };
310
+ //# sourceMappingURL=chart-state-illustrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-state-illustrations.js","sources":["../../../../src/components/ui/chart-state/chart-state-illustrations.tsx"],"sourcesContent":["import * as React from 'react';\n\n// The per-type empty-state artwork, one silhouette per chart type.\n//\n// Geometry is exported straight from the Figma empty-state instances rather than\n// redrawn, so a curve here is the curve the design draws: ChartArea `9893:4515`,\n// ChartBar `9893:18409`, ChartDonut `9893:4096`, ChartFunnel `9893:18629`,\n// ChartLine `9893:19484`, ChartRadar `9893:20006`, ChartScatter `9899:21900`,\n// ChartTreeMap `9899:21844`, CardWidgetTable `9899:21446`, CardWidgetText\n// `9899:21112`.\n//\n// Every fill is `currentColor`, so the tone is set once by the container (see\n// `chart-state.tsx`) and follows brand and theme overrides. Figma binds the\n// artwork to `components/Avatar/color/blue` — almost certainly an incidental\n// swatch pick, and the wrong tier for a chart to reference — so `ChartState`\n// points at a semantic token with the identical light/dark pair instead.\n//\n// Where the design used two tones (the table and metric-list silhouettes tint a\n// header row darker than the body rows) that hierarchy is kept as `fill-opacity`\n// on one colour. Those two are also the only ones whose Figma fills are raw\n// hexes rather than bound variables — worth fixing upstream, but normalising\n// here means the drift doesn't reach the kit.\n\n/** Shared props: these are decorative, so they are hidden from AT. */\nconst svg = {\n 'aria-hidden': true,\n focusable: 'false',\n fill: 'none',\n xmlns: 'http://www.w3.org/2000/svg',\n} as const;\n\n/** Data rows (table) and label bars (text) — secondary tier on a light semantic token. */\nconst SECONDARY = 0.45;\n\nfunction AreaIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 148 92\" className={className}>\n <ellipse cx=\"9.2\" cy=\"82.8\" rx=\"6.9\" ry=\"6.9\" fill=\"currentColor\" />\n <ellipse cx=\"138\" cy=\"6.9\" rx=\"6.9\" ry=\"6.9\" fill=\"currentColor\" />\n <path\n d=\"M129.213 14.3192C127.879 17.2623 126.533 19.7915 125.134 21.8601C122.178 26.2285 119.652 27.6 117.3 27.6C115.694 27.6 114.26 27.033 112.65 25.842C111.124 24.7134 109.732 23.2628 108.01 21.4678C107.761 21.2089 107.506 20.9428 107.242 20.6695C103.458 16.7444 97.8376 11.095 88.8771 12.7242C84.1866 13.577 81.1305 17.5699 79.1076 20.8784C77.2754 23.8749 75.5684 27.5813 73.9527 31.0895C73.6606 31.7238 73.3714 32.3516 73.0851 32.9676C71.1236 37.1868 69.2308 41.0019 67.1009 43.8886C64.9517 46.8014 63.0642 48.0758 61.3437 48.3626C60.6908 48.4714 59.63 48.3451 57.8004 47.5114C56.2701 46.8142 54.6945 45.8665 52.7976 44.7255C52.4004 44.4866 51.9885 44.2388 51.5606 43.9835C47.1588 41.357 40.7043 37.609 33.5021 39.2095C29.6669 40.0618 26.2489 42.5651 23.3795 45.4942C20.447 48.4879 17.712 52.3115 15.2865 56.4804C12.6456 61.0194 10.2783 66.1297 8.37485 71.3202C8.64738 71.3009 8.92255 71.2911 9.2 71.2911C12.2343 71.2911 14.9943 72.4653 17.0504 74.3842C18.7583 69.7445 20.8805 65.1598 23.2385 61.107C25.413 57.3696 27.7092 54.2213 29.9516 51.9322C32.2573 49.5786 34.1581 48.4882 35.4978 48.1904C38.6456 47.4909 42.0209 49.0047 46.8465 51.884C47.1889 52.0883 47.5417 52.301 47.9028 52.5187L47.911 52.5236C49.8061 53.6662 51.9293 54.9463 53.9857 55.8833C56.4583 57.0099 59.5389 57.9903 62.8562 57.4374C68.0357 56.5741 71.7754 53.0487 74.5038 49.3508C77.2516 45.6268 79.487 41.0203 81.4276 36.846C81.7469 36.1591 82.0577 35.4854 82.3618 34.8262L82.365 34.8193C83.9947 31.2867 85.4321 28.1709 86.9567 25.6775C89.0266 22.2921 90.6144 21.881 91.9651 21.881C94.9987 21.881 96.6424 22.9306 100.62 27.0555C100.847 27.2912 101.082 27.5365 101.323 27.789L101.325 27.7908C102.985 29.5276 104.972 31.6062 107.18 33.2392C109.846 35.2107 113.156 36.8 117.3 36.8C124.148 36.8 129.096 32.4215 132.754 27.0149C134.443 24.5177 135.999 21.5999 137.469 18.388C134.16 18.2375 131.216 16.689 129.213 14.3192Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M20.1556 79.2645C20.5148 80.3785 20.7088 81.5666 20.7088 82.8C20.7088 84.4354 20.7 86.25 20.7088 87.4H32.1999V56.2775C30.5957 58.1198 28.8957 60.5306 27.2144 63.4203C25.004 67.2194 22.9923 71.5585 21.3672 75.9732L20.1556 79.2645Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M119.6 41.2712V87.4H142.6V20.5084C142.6 19.975 141.874 19.8168 141.652 20.3018C140.116 23.6578 138.441 26.818 136.564 29.5923C132.91 34.9934 127.457 40.3789 119.6 41.2712Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M91.9999 26.5657V87.4H115V41.271C110.666 40.7799 107.17 38.9529 104.445 36.9377C101.917 35.0683 99.7023 32.7512 98.0937 31.0679L97.9976 30.9673C97.7551 30.7136 97.5273 30.4754 97.3086 30.2486C95.3135 28.1795 94.2762 27.2916 93.5591 26.8582C93.1359 26.6025 92.8325 26.4923 92.0883 26.4818C92.0629 26.5047 92.0334 26.5324 91.9999 26.5657Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M64.3999 61.8266V87.4H87.3999V34.8918C87.1234 35.4863 86.8382 36.1041 86.5419 36.7463L86.5388 36.7531C86.235 37.4115 85.9214 38.0912 85.5988 38.7852C83.6676 42.9392 81.2614 47.94 78.2053 52.082C75.3059 56.0115 70.8807 60.4657 64.3999 61.8266Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M36.7999 52.6333V87.4H59.7999V62.1598C56.7424 61.9605 54.0785 60.9806 52.0784 60.0693C49.7792 59.0216 47.4671 57.6275 45.635 56.5228L45.5277 56.4581C45.1649 56.2394 44.8213 56.0323 44.4894 55.8342C42.1184 54.4195 40.3949 53.522 39.0092 53.0319C37.9439 52.6552 37.2695 52.5893 36.7999 52.6333Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\n// The line silhouette is the area one without its filled columns — the same\n// curve, so the two read as siblings the way the mockups do.\nfunction LineIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 148 92\" className={className}>\n <ellipse cx=\"9.2\" cy=\"82.8\" rx=\"6.9\" ry=\"6.9\" fill=\"currentColor\" />\n <ellipse cx=\"138\" cy=\"6.9\" rx=\"6.9\" ry=\"6.9\" fill=\"currentColor\" />\n <path\n d=\"M129.213 14.3192C127.879 17.2623 126.533 19.7915 125.134 21.8601C122.178 26.2285 119.652 27.6 117.3 27.6C115.694 27.6 114.26 27.033 112.65 25.842C111.124 24.7134 109.732 23.2628 108.01 21.4678C107.761 21.2089 107.506 20.9428 107.242 20.6695C103.458 16.7444 97.8376 11.095 88.8771 12.7242C84.1866 13.577 81.1305 17.5699 79.1076 20.8784C77.2754 23.8749 75.5684 27.5813 73.9527 31.0895C73.6606 31.7238 73.3714 32.3516 73.0851 32.9676C71.1236 37.1868 69.2308 41.0019 67.1009 43.8886C64.9517 46.8014 63.0642 48.0758 61.3437 48.3626C60.6908 48.4714 59.63 48.3451 57.8004 47.5114C56.2701 46.8142 54.6945 45.8665 52.7976 44.7255C52.4004 44.4866 51.9885 44.2388 51.5606 43.9835C47.1588 41.357 40.7043 37.609 33.5021 39.2095C29.6669 40.0618 26.2489 42.5651 23.3795 45.4942C20.447 48.4879 17.712 52.3115 15.2865 56.4804C12.6456 61.0194 10.2783 66.1297 8.37485 71.3202C8.64738 71.3009 8.92255 71.2911 9.2 71.2911C12.2343 71.2911 14.9943 72.4653 17.0504 74.3842C18.7583 69.7445 20.8805 65.1598 23.2385 61.107C25.413 57.3696 27.7092 54.2213 29.9516 51.9322C32.2573 49.5786 34.1581 48.4882 35.4978 48.1904C38.6456 47.4909 42.0209 49.0047 46.8465 51.884C47.1889 52.0883 47.5417 52.301 47.9028 52.5187L47.911 52.5236C49.8061 53.6662 51.9293 54.9463 53.9857 55.8833C56.4583 57.0099 59.5389 57.9903 62.8562 57.4374C68.0357 56.5741 71.7754 53.0487 74.5038 49.3508C77.2516 45.6268 79.487 41.0203 81.4276 36.846C81.7469 36.1591 82.0577 35.4854 82.3618 34.8262L82.365 34.8193C83.9947 31.2867 85.4321 28.1709 86.9567 25.6775C89.0266 22.2921 90.6144 21.881 91.9651 21.881C94.9987 21.881 96.6424 22.9306 100.62 27.0555C100.847 27.2912 101.082 27.5365 101.323 27.789L101.325 27.7908C102.985 29.5276 104.972 31.6062 107.18 33.2392C109.846 35.2107 113.156 36.8 117.3 36.8C124.148 36.8 129.096 32.4215 132.754 27.0149C134.443 24.5177 135.999 21.5999 137.469 18.388C134.16 18.2375 131.216 16.689 129.213 14.3192Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\n// Bar: the design draws the *horizontal* silhouette (a dot and a rounded row per\n// category), which is what both bar shapes fall back to when there's no data.\nfunction BarIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 148 92\" className={className}>\n {[13.8, 46, 78.2].map((cy) => (\n <React.Fragment key={cy}>\n <ellipse cx=\"16.1\" cy={cy} rx=\"9.2\" ry=\"9.2\" fill=\"currentColor\" />\n <rect\n x=\"32.2\"\n y={cy - 6.9}\n width=\"105.8\"\n height=\"13.8\"\n rx=\"6.9\"\n fill=\"currentColor\"\n />\n </React.Fragment>\n ))}\n </svg>\n );\n}\n\nfunction DonutIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 148 92\" className={className}>\n {[25.179, 48.179, 71.179].map((cy) => (\n <React.Fragment key={cy}>\n <ellipse\n cx=\"105.679\"\n cy={cy}\n rx=\"6.9\"\n ry=\"6.9\"\n fill=\"currentColor\"\n />\n <rect\n x=\"117.179\"\n y={cy - 4.6}\n width=\"27.6\"\n height=\"9.2\"\n rx=\"4.6\"\n fill=\"currentColor\"\n />\n </React.Fragment>\n ))}\n <path\n d=\"M2.23955 48.179C2.50058 53.1318 3.60319 58.0098 5.50544 62.6023C5.73927 63.1668 5.9847 63.7258 6.2415 64.279C8.39654 68.9214 11.3526 73.1537 14.9784 76.7796C18.6043 80.4054 22.8365 83.3614 27.479 85.5165C28.0322 85.7733 28.5912 86.0187 29.1557 86.2525C33.7482 88.1548 38.6262 89.2574 43.579 89.5184V75.6918C28.8994 74.5752 17.1828 62.8585 16.0661 48.179H2.23955Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M27.479 6.24149C32.5057 3.90815 37.9667 2.53507 43.579 2.2395V16.0661C28.8995 17.1828 17.1828 28.8995 16.0661 43.579H2.2395C2.53507 37.9667 3.90815 32.5057 6.2415 27.479C8.37842 22.8754 11.3207 18.6361 14.9784 14.9784C18.6361 11.3207 22.8754 8.37842 27.479 6.24149Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M48.179 16.0661C63.6176 17.2406 75.779 30.1396 75.779 45.879C75.779 61.6184 63.6176 74.5174 48.179 75.6918V89.5184C53.1317 89.2574 58.0098 88.1548 62.6022 86.2525C63.1668 86.0187 63.7258 85.7733 64.279 85.5165C68.9214 83.3614 73.1537 80.4054 76.7795 76.7796C80.8375 72.7216 84.0564 67.9042 86.2525 62.6023C88.4486 57.3003 89.579 51.6178 89.579 45.879C89.579 40.1402 88.4487 34.4577 86.2525 29.1557C84.0564 23.8538 80.8375 19.0364 76.7796 14.9784C73.1537 11.3526 68.9214 8.39656 64.279 6.24151C63.7258 5.98472 63.1668 5.73929 62.6023 5.50546C58.0098 3.60321 53.1318 2.50059 48.179 2.23956V16.0661Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\nfunction FunnelIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 256 120\" className={className}>\n <path\n d=\"M97.8281 29.4253L75.4796 7.42528C74.2044 6.16997 75.0932 4 76.8826 4H179.051C180.85 4 181.734 6.18882 180.441 7.43841L157.668 29.4384C157.295 29.7987 156.797 30 156.278 30H99.2312C98.7062 30 98.2022 29.7936 97.8281 29.4253Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M152.797 34H102.222C100.738 34 99.7713 35.558 100.429 36.8873L111.32 58.8873C111.658 59.5688 112.352 60 113.113 60H142.047C142.812 60 143.509 59.5646 143.844 58.878L154.594 36.878C155.243 35.5494 154.276 34 152.797 34Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M140.242 64H114.775C113.41 64 112.446 65.3374 112.878 66.6325L120.211 88.6325C120.483 89.4491 121.247 90 122.108 90H133.05C133.915 90 134.682 89.4438 134.951 88.6215L142.143 66.6215C142.566 65.3286 141.602 64 140.242 64Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M132.415 94H123.539C122.245 94 121.291 95.2101 121.594 96.4681L125.868 114.222C126.355 116.246 129.226 116.271 129.749 114.255L134.351 96.5019C134.68 95.2355 133.724 94 132.415 94Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\nfunction RadarIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 116 121\" className={className}>\n <path\n d=\"M66.3037 0C65.0751 0 63.8968 0.491806 63.028 1.36722C62.1592 2.24264 61.6711 3.42996 61.6711 4.66798C61.6711 5.90601 62.1592 7.09333 63.028 7.96875C63.8968 8.84416 65.0751 9.33597 66.3037 9.33597C67.5323 9.33597 68.7107 8.84416 69.5794 7.96875C70.4482 7.09333 70.9363 5.90601 70.9363 4.66798C70.9363 3.42996 70.4482 2.24264 69.5794 1.36722C68.7107 0.491806 67.5323 0 66.3037 0ZM57.0928 5.6344L8.37844 41.3007C9.86724 41.9643 11.1562 43.0115 12.1156 44.3367C13.075 45.662 13.671 47.2186 13.8434 48.8497L62.5578 13.1834C61.069 12.5198 59.78 11.4727 58.8206 10.1474C57.8612 8.82215 57.2653 7.26557 57.0928 5.6344ZM75.0621 7.67664C74.5389 9.23233 73.6175 10.6214 72.3911 11.7035C71.1646 12.7856 69.6766 13.5225 68.0771 13.8398L101.609 52.5878C102.133 51.0378 103.053 49.6541 104.276 48.5755C105.499 47.4969 106.982 46.7614 108.576 46.4428L75.0621 7.67664ZM64.8922 17.2497L61.6711 19.6019V63.583L20.1408 49.9985L16.9197 52.3507L21.6609 60.3191L58.7939 72.4814L42.3989 95.2013L44.7152 99.0853L50.5421 99.8146L66.3037 77.9699L85.214 104.191L91.5114 104.993L92.7057 98.6841L73.8135 72.4814L99.2927 64.1301H99.3108L100.415 58.2951L97.4831 54.9035L70.9363 63.583V24.2334L64.8922 17.2497ZM4.63257 45.1482C3.40394 45.1482 2.22563 45.64 1.35685 46.5154C0.488074 47.3908 0 48.5781 0 49.8161C0 51.0542 0.488074 52.2415 1.35685 53.1169C2.22563 53.9923 3.40394 54.4841 4.63257 54.4841C5.86121 54.4841 7.03952 53.9923 7.90829 53.1169C8.77707 52.2415 9.26514 51.0542 9.26514 49.8161C9.26514 48.5781 8.77707 47.3908 7.90829 46.5154C7.03952 45.64 5.86121 45.1482 4.63257 45.1482ZM110.367 50.9284C109.139 50.9284 107.96 51.4202 107.092 52.2956C106.223 53.1711 105.735 54.3584 105.735 55.5964C105.735 56.8344 106.223 58.0218 107.092 58.8972C107.96 59.7726 109.139 60.2644 110.367 60.2644C111.596 60.2644 112.774 59.7726 113.643 58.8972C114.512 58.0218 115 56.8344 115 55.5964C115 54.3584 114.512 53.1711 113.643 52.2956C112.774 51.4202 111.596 50.9284 110.367 50.9284ZM12.7034 54.3565C11.9131 55.7878 10.763 56.9844 9.36857 57.8261C7.97416 58.6679 6.38452 59.1252 4.75924 59.1521L30.9803 103.261C31.7683 101.826 32.9174 100.626 34.312 99.7809C35.7065 98.9358 37.2974 98.4758 38.9245 98.4471L12.7034 54.3565ZM104.305 62.6349L95.9268 106.525C96.9095 106.177 97.9434 105.998 98.9851 105.996C101.212 105.997 103.364 106.806 105.047 108.275L113.389 64.4036C112.418 64.7478 111.397 64.9265 110.367 64.9324C108.138 64.9263 105.986 64.1106 104.305 62.6349ZM39.0692 103.115C37.8406 103.115 36.6623 103.607 35.7935 104.482C34.9247 105.358 34.4367 106.545 34.4367 107.783C34.4367 109.021 34.9247 110.208 35.7935 111.084C36.6623 111.959 37.8406 112.451 39.0692 112.451C40.2979 112.451 41.4762 111.959 42.345 111.084C43.2137 110.208 43.7018 109.021 43.7018 107.783C43.7018 106.545 43.2137 105.358 42.345 104.482C41.4762 103.607 40.2979 103.115 39.0692 103.115ZM47.6105 104.154C48.0897 105.303 48.3358 106.537 48.3344 107.783C48.3331 109.818 47.6723 111.796 46.4524 113.417L90.4437 118.961C89.9646 117.812 89.7184 116.578 89.7199 115.332C89.7212 113.297 90.382 111.319 91.6019 109.698L47.6105 104.154ZM98.9851 110.664C97.7564 110.664 96.5781 111.156 95.7093 112.031C94.8406 112.907 94.3525 114.094 94.3525 115.332C94.3525 116.57 94.8406 117.757 95.7093 118.633C96.5781 119.508 97.7564 120 98.9851 120C100.214 120 101.392 119.508 102.261 118.633C103.13 117.757 103.618 116.57 103.618 115.332C103.618 114.094 103.13 112.907 102.261 112.031C101.392 111.156 100.214 110.664 98.9851 110.664Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\nfunction ScatterIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 96 92\" className={className}>\n <path\n d=\"M90.1 81.9571L18.1429 81.9571C10.8843 81.9571 5 76.0729 5 68.8143L5 10\"\n stroke=\"currentColor\"\n strokeWidth=\"10\"\n strokeLinecap=\"round\"\n />\n {[\n [53.5, 63.5],\n [33.5, 43.5],\n [60.5, 30.5],\n [33.5, 13.5],\n [73.5, 49.5],\n ].map(([cx, cy]) => (\n <circle\n key={`${cx}-${cy}`}\n cx={cx}\n cy={cy}\n r=\"6.5\"\n fill=\"currentColor\"\n />\n ))}\n </svg>\n );\n}\n\nfunction TreemapIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 148 92\" className={className}>\n <path\n d=\"M4.60001 9.20001C4.60001 6.6595 6.6595 4.60001 9.20001 4.60001H73.6V87.4H9.20001C6.6595 87.4 4.60001 85.3405 4.60001 82.8V9.20001Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M78.2 50.6H142.6V82.8C142.6 85.3405 140.541 87.4 138 87.4H78.2V50.6Z\"\n fill=\"currentColor\"\n />\n <rect x=\"78.2\" y=\"4.6\" width=\"29.9\" height=\"41.4\" fill=\"currentColor\" />\n <path\n d=\"M112.7 4.60001H138C140.541 4.60001 142.6 6.6595 142.6 9.20001V46H112.7V4.60001Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\n// Figma node 9899:21554 (Group 31 inside CardWidgetTable's monochrome thumbnail).\n// Container: 64×40. 3 columns — narrow left (w=9), medium centre (w=24), medium\n// right (w=23) — with 2 px gaps between columns and a 4 px left margin. 4 rows\n// (header + 3 data) each 8 px tall with 2 px gaps. Only the 4 outer table corners\n// are rounded (r=2); inner corners are square. Paths are translated from Figma\n// local coords by the group offset (2, 1) to viewBox coords (0 0 64 40).\nfunction TableIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 64 40\" className={className}>\n {/* Header row — full opacity so it reads as the header */}\n <path d=\"M 6 2 L 13 2 L 13 10 L 4 10 L 4 4 C 4 2.9 4.9 2 6 2 Z\" fill=\"currentColor\" />\n <rect x={15} y={2} width={24} height={8} fill=\"currentColor\" />\n <path d=\"M 41 2 L 62 2 C 63.1 2 64 2.9 64 4 L 64 10 L 41 10 Z\" fill=\"currentColor\" />\n {/* Middle data rows — no corner rounding needed */}\n {[12, 22].map((y) => (\n <React.Fragment key={y}>\n <rect x={4} y={y} width={9} height={8} fill=\"currentColor\" fillOpacity={SECONDARY} />\n <rect x={15} y={y} width={24} height={8} fill=\"currentColor\" fillOpacity={SECONDARY} />\n <rect x={41} y={y} width={23} height={8} fill=\"currentColor\" fillOpacity={SECONDARY} />\n </React.Fragment>\n ))}\n {/* Last data row — outer bottom corners rounded */}\n <path\n d=\"M 4 32 L 13 32 L 13 40 L 6 40 C 4.9 40 4 39.1 4 38 Z\"\n fill=\"currentColor\"\n fillOpacity={SECONDARY}\n />\n <rect x={15} y={32} width={24} height={8} fill=\"currentColor\" fillOpacity={SECONDARY} />\n <path\n d=\"M 41 32 L 64 32 L 64 38 C 64 39.1 63.1 40 62 40 L 41 40 Z\"\n fill=\"currentColor\"\n fillOpacity={SECONDARY}\n />\n </svg>\n );\n}\n\n// No Figma node exists for Sankey — drawn to match the chart's structure: two tall\n// source nodes on the left, three shorter destination nodes on the right, and three\n// bezier bands of varying widths connecting them. The bands use SECONDARY opacity so\n// they read as flow rather than solid blocks.\nfunction SankeyIllustration({ className }: { className?: string }) {\n return (\n <svg {...svg} viewBox=\"0 0 148 92\" className={className}>\n {/* Source nodes */}\n <rect x={4} y={5} width={10} height={36} rx={2} fill=\"currentColor\" />\n <rect x={4} y={51} width={10} height={36} rx={2} fill=\"currentColor\" />\n {/* Destination nodes */}\n <rect x={134} y={5} width={10} height={22} rx={2} fill=\"currentColor\" />\n <rect x={134} y={35} width={10} height={22} rx={2} fill=\"currentColor\" />\n <rect x={134} y={65} width={10} height={22} rx={2} fill=\"currentColor\" />\n {/* Flows: cubic bezier bands with control points at midX=74 */}\n <path d=\"M 14 5 C 74 5 74 5 134 5 L 134 27 C 74 27 74 27 14 27 Z\" fill=\"currentColor\" fillOpacity={SECONDARY} />\n <path d=\"M 14 27 C 74 27 74 35 134 35 L 134 57 C 74 57 74 41 14 41 Z\" fill=\"currentColor\" fillOpacity={SECONDARY} />\n <path d=\"M 14 51 C 74 51 74 65 134 65 L 134 87 C 74 87 74 87 14 87 Z\" fill=\"currentColor\" fillOpacity={SECONDARY} />\n </svg>\n );\n}\n\nfunction TextIllustration({ className }: { className?: string }) {\n const rows = [\n [13.8, 4.6],\n [13.8, 55.2],\n [87.4, 4.6],\n [87.4, 55.2],\n ];\n\n return (\n <svg {...svg} viewBox=\"0 0 148 92\" className={className}>\n {rows.map(([x, y]) => (\n <React.Fragment key={`${x}-${y}`}>\n <circle cx={x + 9.2} cy={y + 9.2} r=\"9.2\" fill=\"currentColor\" />\n <rect\n x={x}\n y={y + 23}\n width=\"46\"\n height=\"9.2\"\n rx=\"4.6\"\n fill=\"currentColor\"\n fillOpacity={SECONDARY}\n />\n </React.Fragment>\n ))}\n </svg>\n );\n}\n\n/** The chart types the design draws an empty state for. */\nexport type ChartStateVariant =\n | 'area'\n | 'bar'\n | 'line'\n | 'donut'\n | 'radial'\n | 'funnel'\n | 'radar'\n | 'sankey'\n | 'scatter'\n | 'treemap'\n | 'table'\n | 'text';\n\n// `radial` shares the donut silhouette: the design draws one ring for both, and\n// a radial-bar widget with no data has nothing to distinguish it by.\nexport const CHART_STATE_ILLUSTRATIONS: Record<\n ChartStateVariant,\n (props: { className?: string }) => React.ReactElement\n> = {\n area: AreaIllustration,\n bar: BarIllustration,\n line: LineIllustration,\n donut: DonutIllustration,\n radial: DonutIllustration,\n funnel: FunnelIllustration,\n radar: RadarIllustration,\n sankey: SankeyIllustration,\n scatter: ScatterIllustration,\n treemap: TreemapIllustration,\n table: TableIllustration,\n text: TextIllustration,\n};\n"],"names":["svg","SECONDARY","AreaIllustration","className","jsx","LineIllustration","BarIllustration","cy","jsxs","React","DonutIllustration","FunnelIllustration","RadarIllustration","ScatterIllustration","cx","TreemapIllustration","TableIllustration","y","SankeyIllustration","TextIllustration","x","CHART_STATE_ILLUSTRATIONS"],"mappings":"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"}
@@ -1,42 +1,56 @@
1
- import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import * as s from "react";
3
- import { InboxIcon as m, CircleWarningIcon as c } from "@acronis-platform/icons-react/stroke-mono";
4
- import { cn as p } from "../../../lib/utils.js";
5
- import { Spinner as d } from "../spinner/spinner.js";
6
- const f = {
1
+ import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
+ import * as f from "react";
3
+ import { CircleWarningIcon as p } from "@acronis-platform/icons-react/stroke-mono";
4
+ import { cn as d } from "../../../lib/utils.js";
5
+ import { CHART_STATE_ILLUSTRATIONS as u } from "./chart-state-illustrations.js";
6
+ import { Spinner as g } from "../spinner/spinner.js";
7
+ const x = {
7
8
  loading: "Data is loading…",
8
9
  empty: "No data found",
9
10
  error: "Something went wrong"
10
- }, g = s.forwardRef(
11
- ({ className: o, state: r, message: i, action: t, ...a }, n) => /* @__PURE__ */ l(
12
- "div",
13
- {
14
- ref: n,
15
- className: p(
16
- "flex size-full min-h-32 flex-col items-center justify-center gap-2 text-center text-sm leading-6 text-foreground",
17
- o
18
- ),
19
- ...a,
20
- role: r === "error" ? "alert" : "status",
21
- "aria-live": r === "error" ? "assertive" : "polite",
22
- children: [
23
- r === "loading" && /* @__PURE__ */ e(d, { size: "lg", "aria-hidden": !0 }),
24
- r === "empty" && /* @__PURE__ */ e(m, { size: 24, className: "text-[var(--ui-glyph-on-status-info)]" }),
25
- r === "error" && /* @__PURE__ */ e(
26
- c,
27
- {
28
- size: 24,
29
- className: "text-[var(--ui-glyph-on-status-warning)]"
30
- }
11
+ }, h = f.forwardRef(
12
+ ({ className: i, state: r, variant: o, description: a, action: n, ...l }, s) => {
13
+ const t = o ? u[o] : void 0, m = a ?? x[r];
14
+ return /* @__PURE__ */ c(
15
+ "div",
16
+ {
17
+ ref: s,
18
+ className: d(
19
+ "flex size-full min-h-32 flex-col items-center justify-center gap-2 text-center text-sm leading-6 text-foreground",
20
+ i
31
21
  ),
32
- /* @__PURE__ */ e("p", { children: i ?? f[r] }),
33
- r === "error" && t
34
- ]
35
- }
36
- )
22
+ ...l,
23
+ role: r === "error" ? "alert" : "status",
24
+ "aria-live": r === "error" ? "assertive" : "polite",
25
+ children: [
26
+ r === "loading" && /* @__PURE__ */ e(g, { size: "lg", "aria-hidden": !0 }),
27
+ r === "empty" && t && // The tone is set once here, and every path inside is `currentColor`,
28
+ // so brand and theme overrides follow. Figma binds the artwork to
29
+ // `components/Avatar/color/blue`; this is the semantic token with the
30
+ // identical light/dark pair, and "status off" is what an empty widget
31
+ // is — referencing Avatar's tier from a chart would be a coupling with
32
+ // no meaning behind it.
33
+ // Scales with the slot rather than sitting at the mockup's 147×92:
34
+ // the silhouette is the whole point of a per-type empty state, so it
35
+ // takes the room the card gives it, capped so it stays a thumbnail
36
+ // in a wide widget instead of a poster.
37
+ /* @__PURE__ */ e(t, { className: "max-h-full w-full max-w-[220px] shrink text-[var(--ui-background-status-off)]" }),
38
+ r === "error" && /* @__PURE__ */ e(
39
+ p,
40
+ {
41
+ size: 24,
42
+ className: "text-[var(--ui-glyph-on-status-warning)]"
43
+ }
44
+ ),
45
+ /* @__PURE__ */ e("p", { children: m }),
46
+ r === "error" && n
47
+ ]
48
+ }
49
+ );
50
+ }
37
51
  );
38
- g.displayName = "ChartState";
52
+ h.displayName = "ChartState";
39
53
  export {
40
- g as ChartState
54
+ h as ChartState
41
55
  };
42
56
  //# sourceMappingURL=chart-state.js.map