@aspprev/versi-ds 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +463 -0
  2. package/dist/DocumentItem-BU0J2QGP.d.ts +21 -0
  3. package/dist/charts.d.ts +82 -0
  4. package/dist/charts.js +31 -0
  5. package/dist/charts.js.map +1 -0
  6. package/dist/chunk-2ACDV5D5.js +560 -0
  7. package/dist/chunk-2ACDV5D5.js.map +1 -0
  8. package/dist/chunk-2NMEKWO5.js +38 -0
  9. package/dist/chunk-2NMEKWO5.js.map +1 -0
  10. package/dist/chunk-6MXHE5MD.js +769 -0
  11. package/dist/chunk-6MXHE5MD.js.map +1 -0
  12. package/dist/chunk-A3PA5H7L.js +3099 -0
  13. package/dist/chunk-A3PA5H7L.js.map +1 -0
  14. package/dist/chunk-BY4HJZFJ.js +3308 -0
  15. package/dist/chunk-BY4HJZFJ.js.map +1 -0
  16. package/dist/chunk-CWIPMGCA.js +314 -0
  17. package/dist/chunk-CWIPMGCA.js.map +1 -0
  18. package/dist/chunk-OPUUOVCL.js +3226 -0
  19. package/dist/chunk-OPUUOVCL.js.map +1 -0
  20. package/dist/chunk-OWXG2A4N.js +77 -0
  21. package/dist/chunk-OWXG2A4N.js.map +1 -0
  22. package/dist/chunk-XGWGBD7X.js +45 -0
  23. package/dist/chunk-XGWGBD7X.js.map +1 -0
  24. package/dist/core.d.ts +471 -0
  25. package/dist/core.js +86 -0
  26. package/dist/core.js.map +1 -0
  27. package/dist/countries.d.ts +52 -0
  28. package/dist/countries.js +18 -0
  29. package/dist/countries.js.map +1 -0
  30. package/dist/documents.d.ts +9 -0
  31. package/dist/documents.js +13 -0
  32. package/dist/documents.js.map +1 -0
  33. package/dist/flags/ad.svg +1 -0
  34. package/dist/flags/ae.svg +1 -0
  35. package/dist/flags/af.svg +5 -0
  36. package/dist/flags/ag.svg +1 -0
  37. package/dist/flags/ai.svg +1 -0
  38. package/dist/flags/al.svg +1 -0
  39. package/dist/flags/am.svg +1 -0
  40. package/dist/flags/ao.svg +1 -0
  41. package/dist/flags/aq.svg +1 -0
  42. package/dist/flags/ar.svg +1 -0
  43. package/dist/flags/as.svg +1 -0
  44. package/dist/flags/at.svg +1 -0
  45. package/dist/flags/au.svg +1 -0
  46. package/dist/flags/aw.svg +1 -0
  47. package/dist/flags/ax.svg +1 -0
  48. package/dist/flags/az.svg +1 -0
  49. package/dist/flags/ba.svg +1 -0
  50. package/dist/flags/bb.svg +1 -0
  51. package/dist/flags/bd.svg +1 -0
  52. package/dist/flags/be.svg +1 -0
  53. package/dist/flags/bf.svg +1 -0
  54. package/dist/flags/bg.svg +1 -0
  55. package/dist/flags/bh.svg +1 -0
  56. package/dist/flags/bi.svg +1 -0
  57. package/dist/flags/bj.svg +1 -0
  58. package/dist/flags/bl.svg +1 -0
  59. package/dist/flags/bm.svg +1 -0
  60. package/dist/flags/bn.svg +1 -0
  61. package/dist/flags/bo.svg +1 -0
  62. package/dist/flags/bq.svg +1 -0
  63. package/dist/flags/br.svg +1 -0
  64. package/dist/flags/bs.svg +1 -0
  65. package/dist/flags/bt.svg +1 -0
  66. package/dist/flags/bv.svg +1 -0
  67. package/dist/flags/bw.svg +1 -0
  68. package/dist/flags/by.svg +1 -0
  69. package/dist/flags/bz.svg +1 -0
  70. package/dist/flags/ca.svg +1 -0
  71. package/dist/flags/cc.svg +1 -0
  72. package/dist/flags/cd.svg +1 -0
  73. package/dist/flags/cf.svg +1 -0
  74. package/dist/flags/cg.svg +1 -0
  75. package/dist/flags/ch.svg +1 -0
  76. package/dist/flags/ci.svg +1 -0
  77. package/dist/flags/ck.svg +1 -0
  78. package/dist/flags/cl.svg +1 -0
  79. package/dist/flags/cm.svg +1 -0
  80. package/dist/flags/cn.svg +1 -0
  81. package/dist/flags/co.svg +1 -0
  82. package/dist/flags/cr.svg +1 -0
  83. package/dist/flags/cu.svg +1 -0
  84. package/dist/flags/cv.svg +1 -0
  85. package/dist/flags/cw.svg +1 -0
  86. package/dist/flags/cx.svg +1 -0
  87. package/dist/flags/cy.svg +1 -0
  88. package/dist/flags/cz.svg +1 -0
  89. package/dist/flags/de.svg +1 -0
  90. package/dist/flags/dj.svg +1 -0
  91. package/dist/flags/dk.svg +1 -0
  92. package/dist/flags/dm.svg +1 -0
  93. package/dist/flags/do.svg +1 -0
  94. package/dist/flags/dz.svg +1 -0
  95. package/dist/flags/ec.svg +1 -0
  96. package/dist/flags/ee.svg +1 -0
  97. package/dist/flags/eg.svg +1 -0
  98. package/dist/flags/eh.svg +1 -0
  99. package/dist/flags/er.svg +1 -0
  100. package/dist/flags/es.svg +1 -0
  101. package/dist/flags/et.svg +1 -0
  102. package/dist/flags/fi.svg +1 -0
  103. package/dist/flags/fj.svg +1 -0
  104. package/dist/flags/fk.svg +1 -0
  105. package/dist/flags/fm.svg +1 -0
  106. package/dist/flags/fo.svg +1 -0
  107. package/dist/flags/fr.svg +1 -0
  108. package/dist/flags/ga.svg +1 -0
  109. package/dist/flags/gb.svg +1 -0
  110. package/dist/flags/gd.svg +1 -0
  111. package/dist/flags/ge.svg +1 -0
  112. package/dist/flags/gf.svg +1 -0
  113. package/dist/flags/gg.svg +1 -0
  114. package/dist/flags/gh.svg +1 -0
  115. package/dist/flags/gi.svg +1 -0
  116. package/dist/flags/gl.svg +1 -0
  117. package/dist/flags/gm.svg +1 -0
  118. package/dist/flags/gn.svg +1 -0
  119. package/dist/flags/gp.svg +1 -0
  120. package/dist/flags/gq.svg +1 -0
  121. package/dist/flags/gr.svg +1 -0
  122. package/dist/flags/gs.svg +1 -0
  123. package/dist/flags/gt.svg +1 -0
  124. package/dist/flags/gu.svg +1 -0
  125. package/dist/flags/gw.svg +1 -0
  126. package/dist/flags/gy.svg +1 -0
  127. package/dist/flags/hk.svg +1 -0
  128. package/dist/flags/hm.svg +1 -0
  129. package/dist/flags/hn.svg +1 -0
  130. package/dist/flags/hr.svg +1 -0
  131. package/dist/flags/ht.svg +1 -0
  132. package/dist/flags/hu.svg +1 -0
  133. package/dist/flags/id.svg +1 -0
  134. package/dist/flags/ie.svg +1 -0
  135. package/dist/flags/il.svg +1 -0
  136. package/dist/flags/im.svg +1 -0
  137. package/dist/flags/in.svg +1 -0
  138. package/dist/flags/io.svg +1 -0
  139. package/dist/flags/iq.svg +1 -0
  140. package/dist/flags/ir.svg +1 -0
  141. package/dist/flags/is.svg +1 -0
  142. package/dist/flags/it.svg +1 -0
  143. package/dist/flags/je.svg +1 -0
  144. package/dist/flags/jm.svg +1 -0
  145. package/dist/flags/jo.svg +1 -0
  146. package/dist/flags/jp.svg +1 -0
  147. package/dist/flags/ke.svg +1 -0
  148. package/dist/flags/kg.svg +1 -0
  149. package/dist/flags/kh.svg +1 -0
  150. package/dist/flags/ki.svg +1 -0
  151. package/dist/flags/km.svg +1 -0
  152. package/dist/flags/kn.svg +1 -0
  153. package/dist/flags/kp.svg +1 -0
  154. package/dist/flags/kr.svg +1 -0
  155. package/dist/flags/kw.svg +1 -0
  156. package/dist/flags/ky.svg +1 -0
  157. package/dist/flags/kz.svg +1 -0
  158. package/dist/flags/la.svg +1 -0
  159. package/dist/flags/lb.svg +1 -0
  160. package/dist/flags/lc.svg +1 -0
  161. package/dist/flags/li.svg +1 -0
  162. package/dist/flags/lk.svg +1 -0
  163. package/dist/flags/lr.svg +1 -0
  164. package/dist/flags/ls.svg +1 -0
  165. package/dist/flags/lt.svg +1 -0
  166. package/dist/flags/lu.svg +1 -0
  167. package/dist/flags/lv.svg +1 -0
  168. package/dist/flags/ly.svg +1 -0
  169. package/dist/flags/ma.svg +1 -0
  170. package/dist/flags/mc.svg +1 -0
  171. package/dist/flags/md.svg +1 -0
  172. package/dist/flags/me.svg +1 -0
  173. package/dist/flags/mf.svg +1 -0
  174. package/dist/flags/mg.svg +1 -0
  175. package/dist/flags/mh.svg +1 -0
  176. package/dist/flags/mk.svg +1 -0
  177. package/dist/flags/ml.svg +1 -0
  178. package/dist/flags/mm.svg +1 -0
  179. package/dist/flags/mn.svg +1 -0
  180. package/dist/flags/mo.svg +1 -0
  181. package/dist/flags/mp.svg +1 -0
  182. package/dist/flags/mq.svg +1 -0
  183. package/dist/flags/mr.svg +1 -0
  184. package/dist/flags/ms.svg +1 -0
  185. package/dist/flags/mt.svg +1 -0
  186. package/dist/flags/mu.svg +1 -0
  187. package/dist/flags/mv.svg +1 -0
  188. package/dist/flags/mw.svg +1 -0
  189. package/dist/flags/mx.svg +1 -0
  190. package/dist/flags/my.svg +1 -0
  191. package/dist/flags/mz.svg +1 -0
  192. package/dist/flags/na.svg +1 -0
  193. package/dist/flags/nc.svg +1 -0
  194. package/dist/flags/ne.svg +1 -0
  195. package/dist/flags/nf.svg +1 -0
  196. package/dist/flags/ng.svg +1 -0
  197. package/dist/flags/ni.svg +1 -0
  198. package/dist/flags/nl.svg +1 -0
  199. package/dist/flags/no.svg +1 -0
  200. package/dist/flags/np.svg +1 -0
  201. package/dist/flags/nr.svg +1 -0
  202. package/dist/flags/nu.svg +1 -0
  203. package/dist/flags/nz.svg +1 -0
  204. package/dist/flags/om.svg +1 -0
  205. package/dist/flags/pa.svg +1 -0
  206. package/dist/flags/pe.svg +1 -0
  207. package/dist/flags/pf.svg +1 -0
  208. package/dist/flags/pg.svg +1 -0
  209. package/dist/flags/ph.svg +1 -0
  210. package/dist/flags/pk.svg +1 -0
  211. package/dist/flags/pl.svg +1 -0
  212. package/dist/flags/pm.svg +1 -0
  213. package/dist/flags/pn.svg +1 -0
  214. package/dist/flags/pr.svg +1 -0
  215. package/dist/flags/ps.svg +1 -0
  216. package/dist/flags/pt.svg +1 -0
  217. package/dist/flags/pw.svg +1 -0
  218. package/dist/flags/py.svg +1 -0
  219. package/dist/flags/qa.svg +1 -0
  220. package/dist/flags/re.svg +1 -0
  221. package/dist/flags/ro.svg +1 -0
  222. package/dist/flags/rs.svg +1 -0
  223. package/dist/flags/ru.svg +1 -0
  224. package/dist/flags/rw.svg +1 -0
  225. package/dist/flags/sa.svg +1 -0
  226. package/dist/flags/sb.svg +1 -0
  227. package/dist/flags/sc.svg +1 -0
  228. package/dist/flags/sd.svg +1 -0
  229. package/dist/flags/se.svg +1 -0
  230. package/dist/flags/sg.svg +1 -0
  231. package/dist/flags/sh.svg +1 -0
  232. package/dist/flags/si.svg +1 -0
  233. package/dist/flags/sj.svg +1 -0
  234. package/dist/flags/sk.svg +1 -0
  235. package/dist/flags/sl.svg +1 -0
  236. package/dist/flags/sm.svg +1 -0
  237. package/dist/flags/sn.svg +1 -0
  238. package/dist/flags/so.svg +1 -0
  239. package/dist/flags/sr.svg +1 -0
  240. package/dist/flags/ss.svg +1 -0
  241. package/dist/flags/st.svg +1 -0
  242. package/dist/flags/sv.svg +1 -0
  243. package/dist/flags/sx.svg +1 -0
  244. package/dist/flags/sy.svg +1 -0
  245. package/dist/flags/sz.svg +1 -0
  246. package/dist/flags/tc.svg +1 -0
  247. package/dist/flags/td.svg +1 -0
  248. package/dist/flags/tf.svg +1 -0
  249. package/dist/flags/tg.svg +1 -0
  250. package/dist/flags/th.svg +1 -0
  251. package/dist/flags/tj.svg +1 -0
  252. package/dist/flags/tk.svg +1 -0
  253. package/dist/flags/tl.svg +1 -0
  254. package/dist/flags/tm.svg +1 -0
  255. package/dist/flags/tn.svg +1 -0
  256. package/dist/flags/to.svg +1 -0
  257. package/dist/flags/tr.svg +1 -0
  258. package/dist/flags/tt.svg +1 -0
  259. package/dist/flags/tv.svg +1 -0
  260. package/dist/flags/tw.svg +1 -0
  261. package/dist/flags/tz.svg +1 -0
  262. package/dist/flags/ua.svg +1 -0
  263. package/dist/flags/ug.svg +1 -0
  264. package/dist/flags/um.svg +1 -0
  265. package/dist/flags/us.svg +1 -0
  266. package/dist/flags/uy.svg +1 -0
  267. package/dist/flags/uz.svg +1 -0
  268. package/dist/flags/va.svg +1 -0
  269. package/dist/flags/vc.svg +1 -0
  270. package/dist/flags/ve.svg +1 -0
  271. package/dist/flags/vg.svg +1 -0
  272. package/dist/flags/vi.svg +1 -0
  273. package/dist/flags/vn.svg +1 -0
  274. package/dist/flags/vu.svg +1 -0
  275. package/dist/flags/wf.svg +1 -0
  276. package/dist/flags/ws.svg +1 -0
  277. package/dist/flags/xk.svg +1 -0
  278. package/dist/flags/ye.svg +1 -0
  279. package/dist/flags/yt.svg +1 -0
  280. package/dist/flags/za.svg +1 -0
  281. package/dist/flags/zm.svg +1 -0
  282. package/dist/flags/zw.svg +1 -0
  283. package/dist/forms.d.ts +242 -0
  284. package/dist/forms.js +41 -0
  285. package/dist/forms.js.map +1 -0
  286. package/dist/index.d.ts +12 -0
  287. package/dist/index.js +163 -0
  288. package/dist/index.js.map +1 -0
  289. package/dist/manifest.json +33 -0
  290. package/dist/overlays.d.ts +75 -0
  291. package/dist/overlays.js +17 -0
  292. package/dist/overlays.js.map +1 -0
  293. package/dist/styles.css +3 -0
  294. package/dist/themes.css +125 -0
  295. package/package.json +156 -0
