@aspprev/versi-ds 0.1.0 → 0.2.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/README.md +116 -396
- package/dist/charts.js +1 -1
- package/dist/{chunk-OWXG2A4N.js → chunk-ATWH3MA6.js} +1 -1
- package/dist/chunk-ATWH3MA6.js.map +1 -0
- package/dist/{chunk-CWIPMGCA.js → chunk-ET2BGHTO.js} +2 -1
- package/dist/chunk-ET2BGHTO.js.map +1 -0
- package/dist/{chunk-BY4HJZFJ.js → chunk-FR5W52XU.js} +283 -23
- package/dist/chunk-FR5W52XU.js.map +1 -0
- package/dist/chunk-H4BBKKRZ.js +380 -0
- package/dist/chunk-H4BBKKRZ.js.map +1 -0
- package/dist/{chunk-2ACDV5D5.js → chunk-JSPXVXUY.js} +1 -1
- package/dist/chunk-JSPXVXUY.js.map +1 -0
- package/dist/{chunk-OPUUOVCL.js → chunk-PIXRKI25.js} +84 -10
- package/dist/chunk-PIXRKI25.js.map +1 -0
- package/dist/{chunk-6MXHE5MD.js → chunk-V66QL3TD.js} +1 -1
- package/dist/chunk-V66QL3TD.js.map +1 -0
- package/dist/chunk-YCW3REQK.js +3102 -0
- package/dist/chunk-YCW3REQK.js.map +1 -0
- package/dist/core.d.ts +23 -4
- package/dist/core.js +12 -6
- package/dist/countries.js +1 -1
- package/dist/documents.d.ts +81 -1
- package/dist/documents.js +14 -4
- package/dist/forms.d.ts +26 -2
- package/dist/forms.js +5 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +30 -12
- package/dist/manifest.json +9 -9
- package/dist/overlays.js +1 -1
- package/dist/styles.css +1 -1
- package/package.json +27 -19
- package/dist/chunk-2ACDV5D5.js.map +0 -1
- package/dist/chunk-6MXHE5MD.js.map +0 -1
- package/dist/chunk-A3PA5H7L.js +0 -3099
- package/dist/chunk-A3PA5H7L.js.map +0 -1
- package/dist/chunk-BY4HJZFJ.js.map +0 -1
- package/dist/chunk-CWIPMGCA.js.map +0 -1
- package/dist/chunk-OPUUOVCL.js.map +0 -1
- package/dist/chunk-OWXG2A4N.js.map +0 -1
- package/dist/chunk-XGWGBD7X.js +0 -45
- package/dist/chunk-XGWGBD7X.js.map +0 -1
|
@@ -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/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 \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\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 { useHighContrastPreference } from \"../../hooks/useHighContrastPreference\";\nimport { getChartTheme } from \"../../utils/chart-theme\";\nimport {\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\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 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 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 = getChartTheme();\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 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={`chart-keyboard-focus-ring relative min-w-0 rounded-sm ${className ?? \"\"}`.trim()}\n >\n <Chart\n key={highContrast ? \"donut-high-contrast\" : \"donut-standard\"}\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 {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 { getChartTheme } from \"../../utils/chart-theme\";\nimport { useEffect, useRef, useState } 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 className?: string;\n chartClassName?: string;\n responsiveHeight?: boolean;\n highContrastOverride?: boolean;\n};\n\nexport default function TimeSeriesChart({\n options,\n ariaLabel,\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 = getChartTheme();\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 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,\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\n ref={containerRef}\n role=\"img\"\n aria-label={ariaLabel}\n className={className}\n >\n <Chart\n key={renderKey}\n {...chartProps}\n className={chartClassName}\n width={renderedWidth}\n height={renderedHeight}\n options={sharedOptions}\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-primary-1 text-primary-1 hover:bg-primary-5\"\n }`}\n >\n {range}\n </button>\n );\n })}\n </div>\n );\n}\n","const TOOLTIP_ENTITIES: Record<string, string> = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\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","jsx","_a","_b","useState","useEffect","_c","_d","_e","_f","_g","_h","_i","useEffect","useRef","useState","jsx","_a","_b","useRef","useState","useEffect","jsx","TOOLTIP_ENTITIES"]}
|