@acronis-platform/ui-react 5.5.9 → 6.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.
- package/dist/components/ui/chart/chart.js +14 -11
- package/dist/components/ui/chart/chart.js.map +1 -1
- package/dist/components/ui/chart-state/chart-state.js +47 -37
- package/dist/components/ui/chart-state/chart-state.js.map +1 -1
- package/dist/components/ui/chart-widget/chart-widget.js +21 -23
- package/dist/components/ui/chart-widget/chart-widget.js.map +1 -1
- package/dist/components/ui/dialog/dialog.js +45 -32
- package/dist/components/ui/dialog/dialog.js.map +1 -1
- package/dist/components/ui/pie-chart/pie-chart.js +88 -84
- package/dist/components/ui/pie-chart/pie-chart.js.map +1 -1
- package/dist/index.js +86 -87
- package/dist/llms/chart-state.md +81 -164
- package/dist/llms/chart-widget.md +27 -25
- package/dist/llms/dialog-root.md +40 -13
- package/dist/llms/dialog.md +26 -1
- package/dist/llms.txt +3 -3
- package/dist/react.js +86 -87
- package/dist/src/components/ui/chart/chart.d.ts +3 -3
- package/dist/src/components/ui/chart-state/chart-state.d.ts +5 -14
- package/dist/src/components/ui/chart-state/index.d.ts +0 -1
- package/dist/src/components/ui/chart-widget/chart-widget.d.ts +10 -15
- package/dist/src/components/ui/dialog/dialog.d.ts +9 -0
- package/dist/src/components/ui/dialog/dialog.docs.d.ts +5 -1
- package/dist/src/components/ui/pie-chart/pie-chart.d.ts +1 -1
- package/dist/ui-react.css +1 -1
- package/package.json +13 -13
- package/dist/components/ui/chart-state/chart-state-illustrations.js +0 -412
- package/dist/components/ui/chart-state/chart-state-illustrations.js.map +0 -1
- package/dist/src/components/ui/chart-state/chart-state-illustrations.d.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pie-chart.js","names":[],"sources":["../../../../src/components/ui/pie-chart/pie-chart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n Cell,\n Curve,\n Label,\n LabelList,\n Pie,\n PieChart as RechartsPieChart,\n type CurveProps,\n type PieLabelRenderProps,\n} from 'recharts';\n\nimport type { LegendPayload } from 'recharts/types/component/DefaultLegendContent';\n\nimport { cn } from '@/lib/utils';\nimport {\n ChartContainer,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n resolveAnimation,\n resolveChartColors,\n resolveLabelFillClass,\n CHART_DEFAULT_PALETTE,\n CHART_LABEL_FILL_CLASS,\n CHART_LABEL_FONT_SIZE,\n toCssKey,\n type ChartConfig,\n type ChartLegendFontSize,\n type ChartLegendAriaLabelProps,\n type ChartPalette,\n type ChartTooltipContentProps,\n type ChartAnimationProps,\n type ChartDataLabelProps,\n type PolarLabelPosition,\n type TickFormatter,\n} from '../chart';\n\n// A typed recharts composition over the shared `Chart` primitives. The single\n// CVA axis is the design's Pie-chart variant set: `shape` (a filled pie vs a\n// hollow-centre donut). The class stays empty because recharts' SVG — not CSS —\n// draws the arc: `shape` drives the `<Pie>`'s `innerRadius` (0 for a pie, the\n// `innerRadius` prop for a donut). CVA is kept so the variant set is a\n// first-class, spec-conformant part of the API (matched against ui-spec's\n// api.yaml enums) and exposed via `VariantProps`; the resolved value is also\n// mirrored onto `data-shape`.\nconst pieChartVariants = cva('', {\n variants: {\n shape: {\n pie: '',\n donut: '',\n },\n },\n defaultVariants: {\n shape: 'pie',\n },\n});\n\n/** Row-per-slice datum: the `nameKey` label plus the `dataKey` value. */\ntype PieChartDatum = Record<string, string | number>;\n\n/**\n * What a slice's data label reads. `percent` is the slice's share of the sum of\n * every slice value, to one decimal.\n */\nexport type PieChartLabelFormat =\n | 'value'\n | 'name-value'\n | 'name-percent'\n | 'percent';\n\n/** What the tooltip's value reads — the raw value, or the value and its share. */\nexport type PieChartTooltipFormat = 'value' | 'value-percent';\n\n/** Per-slice overrides, keyed by the slice's `nameKey` value. */\nexport interface PieChartSliceSettings {\n /**\n * Fill for this slice, overriding its `config` color. Reference an existing\n * semantic `--ui-*` token, same as `config`.\n */\n color?: string;\n /** Drop this slice's data label while every other slice keeps its own. */\n hideLabel?: boolean;\n /** Label format for this slice only — overrides the chart-level `labelFormat`. */\n labelFormat?: PieChartLabelFormat;\n}\n\nconst toNumericValue = (value: unknown): number | undefined =>\n typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n\n/**\n * A slice's share of the chart's total, to one decimal. The single place the\n * share is computed, so a slice's label and its tooltip row can't disagree.\n * `undefined` when there is nothing to divide — a non-numeric slice value, or a\n * total of zero — which is what lets the callers degrade instead of printing\n * `NaN%`.\n */\nconst slicePercentText = (\n value: unknown,\n total: number\n): string | undefined => {\n const numeric = toNumericValue(value);\n if (numeric === undefined || total <= 0) return undefined;\n return `${((numeric / total) * 100).toFixed(1)}%`;\n};\n\n/**\n * Compose one slice's data-label text. Exported for unit tests; not part of the\n * package's public API.\n *\n * A percent needs a numeric slice value *and* a non-zero total, and a value\n * label needs a value at all — so every format degrades rather than printing\n * `NaN%` or a dangling `\"Chrome: \"`. The two name-carrying formats fall back to\n * the bare name; the value-only ones to `''`, which `resolveSliceLabel`\n * normalizes to `null` (the one value recharts renders no `<text>` for).\n *\n * `labelFormatter` formats the slice's *value*, so it reaches `value` and\n * `name-value` only. A percent is always composed by `slicePercentText` and\n * never passes through the formatter.\n */\nexport function pieChartLabelText(options: {\n format: PieChartLabelFormat;\n name: string | number;\n value: string | number | undefined;\n total: number;\n formatter?: TickFormatter;\n}): string {\n const { format, name, value, total, formatter } = options;\n const valueText =\n value == null ? '' : formatter ? formatter(value) : String(value);\n const percentText = slicePercentText(value, total);\n\n switch (format) {\n case 'name-value':\n return valueText ? `${name}: ${valueText}` : `${name}`;\n case 'name-percent':\n return percentText ? `${name}: ${percentText}` : `${name}`;\n case 'percent':\n return percentText ?? '';\n default:\n return valueText;\n }\n}\n\n/**\n * The row renderer behind `tooltipFormat=\"value-percent\"` — a slice's value\n * followed by its share. Exported for unit tests; not part of the package's\n * public API.\n *\n * A `formatter` replaces the default row wholesale, so the swatch and the name\n * are rebuilt here to match it: the shared `ChartTooltipContent` prefers a\n * `config` entry's `icon` over the color swatch, and this has to do the same or\n * a chart with icons would silently lose them under this preset — and the\n * name/value `gap-4`, which has to be repeated here because a `formatter`\n * replaces the shared row that carries it.\n */\nexport function pieChartValuePercentRow(options: {\n config: ChartConfig;\n total: number;\n}): NonNullable<ChartTooltipContentProps['formatter']> {\n const { config, total } = options;\n // Named rather than an arrow: it returns JSX, so an anonymous function reads\n // to eslint-plugin-react as a component with no display name.\n return function ValuePercentRow(value, name, item) {\n const itemConfig = config[String(name)];\n const percent = slicePercentText(value, total);\n const valueText = value?.toLocaleString() ?? '';\n return (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n <div\n // Dotted, not the legend's square swatch: the shared row's\n // \"a row is always dotted, whatever marker the legend gives that\n // series\" invariant applies here too.\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: item.payload?.fill ?? item.color }}\n />\n )}\n {/*\n * Mirrors the shared default row's `gap-4` (see `ChartTooltipContent`):\n * a `formatter` replaces that row wholesale, so the floor under the\n * name/value separation has to be restated here. Without it a value\n * *and* its share outgrows the tooltip's `min-w-[8rem]`, leaving\n * `justify-between` no free space to distribute.\n */}\n <div className=\"flex flex-1 items-center justify-between gap-4 leading-none\">\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? name}\n </span>\n <span className=\"font-medium tabular-nums text-foreground\">\n {percent ? `${valueText} (${percent})` : valueText}\n </span>\n </div>\n </>\n );\n };\n}\n\n/**\n * The configured `ChartTooltipContent` for `tooltipFormat=\"value-percent\"`.\n * Exported so the visual-regression story renders the very same element the\n * component does — recharts can only open a hover tooltip statically via\n * `defaultIndex` on a raw composition, so the preset has to be reachable from\n * outside the component to be snapshotted at all.\n */\nexport function pieChartValuePercentTooltip(options: {\n nameKey: string;\n config: ChartConfig;\n total: number;\n}): React.ReactElement {\n const { nameKey, config, total } = options;\n return (\n <ChartTooltipContent\n nameKey={nameKey}\n hideLabel\n formatter={pieChartValuePercentRow({ config, total })}\n />\n );\n}\n\nexport interface PieChartCenterLabel {\n // Rendered as SVG <text>, which only lays out text — hence string | number,\n // not ReactNode.\n /** Headline metric rendered large in the donut hole (e.g. a total). */\n value?: string | number;\n /** Caption rendered under the value. */\n label?: string | number;\n}\n\nexport interface PieChartProps\n extends Omit<React.ComponentProps<'div'>, 'children'>,\n VariantProps<typeof pieChartVariants>,\n ChartAnimationProps,\n ChartDataLabelProps,\n ChartLegendAriaLabelProps {\n /**\n * The dataviz palette this chart's series are painted from. Series that\n * state no `color` of their own take a stop of it. See `ChartPalette`.\n */\n palette?: ChartPalette;\n /** Row-per-slice data. Each object holds the slice's `nameKey` label + its `dataKey` numeric value. */\n data: ReadonlyArray<PieChartDatum>;\n /**\n * Per-slice map of `label` / `icon` / `tone`, keyed by the slice's `nameKey`\n * value (imported from the shared `Chart` primitives). Turned into\n * `--color-<name>` custom properties. Series take their colour from the\n * container's `palette`; each entry maps a key to a `label` and an optional\n * `tone`.\n */\n config: ChartConfig;\n /** Numeric field that sizes each slice. */\n dataKey: string;\n /**\n * Label field that names each slice (drives the legend, tooltip, and\n * `--color-<name>` lookup). Values should be unique per chart — rows sharing a\n * name share one `config`/color entry.\n */\n nameKey: string;\n /** Inner radius of the arc when `shape=\"donut\"` (ignored for `shape=\"pie\"`). */\n innerRadius?: number;\n /**\n * Custom content for the donut hole — a headline `value` and/or a `label`\n * caption, stacked and centered. Rendered only for `shape=\"donut\"` (a filled\n * pie has no hole).\n */\n centerLabel?: PieChartCenterLabel;\n /** Outer radius of the arc. Omit to use recharts' responsive default. */\n outerRadius?: number;\n /** Gap between slices, in degrees. */\n paddingAngle?: number;\n /** Corner radius of each slice. */\n cornerRadius?: number;\n /**\n * Angle the sweep starts at, in degrees (0 is 3 o'clock, counter-clockwise).\n * Pair with `endAngle` for a semicircle (`180` → `0`) or an arc.\n *\n * A partial sweep still centres on the full plot area, so a half turn fills\n * only half its box — give the chart a short, wide one rather than expecting\n * the arc to grow into a square.\n */\n startAngle?: number;\n /** Angle the sweep ends at, in degrees. Defaults to a full `360` circle. */\n endAngle?: number;\n /**\n * Smallest angle a non-zero slice may occupy, in degrees — keeps a tiny slice\n * visible (and hoverable) at the cost of being drawn out of proportion.\n */\n minAngle?: number;\n /**\n * Per-slice overrides keyed by the slice's `nameKey` value: its `color`, and\n * whether/how its data label reads. A name with no entry keeps the chart-level\n * behavior.\n */\n sliceSettings?: Record<string, PieChartSliceSettings>;\n showTooltip?: boolean;\n showLegend?: boolean;\n /**\n * Font size of the legend text (labels and values). Defaults to `'xs'` —\n * the size the legend has always rendered at. See `ChartLegendFontSize`.\n */\n legendFontSize?: ChartLegendFontSize;\n /**\n * Format each slice's value in the list legend. When omitted the raw value is\n * stringified with `String()`.\n */\n legendValueFormatter?: (value: string | number) => string;\n /** Plot-area margin, in px. Omit to use recharts' default (5 on every side). */\n margin?: { top?: number; right?: number; bottom?: number; left?: number };\n /**\n * Replace the default tooltip. Pass a configured `ChartTooltipContent`\n * (imported from this library) — e.g. with a `formatter` / `labelFormatter` —\n * to customize formatting, per-slice rows, or extra fields without composing\n * recharts yourself. Takes precedence over `tooltipFormat`. Ignored when\n * `showTooltip` is false.\n */\n tooltipContent?: React.ComponentProps<typeof ChartTooltip>['content'];\n /**\n * How the default tooltip reads a slice: its `value` alone (the default), or\n * the value followed by its share of the total (`value-percent`). The preset\n * covers the common case without hand-rolling a `tooltipContent`.\n *\n * The share is rendered as `NN.N%`, same as a data label's — not locale-aware.\n * Pass your own `tooltipContent` if you need to format it.\n */\n tooltipFormat?: PieChartTooltipFormat;\n /**\n * Position of the value labels when `showLabels` is on. Defaults to `outside`,\n * which keeps them on the chart surface — the only placement that reliably\n * has contrast, since slice fills are caller-supplied saturated colors. The\n * on-arc placements are available but switch to the on-fill label token.\n * Ignored when `labelLine` is on — a leader line only ever ends outside the arc.\n */\n labelPosition?: PolarLabelPosition;\n /**\n * What each data label reads when `showLabels` is on — the value alone (the\n * default), or the slice name and/or its share of the total. Overridable per\n * slice via `sliceSettings`.\n *\n * `labelFormatter` formats the slice's *value*, so it reaches `value` and\n * `name-value` only: a share is always rendered as `NN.N%` (a `.` decimal and\n * a bare `%`, not locale-aware) and never passes through the formatter.\n */\n labelFormat?: PieChartLabelFormat;\n /**\n * Draw a leader line from each slice to its data label, in the slice's own\n * color. Moves the labels outside the arc (see `labelPosition`); slices whose\n * label is hidden by `sliceSettings` get no line either.\n *\n * A label reaching out past the arc needs horizontal room — give the chart a\n * box wider than it is tall, or shrink the arc (`outerRadius`/`margin`), or\n * the outermost labels are clipped at the surface edge.\n */\n labelLine?: boolean;\n}\n\nfunction renderCenterLabel({ centerLabel }: { centerLabel: PieChartCenterLabel }) {\n return function CenterLabelContent({ viewBox }: { viewBox?: object }) {\n if (!viewBox || !('cx' in viewBox)) return null;\n const { cx = 0, cy = 0 } = viewBox as { cx?: number; cy?: number };\n const hasValue = centerLabel.value != null;\n const hasLabel = centerLabel.label != null;\n const both = hasValue && hasLabel;\n return (\n <g>\n {hasValue && (\n <text\n x={cx}\n y={both ? cy - 10 : cy}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n className=\"fill-foreground text-2xl font-semibold\"\n >\n {centerLabel.value}\n </text>\n )}\n {hasLabel && (\n <text\n x={cx}\n y={both ? cy + 13 : cy}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n className=\"fill-muted-foreground text-sm\"\n >\n {centerLabel.label}\n </text>\n )}\n </g>\n );\n };\n}\n\nconst PieChart = React.forwardRef<HTMLDivElement, PieChartProps>(\n (\n {\n className,\n config,\n palette,\n data,\n dataKey,\n nameKey,\n shape = 'donut',\n centerLabel,\n innerRadius = 48,\n outerRadius,\n paddingAngle = 2,\n cornerRadius,\n startAngle = 90,\n endAngle = -270,\n minAngle,\n sliceSettings,\n showTooltip = true,\n showLegend = true,\n legendFontSize,\n legendAriaLabel,\n legendValueFormatter,\n margin,\n tooltipContent,\n tooltipFormat = 'value',\n animate,\n animationDuration,\n animationBegin,\n animationEasing,\n showLabels = false,\n labelPosition,\n labelFormat = 'value',\n labelFormatter,\n labelLine = false,\n ...props\n },\n ref\n ) => {\n const animation = resolveAnimation({\n animate,\n animationDuration,\n animationBegin,\n animationEasing,\n });\n const pieLabelPosition = labelPosition ?? 'outside';\n const resolvedInnerRadius = shape === 'donut' ? innerRadius : 0;\n\n // Resolve colors so the external list legend has the same values as the chart\n // plot without needing to be inside ChartContainer's context.\n const resolvedConfigForLegend = React.useMemo(\n () => (showLegend ? resolveChartColors(config, palette ?? CHART_DEFAULT_PALETTE) : null),\n [showLegend, config, palette]\n );\n const rightLegendPayload: LegendPayload[] = React.useMemo(() => {\n if (!resolvedConfigForLegend) return [];\n return data.map((row) => ({\n value: String(row[nameKey]),\n dataKey: nameKey,\n color:\n resolvedConfigForLegend[String(row[nameKey])]?.color ??\n `var(--color-${toCssKey(String(row[nameKey]))})`,\n type: 'rect' as const,\n payload: row as Record<string, unknown>,\n }));\n }, [resolvedConfigForLegend, data, nameKey]);\n\n // The denominator behind every percent — the labels' and the tooltip's — so\n // the two always agree. Non-numeric cells count as nothing rather than NaN.\n const total = data.reduce(\n (sum, row) => sum + (toNumericValue(row[dataKey]) ?? 0),\n 0\n );\n\n // Always null, never '', for a slice with nothing to show — whether its\n // label was switched off or its format degraded to empty. recharts renders\n // no <text> at all for a nullish label value (`Label` bails on `isNullish`),\n // where an empty string still emits one wrapping an empty <tspan>.\n const resolveSliceLabel = (row: PieChartDatum | undefined): string | null => {\n if (!row) return null;\n const settings = sliceSettings?.[String(row[nameKey])];\n if (settings?.hideLabel) return null;\n return (\n pieChartLabelText({\n format: settings?.labelFormat ?? labelFormat,\n name: row[nameKey],\n value: row[dataKey],\n total,\n formatter: labelFormatter,\n }) || null\n );\n };\n\n // Leader lines are the one thing a `LabelList` can't draw: recharts only\n // renders them alongside the `label` prop's own outside placement. So the\n // labels move to that path when `labelLine` is on, and stay on the\n // position-aware `LabelList` otherwise.\n const showLeaderLines = showLabels && labelLine;\n\n const renderLeaderLabel = (labelProps: PieLabelRenderProps) => {\n const text = resolveSliceLabel(labelProps.payload as PieChartDatum);\n // An empty <g>, not null: recharts only takes the render function's output\n // when it's an element — a nullish return falls through to its own <Text>\n // painting the raw value.\n if (!text) return <g />;\n return (\n <text\n x={labelProps.x}\n y={labelProps.y}\n textAnchor={labelProps.textAnchor}\n dominantBaseline=\"central\"\n // Always the on-surface fill: this path only ever places labels\n // outside the arc, never over a slice.\n className={CHART_LABEL_FILL_CLASS}\n fontSize={CHART_LABEL_FONT_SIZE}\n >\n {text}\n </text>\n );\n };\n\n // recharts draws a line per sector independently of what the label renders,\n // so a slice hidden via `sliceSettings` would keep a line pointing at\n // nothing. Rebuilding the default `Curve` here is what lets it be dropped.\n const renderLeaderLine = ({\n key,\n payload,\n ...lineProps\n }: CurveProps & { key?: React.Key; payload?: PieChartDatum }) => {\n if (!resolveSliceLabel(payload)) return <g />;\n return (\n <Curve {...lineProps} type=\"linear\" className=\"recharts-pie-label-line\" />\n );\n };\n\n // Shared recharts chart composition (used in both layout modes).\n const pieChartContent = (\n <RechartsPieChart margin={margin ?? { top: 0, right: 0, bottom: 0, left: 0 }}>\n {showTooltip && (\n <ChartTooltip\n content={\n tooltipContent ??\n (tooltipFormat === 'value-percent' ? (\n pieChartValuePercentTooltip({ nameKey, config, total })\n ) : (\n <ChartTooltipContent nameKey={nameKey} hideLabel />\n ))\n }\n />\n )}\n <Pie\n data={data as unknown[]}\n dataKey={dataKey}\n nameKey={nameKey}\n innerRadius={resolvedInnerRadius}\n outerRadius={outerRadius ?? 60}\n paddingAngle={paddingAngle}\n cornerRadius={cornerRadius}\n startAngle={startAngle}\n endAngle={endAngle}\n minAngle={minAngle}\n label={showLeaderLines ? renderLeaderLabel : false}\n labelLine={showLeaderLines ? renderLeaderLine : false}\n {...animation}\n >\n {data.map((entry, index) => (\n // Keyed by index, not the name: two rows may share a nameKey\n // value, which would collide as a React key. Same-named rows\n // intentionally share a color/config entry via `--color-<name>`.\n <Cell\n key={index}\n fill={\n sliceSettings?.[String(entry[nameKey])]?.color ??\n `var(--color-${toCssKey(String(entry[nameKey]))})`\n }\n />\n ))}\n {shape === 'donut' && centerLabel && (\n <Label content={renderCenterLabel({ centerLabel })} />\n )}\n {showLabels && !showLeaderLines && (\n <LabelList\n // `valueAccessor` rather than `dataKey`: the label text can\n // carry the slice's name and share, which only the whole row\n // (and the chart's total) can compose. recharts ignores the\n // accessor when a dataKey is set, so the two can't be combined.\n valueAccessor={(entry) =>\n resolveSliceLabel(entry.payload as PieChartDatum)\n }\n // Always explicit: recharts' polar fallback for an unset\n // position is the sector centroid — inside the fill — which\n // is exactly the placement the on-surface token can't survive.\n position={pieLabelPosition}\n className={resolveLabelFillClass(pieLabelPosition)}\n fontSize={CHART_LABEL_FONT_SIZE}\n />\n )}\n </Pie>\n </RechartsPieChart>\n );\n\n // Grow the SVG container when labels need space outside the arc so they\n // stay within the chart boundary instead of escaping into the layout.\n const chartDivSize = showLabels\n ? showLeaderLines\n ? 'size-[320px]'\n : pieLabelPosition === 'outside' || pieLabelPosition === 'end'\n ? 'size-[200px]'\n : 'size-[120px]'\n : 'size-[120px]';\n\n return (\n <div\n ref={ref}\n data-shape={shape}\n className={cn(\n 'flex flex-row items-center gap-4',\n !showLegend && 'justify-center',\n pieChartVariants({ shape }),\n className\n )}\n {...props}\n >\n <div className={cn(chartDivSize, 'shrink-0')}>\n <ChartContainer config={config} palette={palette} className=\"size-full\">\n {pieChartContent}\n </ChartContainer>\n </div>\n {showLegend && resolvedConfigForLegend && (\n <ChartLegendContent\n variant=\"list\"\n payload={rightLegendPayload}\n config={resolvedConfigForLegend}\n nameKey={nameKey}\n fontSize={legendFontSize}\n ariaLabel={legendAriaLabel}\n valueKey={dataKey}\n valueFormatter={legendValueFormatter}\n className=\"min-w-0 flex-1\"\n />\n )}\n </div>\n );\n }\n);\nPieChart.displayName = 'PieChart';\n\nexport { PieChart, pieChartVariants };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pie-chart.js","names":[],"sources":["../../../../src/components/ui/pie-chart/pie-chart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n Cell,\n Curve,\n Label,\n LabelList,\n Pie,\n PieChart as RechartsPieChart,\n type CurveProps,\n type PieLabelRenderProps,\n} from 'recharts';\n\nimport type { LegendPayload } from 'recharts/types/component/DefaultLegendContent';\n\nimport { cn } from '@/lib/utils';\nimport {\n ChartContainer,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n resolveAnimation,\n resolveChartColors,\n resolveLabelFillClass,\n CHART_DEFAULT_PALETTE,\n CHART_LABEL_FILL_CLASS,\n CHART_LABEL_FONT_SIZE,\n toCssKey,\n type ChartConfig,\n type ChartLegendFontSize,\n type ChartLegendAriaLabelProps,\n type ChartPalette,\n type ChartTooltipContentProps,\n type ChartAnimationProps,\n type ChartDataLabelProps,\n type PolarLabelPosition,\n type TickFormatter,\n} from '../chart';\n\n// A typed recharts composition over the shared `Chart` primitives. The single\n// CVA axis is the design's Pie-chart variant set: `shape` (a filled pie vs a\n// hollow-centre donut). The class stays empty because recharts' SVG — not CSS —\n// draws the arc: `shape` drives the `<Pie>`'s `innerRadius` (0 for a pie, the\n// `innerRadius` prop for a donut). CVA is kept so the variant set is a\n// first-class, spec-conformant part of the API (matched against ui-spec's\n// api.yaml enums) and exposed via `VariantProps`; the resolved value is also\n// mirrored onto `data-shape`.\nconst pieChartVariants = cva('', {\n variants: {\n shape: {\n pie: '',\n donut: '',\n },\n },\n defaultVariants: {\n shape: 'pie',\n },\n});\n\n/** Row-per-slice datum: the `nameKey` label plus the `dataKey` value. */\ntype PieChartDatum = Record<string, string | number>;\n\n/**\n * What a slice's data label reads. `percent` is the slice's share of the sum of\n * every slice value, to one decimal.\n */\nexport type PieChartLabelFormat =\n | 'value'\n | 'name-value'\n | 'name-percent'\n | 'percent';\n\n/** What the tooltip's value reads — the raw value, or the value and its share. */\nexport type PieChartTooltipFormat = 'value' | 'value-percent';\n\n/** Per-slice overrides, keyed by the slice's `nameKey` value. */\nexport interface PieChartSliceSettings {\n /**\n * Fill for this slice, overriding its `config` color. Reference an existing\n * semantic `--ui-*` token, same as `config`.\n */\n color?: string;\n /** Drop this slice's data label while every other slice keeps its own. */\n hideLabel?: boolean;\n /** Label format for this slice only — overrides the chart-level `labelFormat`. */\n labelFormat?: PieChartLabelFormat;\n}\n\nconst toNumericValue = (value: unknown): number | undefined =>\n typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n\n/**\n * A slice's share of the chart's total, to one decimal. The single place the\n * share is computed, so a slice's label and its tooltip row can't disagree.\n * `undefined` when there is nothing to divide — a non-numeric slice value, or a\n * total of zero — which is what lets the callers degrade instead of printing\n * `NaN%`.\n */\nconst slicePercentText = (\n value: unknown,\n total: number\n): string | undefined => {\n const numeric = toNumericValue(value);\n if (numeric === undefined || total <= 0) return undefined;\n return `${((numeric / total) * 100).toFixed(1)}%`;\n};\n\n/**\n * Compose one slice's data-label text. Exported for unit tests; not part of the\n * package's public API.\n *\n * A percent needs a numeric slice value *and* a non-zero total, and a value\n * label needs a value at all — so every format degrades rather than printing\n * `NaN%` or a dangling `\"Chrome: \"`. The two name-carrying formats fall back to\n * the bare name; the value-only ones to `''`, which `resolveSliceLabel`\n * normalizes to `null` (the one value recharts renders no `<text>` for).\n *\n * `labelFormatter` formats the slice's *value*, so it reaches `value` and\n * `name-value` only. A percent is always composed by `slicePercentText` and\n * never passes through the formatter.\n */\nexport function pieChartLabelText(options: {\n format: PieChartLabelFormat;\n name: string | number;\n value: string | number | undefined;\n total: number;\n formatter?: TickFormatter;\n}): string {\n const { format, name, value, total, formatter } = options;\n const valueText =\n value == null ? '' : formatter ? formatter(value) : String(value);\n const percentText = slicePercentText(value, total);\n\n switch (format) {\n case 'name-value':\n return valueText ? `${name}: ${valueText}` : `${name}`;\n case 'name-percent':\n return percentText ? `${name}: ${percentText}` : `${name}`;\n case 'percent':\n return percentText ?? '';\n default:\n return valueText;\n }\n}\n\n/**\n * The row renderer behind `tooltipFormat=\"value-percent\"` — a slice's value\n * followed by its share. Exported for unit tests; not part of the package's\n * public API.\n *\n * A `formatter` replaces the default row wholesale, so the swatch and the name\n * are rebuilt here to match it: the shared `ChartTooltipContent` prefers a\n * `config` entry's `icon` over the color swatch, and this has to do the same or\n * a chart with icons would silently lose them under this preset — and the\n * name/value `gap-4`, which has to be repeated here because a `formatter`\n * replaces the shared row that carries it.\n */\nexport function pieChartValuePercentRow(options: {\n config: ChartConfig;\n total: number;\n}): NonNullable<ChartTooltipContentProps['formatter']> {\n const { config, total } = options;\n // Named rather than an arrow: it returns JSX, so an anonymous function reads\n // to eslint-plugin-react as a component with no display name.\n return function ValuePercentRow(value, name, item) {\n const itemConfig = config[String(name)];\n const percent = slicePercentText(value, total);\n const valueText = value?.toLocaleString() ?? '';\n return (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n <div\n // Dotted, not the legend's square swatch: the shared row's\n // \"a row is always dotted, whatever marker the legend gives that\n // series\" invariant applies here too.\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: item.payload?.fill ?? item.color }}\n />\n )}\n {/*\n * Mirrors the shared default row's `gap-4` (see `ChartTooltipContent`):\n * a `formatter` replaces that row wholesale, so the floor under the\n * name/value separation has to be restated here. Without it a value\n * *and* its share outgrows the tooltip's `min-w-[8rem]`, leaving\n * `justify-between` no free space to distribute.\n */}\n <div className=\"flex flex-1 items-center justify-between gap-4 leading-none\">\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? name}\n </span>\n <span className=\"font-medium tabular-nums text-foreground\">\n {percent ? `${valueText} (${percent})` : valueText}\n </span>\n </div>\n </>\n );\n };\n}\n\n/**\n * The configured `ChartTooltipContent` for `tooltipFormat=\"value-percent\"`.\n * Exported so the visual-regression story renders the very same element the\n * component does — recharts can only open a hover tooltip statically via\n * `defaultIndex` on a raw composition, so the preset has to be reachable from\n * outside the component to be snapshotted at all.\n */\nexport function pieChartValuePercentTooltip(options: {\n nameKey: string;\n config: ChartConfig;\n total: number;\n}): React.ReactElement {\n const { nameKey, config, total } = options;\n return (\n <ChartTooltipContent\n nameKey={nameKey}\n hideLabel\n formatter={pieChartValuePercentRow({ config, total })}\n />\n );\n}\n\nexport interface PieChartCenterLabel {\n // Rendered as SVG <text>, which only lays out text — hence string | number,\n // not ReactNode.\n /** Headline metric rendered large in the donut hole (e.g. a total). */\n value?: string | number;\n /** Caption rendered under the value. */\n label?: string | number;\n}\n\nexport interface PieChartProps\n extends Omit<React.ComponentProps<'div'>, 'children'>,\n VariantProps<typeof pieChartVariants>,\n ChartAnimationProps,\n ChartDataLabelProps,\n ChartLegendAriaLabelProps {\n /**\n * The dataviz palette this chart's series are painted from. Series that\n * state no `color` of their own take a stop of it. See `ChartPalette`.\n */\n palette?: ChartPalette;\n /** Row-per-slice data. Each object holds the slice's `nameKey` label + its `dataKey` numeric value. */\n data: ReadonlyArray<PieChartDatum>;\n /**\n * Per-slice map of `label` / `icon` / `tone`, keyed by the slice's `nameKey`\n * value (imported from the shared `Chart` primitives). Turned into\n * `--color-<name>` custom properties. Series take their colour from the\n * container's `palette`; each entry maps a key to a `label` and an optional\n * `tone`.\n */\n config: ChartConfig;\n /** Numeric field that sizes each slice. */\n dataKey: string;\n /**\n * Label field that names each slice (drives the legend, tooltip, and\n * `--color-<name>` lookup). Values should be unique per chart — rows sharing a\n * name share one `config`/color entry.\n */\n nameKey: string;\n /** Inner radius of the arc when `shape=\"donut\"` (ignored for `shape=\"pie\"`). */\n innerRadius?: number;\n /**\n * Custom content for the donut hole — a headline `value` and/or a `label`\n * caption, stacked and centered. Rendered only for `shape=\"donut\"` (a filled\n * pie has no hole).\n */\n centerLabel?: PieChartCenterLabel;\n /** Outer radius of the arc. Omit to use recharts' responsive default. */\n outerRadius?: number;\n /** Gap between slices, in degrees. */\n paddingAngle?: number;\n /** Corner radius of each slice. */\n cornerRadius?: number;\n /**\n * Angle the sweep starts at, in degrees (0 is 3 o'clock, counter-clockwise).\n * Pair with `endAngle` for a semicircle (`180` → `0`) or an arc.\n *\n * A partial sweep still centres on the full plot area, so a half turn fills\n * only half its box — give the chart a short, wide one rather than expecting\n * the arc to grow into a square.\n */\n startAngle?: number;\n /** Angle the sweep ends at, in degrees. Defaults to a full `360` circle. */\n endAngle?: number;\n /**\n * Smallest angle a non-zero slice may occupy, in degrees — keeps a tiny slice\n * visible (and hoverable) at the cost of being drawn out of proportion.\n */\n minAngle?: number;\n /**\n * Per-slice overrides keyed by the slice's `nameKey` value: its `color`, and\n * whether/how its data label reads. A name with no entry keeps the chart-level\n * behavior.\n */\n sliceSettings?: Record<string, PieChartSliceSettings>;\n showTooltip?: boolean;\n showLegend?: boolean;\n /**\n * Font size of the legend text (labels and values). Defaults to `'xs'` —\n * the size the legend has always rendered at. See `ChartLegendFontSize`.\n */\n legendFontSize?: ChartLegendFontSize;\n /**\n * Format each slice's value in the list legend. When omitted the raw value is\n * stringified with `String()`.\n */\n legendValueFormatter?: (value: string | number) => string;\n /** Plot-area margin, in px. Omit to use recharts' default (5 on every side). */\n margin?: { top?: number; right?: number; bottom?: number; left?: number };\n /**\n * Replace the default tooltip. Pass a configured `ChartTooltipContent`\n * (imported from this library) — e.g. with a `formatter` / `labelFormatter` —\n * to customize formatting, per-slice rows, or extra fields without composing\n * recharts yourself. Takes precedence over `tooltipFormat`. Ignored when\n * `showTooltip` is false.\n */\n tooltipContent?: React.ComponentProps<typeof ChartTooltip>['content'];\n /**\n * How the default tooltip reads a slice: its `value` alone (the default), or\n * the value followed by its share of the total (`value-percent`). The preset\n * covers the common case without hand-rolling a `tooltipContent`.\n *\n * The share is rendered as `NN.N%`, same as a data label's — not locale-aware.\n * Pass your own `tooltipContent` if you need to format it.\n */\n tooltipFormat?: PieChartTooltipFormat;\n /**\n * Position of the value labels when `showLabels` is on. Defaults to `outside`,\n * which keeps them on the chart surface — the only placement that reliably\n * has contrast, since slice fills are caller-supplied saturated colors. The\n * on-arc placements are available but switch to the on-fill label token.\n * Ignored when `labelLine` is on — a leader line only ever ends outside the arc.\n */\n labelPosition?: PolarLabelPosition;\n /**\n * What each data label reads when `showLabels` is on — the value alone (the\n * default), or the slice name and/or its share of the total. Overridable per\n * slice via `sliceSettings`.\n *\n * `labelFormatter` formats the slice's *value*, so it reaches `value` and\n * `name-value` only: a share is always rendered as `NN.N%` (a `.` decimal and\n * a bare `%`, not locale-aware) and never passes through the formatter.\n */\n labelFormat?: PieChartLabelFormat;\n /**\n * Draw a leader line from each slice to its data label, in the slice's own\n * color. Moves the labels outside the arc (see `labelPosition`); slices whose\n * label is hidden by `sliceSettings` get no line either.\n *\n * A label reaching out past the arc needs horizontal room — give the chart a\n * box wider than it is tall, or shrink the arc (`outerRadius`/`margin`), or\n * the outermost labels are clipped at the surface edge.\n */\n labelLine?: boolean;\n}\n\nfunction renderCenterLabel({ centerLabel }: { centerLabel: PieChartCenterLabel }) {\n return function CenterLabelContent({ viewBox }: { viewBox?: object }) {\n if (!viewBox || !('cx' in viewBox)) return null;\n const { cx = 0, cy = 0 } = viewBox as { cx?: number; cy?: number };\n const hasValue = centerLabel.value != null;\n const hasLabel = centerLabel.label != null;\n const both = hasValue && hasLabel;\n return (\n <g>\n {hasValue && (\n <text\n x={cx}\n y={both ? cy - 10 : cy}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n className=\"fill-foreground text-2xl font-semibold\"\n >\n {centerLabel.value}\n </text>\n )}\n {hasLabel && (\n <text\n x={cx}\n y={both ? cy + 13 : cy}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n className=\"fill-muted-foreground text-sm\"\n >\n {centerLabel.label}\n </text>\n )}\n </g>\n );\n };\n}\n\nconst PieChart = React.forwardRef<HTMLDivElement, PieChartProps>(\n (\n {\n className,\n config,\n palette,\n data,\n dataKey,\n nameKey,\n shape = 'donut',\n centerLabel,\n innerRadius = 48,\n outerRadius,\n paddingAngle = 2,\n cornerRadius,\n startAngle = 90,\n endAngle = -270,\n minAngle,\n sliceSettings,\n showTooltip = true,\n showLegend = true,\n legendFontSize,\n legendAriaLabel,\n legendValueFormatter,\n margin,\n tooltipContent,\n tooltipFormat = 'value',\n animate,\n animationDuration,\n animationBegin,\n animationEasing,\n showLabels = false,\n labelPosition,\n labelFormat = 'value',\n labelFormatter,\n labelLine = false,\n ...props\n },\n ref\n ) => {\n const animation = resolveAnimation({\n animate,\n animationDuration,\n animationBegin,\n animationEasing,\n });\n const pieLabelPosition = labelPosition ?? 'outside';\n const resolvedInnerRadius = shape === 'donut' ? innerRadius : 0;\n\n // Resolve colors so the external list legend has the same values as the chart\n // plot without needing to be inside ChartContainer's context.\n const resolvedConfigForLegend = React.useMemo(\n () => (showLegend ? resolveChartColors(config, palette ?? CHART_DEFAULT_PALETTE) : null),\n [showLegend, config, palette]\n );\n const rightLegendPayload: LegendPayload[] = React.useMemo(() => {\n if (!resolvedConfigForLegend) return [];\n return data.map((row) => ({\n value: String(row[nameKey]),\n dataKey: nameKey,\n color:\n resolvedConfigForLegend[String(row[nameKey])]?.color ??\n `var(--color-${toCssKey(String(row[nameKey]))})`,\n type: 'rect' as const,\n payload: row as Record<string, unknown>,\n }));\n }, [resolvedConfigForLegend, data, nameKey]);\n const hasLegend = Boolean(showLegend && rightLegendPayload.length);\n\n // The denominator behind every percent — the labels' and the tooltip's — so\n // the two always agree. Non-numeric cells count as nothing rather than NaN.\n const total = data.reduce(\n (sum, row) => sum + (toNumericValue(row[dataKey]) ?? 0),\n 0\n );\n\n // Always null, never '', for a slice with nothing to show — whether its\n // label was switched off or its format degraded to empty. recharts renders\n // no <text> at all for a nullish label value (`Label` bails on `isNullish`),\n // where an empty string still emits one wrapping an empty <tspan>.\n const resolveSliceLabel = (row: PieChartDatum | undefined): string | null => {\n if (!row) return null;\n const settings = sliceSettings?.[String(row[nameKey])];\n if (settings?.hideLabel) return null;\n return (\n pieChartLabelText({\n format: settings?.labelFormat ?? labelFormat,\n name: row[nameKey],\n value: row[dataKey],\n total,\n formatter: labelFormatter,\n }) || null\n );\n };\n\n // Leader lines are the one thing a `LabelList` can't draw: recharts only\n // renders them alongside the `label` prop's own outside placement. So the\n // labels move to that path when `labelLine` is on, and stay on the\n // position-aware `LabelList` otherwise.\n const showLeaderLines = showLabels && labelLine;\n\n const renderLeaderLabel = (labelProps: PieLabelRenderProps) => {\n const text = resolveSliceLabel(labelProps.payload as PieChartDatum);\n // An empty <g>, not null: recharts only takes the render function's output\n // when it's an element — a nullish return falls through to its own <Text>\n // painting the raw value.\n if (!text) return <g />;\n return (\n <text\n x={labelProps.x}\n y={labelProps.y}\n textAnchor={labelProps.textAnchor}\n dominantBaseline=\"central\"\n // Always the on-surface fill: this path only ever places labels\n // outside the arc, never over a slice.\n className={CHART_LABEL_FILL_CLASS}\n fontSize={CHART_LABEL_FONT_SIZE}\n >\n {text}\n </text>\n );\n };\n\n // recharts draws a line per sector independently of what the label renders,\n // so a slice hidden via `sliceSettings` would keep a line pointing at\n // nothing. Rebuilding the default `Curve` here is what lets it be dropped.\n const renderLeaderLine = ({\n key,\n payload,\n ...lineProps\n }: CurveProps & { key?: React.Key; payload?: PieChartDatum }) => {\n if (!resolveSliceLabel(payload)) return <g />;\n return (\n <Curve {...lineProps} type=\"linear\" className=\"recharts-pie-label-line\" />\n );\n };\n\n // Shared recharts chart composition (used in both layout modes).\n const pieChartContent = (\n <RechartsPieChart margin={margin ?? { top: 0, right: 0, bottom: 0, left: 0 }}>\n {showTooltip && (\n <ChartTooltip\n content={\n tooltipContent ??\n (tooltipFormat === 'value-percent' ? (\n pieChartValuePercentTooltip({ nameKey, config, total })\n ) : (\n <ChartTooltipContent nameKey={nameKey} hideLabel />\n ))\n }\n />\n )}\n <Pie\n data={data as unknown[]}\n dataKey={dataKey}\n nameKey={nameKey}\n innerRadius={resolvedInnerRadius}\n outerRadius={outerRadius ?? 60}\n paddingAngle={paddingAngle}\n cornerRadius={cornerRadius}\n startAngle={startAngle}\n endAngle={endAngle}\n minAngle={minAngle}\n label={showLeaderLines ? renderLeaderLabel : false}\n labelLine={showLeaderLines ? renderLeaderLine : false}\n {...animation}\n >\n {data.map((entry, index) => (\n // Keyed by index, not the name: two rows may share a nameKey\n // value, which would collide as a React key. Same-named rows\n // intentionally share a color/config entry via `--color-<name>`.\n <Cell\n key={index}\n fill={\n sliceSettings?.[String(entry[nameKey])]?.color ??\n `var(--color-${toCssKey(String(entry[nameKey]))})`\n }\n />\n ))}\n {shape === 'donut' && centerLabel && (\n <Label content={renderCenterLabel({ centerLabel })} />\n )}\n {showLabels && !showLeaderLines && (\n <LabelList\n // `valueAccessor` rather than `dataKey`: the label text can\n // carry the slice's name and share, which only the whole row\n // (and the chart's total) can compose. recharts ignores the\n // accessor when a dataKey is set, so the two can't be combined.\n valueAccessor={(entry) =>\n resolveSliceLabel(entry.payload as PieChartDatum)\n }\n // Always explicit: recharts' polar fallback for an unset\n // position is the sector centroid — inside the fill — which\n // is exactly the placement the on-surface token can't survive.\n position={pieLabelPosition}\n className={resolveLabelFillClass(pieLabelPosition)}\n fontSize={CHART_LABEL_FONT_SIZE}\n />\n )}\n </Pie>\n </RechartsPieChart>\n );\n\n // Outside labels need the full 320px SVG canvas; constraining it to half of\n // the widget clips labels at the SVG boundary. Inside labels fit the 120px\n // plot canvas.\n const chartAreaSize =\n showLabels &&\n (showLeaderLines ||\n pieLabelPosition === 'outside' ||\n pieLabelPosition === 'end')\n ? 320\n : 120;\n const chartDivSize =\n chartAreaSize === 320\n ? 'aspect-square w-full max-w-[320px]'\n : 'size-[120px]';\n const chartColumnSize =\n chartAreaSize === 320\n ? 'max-w-[320px] flex-[1_1_320px]'\n : 'flex-1 basis-[120px]';\n\n return (\n <div\n ref={ref}\n data-shape={shape}\n className={cn(\n 'flex w-full min-w-0 gap-4',\n hasLegend ? 'flex-wrap items-stretch' : 'items-center justify-center',\n pieChartVariants({ shape }),\n className\n )}\n {...props}\n >\n <div\n className={cn(\n 'flex min-w-0 items-center justify-center',\n hasLegend ? chartColumnSize : 'w-full'\n )}\n >\n <div className={chartDivSize}>\n <ChartContainer\n config={config}\n palette={palette}\n className=\"size-full\"\n >\n {pieChartContent}\n </ChartContainer>\n </div>\n </div>\n {hasLegend && resolvedConfigForLegend && (\n <ChartLegendContent\n variant=\"list\"\n payload={rightLegendPayload}\n config={resolvedConfigForLegend}\n nameKey={nameKey}\n fontSize={legendFontSize}\n ariaLabel={legendAriaLabel}\n valueKey={dataKey}\n valueFormatter={legendValueFormatter}\n valueClassName=\"text-[var(--ui-text-on-surface-primary)]\"\n className=\"min-w-0 flex-1 basis-[120px] self-center\"\n />\n )}\n </div>\n );\n }\n);\nPieChart.displayName = 'PieChart';\n\nexport { PieChart, pieChartVariants };\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -36,93 +36,92 @@ import { CardSection as sn, cardSectionVariants as cn } from "./components/ui/ca
|
|
|
36
36
|
import { CardWidgetCarousel as ln } from "./components/ui/card-widget-carousel/card-widget-carousel.js";
|
|
37
37
|
import { CardWidget as un } from "./components/ui/card-widget-carousel/card-widget.js";
|
|
38
38
|
import { CategoryBar as dn, categoryBarVariants as fn } from "./components/ui/category-bar/category-bar.js";
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import { FilterSearch as wr, FilterSearchActions as Tr, FilterSearchAppliedFilters as Er, FilterSearchFilters as Dr, useFilterSearchFilters as Or } from "./components/ui/filter-search/filter-search.js";
|
|
39
|
+
import { ChartState as pn } from "./components/ui/chart-state/chart-state.js";
|
|
40
|
+
import { ChartWidget as mn } from "./components/ui/chart-widget/chart-widget.js";
|
|
41
|
+
import { Checkbox as hn } from "./components/ui/checkbox/checkbox.js";
|
|
42
|
+
import { Chip as gn, chipVariants as _n } from "./components/ui/chip/chip.js";
|
|
43
|
+
import { Combobox as vn, ComboboxContent as yn, ComboboxEmpty as bn, ComboboxGroup as xn, ComboboxGroupLabel as Sn, ComboboxInput as Cn, ComboboxItem as wn, ComboboxList as Tn } from "./components/ui/combobox/combobox.js";
|
|
44
|
+
import { ComposedChart as En, composedChartVariants as Dn } from "./components/ui/composed-chart/composed-chart.js";
|
|
45
|
+
import { ConfidenceCone as On } from "./components/ui/confidence-cone/confidence-cone.js";
|
|
46
|
+
import { DropdownMenu as kn, DropdownMenuCheckboxItem as An, DropdownMenuContent as jn, DropdownMenuGroup as Mn, DropdownMenuItem as Nn, DropdownMenuLabel as Pn, DropdownMenuPortal as Fn, DropdownMenuRadioGroup as In, DropdownMenuRadioItem as Ln, DropdownMenuSeparator as Rn, DropdownMenuShortcut as zn, DropdownMenuSub as Bn, DropdownMenuSubContent as Vn, DropdownMenuSubTrigger as Hn, DropdownMenuTrigger as Un } from "./components/ui/dropdown-menu/dropdown-menu.js";
|
|
47
|
+
import { Table as Wn, TableActionsCell as Gn, TableBody as Kn, TableCaption as qn, TableCell as Jn, TableFooter as Yn, TableHead as Xn, TableHeader as Zn, TableRow as Qn, TableSelectCell as $n, TableSettingsCell as er } from "./components/ui/table/table.js";
|
|
48
|
+
import { TablePagination as tr } from "./components/ui/table/table-pagination.js";
|
|
49
|
+
import { TableViewOptions as nr } from "./components/ui/table/table-view-options.js";
|
|
50
|
+
import { isBulkSelectionActive as rr } from "./components/ui/data-table/data-table-selection.js";
|
|
51
|
+
import { DataTableViewOptions as ir } from "./components/ui/data-table/data-table-view-options.js";
|
|
52
|
+
import { DataTable as ar, getCellStyle as or, getColumnWidth as sr, getPinnedStyle as cr, reorderColumn as lr } from "./components/ui/data-table/data-table.js";
|
|
53
|
+
import { DataTableBulkActionsBar as ur } from "./components/ui/data-table/data-table-bulk-actions-bar.js";
|
|
54
|
+
import { DataTableColumnHeader as dr } from "./components/ui/data-table/data-table-column-header.js";
|
|
55
|
+
import { DataTableExpandTrigger as fr } from "./components/ui/data-table/data-table-expand-trigger.js";
|
|
56
|
+
import { DataTablePagination as pr } from "./components/ui/data-table/data-table-pagination.js";
|
|
57
|
+
import { FilterChips as mr, FilterChipsList as hr, FilterChipsReset as gr } from "./components/ui/filter-chips/filter-chips.js";
|
|
58
|
+
import { Popover as _r, PopoverBody as vr, PopoverContent as yr, PopoverFooter as br, PopoverPortal as xr, PopoverTrigger as Sr } from "./components/ui/popover/popover.js";
|
|
59
|
+
import { FilterSearch as Cr, FilterSearchActions as wr, FilterSearchAppliedFilters as Tr, FilterSearchFilters as Er, useFilterSearchFilters as Dr } from "./components/ui/filter-search/filter-search.js";
|
|
61
60
|
import { InputSearch as L } from "./components/ui/input-search/input-search.js";
|
|
62
|
-
import { DataTableToolbar as
|
|
63
|
-
import { InputDatePicker as
|
|
64
|
-
import { DateRangePicker as
|
|
65
|
-
import { DescriptionList as
|
|
66
|
-
import { InputBox as
|
|
61
|
+
import { DataTableToolbar as Or } from "./components/ui/data-table/data-table-toolbar.js";
|
|
62
|
+
import { InputDatePicker as R } from "./components/ui/input-date-picker/input-date-picker.js";
|
|
63
|
+
import { DateRangePicker as kr } from "./components/ui/date-range-picker/date-range-picker.js";
|
|
64
|
+
import { DescriptionList as Ar, DescriptionListActions as jr, DescriptionListItem as Mr, DescriptionListLabel as Nr, DescriptionListValue as Pr, DescriptionListValueDescription as Fr } from "./components/ui/description-list/description-list.js";
|
|
65
|
+
import { InputBox as Ir } from "./components/ui/input/input.js";
|
|
67
66
|
import { InputText as z } from "./components/ui/input-text/input-text.js";
|
|
68
|
-
import { Loading as
|
|
69
|
-
import { Dialog as
|
|
70
|
-
import { DialogFooterCarousel as
|
|
71
|
-
import { DialogWelcome as
|
|
72
|
-
import { Empty as
|
|
73
|
-
import { EmptyOverlay as
|
|
74
|
-
import { labelClassName as
|
|
75
|
-
import { Separator as
|
|
76
|
-
import { Field as
|
|
77
|
-
import { FittedActions as
|
|
78
|
-
import { FilterCards as
|
|
79
|
-
import { FUNNEL_CHART_DEFAULT_PALETTE as
|
|
80
|
-
import { Grid as
|
|
81
|
-
import { Histogram as
|
|
82
|
-
import { Form as
|
|
83
|
-
import { RadarChart as
|
|
84
|
-
import { RadialBarChart as
|
|
85
|
-
import { Radio as
|
|
86
|
-
import { InputNumPicker as
|
|
87
|
-
import { InputOTP as
|
|
88
|
-
import { InputPassword as
|
|
67
|
+
import { Loading as Lr, loadingVariants as Rr } from "./components/ui/loading/loading.js";
|
|
68
|
+
import { Dialog as zr, DialogClose as Br } from "./components/ui/dialog/dialog.js";
|
|
69
|
+
import { DialogFooterCarousel as Vr } from "./components/ui/dialog-footer-carousel/dialog-footer-carousel.js";
|
|
70
|
+
import { DialogWelcome as Hr } from "./components/ui/dialog-welcome/dialog-welcome.js";
|
|
71
|
+
import { Empty as Ur, EmptyActions as Wr, EmptyDescription as Gr, EmptyHeader as Kr, EmptyIcon as qr, EmptyLinks as Jr, EmptyTitle as Yr } from "./components/ui/empty/empty.js";
|
|
72
|
+
import { EmptyOverlay as Xr, emptyOverlayIconVariants as Zr } from "./components/ui/empty-overlay/empty-overlay.js";
|
|
73
|
+
import { labelClassName as Qr } from "./components/ui/label/label.js";
|
|
74
|
+
import { Separator as $r } from "./components/ui/separator/separator.js";
|
|
75
|
+
import { Field as ei, FieldContent as ti, FieldControl as ni, FieldDescription as ri, FieldError as ii, FieldGroup as ai, FieldLabel as oi, FieldLegend as si, FieldSeparator as ci, FieldSet as li, FieldTitle as ui } from "./components/ui/field/field.js";
|
|
76
|
+
import { FittedActions as di, computeFittedVisibleCount as fi } from "./components/ui/fitted-actions/fitted-actions.js";
|
|
77
|
+
import { FilterCards as pi } from "./components/ui/filter-cards/filter-cards.js";
|
|
78
|
+
import { FUNNEL_CHART_DEFAULT_PALETTE as mi, FunnelChart as hi, funnelChartPercent as gi, funnelChartVariants as _i } from "./components/ui/funnel-chart/funnel-chart.js";
|
|
79
|
+
import { Grid as vi, gridVariants as yi } from "./components/ui/grid/grid.js";
|
|
80
|
+
import { Histogram as bi } from "./components/ui/histogram/histogram.js";
|
|
81
|
+
import { Form as xi } from "./components/ui/form/form.js";
|
|
82
|
+
import { RadarChart as Si, radarChartVariants as Ci } from "./components/ui/radar-chart/radar-chart.js";
|
|
83
|
+
import { RadialBarChart as wi } from "./components/ui/radial-bar-chart/radial-bar-chart.js";
|
|
84
|
+
import { Radio as Ti, RadioGroup as Ei } from "./components/ui/radio/radio.js";
|
|
85
|
+
import { InputNumPicker as Di } from "./components/ui/input-num-picker/input-num-picker.js";
|
|
86
|
+
import { InputOTP as Oi } from "./components/ui/input-otp/input-otp.js";
|
|
87
|
+
import { InputPassword as ki } from "./components/ui/input-password/input-password.js";
|
|
89
88
|
import { InputTextArea as B } from "./components/ui/input-text-area/input-text-area.js";
|
|
90
|
-
import { LineChart as
|
|
91
|
-
import { Link as
|
|
92
|
-
import { Skeleton as
|
|
93
|
-
import { TrendIndicator as
|
|
94
|
-
import { Metric as
|
|
95
|
-
import { NumberField as
|
|
96
|
-
import { PageContent as
|
|
97
|
-
import { Tag as V, tagVariants as
|
|
98
|
-
import { PageHeader as
|
|
99
|
-
import { Pagination as
|
|
100
|
-
import { PieChart as
|
|
101
|
-
import { Progress as
|
|
102
|
-
import { ProgressCircle as
|
|
103
|
-
import { SankeyChart as
|
|
104
|
-
import { ScatterChart as
|
|
105
|
-
import { ScrollArea as
|
|
106
|
-
import { Section as
|
|
107
|
-
import { SegmentControl as
|
|
108
|
-
import { Sheet as H, SheetBody as U, SheetClose as W, SheetCloseButton as G, SheetContent as K, SheetDescription as q, SheetFooter as J, SheetHeader as Y, SheetOverlay as X, SheetPortal as Z, SheetTitle as Q, SheetTrigger as $, sheetVariants as
|
|
109
|
-
import { SheetDetails as
|
|
110
|
-
import { Slider as
|
|
111
|
-
import { Stack as
|
|
112
|
-
import { Stepper as
|
|
113
|
-
import { StepperItem as
|
|
114
|
-
import { ResizableHandle as
|
|
115
|
-
import { SidebarPrimary as
|
|
116
|
-
import { SidebarSecondary as
|
|
117
|
-
import { ButtonIconMenu as
|
|
118
|
-
import { Tabs as
|
|
119
|
-
import { Toaster as
|
|
120
|
-
import { Toggle as
|
|
121
|
-
import { Toolbar as
|
|
122
|
-
import { Timeline as
|
|
123
|
-
import { Timer as
|
|
124
|
-
import { TreeItem as
|
|
125
|
-
import { Treemap as
|
|
126
|
-
import { WidgetPlaceholder as
|
|
127
|
-
import { Wizard as
|
|
128
|
-
export { _e as Accordion, xe as AccordionContainer, Se as AccordionContainerContent, Ce as AccordionContainerTrigger, ve as AccordionContent, ye as AccordionItem, be as AccordionTrigger, n as Alert, r as AlertActions, i as AlertClose, a as AlertContent, o as AlertDescription, s as AlertIcon, c as AlertText, l as AlertTitle, h as AppShellChat, g as AppShellChatChat, _ as AppShellChatChatBody, v as AppShellChatChatHeader, y as AppShellChatContent, b as AppShellChatContentBody, x as AppShellChatContentHeader, S as AppShellChatSidebar, dt as AreaChart, pt as Avatar, mt as AvatarFallback, ht as AvatarGroup, gt as AvatarImage, ce as BREAKPOINT_2XL, le as BREAKPOINT_3XL, ue as BREAKPOINT_4XL, de as BREAKPOINT_LG, fe as BREAKPOINT_XL, V as Badge, vt as BarChart, bt as Breadcrumb, xt as BreadcrumbEllipsis, St as BreadcrumbItem, Ct as BreadcrumbLink, wt as BreadcrumbList, Tt as BreadcrumbPage, Et as BreadcrumbSeparator, Dt as Button, kt as ButtonGroup, At as ButtonGroupItem, e as ButtonIcon, Xt as ButtonIconInput,
|
|
89
|
+
import { LineChart as Ai, lineChartVariants as ji } from "./components/ui/line-chart/line-chart.js";
|
|
90
|
+
import { Link as Mi, linkVariants as Ni } from "./components/ui/link/link.js";
|
|
91
|
+
import { Skeleton as Pi } from "./components/ui/skeleton/skeleton.js";
|
|
92
|
+
import { TrendIndicator as Fi, trendIndicatorVariants as Ii } from "./components/ui/trend-indicator/trend-indicator.js";
|
|
93
|
+
import { Metric as Li } from "./components/ui/metric/metric.js";
|
|
94
|
+
import { NumberField as Ri, NumberFieldDecrement as zi, NumberFieldGroup as Bi, NumberFieldIncrement as Vi, NumberFieldInput as Hi } from "./components/ui/number-field/number-field.js";
|
|
95
|
+
import { PageContent as Ui } from "./components/ui/page-content/page-content.js";
|
|
96
|
+
import { Tag as V, tagVariants as Wi } from "./components/ui/tag/tag.js";
|
|
97
|
+
import { PageHeader as Gi, PageHeaderActions as Ki, PageHeaderDescription as qi, PageHeaderDescriptionRow as Ji, PageHeaderRow as Yi, PageHeaderTags as Xi, PageHeaderTitle as Zi } from "./components/ui/page-header/page-header.js";
|
|
98
|
+
import { Pagination as Qi, PaginationContent as $i, PaginationEllipsis as ea, PaginationItem as ta, PaginationLink as na, PaginationNext as ra, PaginationPrevious as ia } from "./components/ui/pagination/pagination.js";
|
|
99
|
+
import { PieChart as aa, pieChartVariants as oa } from "./components/ui/pie-chart/pie-chart.js";
|
|
100
|
+
import { Progress as sa } from "./components/ui/progress/progress.js";
|
|
101
|
+
import { ProgressCircle as ca, progressCircleVariants as la } from "./components/ui/progress-circle/progress-circle.js";
|
|
102
|
+
import { SankeyChart as ua } from "./components/ui/sankey-chart/sankey-chart.js";
|
|
103
|
+
import { ScatterChart as da } from "./components/ui/scatter-chart/scatter-chart.js";
|
|
104
|
+
import { ScrollArea as fa, ScrollBar as pa } from "./components/ui/scroll-area/scroll-area.js";
|
|
105
|
+
import { Section as ma, SectionContent as ha, SectionHeader as ga, sectionVariants as _a, useSectionContext as va } from "./components/ui/section/section.js";
|
|
106
|
+
import { SegmentControl as ya, SegmentControlItem as ba, segmentControlVariants as xa } from "./components/ui/segment-control/segment-control.js";
|
|
107
|
+
import { Sheet as H, SheetBody as U, SheetClose as W, SheetCloseButton as G, SheetContent as K, SheetDescription as q, SheetFooter as J, SheetHeader as Y, SheetOverlay as X, SheetPortal as Z, SheetTitle as Q, SheetTrigger as $, sheetVariants as Sa } from "./components/ui/sheet/sheet.js";
|
|
108
|
+
import { SheetDetails as Ca } from "./components/ui/sheet/sheet-details.js";
|
|
109
|
+
import { Slider as wa } from "./components/ui/slider/slider.js";
|
|
110
|
+
import { Stack as Ta, stackVariants as Ea } from "./components/ui/stack/stack.js";
|
|
111
|
+
import { Stepper as Da } from "./components/ui/stepper/stepper.js";
|
|
112
|
+
import { StepperItem as Oa, stepperItemVariants as ka } from "./components/ui/stepper-item/stepper-item.js";
|
|
113
|
+
import { ResizableHandle as Aa, ResizablePanel as ja, ResizablePanelGroup as Ma } from "./components/ui/resizable/resizable.js";
|
|
114
|
+
import { SidebarPrimary as Na, SidebarPrimaryCollapseTrigger as Pa, SidebarPrimaryContent as Fa, SidebarPrimaryFooter as Ia, SidebarPrimaryHeader as La, SidebarPrimaryMenu as Ra, SidebarPrimaryMenuItem as za, SidebarPrimaryMenuItemExtras as Ba, SidebarPrimarySection as Va, sidebarPrimaryMenuItemVariants as Ha } from "./components/ui/sidebar-primary/sidebar-primary.js";
|
|
115
|
+
import { SidebarSecondary as Ua, SidebarSecondaryCollapseTrigger as Wa, SidebarSecondaryContent as Ga, SidebarSecondaryFooter as Ka, SidebarSecondaryHeader as qa, SidebarSecondaryMenu as Ja, SidebarSecondaryMenuItem as Ya, SidebarSecondaryMenuItemExtras as Xa, SidebarSecondarySection as Za, SidebarSecondarySectionLabel as Qa, sidebarSecondaryMenuItemVariants as $a } from "./components/ui/sidebar-secondary/sidebar-secondary.js";
|
|
116
|
+
import { ButtonIconMenu as eo } from "./components/ui/button-icon-menu/button-icon-menu.js";
|
|
117
|
+
import { Tabs as to, TabsContent as no, TabsList as ro, TabsTrigger as io } from "./components/ui/tabs/tabs.js";
|
|
118
|
+
import { Toaster as ao, toast as oo, toastVariants as so } from "./components/ui/toast/toast.js";
|
|
119
|
+
import { Toggle as co, ToggleGroup as lo, ToggleGroupItem as uo } from "./components/ui/toggle-group/toggle-group.js";
|
|
120
|
+
import { Toolbar as fo, ToolbarActionList as po, ToolbarActions as mo } from "./components/ui/toolbar/toolbar.js";
|
|
121
|
+
import { Timeline as ho, TimelineItem as go } from "./components/ui/timeline/timeline.js";
|
|
122
|
+
import { Timer as _o } from "./components/ui/timer/timer.js";
|
|
123
|
+
import { TreeItem as vo } from "./components/ui/tree-item/tree-item.js";
|
|
124
|
+
import { Treemap as yo } from "./components/ui/treemap/treemap.js";
|
|
125
|
+
import { WidgetPlaceholder as bo, WidgetPlaceholderAction as xo, WidgetPlaceholderContent as So, WidgetPlaceholderFooter as Co, WidgetPlaceholderHeader as wo, WidgetPlaceholderIcon as To, WidgetPlaceholderImage as Eo, WidgetPlaceholderText as Do, WidgetPlaceholderTitle as Oo } from "./components/ui/widget-placeholder/widget-placeholder.js";
|
|
126
|
+
import { Wizard as ko, WizardBody as Ao, WizardHeader as jo, WizardSubtitle as Mo } from "./components/ui/wizard/wizard.js";
|
|
127
|
+
export { _e as Accordion, xe as AccordionContainer, Se as AccordionContainerContent, Ce as AccordionContainerTrigger, ve as AccordionContent, ye as AccordionItem, be as AccordionTrigger, n as Alert, r as AlertActions, i as AlertClose, a as AlertContent, o as AlertDescription, s as AlertIcon, c as AlertText, l as AlertTitle, h as AppShellChat, g as AppShellChatChat, _ as AppShellChatChatBody, v as AppShellChatChatHeader, y as AppShellChatContent, b as AppShellChatContentBody, x as AppShellChatContentHeader, S as AppShellChatSidebar, dt as AreaChart, pt as Avatar, mt as AvatarFallback, ht as AvatarGroup, gt as AvatarImage, ce as BREAKPOINT_2XL, le as BREAKPOINT_3XL, ue as BREAKPOINT_4XL, de as BREAKPOINT_LG, fe as BREAKPOINT_XL, V as Badge, vt as BarChart, bt as Breadcrumb, xt as BreadcrumbEllipsis, St as BreadcrumbItem, Ct as BreadcrumbLink, wt as BreadcrumbList, Tt as BreadcrumbPage, Et as BreadcrumbSeparator, Dt as Button, kt as ButtonGroup, At as ButtonGroupItem, e as ButtonIcon, Xt as ButtonIconInput, eo as ButtonIconMenu, Nt as ButtonMenu, Be as CHART_BRUSH_ARIA_LABEL, Ve as CHART_BRUSH_HEIGHT, O as CHART_CATEGORICAL_TOKENS, k as CHART_DEFAULT_PALETTE, Te as CHART_DIVERGING_TOKENS, He as CHART_LABEL_FILL_CLASS, Ue as CHART_LABEL_FILL_ON_SERIES_CLASS, We as CHART_LABEL_FONT_SIZE, Ge as CHART_LABEL_MARGIN, Ke as CHART_REFERENCE_LINE_STROKE, Ee as CHART_SEQUENTIAL_TOKENS, De as CHART_STATUS_TOKENS, Ft as Calendar, It as CalendarDayButton, qt as CalendarHeader, Jt as CalendarItem, Yt as CalendarPanel, $t as Card, en as CardContent, an as CardFilter, tn as CardFooter, nn as CardHeader, sn as CardSection, un as CardWidget, ln as CardWidgetCarousel, dn as CategoryBar, Me as ChartContainer, Ne as ChartLegend, Pe as ChartLegendContent, pn as ChartState, Fe as ChartStyle, Ie as ChartTooltip, Le as ChartTooltipContent, mn as ChartWidget, hn as Checkbox, gn as Chip, vn as Combobox, yn as ComboboxContent, bn as ComboboxEmpty, xn as ComboboxGroup, Sn as ComboboxGroupLabel, Cn as ComboboxInput, wn as ComboboxItem, Tn as ComboboxList, En as ComposedChart, On as ConfidenceCone, re as DEFAULT_TABLE_URL_PARAM_KEYS, ar as DataTable, ur as DataTableBulkActionsBar, dr as DataTableColumnHeader, fr as DataTableExpandTrigger, pr as DataTablePagination, Or as DataTableToolbar, ir as DataTableViewOptions, kr as DateRangePicker, Ar as DescriptionList, jr as DescriptionListActions, Mr as DescriptionListItem, Nr as DescriptionListLabel, Pr as DescriptionListValue, Fr as DescriptionListValueDescription, H as Details, U as DetailsBody, W as DetailsClose, G as DetailsCloseButton, K as DetailsContent, q as DetailsDescription, J as DetailsFooter, Y as DetailsHeader, X as DetailsOverlay, Z as DetailsPortal, Q as DetailsTitle, $ as DetailsTrigger, zr as Dialog, Br as DialogClose, Vr as DialogFooterCarousel, Lt as DialogFooterDefault, Hr as DialogWelcome, kn as DropdownMenu, An as DropdownMenuCheckboxItem, jn as DropdownMenuContent, Mn as DropdownMenuGroup, Nn as DropdownMenuItem, Pn as DropdownMenuLabel, Fn as DropdownMenuPortal, In as DropdownMenuRadioGroup, Ln as DropdownMenuRadioItem, Rn as DropdownMenuSeparator, zn as DropdownMenuShortcut, Bn as DropdownMenuSub, Vn as DropdownMenuSubContent, Hn as DropdownMenuSubTrigger, Un as DropdownMenuTrigger, Ur as Empty, Wr as EmptyActions, Gr as EmptyDescription, Kr as EmptyHeader, qr as EmptyIcon, Jr as EmptyLinks, Xr as EmptyOverlay, Yr as EmptyTitle, mi as FUNNEL_CHART_DEFAULT_PALETTE, ei as Field, ti as FieldContent, ni as FieldControl, ri as FieldDescription, ii as FieldError, ai as FieldGroup, oi as FieldLabel, si as FieldLegend, ci as FieldSeparator, li as FieldSet, ui as FieldTitle, pi as FilterCards, mr as FilterChips, hr as FilterChipsList, gr as FilterChipsReset, Cr as FilterSearch, wr as FilterSearchActions, Tr as FilterSearchAppliedFilters, Er as FilterSearchFilters, di as FittedActions, xi as Form, hi as FunnelChart, vi as Grid, bi as Histogram, z as Input, Ir as InputBox, R as InputDatePicker, Di as InputNumPicker, Oi as InputOTP, ki as InputPassword, L as InputSearch, A as InputSelect, j as InputSelectContent, Rt as InputSelectDescription, zt as InputSelectError, Bt as InputSelectExpander, Vt as InputSelectField, Ht as InputSelectGroup, M as InputSelectItem, Ut as InputSelectLabel, Wt as InputSelectSearch, N as InputSelectSection, P as InputSelectSectionLabel, Gt as InputSelectStatus, F as InputSelectTrigger, I as InputSelectValue, z as InputText, B as InputTextArea, Ai as LineChart, Mi as Link, Lr as Loading, Li as Metric, Ri as NumberField, zi as NumberFieldDecrement, Bi as NumberFieldGroup, Vi as NumberFieldIncrement, Hi as NumberFieldInput, Ui as PageContent, Gi as PageHeader, Ki as PageHeaderActions, qi as PageHeaderDescription, Ji as PageHeaderDescriptionRow, Yi as PageHeaderRow, Xi as PageHeaderTags, Zi as PageHeaderTitle, Qi as Pagination, $i as PaginationContent, ea as PaginationEllipsis, ta as PaginationItem, na as PaginationLink, ra as PaginationNext, ia as PaginationPrevious, aa as PieChart, _r as Popover, vr as PopoverBody, yr as PopoverContent, br as PopoverFooter, xr as PopoverPortal, Sr as PopoverTrigger, he as PortalContainerProvider, sa as Progress, ca as ProgressCircle, pe as ROOT_FONT_SIZE_PX, Si as RadarChart, wi as RadialBarChart, Ti as Radio, Ei as RadioGroup, Aa as ResizableHandle, ja as ResizablePanel, Ma as ResizablePanelGroup, ua as SankeyChart, da as ScatterChart, fa as ScrollArea, pa as ScrollBar, L as Search, ma as Section, ha as SectionContent, ga as SectionHeader, ya as SegmentControl, ba as SegmentControlItem, A as Select, j as SelectContent, N as SelectGroup, P as SelectGroupLabel, M as SelectItem, F as SelectTrigger, I as SelectValue, $r as Separator, H as Sheet, U as SheetBody, W as SheetClose, G as SheetCloseButton, K as SheetContent, q as SheetDescription, Ca as SheetDetails, J as SheetFooter, Y as SheetHeader, X as SheetOverlay, Z as SheetPortal, Q as SheetTitle, $ as SheetTrigger, Na as SidebarPrimary, Pa as SidebarPrimaryCollapseTrigger, Fa as SidebarPrimaryContent, Ia as SidebarPrimaryFooter, La as SidebarPrimaryHeader, Ra as SidebarPrimaryMenu, za as SidebarPrimaryMenuItem, Ba as SidebarPrimaryMenuItemExtras, Va as SidebarPrimarySection, Ua as SidebarSecondary, Wa as SidebarSecondaryCollapseTrigger, Ga as SidebarSecondaryContent, Ka as SidebarSecondaryFooter, qa as SidebarSecondaryHeader, Ja as SidebarSecondaryMenu, Ya as SidebarSecondaryMenuItem, Xa as SidebarSecondaryMenuItemExtras, Za as SidebarSecondarySection, Qa as SidebarSecondarySectionLabel, Pi as Skeleton, wa as Slider, Ta as Stack, Da as Stepper, Oa as StepperItem, Qt as Switch, Wn as Table, Gn as TableActionsCell, Kn as TableBody, qn as TableCaption, Jn as TableCell, Yn as TableFooter, Xn as TableHead, Zn as TableHeader, tr as TablePagination, Qn as TableRow, $n as TableSelectCell, er as TableSettingsCell, nr as TableViewOptions, to as Tabs, no as TabsContent, ro as TabsList, io as TabsTrigger, V as Tag, B as Textarea, ho as Timeline, go as TimelineItem, _o as Timer, ao as Toaster, co as Toggle, lo as ToggleGroup, uo as ToggleGroupItem, fo as Toolbar, po as ToolbarActionList, mo as ToolbarActions, d as Tooltip, f as TooltipContent, p as TooltipProvider, m as TooltipTrigger, vo as TreeItem, yo as Treemap, Fi as TrendIndicator, D as TruncateText, bo as WidgetPlaceholder, xo as WidgetPlaceholderAction, So as WidgetPlaceholderContent, Co as WidgetPlaceholderFooter, wo as WidgetPlaceholderHeader, To as WidgetPlaceholderIcon, Eo as WidgetPlaceholderImage, Do as WidgetPlaceholderText, Oo as WidgetPlaceholderTitle, ko as Wizard, Ao as WizardBody, jo as WizardHeader, Mo as WizardSubtitle, u as alertVariants, ft as areaChartVariants, _t as avatarVariants, yt as barChartVariants, jt as buttonGroupItemVariants, Mt as buttonGroupVariants, Zt as buttonIconInputVariants, t as buttonIconVariants, Pt as buttonMenuVariants, Ot as buttonVariants, on as cardFilterVariants, cn as cardSectionVariants, rn as cardVariants, fn as categoryBarVariants, _n as chipVariants, ee as cn, Dn as composedChartVariants, fi as computeFittedVisibleCount, qe as createTickFormatter, Je as dropProjectionPayload, Zr as emptyOverlayIconVariants, Oe as findDuplicateTones, Ye as formatCompactNumber, Xe as formatPercent, gi as funnelChartPercent, _i as funnelChartVariants, C as getAppShellChatInitialLayout, or as getCellStyle, sr as getColumnWidth, cr as getPinnedStyle, me as getViewportWidth, yi as gridVariants, rr as isBulkSelectionActive, Qr as labelClassName, ji as lineChartVariants, Ni as linkVariants, ke as listPaletteChoices, Ae as listPaletteStops, Rr as loadingVariants, E as measureTextWidth, T as middleTruncate, ie as parseTableUrlState, oa as pieChartVariants, la as progressCircleVariants, Ci as radarChartVariants, lr as reorderColumn, Ze as resolveAnimation, Qe as resolveAxisDomain, $e as resolveBrushProps, et as resolveCartesianLabelPosition, tt as resolveCategoryRange, Re as resolveChartColors, nt as resolveChartReferenceValue, rt as resolveLabelFillClass, it as resolveReferenceLineProps, at as resolveRotatedTickAnchor, je as resolveSeriesColor, ot as resolveXAxisHeight, st as resolveXAxisTitle, ct as resolveYAxisTitle, _a as sectionVariants, xa as segmentControlVariants, ae as serializeTableUrlState, Sa as sheetVariants, Ha as sidebarPrimaryMenuItemVariants, $a as sidebarSecondaryMenuItemVariants, Ea as stackVariants, ka as stepperItemVariants, Wi as tagVariants, ze as toCssKey, lt as toLabelFormatter, ut as toReferenceLineList, oo as toast, so as toastVariants, Ii as trendIndicatorVariants, we as useAccordionContainerContext, w as useAppShellChatInitialLayout, Dr as useFilterSearchFilters, Kt as useInputSelectFilter, ne as useIntersectionObserver, ge as usePortalContainer, va as useSectionContext, te as useSortState, oe as useTableUrlState, se as useWizard };
|