@aspprev/versi-ds 0.5.6 → 0.5.9

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.
@@ -144,13 +144,67 @@ function useHighContrastPreference() {
144
144
  return highContrast;
145
145
  }
146
146
 
147
+ // src/hooks/useChartTheme.ts
148
+ import { useEffect as useEffect3, useState as useState3 } from "react";
149
+ function useChartTheme() {
150
+ const [theme, setTheme] = useState3(getChartTheme);
151
+ useEffect3(() => {
152
+ let frame = 0;
153
+ const read = () => {
154
+ const next = getChartTheme();
155
+ setTheme((previous) => JSON.stringify(previous) === JSON.stringify(next) ? previous : next);
156
+ };
157
+ const observer = new MutationObserver(() => {
158
+ cancelAnimationFrame(frame);
159
+ frame = requestAnimationFrame(read);
160
+ });
161
+ const options = { attributes: true, attributeFilter: ["class", "style", "data-ds-theme", "data-color-scheme", "data-contrast", "data-contrast-theme"] };
162
+ observer.observe(document.documentElement, options);
163
+ observer.observe(document.body, options);
164
+ read();
165
+ return () => {
166
+ observer.disconnect();
167
+ cancelAnimationFrame(frame);
168
+ };
169
+ }, []);
170
+ return theme;
171
+ }
172
+
173
+ // src/components/chart/donut-data-labels.ts
174
+ function decorateDonutDataLabels(root, semanticColor) {
175
+ if (!root?.isConnected) return;
176
+ for (const label of root.querySelectorAll("text.apexcharts-pie-label")) {
177
+ const group = label.parentElement;
178
+ if (!group) continue;
179
+ let backdrop = group.querySelector("rect[data-versi-chart-label]");
180
+ if (!backdrop) {
181
+ backdrop = document.createElementNS("http://www.w3.org/2000/svg", "rect");
182
+ backdrop.setAttribute("data-versi-chart-label", "");
183
+ backdrop.setAttribute("aria-hidden", "true");
184
+ backdrop.setAttribute("pointer-events", "none");
185
+ backdrop.setAttribute("rx", "3");
186
+ if (label.classList.contains("apexcharts-pie-label-delay")) {
187
+ backdrop.classList.add("apexcharts-pie-label-delay");
188
+ backdrop.style.animationDelay = label.style.animationDelay;
189
+ }
190
+ group.insertBefore(backdrop, label);
191
+ }
192
+ label.setAttribute("data-versi-semantic-label", String(semanticColor));
193
+ const bounds = label.getBBox();
194
+ backdrop.setAttribute("x", String(bounds.x - 3));
195
+ backdrop.setAttribute("y", String(bounds.y - 2));
196
+ backdrop.setAttribute("width", String(bounds.width + 6));
197
+ backdrop.setAttribute("height", String(bounds.height + 4));
198
+ }
199
+ }
200
+
147
201
  // src/components/chart/InteractiveDonutChart.tsx
148
202
  import {
149
- useEffect as useEffect3,
203
+ useEffect as useEffect4,
150
204
  useId,
151
205
  useMemo,
152
206
  useRef,
153
- useState as useState3
207
+ useState as useState4
154
208
  } from "react";