@@ -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 = [\r\n \"#0f62c1\",\r\n \"#16d39a\",\r\n \"#feb019\",\r\n \"#ff4560\",\r\n \"#775dd0\",\r\n \"#00b8d9\",\r\n \"#ff8f00\",\r\n \"#26a69a\",\r\n \"#ec407a\",\r\n \"#7cb342\",\r\n \"#5c6bc0\",\r\n \"#8d6e63\",\r\n] as const;\r\n\r\nconst DONUT_SERIES_FALLBACKS = [\r\n \"#66d288\",\r\n \"#3182f6\",\r\n \"#ffc25c\",\r\n \"#7c58e8\",\r\n \"#ff6b6b\",\r\n ...SERIES_FALLBACKS.slice(5),\r\n] as const;\r\n\r\nconst MUTED_SERIES_FALLBACKS = [\r\n \"#c5cad0\",\r\n \"#d9dde1\",\r\n \"#eceef0\",\r\n \"#aeb5bd\",\r\n] as const;\r\n\r\nconst readColorToken = (token: string, fallback: string): string => {\r\n if (typeof window === \"undefined\") return fallback;\r\n const value = window\r\n .getComputedStyle(document.body ?? document.documentElement)\r\n .getPropertyValue(token)\r\n .trim();\r\n return value ? `rgb(${value})` : fallback;\r\n};\r\n\r\nexport const getChartTheme = () => ({\r\n series: SERIES_FALLBACKS.map((fallback, index) =>\r\n readColorToken(`--chart-${index + 1}`, fallback),\r\n ),\r\n donutSeries: DONUT_SERIES_FALLBACKS.map((fallback, index) =>\r\n readColorToken(`--chart-donut-${index + 1}`, fallback),\r\n ),\r\n mutedSeries: MUTED_SERIES_FALLBACKS.map((fallback, index) =>\r\n readColorToken(`--chart-muted-${index + 1}`, fallback),\r\n ),\r\n balance: readColorToken(\"--chart-balance\", \"#00a76f\"),\r\n invested: readColorToken(\"--chart-invested\", \"#1e90ff\"),\r\n grid: readColorToken(\"--chart-grid\", \"#e5e7eb\"),\r\n axis: readColorToken(\"--chart-axis\", \"#6b7280\"),\r\n axisBorder: readColorToken(\"--chart-axis-border\", \"#d1d5db\"),\r\n tooltipText: readColorToken(\"--chart-tooltip-text\", \"#111827\"),\r\n neutralLine: readColorToken(\"--chart-line-neutral\", \"#181818\"),\r\n surface: readColorToken(\"--surface-card\", \"#ffffff\"),\r\n});\r\n\r\nexport const getChartSeriesRecord = (\r\n backendColors?: Record<number, string>,\r\n count = 5,\r\n): Record<number, string> => {\r\n const { series } = getChartTheme();\r\n const fallbackColors = Object.fromEntries(\r\n Array.from({ length: count }, (_, index) => [index + 1, series[index]]),\r\n );\r\n\r\n const isDarkSchemeActive =\r\n typeof document !== \"undefined\" &&\r\n document.documentElement.dataset.colorScheme === \"dark\";\r\n\r\n const highContrastActive =\n typeof document !== \"undefined\" &&\n document.documentElement.dataset.contrast === \"high\";\n\n return highContrastActive || isDarkSchemeActive\n ? fallbackColors\r\n : { ...fallbackColors, ...backendColors };\r\n};\r\n","export function resolveInteractiveDonutColors({\r\n count,\r\n colors,\r\n mutedColors,\r\n selectedIndex,\r\n}: {\r\n count: number;\r\n colors: string[];\r\n mutedColors: string[];\r\n selectedIndex: number | null;\r\n}) {\r\n if (colors.length === 0 || mutedColors.length === 0) return [];\r\n\r\n return Array.from({ length: count }, (_, index) => {\r\n const color = colors[index % colors.length];\r\n\r\n if (selectedIndex === null || index === selectedIndex) return color;\r\n\r\n return mutedColors[index % mutedColors.length];\r\n });\r\n}\r\n\r\nexport function resolveRelativeDonutSelection({\r\n currentIndex,\r\n direction,\r\n count,\r\n}: {\r\n currentIndex: number | null;\r\n direction: -1 | 1;\r\n count: number;\r\n}) {\r\n if (count <= 0) return null;\r\n if (currentIndex === null) return direction > 0 ? 0 : count - 1;\r\n\r\n return (currentIndex + direction + count) % count;\r\n}\r\n\r\nconst TOOLTIP_ENTITIES: Record<string, string> = {\r\n \"&\": \"&amp;\",\r\n \"<\": \"&lt;\",\r\n \">\": \"&gt;\",\r\n '\"': \"&quot;\",\r\n \"'\": \"&#039;\",\r\n};\r\n\r\nexport function escapeDonutTooltipText(value: unknown) {\r\n return String(value ?? \"\").replace(\r\n /[&<>\"']/g,\r\n (character) => TOOLTIP_ENTITIES[character],\r\n );\r\n}\r\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\";\r\n\r\nimport { useHighContrastPreference } from \"../../hooks/useHighContrastPreference\";\nimport { getChartTheme } from \"../../utils/chart-theme\";\nimport {\r\n useEffect,\r\n useId,\r\n useMemo,\r\n useRef,\r\n useState,\r\n type KeyboardEvent,\r\n} from \"react\";\r\nimport Chart, { type Props as DonutChartProps } from \"./LazyApexChart\";\r\nimport {\r\n escapeDonutTooltipText,\r\n resolveInteractiveDonutColors,\r\n resolveRelativeDonutSelection,\r\n} from \"./interactive-donut-utils\";\r\n\r\nexport type InteractiveDonutOptions = NonNullable<DonutChartProps[\"options\"]>;\r\n\r\nexport type InteractiveDonutProps = Omit<\n DonutChartProps,\r\n \"options\" | \"series\" | \"type\"\r\n> & {\r\n options?: InteractiveDonutOptions;\r\n series: number[];\r\n colors?: string[];\r\n mutedColors?: string[];\r\n valueFormatter?: (value: number) => string;\r\n ariaLabel?: string;\r\n className?: string;\r\n chartClassName?: string;\r\n responsiveHeight?: boolean;\r\n highContrastOverride?: boolean;\r\n};\r\n\r\nexport default function InteractiveDonutChart({\r\n options = {},\r\n series,\r\n colors,\r\n mutedColors,\r\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\",\r\n className,\r\n chartClassName,\r\n responsiveHeight = false,\r\n highContrastOverride,\r\n ...rest\r\n}: InteractiveDonutProps) {\n const storedHighContrast = useHighContrastPreference();\r\n const highContrast = highContrastOverride ?? storedHighContrast;\r\n const [selectedIndex, setSelectedIndex] = useState<number | null>(null);\r\n const [legendSelectedIndex, setLegendSelectedIndex] = useState<number | null>(\r\n null,\r\n );\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const instructionsId = useId();\r\n const chartTheme = getChartTheme();\r\n const baseColors =\r\n !highContrast && colors?.length ? colors : chartTheme.donutSeries;\r\n const neutralColors = !highContrast && mutedColors?.length\r\n ? mutedColors\r\n : chartTheme.mutedSeries;\r\n const labels = useMemo(() => options.labels ?? [], [options.labels]);\r\n\r\n useEffect(() => {\r\n setSelectedIndex((current) =>\r\n current !== null && current >= series.length ? null : current,\r\n );\r\n setLegendSelectedIndex((current) =>\r\n current !== null && current >= series.length ? null : current,\r\n );\r\n }, [series.length]);\r\n\r\n useEffect(() => {\r\n const resetOnOutsideClick = (event: PointerEvent) => {\r\n if (containerRef.current?.contains(event.target as Node)) return;\r\n\r\n setSelectedIndex(null);\r\n setLegendSelectedIndex(null);\r\n };\r\n\r\n document.addEventListener(\"pointerdown\", resetOnOutsideClick);\r\n return () =>\r\n document.removeEventListener(\"pointerdown\", resetOnOutsideClick);\r\n }, []);\r\n\r\n const [pieCircle, setPieCircle] = useState<{\r\n cx: number;\r\n cy: number;\r\n diameter: number;\r\n } | null>(null);\r\n const [measuredChartHeight, setMeasuredChartHeight] = useState<number | null>(\r\n null,\r\n );\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const measure = () => {\r\n const containerRect = container.getBoundingClientRect();\r\n\r\n if (responsiveHeight) {\r\n const fallbackHeight =\r\n typeof rest.height === \"number\" ? rest.height : 0;\r\n const nextHeight = Math.max(\r\n fallbackHeight,\r\n Math.floor(containerRect.height),\r\n );\r\n\r\n if (nextHeight > 0) {\r\n setMeasuredChartHeight((current) =>\r\n current === nextHeight ? current : nextHeight,\r\n );\r\n }\r\n }\r\n\r\n const areas = container.querySelectorAll<SVGPathElement>(\r\n \".apexcharts-pie-area\",\r\n );\r\n if (!areas.length) return;\r\n\r\n let minX = Infinity;\r\n let minY = Infinity;\r\n let maxX = -Infinity;\r\n let maxY = -Infinity;\r\n\r\n areas.forEach((area) => {\r\n const rect = area.getBoundingClientRect();\r\n minX = Math.min(minX, rect.left);\r\n minY = Math.min(minY, rect.top);\r\n maxX = Math.max(maxX, rect.right);\r\n maxY = Math.max(maxY, rect.bottom);\r\n });\r\n\r\n setPieCircle({\r\n cx: (minX + maxX) / 2 - containerRect.left,\r\n cy: (minY + maxY) / 2 - containerRect.top,\r\n diameter: Math.min(maxX - minX, maxY - minY),\r\n });\r\n };\r\n\r\n measure();\r\n\r\n const resizeObserver = new ResizeObserver(measure);\r\n resizeObserver.observe(container);\r\n\r\n const mutationObserver = new MutationObserver(measure);\r\n mutationObserver.observe(container, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n attributeFilter: [\"d\"],\r\n });\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n mutationObserver.disconnect();\r\n };\r\n }, [responsiveHeight, rest.height, series.length]);\r\n\r\n const donutSizeRatio = useMemo(() => {\r\n const size = options.plotOptions?.pie?.donut?.size ?? \"65%\";\r\n const parsed = parseFloat(String(size));\r\n return Number.isFinite(parsed) ? parsed / 100 : 0.65;\r\n }, [options.plotOptions?.pie?.donut?.size]);\r\n\r\n const displayColors = resolveInteractiveDonutColors({\r\n count: series.length,\r\n colors: baseColors,\r\n mutedColors: neutralColors,\r\n selectedIndex,\r\n });\r\n\r\n const legendValue =\r\n legendSelectedIndex !== null\r\n ? {\r\n label:\r\n labels[legendSelectedIndex] ??\r\n `Categoria ${legendSelectedIndex + 1}`,\r\n value: Number(series[legendSelectedIndex] ?? 0),\r\n }\r\n : null;\r\n\r\n const interactiveOptions = useMemo<InteractiveDonutOptions>(() => {\r\n const originalSelection = options.chart?.events?.dataPointSelection;\r\n const originalLegendClick = options.chart?.events?.legendClick;\r\n\r\n return {\r\n ...options,\r\n colors: displayColors,\r\n fill: highContrast\r\n ? {\r\n type: \"pattern\",\r\n pattern: {\r\n style: [\r\n \"verticalLines\",\r\n \"horizontalLines\",\r\n \"slantedLines\",\r\n \"squares\",\r\n \"circles\",\r\n ],\r\n width: 6,\r\n height: 6,\r\n strokeWidth: 2,\r\n },\r\n }\r\n : {\r\n ...options.fill,\r\n type: options.fill?.type ?? \"solid\",\r\n opacity: options.fill?.opacity ?? 1,\r\n },\r\n stroke: highContrast\r\n ? { ...options.stroke, colors: [\"#ffffff\"], width: 2 }\r\n : options.stroke,\r\n chart: {\r\n ...options.chart,\r\n events: {\r\n ...options.chart?.events,\r\n dataPointSelection(event, chart, config) {\r\n originalSelection?.(event, chart, config);\r\n const nextIndex = Number(config?.dataPointIndex);\r\n\r\n if (!Number.isInteger(nextIndex) || nextIndex < 0) return;\r\n\r\n setSelectedIndex((current) =>\r\n current === nextIndex ? null : nextIndex,\r\n );\r\n },\r\n legendClick(chartContext, seriesIndex, config) {\r\n originalLegendClick?.(chartContext, seriesIndex, config);\r\n\r\n if (typeof seriesIndex !== \"number\" || seriesIndex < 0) return;\r\n\r\n setLegendSelectedIndex((current) =>\r\n current === seriesIndex ? null : seriesIndex,\r\n );\r\n },\r\n },\r\n },\r\n legend: {\r\n ...options.legend,\r\n labels: {\r\n ...options.legend?.labels,\r\n colors: chartTheme.axis,\r\n },\r\n onItemClick: {\r\n ...options.legend?.onItemClick,\r\n toggleDataSeries: false,\r\n },\r\n },\r\n states: {\r\n ...options.states,\r\n hover: {\r\n ...options.states?.hover,\r\n filter: { type: \"none\" },\r\n },\r\n active: {\r\n ...options.states?.active,\r\n allowMultipleDataPointsSelection: false,\r\n filter: { type: \"none\" },\r\n },\r\n },\r\n tooltip: {\r\n ...options.tooltip,\r\n enabled: true,\r\n followCursor: true,\r\n custom({ series: tooltipSeries, seriesIndex }) {\r\n const value = Number(tooltipSeries?.[seriesIndex] ?? 0);\r\n const label = escapeDonutTooltipText(\r\n labels[seriesIndex] ?? `Categoria ${seriesIndex + 1}`,\r\n );\r\n const formattedValue = escapeDonutTooltipText(valueFormatter(value));\r\n\r\n return `<div class=\"donut-chart-tooltip\"><span class=\"donut-chart-tooltip-label\">${label}</span><strong class=\"donut-chart-tooltip-value\">${formattedValue}</strong></div>`;\r\n },\r\n },\r\n };\r\n }, [\r\n chartTheme.axis,\r\n displayColors,\r\n highContrast,\r\n labels,\r\n options,\r\n valueFormatter,\r\n ]);\r\n\r\n const selectedLabel =\r\n selectedIndex === null\r\n ? \"Nenhuma categoria selecionada\"\r\n : `${labels[selectedIndex] ?? `Categoria ${selectedIndex + 1}`}: ${valueFormatter(\r\n Number(series[selectedIndex] ?? 0),\r\n )}`;\r\n\r\n const legendValueLabel =\r\n legendSelectedIndex === null\r\n ? \"\"\r\n : `Valor em destaque: ${\r\n labels[legendSelectedIndex] ?? `Categoria ${legendSelectedIndex + 1}`\r\n }: ${valueFormatter(Number(series[legendSelectedIndex] ?? 0))}`;\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\r\n if (\r\n [\"ArrowRight\", \"ArrowDown\", \"ArrowLeft\", \"ArrowUp\"].includes(event.key)\r\n ) {\r\n event.preventDefault();\r\n const direction =\r\n event.key === \"ArrowRight\" || event.key === \"ArrowDown\" ? 1 : -1;\r\n setSelectedIndex((current) =>\r\n resolveRelativeDonutSelection({\r\n currentIndex: current,\r\n direction,\r\n count: series.length,\r\n }),\r\n );\r\n }\r\n\r\n if (event.key === \"Escape\") {\r\n setSelectedIndex(null);\r\n setLegendSelectedIndex(null);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n role=\"group\"\r\n tabIndex={0}\r\n aria-label={ariaLabel}\r\n aria-describedby={instructionsId}\r\n onKeyDown={handleKeyDown}\r\n className={`chart-keyboard-focus-ring relative min-w-0 rounded-sm ${className ?? \"\"}`.trim()}\r\n >\r\n <Chart\r\n key={highContrast ? \"donut-high-contrast\" : \"donut-standard\"}\r\n {...rest}\r\n className={chartClassName}\r\n height={\r\n responsiveHeight && measuredChartHeight\r\n ? measuredChartHeight\r\n : rest.height\r\n }\r\n options={interactiveOptions}\r\n series={series}\r\n type=\"donut\"\r\n />\r\n {legendValue && pieCircle && (\r\n <div\r\n aria-hidden=\"true\"\r\n className=\"pointer-events-none absolute flex flex-col items-center justify-center text-center\"\r\n style={{\r\n left: pieCircle.cx,\r\n top: pieCircle.cy,\r\n width: pieCircle.diameter * donutSizeRatio * 0.94,\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n >\r\n <span className=\"w-full truncate text-xs leading-tight text-content-secondary\">\r\n {legendValue.label}\r\n </span>\r\n <span className=\"w-full break-words text-md font-bold leading-tight text-content-primary\">\r\n {valueFormatter(legendValue.value)}\r\n </span>\r\n </div>\r\n )}\r\n <span className=\"sr-only\" aria-live=\"polite\">\r\n {selectedLabel}\r\n </span>\r\n <span className=\"sr-only\" aria-live=\"polite\">\r\n {legendValueLabel}\r\n </span>\r\n <span id={instructionsId} className=\"sr-only\">\r\n Use as setas para navegar pelas categorias e Escape para limpar a\r\n seleção.\r\n </span>\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useHighContrastPreference } from \"../../hooks/useHighContrastPreference\";\nimport { getChartTheme } from \"../../utils/chart-theme\";\nimport { useEffect, useRef, useState } from \"react\";\r\nimport Chart, { type Props as ApexChartProps } from \"./LazyApexChart\";\r\n\r\nexport type TimeSeriesChartOptions = NonNullable<ApexChartProps[\"options\"]>;\r\n\r\nexport type TimeSeriesChartProps = Omit<ApexChartProps, \"options\"> & {\n options: TimeSeriesChartOptions;\r\n ariaLabel: string;\r\n className?: string;\r\n chartClassName?: string;\r\n responsiveHeight?: boolean;\r\n highContrastOverride?: boolean;\r\n};\r\n\r\nexport default function TimeSeriesChart({\r\n options,\r\n ariaLabel,\r\n className,\r\n chartClassName,\r\n responsiveHeight = false,\r\n highContrastOverride,\r\n ...chartProps\r\n}: TimeSeriesChartProps) {\r\n const storedHighContrast = useHighContrastPreference();\r\n const highContrast = highContrastOverride ?? storedHighContrast;\r\n const theme = getChartTheme();\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [measuredHeight, setMeasuredHeight] = useState<number | null>(null);\r\n const [measuredWidth, setMeasuredWidth] = useState<number | null>(null);\r\n const themeKey = [\r\n highContrast ? \"high-contrast\" : \"standard\",\r\n theme.axis,\r\n theme.axisBorder,\r\n theme.grid,\r\n theme.surface,\r\n ...theme.series,\r\n ].join(\"|\");\r\n\r\n useEffect(() => {\r\n if (!responsiveHeight) {\r\n setMeasuredHeight(null);\r\n setMeasuredWidth(null);\r\n return;\r\n }\r\n\r\n const container = containerRef.current;\r\n if (!container || typeof ResizeObserver === \"undefined\") return;\r\n\r\n const fallbackHeight =\r\n typeof chartProps.height === \"number\" ? chartProps.height : 0;\r\n let frame = 0;\r\n const measure = () => {\r\n cancelAnimationFrame(frame);\r\n frame = requestAnimationFrame(() => {\r\n const bounds = container.getBoundingClientRect();\r\n const nextWidth = Math.floor(bounds.width);\r\n const nextHeight = Math.max(\r\n fallbackHeight,\r\n Math.floor(bounds.height),\r\n );\r\n\r\n if (nextWidth > 0) {\r\n setMeasuredWidth((current) =>\r\n current === nextWidth ? current : nextWidth,\r\n );\r\n }\r\n\r\n if (nextHeight > 0) {\r\n setMeasuredHeight((current) =>\r\n current === nextHeight ? current : nextHeight,\r\n );\r\n }\r\n });\r\n };\r\n\r\n measure();\r\n const resizeObserver = new ResizeObserver(measure);\r\n resizeObserver.observe(container);\r\n return () => {\r\n cancelAnimationFrame(frame);\r\n resizeObserver.disconnect();\r\n };\r\n }, [chartProps.height, responsiveHeight]);\r\n\r\n const renderedHeight =\r\n responsiveHeight && measuredHeight ? measuredHeight : chartProps.height;\r\n const renderedWidth =\r\n responsiveHeight && measuredWidth ? measuredWidth : chartProps.width;\r\n const xAxis = options.xaxis;\r\n const xAxisCategories = Array.isArray(xAxis?.categories)\r\n ? xAxis.categories\r\n : [];\r\n const availableWidth =\r\n typeof renderedWidth === \"number\" ? renderedWidth : 720;\r\n const maxVisibleXAxisLabels = Math.max(\r\n 4,\r\n Math.min(12, Math.floor(availableWidth / 88)),\r\n );\r\n const xAxisLabelStep = Math.max(\r\n 1,\r\n Math.ceil(xAxisCategories.length / maxVisibleXAxisLabels),\r\n );\r\n const hasDenseXAxis = xAxisCategories.length > maxVisibleXAxisLabels;\r\n const xAxisCategoriesKey = JSON.stringify(xAxisCategories);\r\n const responsiveXAxisFormatter = xAxisCategories.length\r\n ? (\r\n value: string | number,\n _timestamp?: number,\n opts?: { dataPointIndex?: number },\n ) => {\r\n const fallbackIndex = xAxisCategories.findIndex(\r\n (category) => String(category) === String(value),\r\n );\r\n const index =\n opts?.dataPointIndex ?? (fallbackIndex >= 0 ? fallbackIndex : 0);\n const isLast = index === xAxisCategories.length - 1;\r\n\r\n return index % xAxisLabelStep === 0 || isLast\r\n ? String(xAxisCategories[index] ?? value)\r\n : \"\";\r\n }\r\n : xAxis?.labels?.formatter;\r\n const renderKey = [\r\n themeKey,\r\n renderedWidth ?? \"auto-width\",\r\n renderedHeight ?? \"auto-height\",\r\n xAxisCategoriesKey,\r\n ].join(\"|\");\r\n\r\n const yAxis = Array.isArray(options.yaxis)\r\n ? options.yaxis.map((axis) => ({\r\n ...axis,\r\n labels: {\r\n ...axis.labels,\r\n show: true,\r\n style: {\r\n fontSize: \"11px\",\r\n fontWeight: 500,\r\n ...axis.labels?.style,\r\n colors: theme.axis,\r\n },\r\n },\r\n }))\r\n : {\r\n ...options.yaxis,\r\n labels: {\r\n ...options.yaxis?.labels,\r\n show: true,\r\n style: {\r\n fontSize: \"11px\",\r\n fontWeight: 500,\r\n ...options.yaxis?.labels?.style,\r\n colors: theme.axis,\r\n },\r\n },\r\n };\r\n\r\n const sharedOptions: TimeSeriesChartOptions = {\r\n ...options,\r\n colors: highContrast ? [...theme.series] : options.colors,\r\n chart: {\r\n toolbar: { show: false },\r\n zoom: { enabled: false },\r\n parentHeightOffset: 0,\r\n redrawOnParentResize: true,\r\n redrawOnWindowResize: true,\r\n ...options.chart,\r\n foreColor: theme.axis,\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n ...options.dataLabels,\r\n },\r\n grid: {\r\n show: true,\r\n borderColor: theme.grid,\r\n strokeDashArray: 0,\r\n ...options.grid,\r\n xaxis: {\r\n lines: {\r\n ...options.grid?.xaxis?.lines,\r\n show: hasDenseXAxis\r\n ? false\r\n : (options.grid?.xaxis?.lines?.show ?? true),\r\n },\r\n },\r\n yaxis: {\r\n lines: { show: true, ...options.grid?.yaxis?.lines },\r\n },\r\n padding: {\r\n top: 0,\r\n right: 8,\r\n bottom: 8,\r\n left: 8,\r\n ...options.grid?.padding,\r\n },\r\n },\r\n stroke: {\r\n width: 2,\r\n curve: \"straight\",\r\n ...options.stroke,\r\n colors: highContrast ? [...theme.series] : options.stroke?.colors,\r\n dashArray: highContrast\r\n ? [0, 6, 2, 8, 4, 10, 1, 7, 3, 9, 5, 11]\r\n : (options.stroke?.dashArray ?? 0),\r\n },\r\n markers: {\r\n strokeWidth: 1,\r\n strokeColors: [theme.surface],\r\n ...options.markers,\r\n size: highContrast ? 4 : (options.markers?.size ?? 3),\r\n hover: { size: 4, ...options.markers?.hover },\r\n },\r\n annotations: highContrast\r\n ? {\r\n ...options.annotations,\r\n xaxis: options.annotations?.xaxis?.map((annotation, index) => ({\r\n ...annotation,\r\n fillColor: theme.series[index % theme.series.length],\r\n opacity: 0.28,\r\n })),\r\n }\r\n : options.annotations,\r\n xaxis: {\r\n tooltip: { enabled: false },\r\n axisBorder: { color: theme.axisBorder },\r\n ...xAxis,\r\n tickAmount: xAxisCategories.length ? undefined : xAxis?.tickAmount,\r\n axisTicks: {\r\n color: theme.axisBorder,\r\n ...xAxis?.axisTicks,\r\n show: hasDenseXAxis ? false : (xAxis?.axisTicks?.show ?? true),\r\n },\r\n labels: {\r\n ...xAxis?.labels,\r\n show: true,\r\n formatter: responsiveXAxisFormatter,\r\n style: {\r\n fontSize: \"11px\",\r\n fontWeight: 500,\r\n ...xAxis?.labels?.style,\r\n colors: theme.axis,\r\n },\r\n },\r\n },\r\n yaxis: yAxis,\r\n tooltip: {\r\n shared: true,\r\n intersect: false,\r\n followCursor: true,\r\n ...options.tooltip,\r\n },\r\n legend: {\r\n ...options.legend,\r\n labels: {\r\n ...options.legend?.labels,\r\n colors: theme.axis,\r\n },\r\n },\r\n noData: {\r\n text: \"Nenhum dado disponível no período selecionado\",\r\n ...options.noData,\r\n style: {\r\n fontSize: \"15px\",\r\n ...options.noData?.style,\r\n color: theme.axis,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n role=\"img\"\r\n aria-label={ariaLabel}\r\n className={className}\r\n >\r\n <Chart\r\n key={renderKey}\r\n {...chartProps}\r\n className={chartClassName}\r\n width={renderedWidth}\r\n height={renderedHeight}\r\n options={sharedOptions}\r\n />\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nexport type TimeRangeSelectorProps<T extends string | number> = {\n options: readonly T[];\r\n selected: T;\r\n onSelect: (range: T) => void;\r\n ariaLabel?: string;\r\n className?: string;\r\n};\r\n\r\nexport default function TimeRangeSelector<T extends string | number>({\r\n options,\r\n selected,\r\n onSelect,\r\n ariaLabel = \"Período do gráfico\",\r\n className,\r\n}: TimeRangeSelectorProps<T>) {\r\n return (\r\n <div\r\n role=\"group\"\r\n aria-label={ariaLabel}\r\n className={`flex min-w-0 flex-wrap justify-start gap-1.5 ${className ?? \"\"}`.trim()}\r\n >\r\n {options.map((range) => {\r\n const isSelected = selected === range;\r\n\r\n return (\r\n <button\r\n key={range}\r\n type=\"button\"\r\n aria-pressed={isSelected}\r\n onClick={() => onSelect(range)}\r\n className={`shrink-0 whitespace-nowrap rounded-sm border px-2.5 py-1 text-sm font-semibold transition-colors ${\r\n isSelected\r\n ? \"border-selection-border bg-selection-background text-selection-content\"\r\n : \"border-primary-1 text-primary-1 hover:bg-primary-5\"\r\n }`}\r\n >\r\n {range}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","const TOOLTIP_ENTITIES: Record<string, string> = {\r\n \"&\": \"&amp;\",\r\n \"<\": \"&lt;\",\r\n \">\": \"&gt;\",\r\n '\"': \"&quot;\",\r\n \"'\": \"&#039;\",\r\n};\r\n\r\nexport function escapeTimeSeriesTooltipText(value: unknown) {\r\n return String(value ?? \"\").replace(\r\n /[&<>\"']/g,\r\n (character) => TOOLTIP_ENTITIES[character],\r\n );\r\n}\r\n\r\nconst SAFE_TOOLTIP_COLOR =\r\n /^(?:#[\\da-f]{3,8}|rgba?\\([\\d\\s.,%]+\\)|hsla?\\([\\d\\s.,%]+\\)|var\\(--[\\w-]+\\)|[a-z]+)$/i;\r\n\r\nexport function normalizeTimeSeriesTooltipColor(value?: string) {\r\n const color = String(value ?? \"\").trim();\r\n return SAFE_TOOLTIP_COLOR.test(color) ? color : \"currentColor\";\r\n}\r\n\r\nexport type TimeSeriesTooltipRow = {\r\n label: string;\r\n value: string;\r\n color?: string;\r\n};\r\n\r\nexport function buildTimeSeriesTooltip({\r\n reference,\r\n rows,\r\n}: {\r\n reference: string;\r\n rows: TimeSeriesTooltipRow[];\r\n}) {\r\n const content = rows\r\n .map(({ label, value, color }) => {\r\n const marker = color\r\n ? `<span class=\"time-series-chart-tooltip-marker\" style=\"background-color:${normalizeTimeSeriesTooltipColor(color)}\"></span>`\r\n : \"\";\r\n\r\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>`;\r\n })\r\n .join(\"\");\r\n\r\n return `<div class=\"time-series-chart-tooltip\"><div class=\"time-series-chart-tooltip-reference\">${escapeTimeSeriesTooltipText(reference)}</div>${content}</div>`;\r\n}\r\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"]}