155
209
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
156
210
  function InteractiveDonutChart({
@@ -175,17 +229,17 @@ function InteractiveDonutChart({
175
229
  }) {
176
230
  const storedHighContrast = useHighContrastPreference();
177
231
  const highContrast = highContrastOverride ?? storedHighContrast;
178
- const [selectedIndex, setSelectedIndex] = useState3(null);
179
- const [legendSelectedIndex, setLegendSelectedIndex] = useState3(
232
+ const [selectedIndex, setSelectedIndex] = useState4(null);
233
+ const [legendSelectedIndex, setLegendSelectedIndex] = useState4(
180
234
  null
181
235
  );
182
236
  const containerRef = useRef(null);
183
237
  const instructionsId = useId();
184
- const chartTheme = getChartTheme();
238
+ const chartTheme = useChartTheme();
185
239
  const baseColors = !highContrast && colors?.length ? colors : chartTheme.donutSeries;
186
240
  const neutralColors = !highContrast && mutedColors?.length ? mutedColors : chartTheme.mutedSeries;
187
241
  const labels = useMemo(() => options.labels ?? [], [options.labels]);
188
- useEffect3(() => {
242
+ useEffect4(() => {
189
243
  setSelectedIndex(
190
244
  (current) => current !== null && current >= series.length ? null : current
191
245
  );
@@ -193,7 +247,7 @@ function InteractiveDonutChart({
193
247
  (current) => current !== null && current >= series.length ? null : current
194
248
  );
195
249
  }, [series.length]);
196
- useEffect3(() => {
250
+ useEffect4(() => {
197
251
  const resetOnOutsideClick = (event) => {
198
252
  if (containerRef.current?.contains(event.target)) return;
199
253
  setSelectedIndex(null);
@@ -202,11 +256,11 @@ function InteractiveDonutChart({
202
256
  document.addEventListener("pointerdown", resetOnOutsideClick);
203
257
  return () => document.removeEventListener("pointerdown", resetOnOutsideClick);
204
258
  }, []);
205
- const [pieCircle, setPieCircle] = useState3(null);
206
- const [measuredChartHeight, setMeasuredChartHeight] = useState3(
259
+ const [pieCircle, setPieCircle] = useState4(null);
260
+ const [measuredChartHeight, setMeasuredChartHeight] = useState4(
207
261
  null
208
262
  );
209
- useEffect3(() => {
263
+ useEffect4(() => {
210
264
  const container = containerRef.current;
211
265
  if (!container) return;
212
266
  const measure = () => {
@@ -299,11 +353,23 @@ function InteractiveDonutChart({
299
353
  type: options.fill?.type ?? "solid",
300
354
  opacity: options.fill?.opacity ?? 1
301
355
  },
302
- stroke: highContrast ? { ...options.stroke, colors: ["#ffffff"], width: 2 } : options.stroke,
356
+ stroke: highContrast ? { ...options.stroke, colors: ["#ffffff"], width: 2 } : options.stroke ?? {},
303
357
  chart: {
304
358
  ...options.chart,
305
359
  events: {
306
360
  ...options.chart?.events,
361
+ mounted(context, config) {
362
+ options.chart?.events?.mounted?.(context, config);
363
+ decorateDonutDataLabels(context.el, highContrast || !options.dataLabels?.style?.colors?.length);
364
+ },
365
+ updated(context, config) {
366
+ options.chart?.events?.updated?.(context, config);
367
+ decorateDonutDataLabels(context.el, highContrast || !options.dataLabels?.style?.colors?.length);
368
+ },
369
+ animationEnd(context, config) {
370
+ options.chart?.events?.animationEnd?.(context, config);
371
+ decorateDonutDataLabels(context.el, highContrast || !options.dataLabels?.style?.colors?.length);
372
+ },
307
373
  dataPointSelection(event, chart, config) {
308
374
  originalSelection?.(event, chart, config);
309
375
  const nextIndex = Number(config?.dataPointIndex);
@@ -396,7 +462,7 @@ function InteractiveDonutChart({
396
462
  "aria-label": ariaLabel,
397
463
  "aria-describedby": instructionsId,
398
464
  onKeyDown: handleKeyDown,
399
- className: `chart-keyboard-focus-ring relative min-w-0 rounded-sm ${className ?? ""}`.trim(),
465
+ className: `versi-chart chart-keyboard-focus-ring relative min-w-0 rounded-sm ${className ?? ""}`.trim(),
400
466
  children: [
401
467
  loading ? /* @__PURE__ */ jsx2("div", { role: "status", "aria-busy": "true", "aria-live": "polite", className: "flex min-h-32 items-center justify-center text-sm text-content-secondary", children: loadingMessage }) : error ? /* @__PURE__ */ jsx2("div", { role: "alert", className: "flex min-h-32 items-center justify-center text-sm text-field-assistive-error", children: error }) : series.length === 0 ? /* @__PURE__ */ jsx2("div", { role: "status", className: "flex min-h-32 items-center justify-center text-sm text-content-secondary", children: emptyMessage }) : /* @__PURE__ */ jsx2(
402
468
  LazyApexChart,
@@ -408,7 +474,7 @@ function InteractiveDonutChart({
408
474
  series,
409
475
  type: "donut"
410
476
  },
411
- highContrast ? "donut-high-contrast" : "donut-standard"
477
+ [highContrast, ...chartTheme.donutSeries, ...chartTheme.mutedSeries, chartTheme.axis, chartTheme.surface].join("|")
412
478
  ),
413
479
  legendValue && pieCircle && /* @__PURE__ */ jsxs(
414
480
  "div",
@@ -436,7 +502,7 @@ function InteractiveDonutChart({
436
502
  }
437
503
 
438
504
  // src/components/chart/TimeSeriesChart.tsx
439
- import { useEffect as useEffect4, useRef as useRef2, useState as useState4 } from "react";
505
+ import { useEffect as useEffect5, useRef as useRef2, useState as useState5 } from "react";
440
506
  import { jsx as jsx3 } from "react/jsx-runtime";
441
507
  function TimeSeriesChart({
442
508
  options,
@@ -453,10 +519,10 @@ function TimeSeriesChart({
453
519
  }) {
454
520
  const storedHighContrast = useHighContrastPreference();
455
521
  const highContrast = highContrastOverride ?? storedHighContrast;
456
- const theme = getChartTheme();
522
+ const theme = useChartTheme();
457
523
  const containerRef = useRef2(null);
458
- const [measuredHeight, setMeasuredHeight] = useState4(null);
459
- const [measuredWidth, setMeasuredWidth] = useState4(null);
524
+ const [measuredHeight, setMeasuredHeight] = useState5(null);
525
+ const [measuredWidth, setMeasuredWidth] = useState5(null);
460
526
  const themeKey = [
461
527
  highContrast ? "high-contrast" : "standard",
462
528
  theme.axis,
@@ -465,7 +531,7 @@ function TimeSeriesChart({
465
531
  theme.surface,
466
532
  ...theme.series
467
533
  ].join("|");
468
- useEffect4(() => {
534
+ useEffect5(() => {
469
535
  if (!responsiveHeight) {
470
536
  setMeasuredHeight(null);
471
537
  setMeasuredWidth(null);
@@ -565,7 +631,7 @@ function TimeSeriesChart({
565
631
  };
566
632
  const sharedOptions = {
567
633
  ...options,
568
- colors: highContrast ? [...theme.series] : options.colors,
634
+ colors: highContrast ? [...theme.series] : options.colors ?? [...theme.series],
569
635
  chart: {
570
636
  toolbar: { show: false },
571
637
  zoom: { enabled: false },
@@ -617,12 +683,12 @@ function TimeSeriesChart({
617
683
  },
618
684
  annotations: highContrast ? {
619
685
  ...options.annotations,
620
- xaxis: options.annotations?.xaxis?.map((annotation, index) => ({
686
+ xaxis: (options.annotations?.xaxis ?? []).map((annotation, index) => ({
621
687
  ...annotation,
622
688
  fillColor: theme.series[index % theme.series.length],
623
689
  opacity: 0.28
624
690
  }))
625
- } : options.annotations,
691
+ } : options.annotations ?? {},
626
692
  xaxis: {
627
693
  tooltip: { enabled: false },
628
694
  axisBorder: { color: theme.axisBorder },
@@ -669,7 +735,7 @@ function TimeSeriesChart({
669
735
  }
670
736
  }
671
737
  };
672
- return /* @__PURE__ */ jsx3("div", { ref: containerRef, role: "img", "aria-label": ariaLabel, className, children: loading ? /* @__PURE__ */ jsx3("div", { role: "status", "aria-busy": "true", "aria-live": "polite", className: "flex min-h-32 items-center justify-center text-sm text-content-secondary", children: loadingMessage }) : error ? /* @__PURE__ */ jsx3("div", { role: "alert", className: "flex min-h-32 items-center justify-center text-sm text-field-assistive-error", children: error }) : !hasSeriesData ? /* @__PURE__ */ jsx3("div", { role: "status", className: "flex min-h-32 items-center justify-center text-sm text-content-secondary", children: emptyMessage }) : /* @__PURE__ */ jsx3(
738
+ return /* @__PURE__ */ jsx3("div", { ref: containerRef, role: "img", "aria-label": ariaLabel, className: `versi-chart ${className ?? ""}`.trim(), children: loading ? /* @__PURE__ */ jsx3("div", { role: "status", "aria-busy": "true", "aria-live": "polite", className: "flex min-h-32 items-center justify-center text-sm text-content-secondary", children: loadingMessage }) : error ? /* @__PURE__ */ jsx3("div", { role: "alert", className: "flex min-h-32 items-center justify-center text-sm text-field-assistive-error", children: error }) : !hasSeriesData ? /* @__PURE__ */ jsx3("div", { role: "status", className: "flex min-h-32 items-center justify-center text-sm text-content-secondary", children: emptyMessage }) : /* @__PURE__ */ jsx3(
673
739
  LazyApexChart,
674
740
  {
675
741
  ...chartProps,
@@ -705,7 +771,7 @@ function TimeRangeSelector({
705
771
  type: "button",
706
772
  "aria-pressed": isSelected,
707
773
  onClick: () => onSelect(range),
708
- className: `shrink-0 whitespace-nowrap rounded-sm border px-2.5 py-1 text-sm font-semibold transition-colors ${isSelected ? "border-selection-border bg-selection-background text-selection-content" : "border-primary-1 text-primary-1 hover:bg-primary-5"}`,
774
+ className: `shrink-0 whitespace-nowrap rounded-sm border px-2.5 py-1 text-sm font-semibold transition-colors ${isSelected ? "border-selection-border bg-selection-background text-selection-content" : "border-content-link text-content-link hover:bg-action-primary-ghost"}`,
709
775
  children: range
710
776
  },
711
777
  range
@@ -759,4 +825,4 @@ export {
759
825
  normalizeTimeSeriesTooltipColor,
760
826
  buildTimeSeriesTooltip
761
827
  };
762
- //# sourceMappingURL=chunk-HKCVDOGK.js.map
828
+ //# sourceMappingURL=chunk-YEUOULSF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chart/LazyApexChart.tsx","../src/utils/chart-theme.ts","../src/components/chart/interactive-donut-utils.ts","../src/hooks/useHighContrastPreference.ts","../src/hooks/useChartTheme.ts","../src/components/chart/donut-data-labels.ts","../src/components/chart/InteractiveDonutChart.tsx","../src/components/chart/TimeSeriesChart.tsx","../src/components/chart/TimeRangeSelector.tsx","../src/components/chart/time-series-chart-utils.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport type { Props as ReactApexChartProps } from \"react-apexcharts\";\n\nexport type Props = ReactApexChartProps;\n\nexport default function LazyApexChart(props: Props) {\n const [ApexChart, setApexChart] = useState<\n React.ComponentType<Props> | null\n >(null);\n\n useEffect(() => {\n let active = true;\n import(\"react-apexcharts\").then(({ default: component }) => {\n if (active) setApexChart(() => component);\n });\n return () => {\n active = false;\n };\n }, []);\n\n if (!ApexChart) {\n return (\n <div\n className=\"flex min-h-40 items-center justify-center text-sm text-content-muted\"\n role=\"status\"\n aria-label=\"Carregando grafico\"\n >\n Carregando grafico...\n </div>\n );\n }\n\n return <ApexChart {...props} />;\n}\n","const SERIES_FALLBACKS = [\n \"#0f62c1\",\n \"#16d39a\",\n \"#feb019\",\n \"#ff4560\",\n \"#775dd0\",\n \"#00b8d9\",\n \"#ff8f00\",\n \"#26a69a\",\n \"#ec407a\",\n \"#7cb342\",\n \"#5c6bc0\",\n \"#8d6e63\",\n] as const;\n\nconst DONUT_SERIES_FALLBACKS = [\n \"#66d288\",\n \"#3182f6\",\n \"#ffc25c\",\n \"#7c58e8\",\n \"#ff6b6b\",\n ...SERIES_FALLBACKS.slice(5),\n] as const;\n\nconst MUTED_SERIES_FALLBACKS = [\n \"#c5cad0\",\n \"#d9dde1\",\n \"#eceef0\",\n \"#aeb5bd\",\n] as const;\n\nconst readColorToken = (token: string, fallback: string): string => {\n if (typeof window === \"undefined\") return fallback;\n const value = window\n .getComputedStyle(document.body ?? document.documentElement)\n .getPropertyValue(token)\n .trim();\n return value ? `rgb(${value})` : fallback;\n};\n\nexport const getChartTheme = () => ({\n series: SERIES_FALLBACKS.map((fallback, index) =>\n readColorToken(`--chart-${index + 1}`, fallback),\n ),\n donutSeries: DONUT_SERIES_FALLBACKS.map((fallback, index) =>\n readColorToken(`--chart-donut-${index + 1}`, fallback),\n ),\n mutedSeries: MUTED_SERIES_FALLBACKS.map((fallback, index) =>\n readColorToken(`--chart-muted-${index + 1}`, fallback),\n ),\n balance: readColorToken(\"--chart-balance\", \"#00a76f\"),\n invested: readColorToken(\"--chart-invested\", \"#1e90ff\"),\n grid: readColorToken(\"--chart-grid\", \"#e5e7eb\"),\n axis: readColorToken(\"--chart-axis\", \"#6b7280\"),\n axisBorder: readColorToken(\"--chart-axis-border\", \"#d1d5db\"),\n tooltipText: readColorToken(\"--chart-tooltip-text\", \"#111827\"),\n neutralLine: readColorToken(\"--chart-line-neutral\", \"#181818\"),\n surface: readColorToken(\"--surface-card\", \"#ffffff\"),\n});\n\nexport const getChartSeriesRecord = (\n backendColors?: Record<number, string>,\n count = 5,\n): Record<number, string> => {\n const { series } = getChartTheme();\n const fallbackColors = Object.fromEntries(\n Array.from({ length: count }, (_, index) => [index + 1, series[index]]),\n );\n\n const isDarkSchemeActive =\n typeof document !== \"undefined\" &&\n document.documentElement.dataset.colorScheme === \"dark\";\n\n const highContrastActive =\n typeof document !== \"undefined\" &&\n document.documentElement.dataset.contrast === \"high\";\n\n return highContrastActive || isDarkSchemeActive\n ? fallbackColors\n : { ...fallbackColors, ...backendColors };\n};\n","export function resolveInteractiveDonutColors({\n count,\n colors,\n mutedColors,\n selectedIndex,\n}: {\n count: number;\n colors: string[];\n mutedColors: string[];\n selectedIndex: number | null;\n}) {\n if (colors.length === 0 || mutedColors.length === 0) return [];\n\n return Array.from({ length: count }, (_, index) => {\n const color = colors[index % colors.length];\n\n if (selectedIndex === null || index === selectedIndex) return color;\n\n return mutedColors[index % mutedColors.length];\n });\n}\n\nexport function resolveRelativeDonutSelection({\n currentIndex,\n direction,\n count,\n}: {\n currentIndex: number | null;\n direction: -1 | 1;\n count: number;\n}) {\n if (count <= 0) return null;\n if (currentIndex === null) return direction > 0 ? 0 : count - 1;\n\n return (currentIndex + direction + count) % count;\n}\n\nconst TOOLTIP_ENTITIES: Record<string, string> = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#039;\",\n};\n\nexport function escapeDonutTooltipText(value: unknown) {\n return String(value ?? \"\").replace(\n /[&<>\"']/g,\n (character) => TOOLTIP_ENTITIES[character],\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useHighContrastPreference() {\n const [highContrast, setHighContrast] = useState(false);\n\n useEffect(() => {\n const root = document.documentElement;\n const read = () => setHighContrast(root.dataset.contrast === \"high\");\n read();\n\n const observer = new MutationObserver(read);\n observer.observe(root, {\n attributes: true,\n attributeFilter: [\"data-contrast\"],\n });\n return () => observer.disconnect();\n }, []);\n\n return highContrast;\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { getChartTheme } from \"../utils/chart-theme\";\n\n/** Refresh mounted charts when the consumer changes identity or display mode. */\nexport function useChartTheme() {\n const [theme, setTheme] = useState(getChartTheme);\n useEffect(() => {\n let frame = 0;\n const read = () => {\n const next = getChartTheme();\n setTheme(previous => JSON.stringify(previous) === JSON.stringify(next) ? previous : next);\n };\n const observer = new MutationObserver(() => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(read);\n });\n const options = { attributes: true, attributeFilter: [\"class\", \"style\", \"data-ds-theme\", \"data-color-scheme\", \"data-contrast\", \"data-contrast-theme\"] };\n observer.observe(document.documentElement, options);\n observer.observe(document.body, options);\n read();\n return () => { observer.disconnect(); cancelAnimationFrame(frame); };\n }, []);\n return theme;\n}\n","/** Apex pie labels do not implement the dataLabels.background option. Add a\n * neutral SVG backdrop so labels remain readable on solids and HC patterns. */\nexport function decorateDonutDataLabels(root: Element | undefined, semanticColor: boolean) {\n if (!root?.isConnected) return;\n for (const label of root.querySelectorAll<SVGGraphicsElement>(\"text.apexcharts-pie-label\")) {\n const group = label.parentElement;\n if (!group) continue;\n let backdrop = group.querySelector<SVGRectElement>(\"rect[data-versi-chart-label]\");\n if (!backdrop) {\n backdrop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n backdrop.setAttribute(\"data-versi-chart-label\", \"\");\n backdrop.setAttribute(\"aria-hidden\", \"true\");\n backdrop.setAttribute(\"pointer-events\", \"none\");\n backdrop.setAttribute(\"rx\", \"3\");\n if (label.classList.contains(\"apexcharts-pie-label-delay\")) {\n backdrop.classList.add(\"apexcharts-pie-label-delay\");\n backdrop.style.animationDelay = label.style.animationDelay;\n }\n group.insertBefore(backdrop, label);\n }\n label.setAttribute(\"data-versi-semantic-label\", String(semanticColor));\n const bounds = label.getBBox();\n backdrop.setAttribute(\"x\", String(bounds.x - 3));\n backdrop.setAttribute(\"y\", String(bounds.y - 2));\n backdrop.setAttribute(\"width\", String(bounds.width + 6));\n backdrop.setAttribute(\"height\", String(bounds.height + 4));\n }\n}\n","\"use client\";\n\nimport { useHighContrastPreference } from \"../../hooks/useHighContrastPreference\";\nimport { useChartTheme } from \"../../hooks/useChartTheme\";\nimport { decorateDonutDataLabels } from \"./donut-data-labels\";\nimport {\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport Chart, { type Props as DonutChartProps } from \"./LazyApexChart\";\nimport {\n escapeDonutTooltipText,\n resolveInteractiveDonutColors,\n resolveRelativeDonutSelection,\n} from \"./interactive-donut-utils\";\n\nexport type InteractiveDonutOptions = NonNullable<DonutChartProps[\"options\"]>;\n\nexport type InteractiveDonutProps = Omit<\n DonutChartProps,\n \"options\" | \"series\" | \"type\"\n> & {\n options?: InteractiveDonutOptions;\n series: number[];\n loading?: boolean;\n loadingMessage?: ReactNode;\n error?: ReactNode;\n emptyMessage?: ReactNode;\n colors?: string[];\n mutedColors?: string[];\n valueFormatter?: (value: number) => string;\n ariaLabel?: string;\n className?: string;\n chartClassName?: string;\n responsiveHeight?: boolean;\n highContrastOverride?: boolean;\n};\n\nexport default function InteractiveDonutChart({\n options = {},\n series,\n loading = false,\n loadingMessage = \"Carregando gráfico…\",\n error,\n emptyMessage = \"Nenhum dado disponível.\",\n colors,\n mutedColors,\n valueFormatter = (value) =>\n new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n }).format(value),\n ariaLabel = \"Gráfico de distribuição\",\n className,\n chartClassName,\n responsiveHeight = false,\n highContrastOverride,\n ...rest\n}: InteractiveDonutProps) {\n const storedHighContrast = useHighContrastPreference();\n const highContrast = highContrastOverride ?? storedHighContrast;\n const [selectedIndex, setSelectedIndex] = useState<number | null>(null);\n const [legendSelectedIndex, setLegendSelectedIndex] = useState<number | null>(\n null,\n );\n const containerRef = useRef<HTMLDivElement>(null);\n const instructionsId = useId();\n const chartTheme = useChartTheme();\n const baseColors =\n !highContrast && colors?.length ? colors : chartTheme.donutSeries;\n const neutralColors = !highContrast && mutedColors?.length\n ? mutedColors\n : chartTheme.mutedSeries;\n const labels = useMemo(() => options.labels ?? [], [options.labels]);\n\n useEffect(() => {\n setSelectedIndex((current) =>\n current !== null && current >= series.length ? null : current,\n );\n setLegendSelectedIndex((current) =>\n current !== null && current >= series.length ? null : current,\n );\n }, [series.length]);\n\n useEffect(() => {\n const resetOnOutsideClick = (event: PointerEvent) => {\n if (containerRef.current?.contains(event.target as Node)) return;\n\n setSelectedIndex(null);\n setLegendSelectedIndex(null);\n };\n\n document.addEventListener(\"pointerdown\", resetOnOutsideClick);\n return () =>\n document.removeEventListener(\"pointerdown\", resetOnOutsideClick);\n }, []);\n\n const [pieCircle, setPieCircle] = useState<{\n cx: number;\n cy: number;\n diameter: number;\n } | null>(null);\n const [measuredChartHeight, setMeasuredChartHeight] = useState<number | null>(\n null,\n );\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const measure = () => {\n const containerRect = container.getBoundingClientRect();\n\n if (responsiveHeight) {\n const fallbackHeight =\n typeof rest.height === \"number\" ? rest.height : 0;\n const nextHeight = Math.max(\n fallbackHeight,\n Math.floor(containerRect.height),\n );\n\n if (nextHeight > 0) {\n setMeasuredChartHeight((current) =>\n current === nextHeight ? current : nextHeight,\n );\n }\n }\n\n const areas = container.querySelectorAll<SVGPathElement>(\n \".apexcharts-pie-area\",\n );\n if (!areas.length) return;\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n areas.forEach((area) => {\n const rect = area.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n setPieCircle({\n cx: (minX + maxX) / 2 - containerRect.left,\n cy: (minY + maxY) / 2 - containerRect.top,\n diameter: Math.min(maxX - minX, maxY - minY),\n });\n };\n\n measure();\n\n const resizeObserver = new ResizeObserver(measure);\n resizeObserver.observe(container);\n\n const mutationObserver = new MutationObserver(measure);\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\"d\"],\n });\n\n return () => {\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n };\n }, [responsiveHeight, rest.height, series.length]);\n\n const donutSizeRatio = useMemo(() => {\n const size = options.plotOptions?.pie?.donut?.size ?? \"65%\";\n const parsed = parseFloat(String(size));\n return Number.isFinite(parsed) ? parsed / 100 : 0.65;\n }, [options.plotOptions?.pie?.donut?.size]);\n\n const displayColors = resolveInteractiveDonutColors({\n count: series.length,\n colors: baseColors,\n mutedColors: neutralColors,\n selectedIndex,\n });\n\n const legendValue =\n legendSelectedIndex !== null\n ? {\n label:\n labels[legendSelectedIndex] ??\n `Categoria ${legendSelectedIndex + 1}`,\n value: Number(series[legendSelectedIndex] ?? 0),\n }\n : null;\n\n const interactiveOptions = useMemo<InteractiveDonutOptions>(() => {\n const originalSelection = options.chart?.events?.dataPointSelection;\n const originalLegendClick = options.chart?.events?.legendClick;\n\n return {\n ...options,\n colors: displayColors,\n fill: highContrast\n ? {\n type: \"pattern\",\n pattern: {\n style: [\n \"verticalLines\",\n \"horizontalLines\",\n \"slantedLines\",\n \"squares\",\n \"circles\",\n ],\n width: 6,\n height: 6,\n strokeWidth: 2,\n },\n }\n : {\n ...options.fill,\n type: options.fill?.type ?? \"solid\",\n opacity: options.fill?.opacity ?? 1,\n },\n stroke: highContrast\n ? { ...options.stroke, colors: [\"#ffffff\"], width: 2 }\n : (options.stroke ?? {}),\n chart: {\n ...options.chart,\n events: {\n ...options.chart?.events,\n mounted(context, config) {\n options.chart?.events?.mounted?.(context, config);\n decorateDonutDataLabels(context.el, highContrast || !options.dataLabels?.style?.colors?.length);\n },\n updated(context, config) {\n options.chart?.events?.updated?.(context, config);\n decorateDonutDataLabels(context.el, highContrast || !options.dataLabels?.style?.colors?.length);\n },\n animationEnd(context, config) {\n options.chart?.events?.animationEnd?.(context, config);\n decorateDonutDataLabels(context.el, highContrast || !options.dataLabels?.style?.colors?.length);\n },\n dataPointSelection(event, chart, config) {\n originalSelection?.(event, chart, config);\n const nextIndex = Number(config?.dataPointIndex);\n\n if (!Number.isInteger(nextIndex) || nextIndex < 0) return;\n\n setSelectedIndex((current) =>\n current === nextIndex ? null : nextIndex,\n );\n },\n legendClick(chartContext, seriesIndex, config) {\n originalLegendClick?.(chartContext, seriesIndex, config);\n\n if (typeof seriesIndex !== \"number\" || seriesIndex < 0) return;\n\n setLegendSelectedIndex((current) =>\n current === seriesIndex ? null : seriesIndex,\n );\n },\n },\n },\n legend: {\n ...options.legend,\n labels: {\n ...options.legend?.labels,\n colors: chartTheme.axis,\n },\n onItemClick: {\n ...options.legend?.onItemClick,\n toggleDataSeries: false,\n },\n },\n states: {\n ...options.states,\n hover: {\n ...options.states?.hover,\n filter: { type: \"none\" },\n },\n active: {\n ...options.states?.active,\n allowMultipleDataPointsSelection: false,\n filter: { type: \"none\" },\n },\n },\n tooltip: {\n ...options.tooltip,\n enabled: true,\n followCursor: true,\n custom({ series: tooltipSeries, seriesIndex }) {\n const value = Number(tooltipSeries?.[seriesIndex] ?? 0);\n const label = escapeDonutTooltipText(\n labels[seriesIndex] ?? `Categoria ${seriesIndex + 1}`,\n );\n const formattedValue = escapeDonutTooltipText(valueFormatter(value));\n\n return `<div class=\"donut-chart-tooltip\"><span class=\"donut-chart-tooltip-label\">${label}</span><strong class=\"donut-chart-tooltip-value\">${formattedValue}</strong></div>`;\n },\n },\n };\n }, [\n chartTheme.axis,\n displayColors,\n highContrast,\n labels,\n options,\n valueFormatter,\n ]);\n\n const selectedLabel =\n selectedIndex === null\n ? \"Nenhuma categoria selecionada\"\n : `${labels[selectedIndex] ?? `Categoria ${selectedIndex + 1}`}: ${valueFormatter(\n Number(series[selectedIndex] ?? 0),\n )}`;\n\n const legendValueLabel =\n legendSelectedIndex === null\n ? \"\"\n : `Valor em destaque: ${\n labels[legendSelectedIndex] ?? `Categoria ${legendSelectedIndex + 1}`\n }: ${valueFormatter(Number(series[legendSelectedIndex] ?? 0))}`;\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (\n [\"ArrowRight\", \"ArrowDown\", \"ArrowLeft\", \"ArrowUp\"].includes(event.key)\n ) {\n event.preventDefault();\n const direction =\n event.key === \"ArrowRight\" || event.key === \"ArrowDown\" ? 1 : -1;\n setSelectedIndex((current) =>\n resolveRelativeDonutSelection({\n currentIndex: current,\n direction,\n count: series.length,\n }),\n );\n }\n\n if (event.key === \"Escape\") {\n setSelectedIndex(null);\n setLegendSelectedIndex(null);\n }\n };\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n tabIndex={0}\n aria-label={ariaLabel}\n aria-describedby={instructionsId}\n onKeyDown={handleKeyDown}\n className={`versi-chart chart-keyboard-focus-ring relative min-w-0 rounded-sm ${className ?? \"\"}`.trim()}\n >\n {loading ? (\n <div role=\"status\" aria-busy=\"true\" aria-live=\"polite\" className=\"flex min-h-32 items-center justify-center text-sm text-content-secondary\">\n {loadingMessage}\n </div>\n ) : error ? (\n <div role=\"alert\" className=\"flex min-h-32 items-center justify-center text-sm text-field-assistive-error\">\n {error}\n </div>\n ) : series.length === 0 ? (\n <div role=\"status\" className=\"flex min-h-32 items-center justify-center text-sm text-content-secondary\">\n {emptyMessage}\n </div>\n ) : (\n <Chart\n key={[highContrast, ...chartTheme.donutSeries, ...chartTheme.mutedSeries, chartTheme.axis, chartTheme.surface].join(\"|\")}\n {...rest}\n className={chartClassName}\n height={\n responsiveHeight && measuredChartHeight\n ? measuredChartHeight\n : rest.height\n }\n options={interactiveOptions}\n series={series}\n type=\"donut\"\n />\n )}\n {legendValue && pieCircle && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute flex flex-col items-center justify-center text-center\"\n style={{\n left: pieCircle.cx,\n top: pieCircle.cy,\n width: pieCircle.diameter * donutSizeRatio * 0.94,\n transform: \"translate(-50%, -50%)\",\n }}\n >\n <span className=\"w-full truncate text-xs leading-tight text-content-secondary\">\n {legendValue.label}\n </span>\n <span className=\"w-full break-words text-md font-bold leading-tight text-content-primary\">\n {valueFormatter(legendValue.value)}\n </span>\n </div>\n )}\n <span className=\"sr-only\" aria-live=\"polite\">\n {selectedLabel}\n </span>\n <span className=\"sr-only\" aria-live=\"polite\">\n {legendValueLabel}\n </span>\n <span id={instructionsId} className=\"sr-only\">\n Use as setas para navegar pelas categorias e Escape para limpar a\n seleção.\n </span>\n </div>\n );\n}\n","\"use client\";\n\nimport { useHighContrastPreference } from \"../../hooks/useHighContrastPreference\";\nimport { useChartTheme } from \"../../hooks/useChartTheme\";\nimport { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport Chart, { type Props as ApexChartProps } from \"./LazyApexChart\";\n\nexport type TimeSeriesChartOptions = NonNullable<ApexChartProps[\"options\"]>;\n\nexport type TimeSeriesChartProps = Omit<ApexChartProps, \"options\"> & {\n options: TimeSeriesChartOptions;\n ariaLabel: string;\n loading?: boolean;\n loadingMessage?: ReactNode;\n error?: ReactNode;\n emptyMessage?: ReactNode;\n className?: string;\n chartClassName?: string;\n responsiveHeight?: boolean;\n highContrastOverride?: boolean;\n};\n\nexport default function TimeSeriesChart({\n options,\n ariaLabel,\n loading = false,\n loadingMessage = \"Carregando gráfico…\",\n error,\n emptyMessage = \"Nenhum dado disponível.\",\n className,\n chartClassName,\n responsiveHeight = false,\n highContrastOverride,\n ...chartProps\n}: TimeSeriesChartProps) {\n const storedHighContrast = useHighContrastPreference();\n const highContrast = highContrastOverride ?? storedHighContrast;\n const theme = useChartTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [measuredHeight, setMeasuredHeight] = useState<number | null>(null);\n const [measuredWidth, setMeasuredWidth] = useState<number | null>(null);\n const themeKey = [\n highContrast ? \"high-contrast\" : \"standard\",\n theme.axis,\n theme.axisBorder,\n theme.grid,\n theme.surface,\n ...theme.series,\n ].join(\"|\");\n\n useEffect(() => {\n if (!responsiveHeight) {\n setMeasuredHeight(null);\n setMeasuredWidth(null);\n return;\n }\n\n const container = containerRef.current;\n if (!container || typeof ResizeObserver === \"undefined\") return;\n\n const fallbackHeight =\n typeof chartProps.height === \"number\" ? chartProps.height : 0;\n let frame = 0;\n const measure = () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n const bounds = container.getBoundingClientRect();\n const nextWidth = Math.floor(bounds.width);\n const nextHeight = Math.max(\n fallbackHeight,\n Math.floor(bounds.height),\n );\n\n if (nextWidth > 0) {\n setMeasuredWidth((current) =>\n current === nextWidth ? current : nextWidth,\n );\n }\n\n if (nextHeight > 0) {\n setMeasuredHeight((current) =>\n current === nextHeight ? current : nextHeight,\n );\n }\n });\n };\n\n measure();\n const resizeObserver = new ResizeObserver(measure);\n resizeObserver.observe(container);\n return () => {\n cancelAnimationFrame(frame);\n resizeObserver.disconnect();\n };\n }, [chartProps.height, responsiveHeight]);\n\n const renderedHeight =\n responsiveHeight && measuredHeight ? measuredHeight : chartProps.height;\n const renderedWidth =\n responsiveHeight && measuredWidth ? measuredWidth : chartProps.width;\n const hasSeriesData =\n Array.isArray(chartProps.series) &&\n chartProps.series.some((entry) => {\n if (!entry || typeof entry !== \"object\") return false;\n const data = (entry as { data?: unknown }).data;\n return Array.isArray(data) ? data.length > 0 : data !== undefined;\n });\n const xAxis = options.xaxis;\n const xAxisCategories = Array.isArray(xAxis?.categories)\n ? xAxis.categories\n : [];\n const availableWidth =\n typeof renderedWidth === \"number\" ? renderedWidth : 720;\n const maxVisibleXAxisLabels = Math.max(\n 4,\n Math.min(12, Math.floor(availableWidth / 88)),\n );\n const xAxisLabelStep = Math.max(\n 1,\n Math.ceil(xAxisCategories.length / maxVisibleXAxisLabels),\n );\n const hasDenseXAxis = xAxisCategories.length > maxVisibleXAxisLabels;\n const xAxisCategoriesKey = JSON.stringify(xAxisCategories);\n const responsiveXAxisFormatter = xAxisCategories.length\n ? (\n value: string | number,\n _timestamp?: number,\n opts?: { dataPointIndex?: number },\n ) => {\n const fallbackIndex = xAxisCategories.findIndex(\n (category) => String(category) === String(value),\n );\n const index =\n opts?.dataPointIndex ?? (fallbackIndex >= 0 ? fallbackIndex : 0);\n const isLast = index === xAxisCategories.length - 1;\n\n return index % xAxisLabelStep === 0 || isLast\n ? String(xAxisCategories[index] ?? value)\n : \"\";\n }\n : xAxis?.labels?.formatter;\n const renderKey = [\n themeKey,\n renderedWidth ?? \"auto-width\",\n renderedHeight ?? \"auto-height\",\n xAxisCategoriesKey,\n ].join(\"|\");\n\n const yAxis = Array.isArray(options.yaxis)\n ? options.yaxis.map((axis) => ({\n ...axis,\n labels: {\n ...axis.labels,\n show: true,\n style: {\n fontSize: \"11px\",\n fontWeight: 500,\n ...axis.labels?.style,\n colors: theme.axis,\n },\n },\n }))\n : {\n ...options.yaxis,\n labels: {\n ...options.yaxis?.labels,\n show: true,\n style: {\n fontSize: \"11px\",\n fontWeight: 500,\n ...options.yaxis?.labels?.style,\n colors: theme.axis,\n },\n },\n };\n\n const sharedOptions: TimeSeriesChartOptions = {\n ...options,\n colors: highContrast ? [...theme.series] : (options.colors ?? [...theme.series]),\n chart: {\n toolbar: { show: false },\n zoom: { enabled: false },\n parentHeightOffset: 0,\n redrawOnParentResize: true,\n redrawOnWindowResize: true,\n ...options.chart,\n foreColor: theme.axis,\n },\n dataLabels: {\n enabled: false,\n ...options.dataLabels,\n },\n grid: {\n show: true,\n borderColor: theme.grid,\n strokeDashArray: 0,\n ...options.grid,\n xaxis: {\n lines: {\n ...options.grid?.xaxis?.lines,\n show: hasDenseXAxis\n ? false\n : (options.grid?.xaxis?.lines?.show ?? true),\n },\n },\n yaxis: {\n lines: { show: true, ...options.grid?.yaxis?.lines },\n },\n padding: {\n top: 0,\n right: 8,\n bottom: 8,\n left: 8,\n ...options.grid?.padding,\n },\n },\n stroke: {\n width: 2,\n curve: \"straight\",\n ...options.stroke,\n colors: highContrast ? [...theme.series] : options.stroke?.colors,\n dashArray: highContrast\n ? [0, 6, 2, 8, 4, 10, 1, 7, 3, 9, 5, 11]\n : (options.stroke?.dashArray ?? 0),\n },\n markers: {\n strokeWidth: 1,\n strokeColors: [theme.surface],\n ...options.markers,\n size: highContrast ? 4 : (options.markers?.size ?? 3),\n hover: { size: 4, ...options.markers?.hover },\n },\n annotations: highContrast\n ? {\n ...options.annotations,\n xaxis: (options.annotations?.xaxis ?? []).map((annotation, index) => ({\n ...annotation,\n fillColor: theme.series[index % theme.series.length],\n opacity: 0.28,\n })),\n }\n : (options.annotations ?? {}),\n xaxis: {\n tooltip: { enabled: false },\n axisBorder: { color: theme.axisBorder },\n ...xAxis,\n tickAmount: xAxisCategories.length ? undefined : xAxis?.tickAmount,\n axisTicks: {\n color: theme.axisBorder,\n ...xAxis?.axisTicks,\n show: hasDenseXAxis ? false : (xAxis?.axisTicks?.show ?? true),\n },\n labels: {\n ...xAxis?.labels,\n show: true,\n formatter: responsiveXAxisFormatter,\n style: {\n fontSize: \"11px\",\n fontWeight: 500,\n ...xAxis?.labels?.style,\n colors: theme.axis,\n },\n },\n },\n yaxis: yAxis,\n tooltip: {\n shared: true,\n intersect: false,\n followCursor: true,\n ...options.tooltip,\n },\n legend: {\n ...options.legend,\n labels: {\n ...options.legend?.labels,\n colors: theme.axis,\n },\n },\n noData: {\n text: \"Nenhum dado disponível no período selecionado\",\n ...options.noData,\n style: {\n fontSize: \"15px\",\n ...options.noData?.style,\n color: theme.axis,\n },\n },\n };\n\n return (\n <div ref={containerRef} role=\"img\" aria-label={ariaLabel} className={`versi-chart ${className ?? \"\"}`.trim()}>\n {loading ? (\n <div role=\"status\" aria-busy=\"true\" aria-live=\"polite\" className=\"flex min-h-32 items-center justify-center text-sm text-content-secondary\">\n {loadingMessage}\n </div>\n ) : error ? (\n <div role=\"alert\" className=\"flex min-h-32 items-center justify-center text-sm text-field-assistive-error\">\n {error}\n </div>\n ) : !hasSeriesData ? (\n <div role=\"status\" className=\"flex min-h-32 items-center justify-center text-sm text-content-secondary\">\n {emptyMessage}\n </div>\n ) : (\n <Chart\n key={renderKey}\n {...chartProps}\n className={chartClassName}\n width={renderedWidth}\n height={renderedHeight}\n options={sharedOptions}\n />\n )}\n </div>\n );\n}\n","\"use client\";\n\nexport type TimeRangeSelectorProps<T extends string | number> = {\n options: readonly T[];\n selected: T;\n onSelect: (range: T) => void;\n ariaLabel?: string;\n className?: string;\n};\n\nexport default function TimeRangeSelector<T extends string | number>({\n options,\n selected,\n onSelect,\n ariaLabel = \"Período do gráfico\",\n className,\n}: TimeRangeSelectorProps<T>) {\n return (\n <div\n role=\"group\"\n aria-label={ariaLabel}\n className={`flex min-w-0 flex-wrap justify-start gap-1.5 ${className ?? \"\"}`.trim()}\n >\n {options.map((range) => {\n const isSelected = selected === range;\n\n return (\n <button\n key={range}\n type=\"button\"\n aria-pressed={isSelected}\n onClick={() => onSelect(range)}\n className={`shrink-0 whitespace-nowrap rounded-sm border px-2.5 py-1 text-sm font-semibold transition-colors ${\n isSelected\n ? \"border-selection-border bg-selection-background text-selection-content\"\n : \"border-content-link text-content-link hover:bg-action-primary-ghost\"\n }`}\n >\n {range}\n </button>\n );\n })}\n </div>\n );\n}\n","const TOOLTIP_ENTITIES: Record<string, string> = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#039;\",\n};\n\nexport function escapeTimeSeriesTooltipText(value: unknown) {\n return String(value ?? \"\").replace(\n /[&<>\"']/g,\n (character) => TOOLTIP_ENTITIES[character],\n );\n}\n\nconst SAFE_TOOLTIP_COLOR =\n /^(?:#[\\da-f]{3,8}|rgba?\\([\\d\\s.,%]+\\)|hsla?\\([\\d\\s.,%]+\\)|var\\(--[\\w-]+\\)|[a-z]+)$/i;\n\nexport function normalizeTimeSeriesTooltipColor(value?: string) {\n const color = String(value ?? \"\").trim();\n return SAFE_TOOLTIP_COLOR.test(color) ? color : \"currentColor\";\n}\n\nexport type TimeSeriesTooltipRow = {\n label: string;\n value: string;\n color?: string;\n};\n\nexport function buildTimeSeriesTooltip({\n reference,\n rows,\n}: {\n reference: string;\n rows: TimeSeriesTooltipRow[];\n}) {\n const content = rows\n .map(({ label, value, color }) => {\n const marker = color\n ? `<span class=\"time-series-chart-tooltip-marker\" style=\"background-color:${normalizeTimeSeriesTooltipColor(color)}\"></span>`\n : \"\";\n\n return `<div class=\"time-series-chart-tooltip-row\"><span class=\"time-series-chart-tooltip-name\">${marker}${escapeTimeSeriesTooltipText(label)}</span><strong>${escapeTimeSeriesTooltipText(value)}</strong></div>`;\n })\n .join(\"\");\n\n return `<div class=\"time-series-chart-tooltip\"><div class=\"time-series-chart-tooltip-reference\">${escapeTimeSeriesTooltipText(reference)}</div>${content}</div>`;\n}\n"],"mappings":"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","names":["useEffect","useState","useEffect","useState","useState","useEffect","useEffect","useState","jsx","useState","useEffect","useEffect","useRef","useState","jsx","useRef","useState","useEffect","jsx","TOOLTIP_ENTITIES"]}
package/dist/core.d.ts CHANGED
@@ -545,4 +545,33 @@ interface UseContainerBreakpointOptions {
545
545
  declare function resolveContainerBreakpoint(width: number, breakpoints?: ContainerBreakpointMap): ContainerBreakpoint;
546
546
  declare function useContainerBreakpoint<TElement extends HTMLElement = HTMLElement>(ref: RefObject<TElement | null>, options?: UseContainerBreakpointOptions): ContainerBreakpoint;
547
547
 
548
- export { Avatar, type AvatarProps, type BoxProps, type Breakpoint, Button, type ButtonProps, CheckBox, type CheckBoxProps, Checkbox, type CheckboxProps, CircularLoading, type CircularLoadingProps, type ContainerBreakpoint, type ContainerBreakpointMap, Divider, DomainStatusBadge, type DomainStatusBadgeProps, FilterBar, type FilterBarProps, FocusNavigationMode, FormActions, type FormActionsProps, FormErrorNavigation, FormGrid, type FormGridProps, type IFilterControl, type IFilterOption, type IFilterProps, type IHeaderItem, type IMobileCardTableExpandableConfig, type IMobileCardTableHeader, type ITableColumnConfig, type ITableExpandableConfig, type ITablePaginationProps, IconProvider, type IconProviderProps, InfoGrid, type InfoGridProps, InfoItem, type InfoItemProps, InputSlider, type InputSliderProps, type LegacyStatusAppearanceConfig, LoadingDots, type LoadingDotsProps, MobileCardTable, type MobileCardTableProps, ModalCardView as ModalCard, type ModalCardProps, NoticeView as Notice, type OptionalValuePolicy, PageHeading, type PageHeadingBackAction, type PageHeadingProps, PageState, type PageStateProps, type PageStateVariant, type PageTabItem, PageTabsHeader, type PageTabsHeaderProps, PaginationView as Pagination, type PaginationProps, type PaginationSize, type PaginationVariant, IconProvider as PortalIconProvider, type ResolvedStatusAppearance, SkipLink, type SkipLinkProps, Slider, type SliderProps, type StatusAppearance, type StatusAppearanceConfig, type StatusAppearanceMap, StatusBadge, type StatusBadgeColor, type StatusBadgeProps, type StatusDomain, type StatusResolverOptions, type StatusTone, Surface, type SurfaceProps, Table, type TableDensity, type TableHeaderVariant, type TableOverflowMode, type TableProps, type TableRowVariant, TextGroup, type TextGroupProps, ThemedImage, type ThemedImageProps, Tooltip, type TooltipProps, Typography, Typography as TypographyComponent, type TypographyProps, type TypographySemanticRole, type UseContainerBreakpointOptions, breakpoints, findFirstInvalidField, getBreakpoint, getStatusBadgeClassName, normalizeStatus, resolveContainerBreakpoint, resolveStatusAppearance, useBreakpoint, useContainerBreakpoint };
548
+ /** Existing presets remain available for consumers that use their original names. */
549
+ declare const LEGACY_THEMES: readonly ["default", "azul1", "azul2", "azul3", "laranja1", "laranja2", "verde1", "verde2", "verde3", "verde4", "rosa1"];
550
+ /** Client palettes are proposals for visual review, not certified brand manuals. */
551
+ declare const CLIENT_THEMES: readonly [{
552
+ readonly id: "basf";
553
+ readonly label: "BASF";
554
+ }, {
555
+ readonly id: "funssest";
556
+ readonly label: "FUNSSEST";
557
+ }, {
558
+ readonly id: "maisprevidencia";
559
+ readonly label: "Mais Previdência";
560
+ }, {
561
+ readonly id: "aceprev";
562
+ readonly label: "ACEPREV";
563
+ }, {
564
+ readonly id: "cibrius";
565
+ readonly label: "Cibrius";
566
+ }, {
567
+ readonly id: "serpros";
568
+ readonly label: "SERPROS";
569
+ }, {
570
+ readonly id: "einvest";
571
+ readonly label: "E-Invest";
572
+ }];
573
+ declare const DESIGN_SYSTEM_THEMES: readonly ["default", "azul1", "azul2", "azul3", "laranja1", "laranja2", "verde1", "verde2", "verde3", "verde4", "rosa1", ...("basf" | "funssest" | "maisprevidencia" | "aceprev" | "cibrius" | "serpros" | "einvest")[]];
574
+ type ClientTheme = typeof CLIENT_THEMES[number]["id"];
575
+ type DesignSystemTheme = typeof DESIGN_SYSTEM_THEMES[number];
576
+
577
+ export { Avatar, type AvatarProps, type BoxProps, type Breakpoint, Button, type ButtonProps, CLIENT_THEMES, CheckBox, type CheckBoxProps, Checkbox, type CheckboxProps, CircularLoading, type CircularLoadingProps, type ClientTheme, type ContainerBreakpoint, type ContainerBreakpointMap, DESIGN_SYSTEM_THEMES, type DesignSystemTheme, Divider, DomainStatusBadge, type DomainStatusBadgeProps, FilterBar, type FilterBarProps, FocusNavigationMode, FormActions, type FormActionsProps, FormErrorNavigation, FormGrid, type FormGridProps, type IFilterControl, type IFilterOption, type IFilterProps, type IHeaderItem, type IMobileCardTableExpandableConfig, type IMobileCardTableHeader, type ITableColumnConfig, type ITableExpandableConfig, type ITablePaginationProps, IconProvider, type IconProviderProps, InfoGrid, type InfoGridProps, InfoItem, type InfoItemProps, InputSlider, type InputSliderProps, LEGACY_THEMES, type LegacyStatusAppearanceConfig, LoadingDots, type LoadingDotsProps, MobileCardTable, type MobileCardTableProps, ModalCardView as ModalCard, type ModalCardProps, NoticeView as Notice, type OptionalValuePolicy, PageHeading, type PageHeadingBackAction, type PageHeadingProps, PageState, type PageStateProps, type PageStateVariant, type PageTabItem, PageTabsHeader, type PageTabsHeaderProps, PaginationView as Pagination, type PaginationProps, type PaginationSize, type PaginationVariant, IconProvider as PortalIconProvider, type ResolvedStatusAppearance, SkipLink, type SkipLinkProps, Slider, type SliderProps, type StatusAppearance, type StatusAppearanceConfig, type StatusAppearanceMap, StatusBadge, type StatusBadgeColor, type StatusBadgeProps, type StatusDomain, type StatusResolverOptions, type StatusTone, Surface, type SurfaceProps, Table, type TableDensity, type TableHeaderVariant, type TableOverflowMode, type TableProps, type TableRowVariant, TextGroup, type TextGroupProps, ThemedImage, type ThemedImageProps, Tooltip, type TooltipProps, Typography, Typography as TypographyComponent, type TypographyProps, type TypographySemanticRole, type UseContainerBreakpointOptions, breakpoints, findFirstInvalidField, getBreakpoint, getStatusBadgeClassName, normalizeStatus, resolveContainerBreakpoint, resolveStatusAppearance, useBreakpoint, useContainerBreakpoint };
package/dist/core.js CHANGED
@@ -2,9 +2,11 @@
2
2
  import {
3
3
  Avatar_default,
4
4
  Button_default,
5
+ CLIENT_THEMES,
5
6
  CheckBox,
6
7
  Checkbox,
7
8
  CircularLoading,
9
+ DESIGN_SYSTEM_THEMES,
8
10
  Divider_default,
9
11
  DomainStatusBadge,
10
12
  FilterBar,
@@ -16,6 +18,7 @@ import {
16
18
  InfoGrid,
17
19
  InfoItem,
18
20
  InputSliderView_default,
21
+ LEGACY_THEMES,
19
22
  LoadingDotsView_default,
20
23
  MobileCardTable_default,
21
24
  ModalCardView_default,
@@ -39,7 +42,7 @@ import {
39
42
  resolveStatusAppearance,
40
43
  typography_default,
41
44
  useContainerBreakpoint
42
- } from "./chunk-2KJU6VM4.js";
45
+ } from "./chunk-2XE4FX42.js";
43
46
  import {
44
47
  DocumentItem
45
48
  } from "./chunk-2XXVEFFY.js";
@@ -52,9 +55,11 @@ import {
52
55
  export {
53
56
  Avatar_default as Avatar,
54
57
  Button_default as Button,
58
+ CLIENT_THEMES,
55
59
  CheckBox,
56
60
  Checkbox,
57
61
  CircularLoading,
62
+ DESIGN_SYSTEM_THEMES,
58
63
  Divider_default as Divider,
59
64
  DocumentItem,
60
65
  DomainStatusBadge,
@@ -67,6 +72,7 @@ export {
67
72
  InfoGrid,
68
73
  InfoItem,
69
74
  InputSliderView_default as InputSlider,
75
+ LEGACY_THEMES,
70
76
  LoadingDotsView_default as LoadingDots,
71
77
  MobileCardTable_default as MobileCardTable,
72
78
  ModalCardView_default as ModalCard,
package/dist/forms.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  buildPhonePayload,
18
18
  datePicker_default,
19
19
  parsePhonePayload
20
- } from "./chunk-VUXHE4S6.js";
20
+ } from "./chunk-DUWSR2UN.js";
21
21
  import "./chunk-MMTKCHRP.js";
22
22
  import "./chunk-IS7ACRMB.js";
23
23
  export {
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { Avatar, AvatarProps, BoxProps, Breakpoint, Button, ButtonProps, CheckBox, CheckBoxProps, Checkbox, CheckboxProps, CircularLoading, CircularLoadingProps, ContainerBreakpoint, ContainerBreakpointMap, Divider, DomainStatusBadge, DomainStatusBadgeProps, FilterBar, FilterBarProps, FocusNavigationMode, FormActions, FormActionsProps, FormErrorNavigation, FormGrid, FormGridProps, IFilterControl, IFilterOption, IFilterProps, IHeaderItem, IMobileCardTableExpandableConfig, IMobileCardTableHeader, ITableColumnConfig, ITableExpandableConfig, ITablePaginationProps, IconProvider, IconProviderProps, InfoGrid, InfoGridProps, InfoItem, InfoItemProps, InputSlider, InputSliderProps, LegacyStatusAppearanceConfig, LoadingDots, LoadingDotsProps, MobileCardTable, MobileCardTableProps, ModalCard, ModalCardProps, Notice, OptionalValuePolicy, PageHeading, PageHeadingBackAction, PageHeadingProps, PageState, PageStateProps, PageStateVariant, PageTabItem, PageTabsHeader, PageTabsHeaderProps, Pagination, PaginationProps, PaginationSize, PaginationVariant, IconProvider as PortalIconProvider, ResolvedStatusAppearance, SkipLink, SkipLinkProps, Slider, SliderProps, StatusAppearance, StatusAppearanceConfig, StatusAppearanceMap, StatusBadge, StatusBadgeColor, StatusBadgeProps, StatusDomain, StatusResolverOptions, StatusTone, Surface, SurfaceProps, Table, TableDensity, TableHeaderVariant, TableOverflowMode, TableProps, TableRowVariant, TextGroup, TextGroupProps, ThemedImage, ThemedImageProps, Tooltip, TooltipProps, Typography, Typography as TypographyComponent, TypographyProps, TypographySemanticRole, UseContainerBreakpointOptions, breakpoints, findFirstInvalidField, getBreakpoint, getStatusBadgeClassName, normalizeStatus, resolveContainerBreakpoint, resolveStatusAppearance, useBreakpoint, useContainerBreakpoint } from './core.js';
1
+ export { Avatar, AvatarProps, BoxProps, Breakpoint, Button, ButtonProps, CLIENT_THEMES, CheckBox, CheckBoxProps, Checkbox, CheckboxProps, CircularLoading, CircularLoadingProps, ClientTheme, ContainerBreakpoint, ContainerBreakpointMap, DESIGN_SYSTEM_THEMES, DesignSystemTheme, Divider, DomainStatusBadge, DomainStatusBadgeProps, FilterBar, FilterBarProps, FocusNavigationMode, FormActions, FormActionsProps, FormErrorNavigation, FormGrid, FormGridProps, IFilterControl, IFilterOption, IFilterProps, IHeaderItem, IMobileCardTableExpandableConfig, IMobileCardTableHeader, ITableColumnConfig, ITableExpandableConfig, ITablePaginationProps, IconProvider, IconProviderProps, InfoGrid, InfoGridProps, InfoItem, InfoItemProps, InputSlider, InputSliderProps, LEGACY_THEMES, LegacyStatusAppearanceConfig, LoadingDots, LoadingDotsProps, MobileCardTable, MobileCardTableProps, ModalCard, ModalCardProps, Notice, OptionalValuePolicy, PageHeading, PageHeadingBackAction, PageHeadingProps, PageState, PageStateProps, PageStateVariant, PageTabItem, PageTabsHeader, PageTabsHeaderProps, Pagination, PaginationProps, PaginationSize, PaginationVariant, IconProvider as PortalIconProvider, ResolvedStatusAppearance, SkipLink, SkipLinkProps, Slider, SliderProps, StatusAppearance, StatusAppearanceConfig, StatusAppearanceMap, StatusBadge, StatusBadgeColor, StatusBadgeProps, StatusDomain, StatusResolverOptions, StatusTone, Surface, SurfaceProps, Table, TableDensity, TableHeaderVariant, TableOverflowMode, TableProps, TableRowVariant, TextGroup, TextGroupProps, ThemedImage, ThemedImageProps, Tooltip, TooltipProps, Typography, Typography as TypographyComponent, TypographyProps, TypographySemanticRole, UseContainerBreakpointOptions, breakpoints, findFirstInvalidField, getBreakpoint, getStatusBadgeClassName, normalizeStatus, resolveContainerBreakpoint, resolveStatusAppearance, useBreakpoint, useContainerBreakpoint } from './core.js';
2
2
  export { AccessibilityColorScheme, AccessibilityFontScale, AccessibilityHighContrastTheme, AccessibilityPreferences, AccessibilityPreferencesPanel, AccessibilityPreferencesPanelProps, ContrastPreference, ContrastPreferenceProps, DEFAULT_ACCESSIBILITY_PREFERENCES, FontSizePreference, FontSizePreferenceProps, HighContrastToggle, HighContrastToggleProps, InputSwitch, InputSwitchProps, Modal, ModalProps, ReadingPreferences, ReadingPreferencesProps, ThemePreference, ThemePreferenceProps } from './overlays.js';
3
3
  export { CountrySelect, CountrySelectOption, CountrySelectProps, DatePicker, DatePickerNavigationVariant, DatePickerProps, DatePickerSelectionMode, Datepicker, DatepickerNavigationVariant, DatepickerProps, Input, InputFormatter, InputMask, InputPhone, InputPhoneCountryOption, InputPhoneProps, InputPhoneValue, InputProps, InputSelect, InputSelectOption, InputSelectProps, InputStandalone, InputStandaloneProps, MultiSelect, MultiSelectOption, MultiSelectProps, MultiSelectViewProps, OtpCodeInput, OtpCodeInputHandle, OtpCodeInputMask, OtpCodeInputProps, PhoneCountryOption, PhoneInput, PhoneInputProps, PhoneValue, RadioCardGroup, RadioCardGroupProps, RadioCardOption, RadioGroup, RadioGroupProps, SelectCountry, SelectCountryOption, SelectCountryProps, SelectMulti, SelectMultiOption, SelectMultiProps, SelectMultiViewProps, TextArea, TextAreaProps, buildPhonePayload, parsePhonePayload } from './forms.js';
4
4
  export { BoletoBarCode, BoletoBarCodeProps, FileDropzone, FileDropzoneProps, FileList, FileListProps, FileRejection, FileRejectionContext, FileUploadItem, FileUploadItemStatus, FileUploadProgress, FileUploadProgressProps, FileUploadProgressStatus, FileValidationMessage, FileValidationOptions, FileValidationReason, FileValidationResult, FileViewer, FileViewerProps, FileViewerSource, FileViewerSourceInput, QRCode, QRCodeErrorCorrectionLevel, QRCodeProps, validateFiles } from './documents.js';
package/dist/index.js CHANGED
@@ -12,13 +12,15 @@ import {
12
12
  normalizeTimeSeriesTooltipColor,
13
13
  resolveInteractiveDonutColors,
14
14
  resolveRelativeDonutSelection
15
- } from "./chunk-HKCVDOGK.js";
15
+ } from "./chunk-YEUOULSF.js";
16
16
  import {
17
17
  Avatar_default,
18
18
  Button_default,
19
+ CLIENT_THEMES,
19
20
  CheckBox,
20
21
  Checkbox,
21
22
  CircularLoading,
23
+ DESIGN_SYSTEM_THEMES,
22
24
  Divider_default,
23
25
  DomainStatusBadge,
24
26
  FilterBar,
@@ -30,6 +32,7 @@ import {
30
32
  InfoGrid,
31
33
  InfoItem,
32
34
  InputSliderView_default,
35
+ LEGACY_THEMES,
33
36
  LoadingDotsView_default,
34
37
  MobileCardTable_default,
35
38
  ModalCardView_default,
@@ -53,7 +56,7 @@ import {
53
56
  resolveStatusAppearance,
54
57
  typography_default,
55
58
  useContainerBreakpoint
56
- } from "./chunk-2KJU6VM4.js";
59
+ } from "./chunk-2XE4FX42.js";
57
60
  import {
58
61
  BoletoBarCode,
59
62
  FileDropzone_default,
@@ -84,7 +87,7 @@ import {
84
87
  buildPhonePayload,
85
88
  datePicker_default,
86
89
  parsePhonePayload
87
- } from "./chunk-VUXHE4S6.js";
90
+ } from "./chunk-DUWSR2UN.js";
88
91
  import {
89
92
  Tooltip_default,
90
93
  breakpoints,
@@ -102,18 +105,20 @@ import {
102
105
  Modal_default,
103
106
  ReadingPreferences,
104
107
  ThemePreference
105
- } from "./chunk-ZPY72ILO.js";
108
+ } from "./chunk-D3IKGVVK.js";
106
109
  export {
107
110
  AccessibilityPreferencesPanel,
108
111
  Avatar_default as Avatar,
109
112
  BoletoBarCode,
110
113
  Button_default as Button,
114
+ CLIENT_THEMES,
111
115
  CheckBox,
112
116
  Checkbox,
113
117
  CircularLoading,
114
118
  ContrastPreference,
115
119
  CountrySelect,
116
120
  DEFAULT_ACCESSIBILITY_PREFERENCES,
121
+ DESIGN_SYSTEM_THEMES,
117
122
  datePicker_default as DatePicker,
118
123
  Datepicker,
119
124
  Divider_default as Divider,
@@ -140,6 +145,7 @@ export {
140
145
  InputStandalone,
141
146
  InputSwitch_default as InputSwitch,
142
147
  InteractiveDonutChart,
148
+ LEGACY_THEMES,
143
149
  LazyApexChart,
144
150
  LoadingDotsView_default as LoadingDots,
145
151
  MobileCardTable_default as MobileCardTable,
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@aspprev/versi-ds",
3
- "version": "0.5.6",
3
+ "version": "0.5.9",
4
4
  "files": [
5
5
  "DocumentItem-BU0J2QGP.d.ts",
6
6
  "charts.d.ts",
7
7
  "charts.js",
8
- "chunk-2KJU6VM4.js",
8
+ "chunk-2XE4FX42.js",
9
9
  "chunk-2XXVEFFY.js",
10
- "chunk-HKCVDOGK.js",
10
+ "chunk-D3IKGVVK.js",
11
+ "chunk-DUWSR2UN.js",
11
12
  "chunk-IS7ACRMB.js",
12
13
  "chunk-MMTKCHRP.js",
13
14
  "chunk-PMU4AIIJ.js",
14
- "chunk-VUXHE4S6.js",
15
- "chunk-ZPY72ILO.js",
15
+ "chunk-YEUOULSF.js",
16
16
  "core.d.ts",
17
17
  "core.js",
18
18
  "countries-browser.d.ts",
package/dist/overlays.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  Modal_default,
10
10
  ReadingPreferences,
11
11
  ThemePreference
12
- } from "./chunk-ZPY72ILO.js";
12
+ } from "./chunk-D3IKGVVK.js";
13
13
  export {
14
14
  AccessibilityPreferencesPanel,
15
15
  ContrastPreference,