From 678b4ed32e3c5e49b5176f7657a52fb0f8a1cc3c Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 13 Aug 2026 23:42:31 -0600 Subject: [PATCH 1/3] Add ShadCN chart catalog foundation --- API-FRICTION.md | 226 + .../cases/121-shadcn-dashboard/case.json | 30 + .../cases/121-shadcn-dashboard/dashboard.tsx | 686 ++ .../cases/121-shadcn-dashboard/data.test.ts | 32 + .../cases/121-shadcn-dashboard/data.ts | 256 + .../121-shadcn-dashboard/recharts-view.tsx | 129 + .../cases/121-shadcn-dashboard/recharts.ts | 1 + .../cases/121-shadcn-dashboard/styles.ts | 807 ++ .../121-shadcn-dashboard/tanstack-view.tsx | 198 + .../121-shadcn-dashboard/tanstack.test.ts | 35 + .../cases/121-shadcn-dashboard/tanstack.ts | 5 + .../cases/122-shadcn-bar-multiple/case.json | 28 + .../cases/122-shadcn-bar-multiple/data.ts | 14 + .../122-shadcn-bar-multiple/recharts-view.tsx | 45 + .../cases/122-shadcn-bar-multiple/recharts.ts | 1 + .../122-shadcn-bar-multiple/tanstack-view.tsx | 119 + .../cases/122-shadcn-bar-multiple/tanstack.ts | 5 + .../cases/122-shadcn-bar-multiple/view.tsx | 24 + .../cases/123-shadcn-pie-donut-text/case.json | 31 + .../cases/123-shadcn-pie-donut-text/data.ts | 42 + .../recharts-view.tsx | 60 + .../123-shadcn-pie-donut-text/recharts.ts | 1 + .../tanstack-view.tsx | 135 + .../123-shadcn-pie-donut-text/tanstack.ts | 5 + .../cases/123-shadcn-pie-donut-text/view.tsx | 26 + .../cases/124-shadcn-radar-multiple/case.json | 29 + .../cases/124-shadcn-radar-multiple/data.ts | 31 + .../recharts-view.tsx | 44 + .../124-shadcn-radar-multiple/recharts.ts | 1 + .../tanstack-view.tsx | 139 + .../124-shadcn-radar-multiple/tanstack.ts | 5 + .../cases/124-shadcn-radar-multiple/view.tsx | 27 + .../cases/125-shadcn-radial-text/case.json | 31 + .../cases/125-shadcn-radial-text/data.ts | 14 + .../125-shadcn-radial-text/recharts-view.tsx | 65 + .../cases/125-shadcn-radial-text/recharts.ts | 1 + .../125-shadcn-radial-text/tanstack-view.tsx | 129 + .../cases/125-shadcn-radial-text/tanstack.ts | 5 + .../cases/125-shadcn-radial-text/view.tsx | 26 + .../126-shadcn-tooltip-advanced/case.json | 29 + .../cases/126-shadcn-tooltip-advanced/data.ts | 33 + .../recharts-view.tsx | 100 + .../126-shadcn-tooltip-advanced/recharts.ts | 1 + .../tanstack-view.tsx | 160 + .../126-shadcn-tooltip-advanced/tanstack.ts | 5 + .../126-shadcn-tooltip-advanced/view.tsx | 20 + .../cases/127-shadcn-area-axes/case.json | 33 + .../cases/127-shadcn-area-axes/recharts.ts | 5 + .../cases/127-shadcn-area-axes/tanstack.ts | 7 + .../cases/128-shadcn-area-default/case.json | 32 + .../cases/128-shadcn-area-default/recharts.ts | 5 + .../cases/128-shadcn-area-default/tanstack.ts | 7 + .../cases/129-shadcn-area-gradient/case.json | 33 + .../129-shadcn-area-gradient/recharts.ts | 5 + .../129-shadcn-area-gradient/tanstack.ts | 7 + .../cases/130-shadcn-area-icons/case.json | 33 + .../cases/130-shadcn-area-icons/recharts.ts | 5 + .../cases/130-shadcn-area-icons/tanstack.ts | 7 + .../131-shadcn-area-interactive/case.json | 33 + .../131-shadcn-area-interactive/recharts.ts | 5 + .../131-shadcn-area-interactive/tanstack.ts | 7 + .../cases/132-shadcn-area-legend/case.json | 33 + .../cases/132-shadcn-area-legend/recharts.ts | 5 + .../cases/132-shadcn-area-legend/tanstack.ts | 7 + .../cases/133-shadcn-area-linear/case.json | 33 + .../cases/133-shadcn-area-linear/recharts.ts | 5 + .../cases/133-shadcn-area-linear/tanstack.ts | 7 + .../134-shadcn-area-stacked-expand/case.json | 33 + .../recharts.ts | 5 + .../tanstack.ts | 7 + .../cases/135-shadcn-area-stacked/case.json | 33 + .../cases/135-shadcn-area-stacked/recharts.ts | 5 + .../cases/135-shadcn-area-stacked/tanstack.ts | 7 + .../cases/136-shadcn-area-step/case.json | 33 + .../cases/136-shadcn-area-step/recharts.ts | 5 + .../cases/136-shadcn-area-step/tanstack.ts | 7 + .../cases/137-shadcn-bar-active/case.json | 33 + .../cases/137-shadcn-bar-active/recharts.ts | 5 + .../cases/137-shadcn-bar-active/tanstack.ts | 7 + .../cases/138-shadcn-bar-default/case.json | 32 + .../cases/138-shadcn-bar-default/recharts.ts | 5 + .../cases/138-shadcn-bar-default/tanstack.ts | 7 + .../cases/139-shadcn-bar-horizontal/case.json | 33 + .../139-shadcn-bar-horizontal/recharts.ts | 5 + .../139-shadcn-bar-horizontal/tanstack.ts | 7 + .../140-shadcn-bar-interactive/case.json | 33 + .../140-shadcn-bar-interactive/recharts.ts | 5 + .../140-shadcn-bar-interactive/tanstack.ts | 7 + .../141-shadcn-bar-label-custom/case.json | 33 + .../141-shadcn-bar-label-custom/recharts.ts | 5 + .../141-shadcn-bar-label-custom/tanstack.ts | 7 + .../cases/142-shadcn-bar-label/case.json | 33 + .../cases/142-shadcn-bar-label/recharts.ts | 5 + .../cases/142-shadcn-bar-label/tanstack.ts | 7 + .../cases/143-shadcn-bar-mixed/case.json | 33 + .../cases/143-shadcn-bar-mixed/recharts.ts | 5 + .../cases/143-shadcn-bar-mixed/tanstack.ts | 7 + .../cases/144-shadcn-bar-negative/case.json | 33 + .../cases/144-shadcn-bar-negative/recharts.ts | 5 + .../cases/144-shadcn-bar-negative/tanstack.ts | 7 + .../cases/145-shadcn-bar-stacked/case.json | 33 + .../cases/145-shadcn-bar-stacked/recharts.ts | 5 + .../cases/145-shadcn-bar-stacked/tanstack.ts | 7 + .../cases/146-shadcn-line-default/case.json | 32 + .../cases/146-shadcn-line-default/recharts.ts | 5 + .../cases/146-shadcn-line-default/tanstack.ts | 7 + .../147-shadcn-line-dots-colors/case.json | 33 + .../147-shadcn-line-dots-colors/recharts.ts | 5 + .../147-shadcn-line-dots-colors/tanstack.ts | 7 + .../148-shadcn-line-dots-custom/case.json | 33 + .../148-shadcn-line-dots-custom/recharts.ts | 5 + .../148-shadcn-line-dots-custom/tanstack.ts | 7 + .../cases/149-shadcn-line-dots/case.json | 33 + .../cases/149-shadcn-line-dots/recharts.ts | 5 + .../cases/149-shadcn-line-dots/tanstack.ts | 7 + .../150-shadcn-line-interactive/case.json | 33 + .../150-shadcn-line-interactive/recharts.ts | 5 + .../150-shadcn-line-interactive/tanstack.ts | 7 + .../151-shadcn-line-label-custom/case.json | 33 + .../151-shadcn-line-label-custom/recharts.ts | 5 + .../151-shadcn-line-label-custom/tanstack.ts | 7 + .../cases/152-shadcn-line-label/case.json | 33 + .../cases/152-shadcn-line-label/recharts.ts | 5 + .../cases/152-shadcn-line-label/tanstack.ts | 7 + .../cases/153-shadcn-line-linear/case.json | 33 + .../cases/153-shadcn-line-linear/recharts.ts | 5 + .../cases/153-shadcn-line-linear/tanstack.ts | 7 + .../cases/154-shadcn-line-multiple/case.json | 33 + .../154-shadcn-line-multiple/recharts.ts | 5 + .../154-shadcn-line-multiple/tanstack.ts | 7 + .../cases/155-shadcn-line-step/case.json | 33 + .../cases/155-shadcn-line-step/recharts.ts | 5 + .../cases/155-shadcn-line-step/tanstack.ts | 7 + .../156-shadcn-pie-donut-active/case.json | 33 + .../156-shadcn-pie-donut-active/recharts.ts | 5 + .../156-shadcn-pie-donut-active/tanstack.ts | 7 + .../cases/157-shadcn-pie-donut/case.json | 33 + .../cases/157-shadcn-pie-donut/recharts.ts | 5 + .../cases/157-shadcn-pie-donut/tanstack.ts | 7 + .../158-shadcn-pie-interactive/case.json | 33 + .../158-shadcn-pie-interactive/recharts.ts | 5 + .../158-shadcn-pie-interactive/tanstack.ts | 7 + .../159-shadcn-pie-label-custom/case.json | 33 + .../159-shadcn-pie-label-custom/recharts.ts | 5 + .../159-shadcn-pie-label-custom/tanstack.ts | 7 + .../cases/160-shadcn-pie-label-list/case.json | 33 + .../160-shadcn-pie-label-list/recharts.ts | 5 + .../160-shadcn-pie-label-list/tanstack.ts | 7 + .../cases/161-shadcn-pie-label/case.json | 33 + .../cases/161-shadcn-pie-label/recharts.ts | 5 + .../cases/161-shadcn-pie-label/tanstack.ts | 7 + .../cases/162-shadcn-pie-legend/case.json | 33 + .../cases/162-shadcn-pie-legend/recharts.ts | 5 + .../cases/162-shadcn-pie-legend/tanstack.ts | 7 + .../163-shadcn-pie-separator-none/case.json | 33 + .../163-shadcn-pie-separator-none/recharts.ts | 5 + .../163-shadcn-pie-separator-none/tanstack.ts | 7 + .../cases/164-shadcn-pie-simple/case.json | 32 + .../cases/164-shadcn-pie-simple/recharts.ts | 5 + .../cases/164-shadcn-pie-simple/tanstack.ts | 7 + .../cases/165-shadcn-pie-stacked/case.json | 33 + .../cases/165-shadcn-pie-stacked/recharts.ts | 5 + .../cases/165-shadcn-pie-stacked/tanstack.ts | 7 + .../cases/166-shadcn-radar-default/case.json | 32 + .../166-shadcn-radar-default/recharts.ts | 5 + .../166-shadcn-radar-default/tanstack.ts | 7 + .../cases/167-shadcn-radar-dots/case.json | 33 + .../cases/167-shadcn-radar-dots/recharts.ts | 5 + .../cases/167-shadcn-radar-dots/tanstack.ts | 7 + .../case.json | 33 + .../recharts.ts | 5 + .../tanstack.ts | 7 + .../case.json | 33 + .../recharts.ts | 5 + .../tanstack.ts | 7 + .../170-shadcn-radar-grid-circle/case.json | 33 + .../170-shadcn-radar-grid-circle/recharts.ts | 5 + .../170-shadcn-radar-grid-circle/tanstack.ts | 7 + .../171-shadcn-radar-grid-custom/case.json | 33 + .../171-shadcn-radar-grid-custom/recharts.ts | 5 + .../171-shadcn-radar-grid-custom/tanstack.ts | 7 + .../172-shadcn-radar-grid-fill/case.json | 33 + .../172-shadcn-radar-grid-fill/recharts.ts | 5 + .../172-shadcn-radar-grid-fill/tanstack.ts | 7 + .../173-shadcn-radar-grid-none/case.json | 33 + .../173-shadcn-radar-grid-none/recharts.ts | 5 + .../173-shadcn-radar-grid-none/tanstack.ts | 7 + .../cases/174-shadcn-radar-icons/case.json | 33 + .../cases/174-shadcn-radar-icons/recharts.ts | 5 + .../cases/174-shadcn-radar-icons/tanstack.ts | 7 + .../175-shadcn-radar-label-custom/case.json | 33 + .../175-shadcn-radar-label-custom/recharts.ts | 5 + .../175-shadcn-radar-label-custom/tanstack.ts | 7 + .../cases/176-shadcn-radar-legend/case.json | 33 + .../cases/176-shadcn-radar-legend/recharts.ts | 5 + .../cases/176-shadcn-radar-legend/tanstack.ts | 7 + .../177-shadcn-radar-lines-only/case.json | 33 + .../177-shadcn-radar-lines-only/recharts.ts | 5 + .../177-shadcn-radar-lines-only/tanstack.ts | 7 + .../cases/178-shadcn-radar-radius/case.json | 33 + .../cases/178-shadcn-radar-radius/recharts.ts | 5 + .../cases/178-shadcn-radar-radius/tanstack.ts | 7 + .../cases/179-shadcn-radial-grid/case.json | 37 + .../cases/179-shadcn-radial-grid/recharts.ts | 5 + .../cases/179-shadcn-radial-grid/tanstack.ts | 7 + .../cases/180-shadcn-radial-label/case.json | 37 + .../cases/180-shadcn-radial-label/recharts.ts | 5 + .../cases/180-shadcn-radial-label/tanstack.ts | 7 + .../cases/181-shadcn-radial-shape/case.json | 37 + .../cases/181-shadcn-radial-shape/recharts.ts | 5 + .../cases/181-shadcn-radial-shape/tanstack.ts | 7 + .../cases/182-shadcn-radial-simple/case.json | 36 + .../182-shadcn-radial-simple/recharts.ts | 5 + .../182-shadcn-radial-simple/tanstack.ts | 7 + .../cases/183-shadcn-radial-stacked/case.json | 37 + .../183-shadcn-radial-stacked/recharts.ts | 5 + .../183-shadcn-radial-stacked/tanstack.ts | 7 + .../184-shadcn-tooltip-default/case.json | 32 + .../184-shadcn-tooltip-default/recharts.ts | 5 + .../184-shadcn-tooltip-default/tanstack.ts | 7 + .../185-shadcn-tooltip-formatter/case.json | 33 + .../185-shadcn-tooltip-formatter/recharts.ts | 5 + .../185-shadcn-tooltip-formatter/tanstack.ts | 7 + .../cases/186-shadcn-tooltip-icons/case.json | 33 + .../186-shadcn-tooltip-icons/recharts.ts | 5 + .../186-shadcn-tooltip-icons/tanstack.ts | 7 + .../case.json | 33 + .../recharts.ts | 5 + .../tanstack.ts | 7 + .../case.json | 33 + .../recharts.ts | 5 + .../tanstack.ts | 7 + .../189-shadcn-tooltip-label-custom/case.json | 33 + .../recharts.ts | 5 + .../tanstack.ts | 7 + .../case.json | 33 + .../recharts.ts | 5 + .../tanstack.ts | 7 + .../191-shadcn-tooltip-label-none/case.json | 33 + .../191-shadcn-tooltip-label-none/recharts.ts | 5 + .../191-shadcn-tooltip-label-none/tanstack.ts | 7 + benchmarks/conformance/catalog-index.json | 2482 ++++++ benchmarks/conformance/catalog-loader.test.ts | 22 + benchmarks/conformance/catalog-loader.ts | 3 + benchmarks/conformance/metadata.test.ts | 16 + benchmarks/conformance/metadata.ts | 28 + .../previews/112-motion-entrance.svg | 2 +- .../previews/113-motion-updates.svg | 2 +- .../previews/115-definition-motion.svg | 2 +- .../previews/119-stacked-bar-band-cursor.svg | 2 +- .../previews/121-shadcn-dashboard.svg | 1 + .../previews/122-shadcn-bar-multiple.svg | 1 + .../previews/123-shadcn-pie-donut-text.svg | 1 + .../previews/124-shadcn-radar-multiple.svg | 1 + .../previews/125-shadcn-radial-text.svg | 1 + .../previews/126-shadcn-tooltip-advanced.svg | 1 + .../previews/127-shadcn-area-axes.svg | 1 + .../previews/128-shadcn-area-default.svg | 1 + .../previews/129-shadcn-area-gradient.svg | 1 + .../previews/13-interval-timeline.svg | 2 +- .../previews/130-shadcn-area-icons.svg | 1 + .../previews/131-shadcn-area-interactive.svg | 1 + .../previews/132-shadcn-area-legend.svg | 1 + .../previews/133-shadcn-area-linear.svg | 1 + .../134-shadcn-area-stacked-expand.svg | 1 + .../previews/135-shadcn-area-stacked.svg | 1 + .../previews/136-shadcn-area-step.svg | 1 + .../previews/137-shadcn-bar-active.svg | 1 + .../previews/138-shadcn-bar-default.svg | 1 + .../previews/139-shadcn-bar-horizontal.svg | 1 + .../previews/140-shadcn-bar-interactive.svg | 1 + .../previews/141-shadcn-bar-label-custom.svg | 1 + .../previews/142-shadcn-bar-label.svg | 1 + .../previews/143-shadcn-bar-mixed.svg | 1 + .../previews/144-shadcn-bar-negative.svg | 1 + .../previews/145-shadcn-bar-stacked.svg | 1 + .../previews/146-shadcn-line-default.svg | 1 + .../previews/147-shadcn-line-dots-colors.svg | 1 + .../previews/148-shadcn-line-dots-custom.svg | 1 + .../previews/149-shadcn-line-dots.svg | 1 + .../conformance/previews/15-boxplot.svg | 2 +- .../previews/150-shadcn-line-interactive.svg | 1 + .../previews/151-shadcn-line-label-custom.svg | 1 + .../previews/152-shadcn-line-label.svg | 1 + .../previews/153-shadcn-line-linear.svg | 1 + .../previews/154-shadcn-line-multiple.svg | 1 + .../previews/155-shadcn-line-step.svg | 1 + .../previews/156-shadcn-pie-donut-active.svg | 1 + .../previews/157-shadcn-pie-donut.svg | 1 + .../previews/158-shadcn-pie-interactive.svg | 1 + .../previews/159-shadcn-pie-label-custom.svg | 1 + .../previews/160-shadcn-pie-label-list.svg | 1 + .../previews/161-shadcn-pie-label.svg | 1 + .../previews/162-shadcn-pie-legend.svg | 1 + .../163-shadcn-pie-separator-none.svg | 1 + .../previews/164-shadcn-pie-simple.svg | 1 + .../previews/165-shadcn-pie-stacked.svg | 1 + .../previews/166-shadcn-radar-default.svg | 1 + .../previews/167-shadcn-radar-dots.svg | 1 + .../168-shadcn-radar-grid-circle-fill.svg | 1 + .../169-shadcn-radar-grid-circle-no-lines.svg | 1 + .../previews/170-shadcn-radar-grid-circle.svg | 1 + .../previews/171-shadcn-radar-grid-custom.svg | 1 + .../previews/172-shadcn-radar-grid-fill.svg | 1 + .../previews/173-shadcn-radar-grid-none.svg | 1 + .../previews/174-shadcn-radar-icons.svg | 1 + .../175-shadcn-radar-label-custom.svg | 1 + .../previews/176-shadcn-radar-legend.svg | 1 + .../previews/177-shadcn-radar-lines-only.svg | 1 + .../previews/178-shadcn-radar-radius.svg | 1 + .../previews/179-shadcn-radial-grid.svg | 1 + .../previews/180-shadcn-radial-label.svg | 1 + .../previews/181-shadcn-radial-shape.svg | 1 + .../previews/182-shadcn-radial-simple.svg | 1 + .../previews/183-shadcn-radial-stacked.svg | 1 + .../previews/184-shadcn-tooltip-default.svg | 1 + .../previews/185-shadcn-tooltip-formatter.svg | 1 + .../previews/186-shadcn-tooltip-icons.svg | 1 + .../187-shadcn-tooltip-indicator-line.svg | 1 + .../188-shadcn-tooltip-indicator-none.svg | 1 + .../189-shadcn-tooltip-label-custom.svg | 1 + .../190-shadcn-tooltip-label-formatter.svg | 1 + .../191-shadcn-tooltip-label-none.svg | 1 + .../previews/26-diverging-likert.svg | 2 +- .../conformance/previews/29-waterfall.svg | 2 +- .../previews/59-grouped-reducer-bars.svg | 2 +- .../previews/70-composed-chart.svg | 2 +- .../71-recharts-population-pyramid.svg | 2 +- .../previews/72-recharts-mixed-bars.svg | 2 +- .../84-pinned-nested-chart-tooltip.svg | 2 +- .../conformance/previews/bar-grouped.svg | 2 +- .../previews/bar-horizontal-ranking.svg | 2 +- .../conformance/previews/bar-stacked.svg | 2 +- .../previews/bar-vertical-sorted.svg | 2 +- benchmarks/conformance/shadcn/README.md | 29 + .../shadcn/area-interactive-data.json | 457 ++ benchmarks/conformance/shadcn/catalog.json | 502 ++ .../shadcn/reference/chart-area-axes.png | Bin 0 -> 24226 bytes .../shadcn/reference/chart-area-default.png | Bin 0 -> 20286 bytes .../shadcn/reference/chart-area-gradient.png | Bin 0 -> 26710 bytes .../shadcn/reference/chart-area-icons.png | Bin 0 -> 24663 bytes .../reference/chart-area-interactive.png | Bin 0 -> 54211 bytes .../shadcn/reference/chart-area-legend.png | Bin 0 -> 24597 bytes .../shadcn/reference/chart-area-linear.png | Bin 0 -> 20160 bytes .../reference/chart-area-stacked-expand.png | Bin 0 -> 24230 bytes .../shadcn/reference/chart-area-stacked.png | Bin 0 -> 23790 bytes .../shadcn/reference/chart-area-step.png | Bin 0 -> 15752 bytes .../shadcn/reference/chart-bar-active.png | Bin 0 -> 19426 bytes .../shadcn/reference/chart-bar-default.png | Bin 0 -> 16220 bytes .../shadcn/reference/chart-bar-horizontal.png | Bin 0 -> 17142 bytes .../reference/chart-bar-interactive.png | Bin 0 -> 22483 bytes .../reference/chart-bar-label-custom.png | Bin 0 -> 21709 bytes .../shadcn/reference/chart-bar-label.png | Bin 0 -> 19586 bytes .../shadcn/reference/chart-bar-mixed.png | Bin 0 -> 17899 bytes .../shadcn/reference/chart-bar-multiple.png | Bin 0 -> 17238 bytes .../shadcn/reference/chart-bar-negative.png | Bin 0 -> 17023 bytes .../shadcn/reference/chart-bar-stacked.png | Bin 0 -> 18946 bytes .../shadcn/reference/chart-line-default.png | Bin 0 -> 22304 bytes .../reference/chart-line-dots-colors.png | Bin 0 -> 19468 bytes .../reference/chart-line-dots-custom.png | Bin 0 -> 24567 bytes .../shadcn/reference/chart-line-dots.png | Bin 0 -> 23271 bytes .../reference/chart-line-interactive.png | Bin 0 -> 40794 bytes .../reference/chart-line-label-custom.png | Bin 0 -> 22480 bytes .../shadcn/reference/chart-line-label.png | Bin 0 -> 25585 bytes .../shadcn/reference/chart-line-linear.png | Bin 0 -> 21449 bytes .../shadcn/reference/chart-line-multiple.png | Bin 0 -> 28641 bytes .../shadcn/reference/chart-line-step.png | Bin 0 -> 15669 bytes .../reference/chart-pie-donut-active.png | Bin 0 -> 20015 bytes .../shadcn/reference/chart-pie-donut-text.png | Bin 0 -> 22369 bytes .../shadcn/reference/chart-pie-donut.png | Bin 0 -> 19285 bytes .../reference/chart-pie-interactive.png | Bin 0 -> 19906 bytes .../reference/chart-pie-label-custom.png | Bin 0 -> 20642 bytes .../shadcn/reference/chart-pie-label-list.png | Bin 0 -> 21590 bytes .../shadcn/reference/chart-pie-label.png | Bin 0 -> 21097 bytes .../shadcn/reference/chart-pie-legend.png | Bin 0 -> 14752 bytes .../reference/chart-pie-separator-none.png | Bin 0 -> 19152 bytes .../shadcn/reference/chart-pie-simple.png | Bin 0 -> 17415 bytes .../shadcn/reference/chart-pie-stacked.png | Bin 0 -> 23055 bytes .../shadcn/reference/chart-radar-default.png | Bin 0 -> 23971 bytes .../shadcn/reference/chart-radar-dots.png | Bin 0 -> 24875 bytes .../chart-radar-grid-circle-fill.png | Bin 0 -> 27505 bytes .../chart-radar-grid-circle-no-lines.png | Bin 0 -> 27659 bytes .../reference/chart-radar-grid-circle.png | Bin 0 -> 28709 bytes .../reference/chart-radar-grid-custom.png | Bin 0 -> 20969 bytes .../reference/chart-radar-grid-fill.png | Bin 0 -> 25176 bytes .../reference/chart-radar-grid-none.png | Bin 0 -> 19172 bytes .../shadcn/reference/chart-radar-icons.png | Bin 0 -> 25389 bytes .../reference/chart-radar-label-custom.png | Bin 0 -> 28850 bytes .../shadcn/reference/chart-radar-legend.png | Bin 0 -> 25404 bytes .../reference/chart-radar-lines-only.png | Bin 0 -> 28328 bytes .../shadcn/reference/chart-radar-multiple.png | Bin 0 -> 23985 bytes .../shadcn/reference/chart-radar-radius.png | Bin 0 -> 24287 bytes .../shadcn/reference/chart-radial-grid.png | Bin 0 -> 33036 bytes .../shadcn/reference/chart-radial-label.png | Bin 0 -> 38677 bytes .../shadcn/reference/chart-radial-shape.png | Bin 0 -> 20507 bytes .../shadcn/reference/chart-radial-simple.png | Bin 0 -> 32401 bytes .../shadcn/reference/chart-radial-stacked.png | Bin 0 -> 19522 bytes .../shadcn/reference/chart-radial-text.png | Bin 0 -> 22217 bytes .../reference/chart-tooltip-advanced.png | Bin 0 -> 18521 bytes .../reference/chart-tooltip-default.png | Bin 0 -> 17077 bytes .../reference/chart-tooltip-formatter.png | Bin 0 -> 15649 bytes .../shadcn/reference/chart-tooltip-icons.png | Bin 0 -> 13921 bytes .../chart-tooltip-indicator-line.png | Bin 0 -> 16274 bytes .../chart-tooltip-indicator-none.png | Bin 0 -> 15842 bytes .../reference/chart-tooltip-label-custom.png | Bin 0 -> 17337 bytes .../chart-tooltip-label-formatter.png | Bin 0 -> 16782 bytes .../reference/chart-tooltip-label-none.png | Bin 0 -> 14176 bytes .../shadcn/reference/manifest.json | 82 + .../conformance/shared/shadcn-catalog-data.ts | 216 + .../shared/shadcn-catalog-recharts.tsx | 570 ++ .../shared/shadcn-catalog-tanstack.tsx | 1931 +++++ .../conformance/shared/shadcn-chart-card.tsx | 309 + .../conformance/shared/shadcn-motion.test.ts | 52 + .../conformance/shared/shadcn-motion.ts | 24 + benchmarks/conformance/types.ts | 2 + docs/config.json | 284 + docs/guides/tooltips-and-focus.md | 19 + docs/reference/marks/bar-and-rect.md | 38 +- docs/reference/marks/polar.md | 3 +- examples/conformance/src/main.tsx | 329 +- examples/conformance/src/routes.test.ts | 7 + examples/conformance/src/routes.ts | 8 + examples/conformance/src/styles.css | 228 + package.json | 7 + .../docs/guides/tooltips-and-focus.md | 19 + .../docs/reference/marks/bar-and-rect.md | 38 +- .../charts-core/docs/reference/marks/polar.md | 3 +- packages/charts-core/src/bar.ts | 44 + packages/charts-core/src/dom-types.ts | 2 + packages/charts-core/src/marks.test.ts | 63 + packages/charts-core/src/polar.test.ts | 7 + packages/charts-core/src/polar.ts | 5 +- packages/charts-core/src/renderer.test.ts | 68 + packages/charts-core/src/renderer.ts | 7 + packages/charts-core/src/tooltip.ts | 189 +- packages/charts-core/src/types.ts | 2 + pnpm-lock.yaml | 7216 +++++------------ scripts/catalog-definition-shapes.test.mjs | 1 + scripts/catalog-preview.mjs | 224 +- scripts/catalog-preview.test.mjs | 25 + scripts/generate-shadcn-cases.mjs | 334 + scripts/public-callback-contract.mjs | 12 +- scripts/shadcn-catalog.mjs | 238 + scripts/shadcn-catalog.test.mjs | 61 + scripts/shadcn-reference-screenshots.mjs | 73 + scripts/shadcn-visual-parity.mjs | 305 + 446 files changed, 17954 insertions(+), 5509 deletions(-) create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/case.json create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/dashboard.tsx create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/data.test.ts create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/data.ts create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/recharts-view.tsx create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/styles.ts create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.test.ts create mode 100644 benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts create mode 100644 benchmarks/conformance/cases/122-shadcn-bar-multiple/case.json create mode 100644 benchmarks/conformance/cases/122-shadcn-bar-multiple/data.ts create mode 100644 benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts-view.tsx create mode 100644 benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts create mode 100644 benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx create mode 100644 benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts create mode 100644 benchmarks/conformance/cases/122-shadcn-bar-multiple/view.tsx create mode 100644 benchmarks/conformance/cases/123-shadcn-pie-donut-text/case.json create mode 100644 benchmarks/conformance/cases/123-shadcn-pie-donut-text/data.ts create mode 100644 benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts-view.tsx create mode 100644 benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts create mode 100644 benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx create mode 100644 benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts create mode 100644 benchmarks/conformance/cases/123-shadcn-pie-donut-text/view.tsx create mode 100644 benchmarks/conformance/cases/124-shadcn-radar-multiple/case.json create mode 100644 benchmarks/conformance/cases/124-shadcn-radar-multiple/data.ts create mode 100644 benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts-view.tsx create mode 100644 benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts create mode 100644 benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx create mode 100644 benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts create mode 100644 benchmarks/conformance/cases/124-shadcn-radar-multiple/view.tsx create mode 100644 benchmarks/conformance/cases/125-shadcn-radial-text/case.json create mode 100644 benchmarks/conformance/cases/125-shadcn-radial-text/data.ts create mode 100644 benchmarks/conformance/cases/125-shadcn-radial-text/recharts-view.tsx create mode 100644 benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts create mode 100644 benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx create mode 100644 benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts create mode 100644 benchmarks/conformance/cases/125-shadcn-radial-text/view.tsx create mode 100644 benchmarks/conformance/cases/126-shadcn-tooltip-advanced/case.json create mode 100644 benchmarks/conformance/cases/126-shadcn-tooltip-advanced/data.ts create mode 100644 benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts-view.tsx create mode 100644 benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts create mode 100644 benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx create mode 100644 benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts create mode 100644 benchmarks/conformance/cases/126-shadcn-tooltip-advanced/view.tsx create mode 100644 benchmarks/conformance/cases/127-shadcn-area-axes/case.json create mode 100644 benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts create mode 100644 benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts create mode 100644 benchmarks/conformance/cases/128-shadcn-area-default/case.json create mode 100644 benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts create mode 100644 benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts create mode 100644 benchmarks/conformance/cases/129-shadcn-area-gradient/case.json create mode 100644 benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts create mode 100644 benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts create mode 100644 benchmarks/conformance/cases/130-shadcn-area-icons/case.json create mode 100644 benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts create mode 100644 benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts create mode 100644 benchmarks/conformance/cases/131-shadcn-area-interactive/case.json create mode 100644 benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts create mode 100644 benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts create mode 100644 benchmarks/conformance/cases/132-shadcn-area-legend/case.json create mode 100644 benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts create mode 100644 benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts create mode 100644 benchmarks/conformance/cases/133-shadcn-area-linear/case.json create mode 100644 benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts create mode 100644 benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts create mode 100644 benchmarks/conformance/cases/134-shadcn-area-stacked-expand/case.json create mode 100644 benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts create mode 100644 benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts create mode 100644 benchmarks/conformance/cases/135-shadcn-area-stacked/case.json create mode 100644 benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts create mode 100644 benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts create mode 100644 benchmarks/conformance/cases/136-shadcn-area-step/case.json create mode 100644 benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts create mode 100644 benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts create mode 100644 benchmarks/conformance/cases/137-shadcn-bar-active/case.json create mode 100644 benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts create mode 100644 benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts create mode 100644 benchmarks/conformance/cases/138-shadcn-bar-default/case.json create mode 100644 benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts create mode 100644 benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts create mode 100644 benchmarks/conformance/cases/139-shadcn-bar-horizontal/case.json create mode 100644 benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts create mode 100644 benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts create mode 100644 benchmarks/conformance/cases/140-shadcn-bar-interactive/case.json create mode 100644 benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts create mode 100644 benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts create mode 100644 benchmarks/conformance/cases/141-shadcn-bar-label-custom/case.json create mode 100644 benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts create mode 100644 benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts create mode 100644 benchmarks/conformance/cases/142-shadcn-bar-label/case.json create mode 100644 benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts create mode 100644 benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts create mode 100644 benchmarks/conformance/cases/143-shadcn-bar-mixed/case.json create mode 100644 benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts create mode 100644 benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts create mode 100644 benchmarks/conformance/cases/144-shadcn-bar-negative/case.json create mode 100644 benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts create mode 100644 benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts create mode 100644 benchmarks/conformance/cases/145-shadcn-bar-stacked/case.json create mode 100644 benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts create mode 100644 benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts create mode 100644 benchmarks/conformance/cases/146-shadcn-line-default/case.json create mode 100644 benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts create mode 100644 benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts create mode 100644 benchmarks/conformance/cases/147-shadcn-line-dots-colors/case.json create mode 100644 benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts create mode 100644 benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts create mode 100644 benchmarks/conformance/cases/148-shadcn-line-dots-custom/case.json create mode 100644 benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts create mode 100644 benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts create mode 100644 benchmarks/conformance/cases/149-shadcn-line-dots/case.json create mode 100644 benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts create mode 100644 benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts create mode 100644 benchmarks/conformance/cases/150-shadcn-line-interactive/case.json create mode 100644 benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts create mode 100644 benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts create mode 100644 benchmarks/conformance/cases/151-shadcn-line-label-custom/case.json create mode 100644 benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts create mode 100644 benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts create mode 100644 benchmarks/conformance/cases/152-shadcn-line-label/case.json create mode 100644 benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts create mode 100644 benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts create mode 100644 benchmarks/conformance/cases/153-shadcn-line-linear/case.json create mode 100644 benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts create mode 100644 benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts create mode 100644 benchmarks/conformance/cases/154-shadcn-line-multiple/case.json create mode 100644 benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts create mode 100644 benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts create mode 100644 benchmarks/conformance/cases/155-shadcn-line-step/case.json create mode 100644 benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts create mode 100644 benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts create mode 100644 benchmarks/conformance/cases/156-shadcn-pie-donut-active/case.json create mode 100644 benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts create mode 100644 benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts create mode 100644 benchmarks/conformance/cases/157-shadcn-pie-donut/case.json create mode 100644 benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts create mode 100644 benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts create mode 100644 benchmarks/conformance/cases/158-shadcn-pie-interactive/case.json create mode 100644 benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts create mode 100644 benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts create mode 100644 benchmarks/conformance/cases/159-shadcn-pie-label-custom/case.json create mode 100644 benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts create mode 100644 benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts create mode 100644 benchmarks/conformance/cases/160-shadcn-pie-label-list/case.json create mode 100644 benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts create mode 100644 benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts create mode 100644 benchmarks/conformance/cases/161-shadcn-pie-label/case.json create mode 100644 benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts create mode 100644 benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts create mode 100644 benchmarks/conformance/cases/162-shadcn-pie-legend/case.json create mode 100644 benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts create mode 100644 benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts create mode 100644 benchmarks/conformance/cases/163-shadcn-pie-separator-none/case.json create mode 100644 benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts create mode 100644 benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts create mode 100644 benchmarks/conformance/cases/164-shadcn-pie-simple/case.json create mode 100644 benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts create mode 100644 benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts create mode 100644 benchmarks/conformance/cases/165-shadcn-pie-stacked/case.json create mode 100644 benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts create mode 100644 benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts create mode 100644 benchmarks/conformance/cases/166-shadcn-radar-default/case.json create mode 100644 benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts create mode 100644 benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts create mode 100644 benchmarks/conformance/cases/167-shadcn-radar-dots/case.json create mode 100644 benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts create mode 100644 benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts create mode 100644 benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/case.json create mode 100644 benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts create mode 100644 benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts create mode 100644 benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/case.json create mode 100644 benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts create mode 100644 benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts create mode 100644 benchmarks/conformance/cases/170-shadcn-radar-grid-circle/case.json create mode 100644 benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts create mode 100644 benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts create mode 100644 benchmarks/conformance/cases/171-shadcn-radar-grid-custom/case.json create mode 100644 benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts create mode 100644 benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts create mode 100644 benchmarks/conformance/cases/172-shadcn-radar-grid-fill/case.json create mode 100644 benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts create mode 100644 benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts create mode 100644 benchmarks/conformance/cases/173-shadcn-radar-grid-none/case.json create mode 100644 benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts create mode 100644 benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts create mode 100644 benchmarks/conformance/cases/174-shadcn-radar-icons/case.json create mode 100644 benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts create mode 100644 benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts create mode 100644 benchmarks/conformance/cases/175-shadcn-radar-label-custom/case.json create mode 100644 benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts create mode 100644 benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts create mode 100644 benchmarks/conformance/cases/176-shadcn-radar-legend/case.json create mode 100644 benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts create mode 100644 benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts create mode 100644 benchmarks/conformance/cases/177-shadcn-radar-lines-only/case.json create mode 100644 benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts create mode 100644 benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts create mode 100644 benchmarks/conformance/cases/178-shadcn-radar-radius/case.json create mode 100644 benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts create mode 100644 benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts create mode 100644 benchmarks/conformance/cases/179-shadcn-radial-grid/case.json create mode 100644 benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts create mode 100644 benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts create mode 100644 benchmarks/conformance/cases/180-shadcn-radial-label/case.json create mode 100644 benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts create mode 100644 benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts create mode 100644 benchmarks/conformance/cases/181-shadcn-radial-shape/case.json create mode 100644 benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts create mode 100644 benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts create mode 100644 benchmarks/conformance/cases/182-shadcn-radial-simple/case.json create mode 100644 benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts create mode 100644 benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts create mode 100644 benchmarks/conformance/cases/183-shadcn-radial-stacked/case.json create mode 100644 benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts create mode 100644 benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts create mode 100644 benchmarks/conformance/cases/184-shadcn-tooltip-default/case.json create mode 100644 benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts create mode 100644 benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts create mode 100644 benchmarks/conformance/cases/185-shadcn-tooltip-formatter/case.json create mode 100644 benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts create mode 100644 benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts create mode 100644 benchmarks/conformance/cases/186-shadcn-tooltip-icons/case.json create mode 100644 benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts create mode 100644 benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts create mode 100644 benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/case.json create mode 100644 benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts create mode 100644 benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts create mode 100644 benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/case.json create mode 100644 benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts create mode 100644 benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts create mode 100644 benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/case.json create mode 100644 benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts create mode 100644 benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts create mode 100644 benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/case.json create mode 100644 benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts create mode 100644 benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts create mode 100644 benchmarks/conformance/cases/191-shadcn-tooltip-label-none/case.json create mode 100644 benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts create mode 100644 benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts create mode 100644 benchmarks/conformance/previews/121-shadcn-dashboard.svg create mode 100644 benchmarks/conformance/previews/122-shadcn-bar-multiple.svg create mode 100644 benchmarks/conformance/previews/123-shadcn-pie-donut-text.svg create mode 100644 benchmarks/conformance/previews/124-shadcn-radar-multiple.svg create mode 100644 benchmarks/conformance/previews/125-shadcn-radial-text.svg create mode 100644 benchmarks/conformance/previews/126-shadcn-tooltip-advanced.svg create mode 100644 benchmarks/conformance/previews/127-shadcn-area-axes.svg create mode 100644 benchmarks/conformance/previews/128-shadcn-area-default.svg create mode 100644 benchmarks/conformance/previews/129-shadcn-area-gradient.svg create mode 100644 benchmarks/conformance/previews/130-shadcn-area-icons.svg create mode 100644 benchmarks/conformance/previews/131-shadcn-area-interactive.svg create mode 100644 benchmarks/conformance/previews/132-shadcn-area-legend.svg create mode 100644 benchmarks/conformance/previews/133-shadcn-area-linear.svg create mode 100644 benchmarks/conformance/previews/134-shadcn-area-stacked-expand.svg create mode 100644 benchmarks/conformance/previews/135-shadcn-area-stacked.svg create mode 100644 benchmarks/conformance/previews/136-shadcn-area-step.svg create mode 100644 benchmarks/conformance/previews/137-shadcn-bar-active.svg create mode 100644 benchmarks/conformance/previews/138-shadcn-bar-default.svg create mode 100644 benchmarks/conformance/previews/139-shadcn-bar-horizontal.svg create mode 100644 benchmarks/conformance/previews/140-shadcn-bar-interactive.svg create mode 100644 benchmarks/conformance/previews/141-shadcn-bar-label-custom.svg create mode 100644 benchmarks/conformance/previews/142-shadcn-bar-label.svg create mode 100644 benchmarks/conformance/previews/143-shadcn-bar-mixed.svg create mode 100644 benchmarks/conformance/previews/144-shadcn-bar-negative.svg create mode 100644 benchmarks/conformance/previews/145-shadcn-bar-stacked.svg create mode 100644 benchmarks/conformance/previews/146-shadcn-line-default.svg create mode 100644 benchmarks/conformance/previews/147-shadcn-line-dots-colors.svg create mode 100644 benchmarks/conformance/previews/148-shadcn-line-dots-custom.svg create mode 100644 benchmarks/conformance/previews/149-shadcn-line-dots.svg create mode 100644 benchmarks/conformance/previews/150-shadcn-line-interactive.svg create mode 100644 benchmarks/conformance/previews/151-shadcn-line-label-custom.svg create mode 100644 benchmarks/conformance/previews/152-shadcn-line-label.svg create mode 100644 benchmarks/conformance/previews/153-shadcn-line-linear.svg create mode 100644 benchmarks/conformance/previews/154-shadcn-line-multiple.svg create mode 100644 benchmarks/conformance/previews/155-shadcn-line-step.svg create mode 100644 benchmarks/conformance/previews/156-shadcn-pie-donut-active.svg create mode 100644 benchmarks/conformance/previews/157-shadcn-pie-donut.svg create mode 100644 benchmarks/conformance/previews/158-shadcn-pie-interactive.svg create mode 100644 benchmarks/conformance/previews/159-shadcn-pie-label-custom.svg create mode 100644 benchmarks/conformance/previews/160-shadcn-pie-label-list.svg create mode 100644 benchmarks/conformance/previews/161-shadcn-pie-label.svg create mode 100644 benchmarks/conformance/previews/162-shadcn-pie-legend.svg create mode 100644 benchmarks/conformance/previews/163-shadcn-pie-separator-none.svg create mode 100644 benchmarks/conformance/previews/164-shadcn-pie-simple.svg create mode 100644 benchmarks/conformance/previews/165-shadcn-pie-stacked.svg create mode 100644 benchmarks/conformance/previews/166-shadcn-radar-default.svg create mode 100644 benchmarks/conformance/previews/167-shadcn-radar-dots.svg create mode 100644 benchmarks/conformance/previews/168-shadcn-radar-grid-circle-fill.svg create mode 100644 benchmarks/conformance/previews/169-shadcn-radar-grid-circle-no-lines.svg create mode 100644 benchmarks/conformance/previews/170-shadcn-radar-grid-circle.svg create mode 100644 benchmarks/conformance/previews/171-shadcn-radar-grid-custom.svg create mode 100644 benchmarks/conformance/previews/172-shadcn-radar-grid-fill.svg create mode 100644 benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg create mode 100644 benchmarks/conformance/previews/174-shadcn-radar-icons.svg create mode 100644 benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg create mode 100644 benchmarks/conformance/previews/176-shadcn-radar-legend.svg create mode 100644 benchmarks/conformance/previews/177-shadcn-radar-lines-only.svg create mode 100644 benchmarks/conformance/previews/178-shadcn-radar-radius.svg create mode 100644 benchmarks/conformance/previews/179-shadcn-radial-grid.svg create mode 100644 benchmarks/conformance/previews/180-shadcn-radial-label.svg create mode 100644 benchmarks/conformance/previews/181-shadcn-radial-shape.svg create mode 100644 benchmarks/conformance/previews/182-shadcn-radial-simple.svg create mode 100644 benchmarks/conformance/previews/183-shadcn-radial-stacked.svg create mode 100644 benchmarks/conformance/previews/184-shadcn-tooltip-default.svg create mode 100644 benchmarks/conformance/previews/185-shadcn-tooltip-formatter.svg create mode 100644 benchmarks/conformance/previews/186-shadcn-tooltip-icons.svg create mode 100644 benchmarks/conformance/previews/187-shadcn-tooltip-indicator-line.svg create mode 100644 benchmarks/conformance/previews/188-shadcn-tooltip-indicator-none.svg create mode 100644 benchmarks/conformance/previews/189-shadcn-tooltip-label-custom.svg create mode 100644 benchmarks/conformance/previews/190-shadcn-tooltip-label-formatter.svg create mode 100644 benchmarks/conformance/previews/191-shadcn-tooltip-label-none.svg create mode 100644 benchmarks/conformance/shadcn/README.md create mode 100644 benchmarks/conformance/shadcn/area-interactive-data.json create mode 100644 benchmarks/conformance/shadcn/catalog.json create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-axes.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-default.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-gradient.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-icons.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-interactive.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-legend.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-linear.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-stacked-expand.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-stacked.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-area-step.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-active.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-default.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-horizontal.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-interactive.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-label-custom.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-label.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-mixed.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-multiple.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-negative.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-bar-stacked.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-default.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-dots-colors.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-dots-custom.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-dots.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-interactive.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-label-custom.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-label.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-linear.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-multiple.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-line-step.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-donut-active.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-donut-text.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-donut.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-interactive.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-label-custom.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-label-list.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-label.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-legend.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-separator-none.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-simple.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-pie-stacked.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-default.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-dots.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-grid-circle-fill.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-grid-circle-no-lines.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-grid-circle.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-grid-custom.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-grid-fill.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-grid-none.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-icons.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-label-custom.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-legend.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-lines-only.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-multiple.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radar-radius.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radial-grid.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radial-label.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radial-shape.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radial-simple.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radial-stacked.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-radial-text.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-advanced.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-default.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-formatter.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-icons.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-indicator-line.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-indicator-none.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-label-custom.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-label-formatter.png create mode 100644 benchmarks/conformance/shadcn/reference/chart-tooltip-label-none.png create mode 100644 benchmarks/conformance/shadcn/reference/manifest.json create mode 100644 benchmarks/conformance/shared/shadcn-catalog-data.ts create mode 100644 benchmarks/conformance/shared/shadcn-catalog-recharts.tsx create mode 100644 benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx create mode 100644 benchmarks/conformance/shared/shadcn-chart-card.tsx create mode 100644 benchmarks/conformance/shared/shadcn-motion.test.ts create mode 100644 benchmarks/conformance/shared/shadcn-motion.ts create mode 100644 scripts/generate-shadcn-cases.mjs create mode 100644 scripts/shadcn-catalog.mjs create mode 100644 scripts/shadcn-catalog.test.mjs create mode 100644 scripts/shadcn-reference-screenshots.mjs create mode 100644 scripts/shadcn-visual-parity.mjs diff --git a/API-FRICTION.md b/API-FRICTION.md index f3c75724..65b3bfcc 100644 --- a/API-FRICTION.md +++ b/API-FRICTION.md @@ -309,6 +309,18 @@ Each entry records: | F-270 | Catalog migration left generated release evidence stale | Tooling | resolved | | F-271 | Radial focus collapsed angular cross-sections to centroids | API | resolved | | F-272 | Pointer probes armed between transient inactive frames | Tooling | resolved | +| F-273 | Catalog cases could not declare an application viewport height | Tooling | resolved | +| F-274 | Upstream example clones had no drift boundary | Tooling | resolved | +| F-275 | Preview transparency validation rejected semantic IDs | Tooling | resolved | +| F-276 | Definition coverage assumed a combined renderer module | Tooling | resolved | +| F-277 | Preview errors omitted the failing catalog case | Tooling | resolved | +| F-278 | Renderer checks could validate matching approximations | Tooling | resolved | +| F-279 | Radial grids could not render authored fills | API | resolved | +| F-280 | Chart motion did not reach HTML tooltips | API | resolved | +| F-281 | Bars could not express an authored outline | API | resolved | +| F-282 | Collection actions followed the viewport instead of the card | Application | resolved | +| F-283 | Interactive chart shells rendered inert controls | Application | resolved | +| F-284 | Stagger timing required repeated callback arithmetic | API | resolved | ## Findings @@ -8005,3 +8017,217 @@ Each entry records: - Verification: the exact Chart.js grouped-pointer cell and the complete quick partition 3 pass with trusted activation, exact grouped series values, and zero recovered retries. + +### F-273 — Catalog cases could not declare an application viewport height + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: reproducing shadcn/ui's dashboard as a renderer-comparison case +- Friction: the catalog fixed every case at 480 pixels tall, which clipped a + full application shell and made its Recharts and TanStack renderers impossible + to inspect as one shared viewport. +- Decision: allow validated case metadata to declare an optional height and use + it for catalog cards, mounts, updates, and embeds while retaining 480 pixels + as the default. +- Verification: metadata tests accept the dashboard's 860-pixel height, the + conformance example build passes, and Chromium renders both comparison panels + at 960 by 860 pixels without root overflow. + +### F-274 — Upstream example clones had no drift boundary + +- Status: resolved +- Severity: medium +- Owner: Tooling +- Observed in: spiking a maintained TanStack clone of the shadcn chart catalog +- Friction: an example's source URL recorded where it came from, but did not + identify the exact upstream revision or detect changed, added, and removed + examples. Visual clones could silently diverge from shadcn's 70-file catalog. +- Decision: pin the upstream commit, registry blob, and each example's Git blob + SHA in one manifest. Keep normal validation offline and add an explicit remote + drift command that compares the manifest with shadcn's current Git tree. +- Verification: the inventory test requires all 70 files, exact family counts, + unique local mappings, and reports synthetic source changes, additions, and + removals. The offline command verifies all five spike mappings. + +### F-275 — Preview transparency validation rejected semantic IDs + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: generating the shadcn radial-text catalog preview +- Friction: the preview validator searched the complete SVG string for + `background:`. A valid semantic key such as `radial-background:object` + therefore failed the transparent-background gate. +- Decision: detect an actual CSS `background` declaration after a rule or + declaration boundary, without reserving ordinary chart IDs. +- Verification: the preview regression accepts the semantic background key and + continues to reject an authored CSS background declaration. + +### F-276 — Definition-shape coverage assumed a combined renderer module + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: isolating TanStack and Recharts bundle graphs for the shadcn + catalog spike +- Friction: the definition-shape gate scanned `tanstack.ts`, `view.tsx`, and + `chart.ts`, but ignored a renderer-specific `tanstack-view.tsx`. Splitting the + two implementations for honest bundle measurement made five valid static + definitions disappear from coverage. +- Decision: include renderer-specific TanStack view modules in the definition + scanner while retaining the existing entry and shared-view conventions. +- Verification: the shape gate finds all 122 definitions again: 117 static and + five responsive. + +### F-277 — Preview errors omitted the failing catalog case + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: generating static previews for the 70-case shadcn collection +- Friction: the renderer's clipped-label diagnostic described the labels and + bounds but omitted the case ID and theme. A full-catalog run therefore could + not identify which new example needed a margin correction. +- Decision: wrap presentation-validation failures with the current case ID and + theme while retaining the original error as the cause. +- Verification: the next full preview run reports any failed case directly. + +### F-278 — Renderer conformance could validate two matching approximations + +- Status: resolved +- Severity: high +- Owner: Tooling +- Observed in: expanding the shadcn chart collection from five measured cases + to all 70 upstream examples +- Friction: geometry and paint checks compared TanStack Charts with a local + Recharts implementation built from the same simplified family spec. Both + renderers could agree while their card, data, layout, and variant behavior + visibly differed from the official shadcn output. The later whole-card gate + still allowed a wrong chart type to pass because white card pixels dominated + the score. +- Decision: capture every official shadcn card at a fixed 640-pixel viewport + and compare the complete TanStack card screenshot against that committed + baseline. Require at least 90% pixel similarity and 70% similarity over the + union of non-white pixels in a fixed chart region for every case; retain + failed local and diff images for review. +- Verification: the full gate passes all 70 whole-card and chart-region checks. + Whole-card similarity averages above 97%, and every chart-region score is + above 75%. The earlier wrong radial-stacked implementation would fail at + 20.9%. The pinned inventory check also requires one baseline image per + catalog entry and an ordered 70-case reference manifest. + +### F-279 — Radial grids could not render authored fills + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: reproducing shadcn's filled polygon and circle radar grids +- Friction: `RadialGridOptions` exposed only stroke styling and the renderer + hard-coded every ring to `fill: none`. Shadcn's filled-grid variants therefore + required a separate approximation instead of expressing their source grid. +- Decision: expose `fill` and `fillOpacity` on `RadialGridOptions` and forward + both values to every generated ring. +- Verification: the polar scene test asserts an authored radial-grid fill and + opacity, and the two filled shadcn radar variants pass the chart-foreground + visual gate above 97%. + +### F-280 — Chart motion did not reach HTML tooltips + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: applying the shadcn spring preset to the complete chart catalog +- Friction: chart and mark motion animated renderer geometry, but the HTML + tooltip was owned by a separate extension and appeared, moved, and vanished + immediately. The first tooltip motion pass also restarted every move from the + prior target instead of the spring's live position and velocity, so crossing + points quickly produced visible jumps. Applying one motion policy therefore + produced a visibly split interaction. +- Decision: let the optional `motion()` renderer attach an internal tooltip + motion controller to the host. The tooltip inherits that renderer's fallback + or a static chart-level transition, while `tooltip.motion` can override or + disable it. Keep translation independent from presence motion, and retarget + springs from their current sampled position and velocity. The public tooltip + extension contract stays renderer-neutral. +- Verification: the renderer test asserts that a chart spring produces sampled + tooltip keyframes, keeps the tooltip mounted until its exit completes, and + preserves both visual position and travel direction across a mid-flight + retarget. The tooltip-only bundle retains neither `motion.ts` nor `spring.ts` + and measures 4.37 KiB gzip. + +### F-281 — Bars could not express an authored outline + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: reproducing shadcn's active-bar example +- Friction: `barX` and `barY` exposed fill paint but not base stroke paint. The + selected Firefox bar therefore could not reproduce the upstream dashed + outline without replacing the mark or abusing focus-state styling. +- Decision: expose visual `stroke` and `strokeDasharray` channels plus + `strokeOpacity` and `strokeWidth` on both bar orientations. +- Verification: the bar scene test resolves per-datum outlines for horizontal + and vertical bars, and the active-bar screenshot passes at 98% whole-card and + 97% chart-region similarity. + +### F-282 — Collection actions followed the viewport instead of the card + +- Status: resolved +- Severity: medium +- Owner: Application +- Observed in: browsing the two-column ShadCN collection +- Friction: every collection preview reserved the case's fixed conformance + viewport height, while the rendered ShadCN card was often much shorter. The + Code, Preview, and Original actions followed the reserved viewport rather + than the visible card, leaving roughly 280 pixels of empty space and making + the actions appear to belong to the next row. +- Decision: retain the full height as the chart's rendering input, then size + the collection preview shell to the rendered card. Observe the card so the + shell follows responsive height changes without coupling the gallery to + per-case dimensions. +- Verification: the live Radar collection now measures each preview shell to + its visible card and places the action row 14 pixels below it at both columns; + resizing continues to refit through the card observer. + +### F-283 — Interactive chart shells rendered inert controls + +- Status: resolved +- Severity: high +- Owner: Application +- Observed in: the generated ShadCN area, bar, line, and pie interactive cases +- Friction: the catalog reproduced the controls visually with static `div` + elements, but they had no input semantics or state. The pie month picker, + area range picker, and desktop/mobile metric panels could not change their + charts even though each case was explicitly named interactive. +- Decision: keep interaction state in the shared React example shell and + rebuild the selected chart definition from that state. Use native select and + button semantics, preserve the official labels and active treatment, and + keep the four behaviors centralized rather than adding state code to every + generated case. +- Verification: DOM regressions change the area range, both metric-series + charts, and the active pie month and assert the plotted geometry or paint + changes. Browser checks confirm the 7-day area path and ticks, mobile bar and + line geometry and colors, and May pie slice, swatch, and center value. + +### F-284 — Stagger timing required repeated callback arithmetic + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: evaluating optional entrance staggering for stacked radial and + pie compositions +- Friction: every definition had to repeat phase filters, role filters, index + selection, and delay arithmetic. Combining that callback with an existing + transition or rolling-path definition required another handwritten merge. + An initial `composeMotion()` helper recovered composition but made ordinary + timing objects unnecessarily indirect. +- Decision: allow `ChartMotionTiming.delay` to resolve from motion context and + make `stagger()` return that single partial timing field. It composes through + native object spread, whose order also defines conflict precedence. Export it + from `/motion` for convenience and `/motion/definition` as an isolated + policy-only entry. +- Verification: unit tests cover datum and series staggering, phase and role + filters, offsets, invalid inputs, native spread, and field precedence. The + isolated entry is 0.26 KiB gzip and retains neither the SVG motion renderer + nor spring physics. diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/case.json b/benchmarks/conformance/cases/121-shadcn-dashboard/case.json new file mode 100644 index 00000000..bf98e9de --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/case.json @@ -0,0 +1,30 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "height": 860, + "order": 1220, + "id": "121-shadcn-dashboard", + "title": "shadcn dashboard", + "family": "application", + "intent": "Reproduce shadcn/ui's canonical dashboard shell and interactive stacked-area card while replacing only Recharts with TanStack Charts.", + "support": "native", + "features": [ + "responsive dashboard shell", + "stacked area chart", + "natural curves", + "linear gradient fills", + "grouped tooltip", + "responsive time-range controls", + "CSS-variable theming", + "application-level catalog viewport" + ], + "geometry": [{ "role": "area", "count": 2 }], + "source": { + "title": "shadcn/ui dashboard-01", + "url": "https://ui.shadcn.com/examples/dashboard" + }, + "ai": { + "create": "Reproduce the official shadcn/ui dashboard-01 layout and data. Keep the dashboard shell independent of the chart renderer, then implement its filtered, stacked, gradient area chart with TanStack Charts.", + "maintain": "Preserve the official dashboard data, responsive sidebar, metric cards, time-range behavior, table shell, natural stacked-area geometry, gradients, axis labels, tooltip content, light and dark themes, and a renderer-only compact catalog preview." + } +} diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/dashboard.tsx b/benchmarks/conformance/cases/121-shadcn-dashboard/dashboard.tsx new file mode 100644 index 00000000..f1bfa373 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/dashboard.tsx @@ -0,0 +1,686 @@ +import { + forwardRef, + useEffect, + useImperativeHandle, + useMemo, + useRef, + useState, +} from 'react' +import { + dashboardTableRows, + filterDashboardData, + formatDashboardDate, + type DashboardDatum, + type DashboardRange, +} from './data' +import { shadcnDashboardStyles } from './styles' +import type { ComponentType, ReactNode, SVGProps } from 'react' +import type { ConformanceInput, ConformanceTestDriver } from '../../types' + +export interface DashboardChartProps { + data: readonly DashboardDatum[] + input: ConformanceInput +} + +export function dashboardChartWidth(width: number): number { + if (width <= 480) return Math.max(1, width - 50) + if (width < 768) return Math.max(1, width - 82) + return Math.max(1, width - 354) +} + +export function dashboardTickValues( + data: readonly DashboardDatum[], + width: number, +): readonly string[] { + if (data.length < 2) return data.map((datum) => datum.date) + + const labels = data.map((datum) => formatDashboardDate(datum.date)) + const context = + typeof document === 'undefined' || + typeof CanvasRenderingContext2D === 'undefined' + ? null + : document.createElement('canvas').getContext('2d') + if (context) { + context.font = + '12px Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif' + } + const measure = (label: string) => + context?.measureText(label).width ?? label.length * 6.1 + const start = 5 + const axisLength = Math.max(1, width - 10) + let end = start + axisLength + const visible: string[] = [] + + for (let index = data.length - 1; index >= 0; index -= 1) { + const size = measure(labels[index]!) + const coordinate = start + (axisLength * index) / (data.length - 1) + const tickCoordinate = + index === data.length - 1 + ? Math.min(coordinate, end - size / 2) + : coordinate + if ( + tickCoordinate - size / 2 >= start && + tickCoordinate + size / 2 <= end + ) { + visible.push(data[index]!.date) + end = tickCoordinate - size / 2 - 32 + } + } + + return visible.reverse() +} + +interface DashboardProps { + ChartRenderer: ComponentType + input: ConformanceInput +} + +const ranges: readonly { value: DashboardRange; label: string }[] = [ + { value: '90d', label: 'Last 3 months' }, + { value: '30d', label: 'Last 30 days' }, + { value: '7d', label: 'Last 7 days' }, +] + +const statCards = [ + { + label: 'Total Revenue', + value: '$1,250.00', + change: '+12.5%', + trend: 'Trending up this month', + detail: 'Visitors for the last 6 months', + direction: 'up' as const, + }, + { + label: 'New Customers', + value: '1,234', + change: '-20%', + trend: 'Down 20% this period', + detail: 'Acquisition needs attention', + direction: 'down' as const, + }, + { + label: 'Active Accounts', + value: '45,678', + change: '+12.5%', + trend: 'Strong user retention', + detail: 'Engagement exceed targets', + direction: 'up' as const, + }, + { + label: 'Growth Rate', + value: '4.5%', + change: '+4.5%', + trend: 'Steady performance increase', + detail: 'Meets growth projections', + direction: 'up' as const, + }, +] + +const mainNavigation = [ + ['Dashboard', 'dashboard'], + ['Lifecycle', 'list'], + ['Analytics', 'analytics'], + ['Projects', 'folder'], + ['Team', 'users'], +] as const + +const documentNavigation = [ + ['Data Library', 'database'], + ['Reports', 'report'], + ['Word Assistant', 'word'], +] as const + +const secondaryNavigation = [ + ['Settings', 'settings'], + ['Get Help', 'help'], + ['Search', 'search'], +] as const + +export const ShadcnDashboard = forwardRef< + ConformanceTestDriver, + DashboardProps +>(function ShadcnDashboard({ ChartRenderer, input }, ref) { + const rootRef = useRef(null) + const [range, setRange] = useState( + input.width < 768 ? '7d' : '90d', + ) + const chartData = useMemo(() => filterDashboardData(range), [range]) + + useEffect(() => { + if (input.width < 768) setRange('7d') + }, [input.width]) + + useImperativeHandle( + ref, + () => ({ + resolveTarget(target) { + if (target.view && target.view !== 'main') return null + const value = target.anchor.startsWith('range:') + ? target.anchor.slice('range:'.length) + : null + const element = rootRef.current?.querySelector( + `[data-range-value="${value}"]`, + ) + return element ? center(element) : null + }, + readState() { + return { + range, + chartRows: chartData.length, + tableRows: dashboardTableRows.length, + } + }, + viewBounds(view) { + if (view && view !== 'main') return null + const bounds = rootRef.current?.getBoundingClientRect() + return bounds + ? { + x: bounds.left, + y: bounds.top, + width: bounds.width, + height: bounds.height, + } + : null + }, + }), + [chartData.length, range], + ) + + return ( +
+ +
+ +
+
+ +
+
+ {statCards.map((card) => ( + + ))} +
+
+
+

Total Visitors

+

+ Total for the last 3 months +

+
+ {ranges.map((option) => ( + + ))} +
+ +
+
+ +
+
+ +
+
+
+
+
+ ) +}) + +function DashboardSidebar() { + return ( + + ) +} + +function DashboardHeader() { + return ( +
+ +
+ ) +} + +function NavItem({ + label, + icon, + active = false, + more = false, +}: { + label: string + icon: IconName + active?: boolean + more?: boolean +}) { + return ( + + ) +} + +function StatCard({ + label, + value, + change, + trend, + detail, + direction, +}: (typeof statCards)[number]) { + return ( +
+
+ {label} + + + {change} + +

{value}

+
+
+ + {trend} + + + {detail} +
+
+ ) +} + +function DashboardTable() { + return ( +
+
+
+ + + + +
+
+ + +
+
+
+
+ + + + + + + + + + + + + + {dashboardTableRows.map((row) => ( + + + + + + + + + + + + ))} + +
+ + + HeaderSection TypeStatusTargetLimitReviewer +
+ + + + + + {row.header} + + + {row.type} + + + + {row.status} + + + + + + {row.reviewer} + +
+
+
+
+ 0 of 68 row(s) selected. + + Rows per page + + Page 1 of 7 + + + +
+
+ ) +} + +type IconName = + | 'analytics' + | 'brand' + | 'chevron-down' + | 'chevron-left' + | 'chevron-right' + | 'chevrons' + | 'columns' + | 'dashboard' + | 'database' + | 'folder' + | 'help' + | 'list' + | 'menu' + | 'more' + | 'more-vertical' + | 'plus' + | 'report' + | 'search' + | 'settings' + | 'trend-down' + | 'trend-up' + | 'users' + | 'word' + +function Icon({ + name, + ...props +}: SVGProps & { name: IconName }) { + return ( + + ) +} + +const iconPaths: Record = { + brand: ( + <> + + + + ), + menu: ( + <> + + + + ), + dashboard: ( + <> + + + + + + ), + list: ( + <> + + + + ), + analytics: ( + <> + + + ), + folder: , + users: ( + <> + + + + ), + database: ( + <> + + + + ), + report: ( + <> + + + ), + word: ( + <> + + + + ), + settings: ( + <> + + + + ), + help: ( + <> + + + + ), + search: ( + <> + + + + ), + more: ( + <> + + + + + ), + 'more-vertical': ( + <> + + + + + ), + chevrons: , + 'trend-up': , + 'trend-down': , + columns: ( + <> + + + + ), + plus: , + 'chevron-down': , + 'chevron-left': , + 'chevron-right': , +} + +function center(element: HTMLElement | SVGElement) { + const bounds = element.getBoundingClientRect() + return { + x: bounds.left + bounds.width / 2, + y: bounds.top + bounds.height / 2, + focusElement: element, + } +} diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/data.test.ts b/benchmarks/conformance/cases/121-shadcn-dashboard/data.test.ts new file mode 100644 index 00000000..87ac4c29 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/data.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from 'vitest' +import { + dashboardAreaRows, + filterDashboardData, + formatDashboardDate, +} from './data' + +describe('shadcn dashboard data', () => { + it('matches the inclusive ranges used by dashboard-01', () => { + expect(filterDashboardData('90d')).toHaveLength(91) + expect(filterDashboardData('30d')).toHaveLength(31) + expect(filterDashboardData('7d')).toHaveLength(8) + expect(filterDashboardData('7d')[0]?.date).toBe('2024-06-23') + }) + + it('folds each date into the official mobile-first stack order', () => { + const source = filterDashboardData('7d') + const rows = dashboardAreaRows(source) + + expect(rows).toHaveLength(source.length * 2) + expect(rows.slice(0, 2).map((row) => row.series)).toEqual([ + 'mobile', + 'desktop', + ]) + expect(rows[0]?.visitors).toBe(source[0]?.mobile) + expect(rows[1]?.visitors).toBe(source[0]?.desktop) + }) + + it('formats dates independently of the local timezone', () => { + expect(formatDashboardDate(new Date('2024-06-30T00:00:00Z'))).toBe('Jun 30') + }) +}) diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/data.ts b/benchmarks/conformance/cases/121-shadcn-dashboard/data.ts new file mode 100644 index 00000000..2ff5ae27 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/data.ts @@ -0,0 +1,256 @@ +export type DashboardRange = '90d' | '30d' | '7d' +export type DashboardSeries = 'mobile' | 'desktop' + +export interface DashboardDatum { + date: string + desktop: number + mobile: number +} + +export interface DashboardAreaDatum { + date: Date + dateKey: string + series: DashboardSeries + visitors: number +} + +export interface DashboardTableRow { + id: number + header: string + type: string + status: 'Done' | 'In Process' + target: string + limit: string + reviewer: string +} + +export const dashboardChartData: readonly DashboardDatum[] = [ + { date: '2024-04-01', desktop: 222, mobile: 150 }, + { date: '2024-04-02', desktop: 97, mobile: 180 }, + { date: '2024-04-03', desktop: 167, mobile: 120 }, + { date: '2024-04-04', desktop: 242, mobile: 260 }, + { date: '2024-04-05', desktop: 373, mobile: 290 }, + { date: '2024-04-06', desktop: 301, mobile: 340 }, + { date: '2024-04-07', desktop: 245, mobile: 180 }, + { date: '2024-04-08', desktop: 409, mobile: 320 }, + { date: '2024-04-09', desktop: 59, mobile: 110 }, + { date: '2024-04-10', desktop: 261, mobile: 190 }, + { date: '2024-04-11', desktop: 327, mobile: 350 }, + { date: '2024-04-12', desktop: 292, mobile: 210 }, + { date: '2024-04-13', desktop: 342, mobile: 380 }, + { date: '2024-04-14', desktop: 137, mobile: 220 }, + { date: '2024-04-15', desktop: 120, mobile: 170 }, + { date: '2024-04-16', desktop: 138, mobile: 190 }, + { date: '2024-04-17', desktop: 446, mobile: 360 }, + { date: '2024-04-18', desktop: 364, mobile: 410 }, + { date: '2024-04-19', desktop: 243, mobile: 180 }, + { date: '2024-04-20', desktop: 89, mobile: 150 }, + { date: '2024-04-21', desktop: 137, mobile: 200 }, + { date: '2024-04-22', desktop: 224, mobile: 170 }, + { date: '2024-04-23', desktop: 138, mobile: 230 }, + { date: '2024-04-24', desktop: 387, mobile: 290 }, + { date: '2024-04-25', desktop: 215, mobile: 250 }, + { date: '2024-04-26', desktop: 75, mobile: 130 }, + { date: '2024-04-27', desktop: 383, mobile: 420 }, + { date: '2024-04-28', desktop: 122, mobile: 180 }, + { date: '2024-04-29', desktop: 315, mobile: 240 }, + { date: '2024-04-30', desktop: 454, mobile: 380 }, + { date: '2024-05-01', desktop: 165, mobile: 220 }, + { date: '2024-05-02', desktop: 293, mobile: 310 }, + { date: '2024-05-03', desktop: 247, mobile: 190 }, + { date: '2024-05-04', desktop: 385, mobile: 420 }, + { date: '2024-05-05', desktop: 481, mobile: 390 }, + { date: '2024-05-06', desktop: 498, mobile: 520 }, + { date: '2024-05-07', desktop: 388, mobile: 300 }, + { date: '2024-05-08', desktop: 149, mobile: 210 }, + { date: '2024-05-09', desktop: 227, mobile: 180 }, + { date: '2024-05-10', desktop: 293, mobile: 330 }, + { date: '2024-05-11', desktop: 335, mobile: 270 }, + { date: '2024-05-12', desktop: 197, mobile: 240 }, + { date: '2024-05-13', desktop: 197, mobile: 160 }, + { date: '2024-05-14', desktop: 448, mobile: 490 }, + { date: '2024-05-15', desktop: 473, mobile: 380 }, + { date: '2024-05-16', desktop: 338, mobile: 400 }, + { date: '2024-05-17', desktop: 499, mobile: 420 }, + { date: '2024-05-18', desktop: 315, mobile: 350 }, + { date: '2024-05-19', desktop: 235, mobile: 180 }, + { date: '2024-05-20', desktop: 177, mobile: 230 }, + { date: '2024-05-21', desktop: 82, mobile: 140 }, + { date: '2024-05-22', desktop: 81, mobile: 120 }, + { date: '2024-05-23', desktop: 252, mobile: 290 }, + { date: '2024-05-24', desktop: 294, mobile: 220 }, + { date: '2024-05-25', desktop: 201, mobile: 250 }, + { date: '2024-05-26', desktop: 213, mobile: 170 }, + { date: '2024-05-27', desktop: 420, mobile: 460 }, + { date: '2024-05-28', desktop: 233, mobile: 190 }, + { date: '2024-05-29', desktop: 78, mobile: 130 }, + { date: '2024-05-30', desktop: 340, mobile: 280 }, + { date: '2024-05-31', desktop: 178, mobile: 230 }, + { date: '2024-06-01', desktop: 178, mobile: 200 }, + { date: '2024-06-02', desktop: 470, mobile: 410 }, + { date: '2024-06-03', desktop: 103, mobile: 160 }, + { date: '2024-06-04', desktop: 439, mobile: 380 }, + { date: '2024-06-05', desktop: 88, mobile: 140 }, + { date: '2024-06-06', desktop: 294, mobile: 250 }, + { date: '2024-06-07', desktop: 323, mobile: 370 }, + { date: '2024-06-08', desktop: 385, mobile: 320 }, + { date: '2024-06-09', desktop: 438, mobile: 480 }, + { date: '2024-06-10', desktop: 155, mobile: 200 }, + { date: '2024-06-11', desktop: 92, mobile: 150 }, + { date: '2024-06-12', desktop: 492, mobile: 420 }, + { date: '2024-06-13', desktop: 81, mobile: 130 }, + { date: '2024-06-14', desktop: 426, mobile: 380 }, + { date: '2024-06-15', desktop: 307, mobile: 350 }, + { date: '2024-06-16', desktop: 371, mobile: 310 }, + { date: '2024-06-17', desktop: 475, mobile: 520 }, + { date: '2024-06-18', desktop: 107, mobile: 170 }, + { date: '2024-06-19', desktop: 341, mobile: 290 }, + { date: '2024-06-20', desktop: 408, mobile: 450 }, + { date: '2024-06-21', desktop: 169, mobile: 210 }, + { date: '2024-06-22', desktop: 317, mobile: 270 }, + { date: '2024-06-23', desktop: 480, mobile: 530 }, + { date: '2024-06-24', desktop: 132, mobile: 180 }, + { date: '2024-06-25', desktop: 141, mobile: 190 }, + { date: '2024-06-26', desktop: 434, mobile: 380 }, + { date: '2024-06-27', desktop: 448, mobile: 490 }, + { date: '2024-06-28', desktop: 149, mobile: 200 }, + { date: '2024-06-29', desktop: 103, mobile: 160 }, + { date: '2024-06-30', desktop: 446, mobile: 400 }, +] + +export const dashboardTableRows: readonly DashboardTableRow[] = [ + { + id: 1, + header: 'Cover page', + type: 'Cover page', + status: 'In Process', + target: '18', + limit: '5', + reviewer: 'Eddie Lake', + }, + { + id: 2, + header: 'Table of contents', + type: 'Table of contents', + status: 'Done', + target: '29', + limit: '24', + reviewer: 'Eddie Lake', + }, + { + id: 3, + header: 'Executive summary', + type: 'Narrative', + status: 'Done', + target: '10', + limit: '13', + reviewer: 'Eddie Lake', + }, + { + id: 4, + header: 'Technical approach', + type: 'Narrative', + status: 'Done', + target: '27', + limit: '23', + reviewer: 'Jamik Tashpulatov', + }, + { + id: 5, + header: 'Design', + type: 'Narrative', + status: 'In Process', + target: '2', + limit: '16', + reviewer: 'Jamik Tashpulatov', + }, + { + id: 6, + header: 'Capabilities', + type: 'Narrative', + status: 'In Process', + target: '20', + limit: '8', + reviewer: 'Jamik Tashpulatov', + }, + { + id: 7, + header: 'Integration with existing systems', + type: 'Narrative', + status: 'In Process', + target: '19', + limit: '21', + reviewer: 'Jamik Tashpulatov', + }, + { + id: 8, + header: 'Innovation and Advantages', + type: 'Narrative', + status: 'Done', + target: '25', + limit: '26', + reviewer: 'Assign reviewer', + }, + { + id: 9, + header: "Overview of EMR's Innovative Solutions", + type: 'Technical content', + status: 'Done', + target: '7', + limit: '23', + reviewer: 'Assign reviewer', + }, + { + id: 10, + header: 'Advanced Algorithms and Machine Learning', + type: 'Narrative', + status: 'Done', + target: '30', + limit: '28', + reviewer: 'Assign reviewer', + }, +] + +const referenceDate = Date.parse('2024-06-30T00:00:00Z') +const day = 24 * 60 * 60 * 1_000 + +export function filterDashboardData( + range: DashboardRange, +): readonly DashboardDatum[] { + const days = range === '7d' ? 7 : range === '30d' ? 30 : 90 + const start = referenceDate - days * day + return dashboardChartData.filter( + (datum) => Date.parse(`${datum.date}T00:00:00Z`) >= start, + ) +} + +export function dashboardAreaRows( + data: readonly DashboardDatum[], +): readonly DashboardAreaDatum[] { + return data.flatMap((datum) => { + const date = new Date(`${datum.date}T00:00:00Z`) + return [ + { + date, + dateKey: datum.date, + series: 'mobile' as const, + visitors: datum.mobile, + }, + { + date, + dateKey: datum.date, + series: 'desktop' as const, + visitors: datum.desktop, + }, + ] + }) +} + +export function formatDashboardDate(value: string | number | Date): string { + const date = value instanceof Date ? value : new Date(value) + return date.toLocaleDateString('en-US', { + month: 'short', + day: 'numeric', + timeZone: 'UTC', + }) +} diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/recharts-view.tsx b/benchmarks/conformance/cases/121-shadcn-dashboard/recharts-view.tsx new file mode 100644 index 00000000..97527403 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/recharts-view.tsx @@ -0,0 +1,129 @@ +import { forwardRef } from 'react' +import { + Area, + AreaChart, + CartesianGrid, + ResponsiveContainer, + Tooltip, + XAxis, +} from 'recharts' +import { + dashboardChartWidth, + dashboardTickValues, + ShadcnDashboard, + type DashboardChartProps, +} from './dashboard' +import { formatDashboardDate } from './data' +import { reactMount } from '../../shared/react-mount' +import type { ConformanceTestDriver } from '../../types' +import type { ReactConformanceProps } from '../../shared/react-mount' + +function RechartsDashboardChart({ data, input }: DashboardChartProps) { + const width = dashboardChartWidth(input.width) + const tickValues = dashboardTickValues(data, width) + + return ( + + + + + + + + + + + + + + + + typeof value === 'string' || typeof value === 'number' + ? formatDashboardDate(value) + : '' + } + formatter={(value, name) => [ + Number(value).toLocaleString('en-US'), + name === 'desktop' ? 'Desktop' : 'Mobile', + ]} + contentStyle={{ + minWidth: 138, + padding: '8px 10px', + border: '1px solid var(--sd-border)', + borderRadius: 8, + color: 'var(--sd-card-foreground)', + background: 'var(--sd-card)', + boxShadow: '0 2px 6px rgb(0 0 0 / 8%)', + fontSize: 12, + lineHeight: 1.45, + }} + labelStyle={{ color: 'var(--sd-card-foreground)', fontWeight: 500 }} + itemStyle={{ color: 'var(--sd-card-foreground)', padding: 0 }} + /> + + + + + ) +} + +const RechartsDashboardView = forwardRef< + ConformanceTestDriver, + ReactConformanceProps +>(function RechartsDashboardView({ input }, ref) { + return ( + + ) +}) + +export const mount = reactMount(RechartsDashboardView) diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts b/benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts new file mode 100644 index 00000000..cdcca9a7 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts @@ -0,0 +1 @@ +export { mount } from './recharts-view' diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/styles.ts b/benchmarks/conformance/cases/121-shadcn-dashboard/styles.ts new file mode 100644 index 00000000..8f396b08 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/styles.ts @@ -0,0 +1,807 @@ +export const shadcnDashboardStyles = ` + .shadcn-dashboard { + --sd-background: oklch(1 0 0); + --sd-foreground: oklch(0.145 0 0); + --sd-card: oklch(1 0 0); + --sd-card-foreground: oklch(0.145 0 0); + --sd-primary: oklch(0.205 0 0); + --sd-primary-foreground: oklch(0.985 0 0); + --sd-secondary: oklch(0.97 0 0); + --sd-muted: oklch(0.97 0 0); + --sd-muted-foreground: oklch(0.556 0 0); + --sd-accent: oklch(0.97 0 0); + --sd-border: oklch(0.922 0 0); + --sd-input: oklch(0.922 0 0); + --sd-sidebar: oklch(0.985 0 0); + --sd-sidebar-accent: oklch(0.97 0 0); + --sd-radius: 0.625rem; + width: 100%; + height: 100%; + overflow: hidden; + color: var(--sd-foreground); + background: var(--sd-background); + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + font-size: 14px; + line-height: 1.45; + text-rendering: geometricPrecision; + } + + :root[data-theme='dark'] .shadcn-dashboard { + --sd-background: oklch(0.145 0 0); + --sd-foreground: oklch(0.985 0 0); + --sd-card: oklch(0.205 0 0); + --sd-card-foreground: oklch(0.985 0 0); + --sd-primary: oklch(0.922 0 0); + --sd-primary-foreground: oklch(0.205 0 0); + --sd-secondary: oklch(0.269 0 0); + --sd-muted: oklch(0.269 0 0); + --sd-muted-foreground: oklch(0.708 0 0); + --sd-accent: oklch(0.269 0 0); + --sd-border: oklch(1 0 0 / 10%); + --sd-input: oklch(1 0 0 / 15%); + --sd-sidebar: oklch(0.205 0 0); + --sd-sidebar-accent: oklch(0.269 0 0); + } + + .shadcn-dashboard, + .shadcn-dashboard * { + box-sizing: border-box; + } + + .shadcn-dashboard :where(button, select, input) { + min-height: 0; + color: inherit; + font: inherit; + } + + .sd-viewport { + display: flex; + width: 100%; + height: 100%; + overflow: auto; + background: var(--sd-sidebar); + } + + .sd-sidebar { + position: sticky; + top: 0; + display: flex; + flex: 0 0 256px; + height: 100%; + flex-direction: column; + border-right: 1px solid var(--sd-border); + background: var(--sd-sidebar); + } + + .sd-sidebar-inner { + display: flex; + min-height: 0; + flex: 1; + flex-direction: column; + overflow: hidden; + border: 0; + border-radius: 0; + background: var(--sd-sidebar); + } + + .sd-brand, + .sd-user { + display: flex; + min-height: 48px; + align-items: center; + gap: 10px; + padding: 8px; + } + + .sd-brand { + min-height: 49px; + border-bottom: 1px solid var(--sd-border); + } + + .sd-brand-mark { + width: 20px; + height: 20px; + color: var(--sd-foreground); + } + + .sd-brand-name { + overflow: hidden; + font-size: 16px; + font-weight: 600; + letter-spacing: -0.015em; + text-overflow: ellipsis; + white-space: nowrap; + } + + .sd-nav { + display: flex; + min-height: 0; + flex: 1; + flex-direction: column; + gap: 18px; + overflow: auto; + padding: 4px 8px 12px; + } + + .sd-nav-group { + display: grid; + gap: 2px; + } + + .sd-nav-label { + padding: 6px 8px 3px; + color: var(--sd-muted-foreground); + font-size: 12px; + font-weight: 500; + } + + .sd-nav-bottom { + margin-top: auto; + } + + .sd-nav-item { + display: flex; + width: 100%; + height: 32px; + align-items: center; + gap: 9px; + padding: 0 8px; + border: 0; + border-radius: 6px; + color: var(--sd-foreground); + background: transparent; + cursor: default; + text-align: left; + } + + .sd-nav-item:hover, + .sd-nav-item[data-active='true'] { + background: var(--sd-sidebar-accent); + } + + .sd-nav-item svg, + .sd-user svg, + .sd-header svg, + .sd-toolbar svg, + .sd-badge svg { + width: 16px; + height: 16px; + flex: none; + } + + .sd-nav-more { + margin-left: auto; + color: var(--sd-muted-foreground); + } + + .sd-user { + border-top: 1px solid transparent; + } + + .sd-avatar { + display: grid; + width: 32px; + height: 32px; + flex: none; + place-items: center; + border-radius: 8px; + color: var(--sd-primary-foreground); + background: var(--sd-primary); + font-size: 11px; + font-weight: 650; + } + + .sd-user-copy { + min-width: 0; + } + + .sd-user-copy strong, + .sd-user-copy span { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .sd-user-copy strong { + font-size: 13px; + font-weight: 600; + } + + .sd-user-copy span { + color: var(--sd-muted-foreground); + font-size: 11px; + } + + .sd-main { + min-width: 0; + flex: 1; + margin: 0; + overflow: hidden; + border: 0; + border-radius: 0; + background: var(--sd-background); + } + + .sd-main-scroll { + width: 100%; + height: 100%; + overflow: auto; + } + + .sd-header { + position: sticky; + top: 0; + z-index: 4; + display: flex; + height: 49px; + align-items: center; + gap: 10px; + padding: 0 24px; + border-bottom: 1px solid var(--sd-border); + background: color-mix(in srgb, var(--sd-background) 94%, transparent); + backdrop-filter: blur(8px); + } + + .sd-icon-button { + display: inline-grid; + width: 32px; + height: 32px; + padding: 0; + place-items: center; + border: 0; + border-radius: 6px; + background: transparent; + } + + .sd-separator { + display: none; + width: 1px; + height: 16px; + margin: 0 6px; + background: var(--sd-border); + } + + .sd-menu-button { + display: none; + } + + .sd-header h1 { + margin: 0; + font-size: 16px; + font-weight: 500; + letter-spacing: -0.01em; + } + + .sd-quick-create { + display: inline-flex; + height: 32px; + align-items: center; + gap: 6px; + margin-left: auto; + padding: 0 11px; + border: 0; + border-radius: 6px; + color: var(--sd-primary-foreground); + background: var(--sd-primary); + font-size: 13px; + font-weight: 600; + } + + .shadcn-dashboard .sd-quick-create { + color: var(--sd-primary-foreground); + } + + .sd-content { + container-type: inline-size; + display: flex; + flex-direction: column; + gap: 24px; + padding: 24px; + } + + .sd-cards { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 16px; + } + + .sd-card { + position: relative; + overflow: hidden; + border: 1px solid var(--sd-border); + border-radius: var(--sd-radius); + color: var(--sd-card-foreground); + background: + linear-gradient(to top, color-mix(in srgb, var(--sd-primary) 5%, transparent), transparent 45%), + var(--sd-card); + box-shadow: 0 1px 2px rgb(0 0 0 / 3%); + } + + :root[data-theme='dark'] .sd-card { + background: var(--sd-card); + } + + .sd-stat-card { + min-height: 200px; + padding: 23px 23px 20px; + } + + .sd-stat-head { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 3px 12px; + } + + .sd-stat-label, + .sd-chart-description { + color: var(--sd-muted-foreground); + font-size: 14px; + } + + .sd-stat-value { + grid-column: 1; + margin: 0; + font-size: clamp(24px, 2.35cqw, 30px); + font-weight: 600; + letter-spacing: -0.035em; + line-height: 1.2; + font-variant-numeric: tabular-nums; + } + + .sd-badge { + display: inline-flex; + height: 23px; + align-items: center; + gap: 4px; + padding: 0 7px; + border: 1px solid var(--sd-border); + border-radius: 7px; + color: var(--sd-foreground); + background: transparent; + font-size: 12px; + font-weight: 500; + line-height: 1; + white-space: nowrap; + } + + .sd-stat-foot { + display: grid; + gap: 3px; + margin-top: 30px; + font-size: 14px; + } + + .sd-stat-trend { + display: flex; + min-width: 0; + align-items: center; + gap: 7px; + overflow: hidden; + font-weight: 500; + text-overflow: ellipsis; + white-space: nowrap; + } + + .sd-stat-trend svg { + width: 16px; + height: 16px; + flex: none; + } + + .sd-stat-detail { + overflow: hidden; + color: var(--sd-muted-foreground); + text-overflow: ellipsis; + white-space: nowrap; + } + + .sd-chart-card { + height: 392px; + background: var(--sd-card); + } + + .sd-chart-header { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 4px 16px; + align-items: start; + padding: 24px 24px 0; + } + + .sd-chart-title { + margin: 0; + font-size: 16px; + font-weight: 600; + letter-spacing: -0.015em; + } + + .sd-chart-description { + grid-column: 1; + } + + .sd-range-buttons { + grid-column: 2; + grid-row: 1 / span 2; + display: inline-flex; + height: 32px; + overflow: hidden; + border: 1px solid var(--sd-border); + border-radius: 8px; + } + + .sd-range-button { + height: 30px; + padding: 0 16px; + border: 0; + border-left: 1px solid var(--sd-border); + background: transparent; + cursor: pointer; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + } + + .sd-range-button:first-child { + border-left: 0; + } + + .sd-range-button:hover, + .sd-range-button[data-active='true'] { + background: var(--sd-accent); + } + + .sd-range-select { + display: none; + grid-column: 2; + grid-row: 1 / span 2; + width: 160px; + height: 32px; + padding: 0 30px 0 10px; + border: 1px solid var(--sd-border); + border-radius: 8px; + background: var(--sd-background); + font-size: 13px; + } + + .sd-chart-stage { + position: relative; + width: 100%; + height: 274px; + margin-top: 24px; + padding: 8px 24px 0; + } + + .sd-chart-stage > * { + width: 100%; + height: 100%; + } + + .sd-chart-stage .ts-chart-host { + color: var(--sd-muted-foreground); + font-size: 12px; + } + + .sd-chart-stage .ts-chart__grid line { + stroke: var(--sd-border); + } + + .sd-chart-stage .ts-chart__axis text { + fill: var(--sd-muted-foreground); + } + + .ts-chart-tooltip.sd-chart-tooltip { + min-width: 138px !important; + padding: 8px 10px !important; + border: 1px solid var(--sd-border) !important; + border-radius: 8px !important; + color: var(--sd-card-foreground) !important; + background: var(--sd-card) !important; + box-shadow: 0 2px 6px rgb(0 0 0 / 8%) !important; + font: 12px/1.45 Inter, ui-sans-serif, system-ui, sans-serif !important; + } + + .ts-chart-tooltip.sd-chart-tooltip .ts-chart-tooltip__title { + margin-bottom: 5px !important; + font-weight: 500 !important; + } + + .ts-chart-tooltip.sd-chart-tooltip .ts-chart-tooltip__row { + grid-template-columns: 8px minmax(0, 1fr) auto !important; + column-gap: 7px !important; + } + + .ts-chart-tooltip.sd-chart-tooltip .ts-chart-tooltip__swatch { + width: 8px !important; + height: 8px !important; + border-radius: 999px !important; + } + + .sd-recharts-tooltip { + min-width: 138px; + padding: 8px 10px; + border: 1px solid var(--sd-border); + border-radius: 8px; + color: var(--sd-card-foreground); + background: var(--sd-card); + box-shadow: 0 2px 6px rgb(0 0 0 / 8%); + font-size: 12px; + line-height: 1.45; + } + + .sd-recharts-tooltip-date { + margin-bottom: 5px; + font-weight: 500; + } + + .sd-recharts-tooltip-row { + display: grid; + grid-template-columns: 8px minmax(0, 1fr) auto; + align-items: center; + gap: 7px; + } + + .sd-recharts-tooltip-dot { + width: 8px; + height: 8px; + border-radius: 999px; + background: var(--sd-primary); + } + + .sd-table-section { + display: grid; + gap: 24px; + } + + .sd-toolbar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + } + + .sd-tabs { + display: inline-flex; + height: 36px; + align-items: center; + padding: 3px; + border-radius: 9px; + background: var(--sd-muted); + } + + .sd-tab { + height: 30px; + padding: 0 11px; + border: 0; + border-radius: 7px; + background: transparent; + font-size: 13px; + } + + .sd-tab[data-active='true'] { + border: 1px solid var(--sd-border); + background: var(--sd-background); + box-shadow: 0 1px 2px rgb(0 0 0 / 5%); + } + + .sd-toolbar-actions { + display: flex; + gap: 8px; + } + + .sd-button { + display: inline-flex; + height: 32px; + align-items: center; + justify-content: center; + gap: 7px; + padding: 0 11px; + border: 1px solid var(--sd-border); + border-radius: 8px; + background: var(--sd-background); + font-size: 13px; + font-weight: 500; + white-space: nowrap; + } + + .sd-table-wrap { + overflow: hidden; + border: 1px solid var(--sd-border); + border-radius: 9px; + } + + .sd-table-scroll { + overflow-x: auto; + } + + .sd-table { + width: 100%; + min-width: 860px; + border-collapse: collapse; + font-size: 13px; + } + + .sd-table th, + .sd-table td { + height: 48px; + padding: 0 12px; + border-bottom: 1px solid var(--sd-border); + text-align: left; + white-space: nowrap; + } + + .sd-table th { + height: 40px; + color: var(--sd-muted-foreground); + background: var(--sd-muted); + font-weight: 500; + } + + .sd-table tbody tr:last-child td { + border-bottom: 0; + } + + .sd-grip { + color: var(--sd-muted-foreground); + letter-spacing: -3px; + } + + .sd-checkbox { + width: 16px; + height: 16px; + accent-color: var(--sd-primary); + } + + .sd-table-link { + color: var(--sd-foreground); + font-weight: 500; + text-decoration: underline; + text-decoration-color: color-mix(in srgb, var(--sd-muted-foreground) 45%, transparent); + text-underline-offset: 4px; + } + + .sd-status { + display: inline-flex; + align-items: center; + gap: 5px; + } + + .sd-status-dot { + width: 8px; + height: 8px; + border: 1.5px solid currentColor; + border-radius: 999px; + } + + .sd-status[data-done='true'] .sd-status-dot { + border-color: #22c55e; + background: #22c55e; + box-shadow: inset 0 0 0 1.5px var(--sd-card); + } + + .sd-number-input { + width: 64px; + height: 32px; + padding: 0 8px; + border: 1px solid transparent; + border-radius: 6px; + background: transparent; + text-align: right; + } + + .sd-number-input:hover { + background: color-mix(in srgb, var(--sd-input) 30%, transparent); + } + + .sd-table-footer { + display: flex; + min-height: 36px; + align-items: center; + gap: 24px; + color: var(--sd-muted-foreground); + font-size: 13px; + } + + .sd-pagination { + display: flex; + margin-left: auto; + align-items: center; + gap: 8px; + color: var(--sd-foreground); + font-weight: 500; + } + + @container (min-width: 1000px) { + .sd-cards { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + } + + @container (max-width: 540px) { + .sd-cards { + grid-template-columns: 1fr; + } + + .sd-stat-card { + min-height: 132px; + } + + .sd-tabs { + display: none; + } + + .sd-toolbar::before { + content: 'Outline'; + display: inline-flex; + height: 32px; + align-items: center; + padding: 0 10px; + border: 1px solid var(--sd-border); + border-radius: 8px; + font-size: 13px; + } + } + + @container (max-width: 767px) { + .sd-range-buttons { + display: none; + } + + .sd-range-select { + display: block; + } + } + + @media (max-width: 767px) { + .sd-sidebar { + display: none; + } + + .sd-main { + margin: 0; + border: 0; + border-radius: 0; + } + + .sd-header, + .sd-content { + padding-inline: 16px; + } + + .sd-menu-button { + display: inline-grid; + } + + .sd-separator { + display: block; + } + + .sd-quick-create { + display: none; + } + } + + @media (max-width: 480px) { + .sd-chart-card { + height: 414px; + } + + .sd-chart-header { + grid-template-columns: 1fr; + } + + .sd-range-select { + grid-column: 1; + grid-row: 3; + margin-top: 8px; + } + + .sd-chart-stage { + padding-inline: 8px; + } + + .sd-button span { + display: none; + } + } +` diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx new file mode 100644 index 00000000..72ca5b6a --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx @@ -0,0 +1,198 @@ +import { forwardRef, useMemo } from 'react' +import { areaY, d3Curve, defineChart, stack } from '@tanstack/charts' +import { tooltip } from '@tanstack/charts/tooltip' +import { Chart } from '@tanstack/charts/react/core' +import { scaleLinear, scalePoint } from 'd3-scale' +import { curveNatural } from 'd3-shape' +import { + dashboardChartWidth, + dashboardTickValues, + ShadcnDashboard, + type DashboardChartProps, +} from './dashboard' +import { + dashboardAreaRows, + filterDashboardData, + formatDashboardDate, + type DashboardAreaDatum, + type DashboardDatum, + type DashboardSeries, +} from './data' +import { reactMount } from '../../shared/react-mount' +import { tanstackCase } from '../../shared/mount' +import { + createShadcnSpringRenderer, + shadcnSpringMotion, +} from '../../shared/shadcn-motion' +import type { ChartTooltipContent, ChartTooltipOptions } from '@tanstack/charts' +import type { ConformanceTestDriver } from '../../types' +import type { ReactConformanceProps } from '../../shared/react-mount' + +const seriesOrder: readonly DashboardSeries[] = ['mobile', 'desktop'] +const primaryColor = 'var(--sd-primary, var(--ts-chart-1, #171717))' +const mutedColor = 'var(--sd-muted-foreground, #737373)' +const borderColor = 'var(--sd-border, #e5e5e5)' + +export function shadcnDashboardChartDefinition( + data: readonly DashboardDatum[], + width = 288, +) { + const rows = dashboardAreaRows(data) + const tickValues = dashboardTickValues(data, width) + + return defineChart({ + motion: shadcnSpringMotion, + marks: [ + areaY(rows, { + id: 'visitor-areas', + x: 'dateKey', + y: 'visitors', + z: 'series', + color: 'series', + key: (row) => `${row.dateKey}:${row.series}`, + layout: stack({ order: seriesOrder }), + curve: d3Curve(curveNatural), + fill: (row) => `url(#fill-${row.series})`, + fillOpacity: 0.6, + stroke: primaryColor, + strokeWidth: 1, + }), + ], + x: { + scale: scalePoint, + axis: { + line: false, + ticks: { + values: tickValues, + size: 0, + padding: 8, + format: formatDashboardDate, + }, + tickLabels: { + fontSize: 12, + opacity: 0.72, + dy: 5, + anchor: ({ value }) => + value === data.at(-1)?.date ? 'end' : 'middle', + dx: ({ value }) => (value === data.at(-1)?.date ? 5 : 0), + thin: { minGap: 32, priority: 'ends' }, + }, + }, + }, + y: { + scale: scaleLinear().domain([0, 1_200]), + grid: true, + axis: { + line: false, + ticks: { values: [0, 300, 600, 900, 1_200], size: 0 }, + tickLabels: false, + }, + }, + color: { + domain: seriesOrder, + range: [primaryColor, primaryColor], + }, + gradients: [ + { + id: 'fill-mobile', + x1: 0, + y1: 1, + x2: 0, + y2: 0, + stops: [ + { offset: 0.05, color: primaryColor, opacity: 0.1 }, + { offset: 0.95, color: primaryColor, opacity: 0.8 }, + ], + }, + { + id: 'fill-desktop', + x1: 0, + y1: 1, + x2: 0, + y2: 0, + stops: [ + { offset: 0.05, color: primaryColor, opacity: 0.1 }, + { offset: 0.95, color: primaryColor, opacity: 1 }, + ], + }, + ], + margin: { top: 5, right: 5, bottom: 35, left: 5 }, + theme: { + foreground: mutedColor, + grid: borderColor, + background: 'transparent', + palette: [primaryColor], + }, + clip: true, + }) +} + +const dashboardTooltip: ChartTooltipOptions = { + className: 'sd-chart-tooltip', + anchor: 'group-center', + placement: ['top', 'right', 'left', 'bottom'], + sticky: false, + sort: 'color-domain', + content(points): ChartTooltipContent { + return { + title: formatDashboardDate(points[0]?.xValue ?? ''), + rows: points.map((point) => ({ + label: point.datum.series === 'desktop' ? 'Desktop' : 'Mobile', + value: point.datum.visitors.toLocaleString('en-US'), + color: 'var(--sd-primary)', + })), + } + }, +} + +function TanStackDashboardChart({ data, input }: DashboardChartProps) { + const width = dashboardChartWidth(input.width) + const renderer = useMemo( + () => createShadcnSpringRenderer(), + [], + ) + const definition = useMemo( + () => + defineChart(shadcnDashboardChartDefinition(data, width), { + svgAnimation: false, + focus: 'group-x', + focusRing: true, + maxFocusDistance: Number.POSITIVE_INFINITY, + keyboard: true, + tooltip: { use: tooltip, ...dashboardTooltip }, + }), + [data, width], + ) + + return ( + + ) +} + +const TanStackDashboardView = forwardRef< + ConformanceTestDriver, + ReactConformanceProps +>(function TanStackDashboardView({ input }, ref) { + return ( + + ) +}) + +export const catalogCase = tanstackCase( + () => shadcnDashboardChartDefinition(filterDashboardData('90d')), + 'Total visitors for the last three months', + dashboardTooltip, + { margin: true }, +) + +export const mount = reactMount(TanStackDashboardView) diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.test.ts b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.test.ts new file mode 100644 index 00000000..ae335638 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.test.ts @@ -0,0 +1,35 @@ +import { createChartRuntime } from '@tanstack/charts' +import { describe, expect, it } from 'vitest' +import { filterDashboardData } from './data' +import { shadcnDashboardChartDefinition } from './tanstack' +import type { SceneNode } from '@tanstack/charts' + +describe('shadcn dashboard TanStack chart', () => { + it('renders two natural stacked areas with scoped gradients', () => { + const runtime = createChartRuntime() + const scene = runtime.render( + shadcnDashboardChartDefinition(filterDashboardData('90d')), + { width: 900, height: 250 }, + ) + const areas = flatten(scene.nodes).filter((node) => node.kind === 'area') + + expect(areas).toHaveLength(2) + expect(scene.points).toHaveLength(182) + expect(scene.gradients.map((gradient) => gradient.id)).toEqual([ + 'fill-mobile', + 'fill-desktop', + ]) + expect(areas.map((area) => area.style?.fill)).toEqual([ + 'url(#fill-mobile)', + 'url(#fill-desktop)', + ]) + + runtime.destroy() + }) +}) + +function flatten(nodes: readonly SceneNode[]): SceneNode[] { + return nodes.flatMap((node) => + node.kind === 'group' ? [node, ...flatten(node.children)] : [node], + ) +} diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts new file mode 100644 index 00000000..2048d598 --- /dev/null +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts @@ -0,0 +1,5 @@ +export { + catalogCase, + mount, + shadcnDashboardChartDefinition, +} from './tanstack-view' diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/case.json b/benchmarks/conformance/cases/122-shadcn-bar-multiple/case.json new file mode 100644 index 00000000..f06a995f --- /dev/null +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/case.json @@ -0,0 +1,28 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1230, + "id": "122-shadcn-bar-multiple", + "title": "shadcn bar chart – multiple", + "family": "bar", + "intent": "Reproduce shadcn/ui's grouped bar example while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "grouped bars", + "rounded corners", + "horizontal grid", + "grouped tooltip", + "shadcn card shell" + ], + "geometry": [{ "role": "bar", "count": 12 }], + "source": { + "title": "shadcn/ui chart-bar-multiple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-multiple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-multiple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, grouped layout, axis treatment, tooltip labels, card dimensions, footer, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/data.ts b/benchmarks/conformance/cases/122-shadcn-bar-multiple/data.ts new file mode 100644 index 00000000..d3c06bf5 --- /dev/null +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/data.ts @@ -0,0 +1,14 @@ +export interface VisitorMonth { + month: string + desktop: number + mobile: number +} + +export const visitorMonths: readonly VisitorMonth[] = [ + { month: 'January', desktop: 186, mobile: 80 }, + { month: 'February', desktop: 305, mobile: 200 }, + { month: 'March', desktop: 237, mobile: 120 }, + { month: 'April', desktop: 73, mobile: 190 }, + { month: 'May', desktop: 209, mobile: 130 }, + { month: 'June', desktop: 214, mobile: 140 }, +] diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts-view.tsx b/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts-view.tsx new file mode 100644 index 00000000..4767d5a9 --- /dev/null +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts-view.tsx @@ -0,0 +1,45 @@ +import { Bar, BarChart, CartesianGrid, Tooltip, XAxis } from 'recharts' +import { visitorMonths } from './data' +import { BarMultipleCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +function RechartsView({ input }: { input: ConformanceInput }) { + return ( + + {({ width, height }) => ( + + + value.slice(0, 3)} + /> + + + + + )} + + ) +} + +export const rechartsMount = shadcnChartMount(RechartsView) diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts b/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts new file mode 100644 index 00000000..93097581 --- /dev/null +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts @@ -0,0 +1 @@ +export { rechartsMount as mount } from './recharts-view' diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx b/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx new file mode 100644 index 00000000..8ff2ea33 --- /dev/null +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx @@ -0,0 +1,119 @@ +import { useMemo } from 'react' +import { barY, defineChart, group } from '@tanstack/charts' +import { Chart } from '@tanstack/charts/react/core' +import { tooltip } from '@tanstack/charts/tooltip' +import { scaleBand, scaleLinear } from 'd3-scale' +import { visitorMonths, type VisitorMonth } from './data' +import { BarMultipleCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import { tanstackCase } from '../../shared/mount' +import { + createShadcnSpringRenderer, + shadcnSpringMotion, +} from '../../shared/shadcn-motion' +import type { ChartTooltipOptions } from '@tanstack/charts' +import type { ConformanceInput } from '../../types' + +const series = ['desktop', 'mobile'] as const +const colors = [ + 'var(--chart-1, var(--ts-chart-1))', + 'var(--chart-2, var(--ts-chart-2))', +] +const groupScale = scaleBand() + .domain(series) + .paddingInner(0.08) + .paddingOuter(0) + +export const barMultipleDefinition = defineChart({ + motion: shadcnSpringMotion, + marks: [ + barY(visitorMonths, { + id: 'desktop-bars', + x: 'month', + y: 'desktop', + z: () => 'desktop', + color: () => 'desktop', + layout: group({ scale: groupScale }), + radius: 4, + }), + barY(visitorMonths, { + id: 'mobile-bars', + x: 'month', + y: 'mobile', + z: () => 'mobile', + color: () => 'mobile', + layout: group({ scale: groupScale }), + radius: 4, + }), + ], + x: { + scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: { + line: false, + ticks: { size: 0, padding: 10, format: (value) => value.slice(0, 3) }, + }, + }, + y: { + scale: scaleLinear().domain([0, 320]), + grid: true, + axis: { line: false, ticks: false, tickLabels: false }, + }, + color: { domain: series, range: colors }, + margin: { top: 5, right: 5, bottom: 35, left: 5 }, + theme: { + foreground: 'var(--muted-foreground, var(--muted))', + grid: 'var(--border)', + }, +}) + +const barTooltip: ChartTooltipOptions = { + className: 'sc-chart-tooltip', + anchor: 'group-center', + sort: 'color-domain', + content: (points) => ({ + title: points[0]?.datum.month ?? '', + rows: points.map((point) => ({ + label: point.markId === 'desktop-bars' ? 'Desktop' : 'Mobile', + value: Number(point.yValue).toLocaleString('en-US'), + color: point.markId === 'desktop-bars' ? colors[0] : colors[1], + })), + }), +} + +function TanStackView({ input }: { input: ConformanceInput }) { + const renderer = useMemo( + () => createShadcnSpringRenderer(), + [], + ) + const definition = useMemo( + () => + defineChart(barMultipleDefinition, { + svgAnimation: false, + focus: 'group-x', + keyboard: true, + tooltip: { use: tooltip, ...barTooltip }, + }), + [], + ) + return ( + + {({ width, height }) => ( + + )} + + ) +} + +export const catalogCase = tanstackCase( + () => barMultipleDefinition, + 'Monthly desktop and mobile visitors', + barTooltip, + { margin: true }, +) +export const tanstackMount = shadcnChartMount(TanStackView) diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts b/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts new file mode 100644 index 00000000..d61b9f66 --- /dev/null +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts @@ -0,0 +1,5 @@ +export { + barMultipleDefinition, + catalogCase, + tanstackMount as mount, +} from './tanstack-view' diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/view.tsx b/benchmarks/conformance/cases/122-shadcn-bar-multiple/view.tsx new file mode 100644 index 00000000..576c29e9 --- /dev/null +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/view.tsx @@ -0,0 +1,24 @@ +import { + ShadcnChartCard, + ShadcnTrendFooter, +} from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +export function BarMultipleCard({ + input, + children, +}: { + input: ConformanceInput + children: Parameters[0]['children'] +}) { + return ( + } + > + {children} + + ) +} diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/case.json b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/case.json new file mode 100644 index 00000000..acd6b41c --- /dev/null +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/case.json @@ -0,0 +1,31 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1240, + "id": "123-shadcn-pie-donut-text", + "title": "shadcn pie chart – donut with text", + "family": "pie", + "intent": "Reproduce shadcn/ui's donut-with-center-text example while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "donut chart", + "center text", + "sector separators", + "tooltip", + "shadcn card shell" + ], + "geometry": [ + { "role": "arc", "count": 5 }, + { "role": "text", "count": 2 } + ], + "source": { + "title": "shadcn/ui chart-pie-donut-text", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-donut-text" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-donut-text card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream browser data, donut radii, separators, center total and label, tooltip, card dimensions, footer, and themes." + } +} diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/data.ts b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/data.ts new file mode 100644 index 00000000..a4dfca5b --- /dev/null +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/data.ts @@ -0,0 +1,42 @@ +export interface BrowserDatum { + browser: string + visitors: number +} + +export interface CenterLabel { + id: string + angle: number + radius: number + text: string +} + +export const browserData: readonly BrowserDatum[] = [ + { browser: 'chrome', visitors: 275 }, + { browser: 'safari', visitors: 200 }, + { browser: 'firefox', visitors: 287 }, + { browser: 'edge', visitors: 173 }, + { browser: 'other', visitors: 190 }, +] + +export const browserColors = [ + 'var(--chart-1, var(--ts-chart-1))', + 'var(--chart-2, var(--ts-chart-2))', + 'var(--chart-3, var(--ts-chart-3))', + 'var(--chart-4, var(--ts-chart-4))', + 'var(--chart-5, var(--ts-chart-5))', +] + +export const totalVisitors = browserData.reduce( + (sum, row) => sum + row.visitors, + 0, +) + +export const centerLabels: readonly CenterLabel[] = [ + { + id: 'total', + angle: 0, + radius: 0, + text: totalVisitors.toLocaleString('en-US'), + }, + { id: 'label', angle: 0, radius: 0, text: 'Visitors' }, +] diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts-view.tsx b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts-view.tsx new file mode 100644 index 00000000..ef9d87d7 --- /dev/null +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts-view.tsx @@ -0,0 +1,60 @@ +import { Cell, Pie, PieChart, Tooltip } from 'recharts' +import { browserColors, browserData, totalVisitors } from './data' +import { PieDonutTextCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +function RechartsView({ input }: { input: ConformanceInput }) { + return ( + + {({ width, height }) => ( + + + + {browserData.map((row, index) => ( + + ))} + + + {totalVisitors.toLocaleString('en-US')} + + + Visitors + + + )} + + ) +} + +export const rechartsMount = shadcnChartMount(RechartsView) diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts new file mode 100644 index 00000000..93097581 --- /dev/null +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts @@ -0,0 +1 @@ +export { rechartsMount as mount } from './recharts-view' diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx new file mode 100644 index 00000000..d0d7dc35 --- /dev/null +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx @@ -0,0 +1,135 @@ +import { useMemo } from 'react' +import { defineChart } from '@tanstack/charts' +import { pie, polar, radialArc, radialText } from '@tanstack/charts/polar' +import { Chart } from '@tanstack/charts/react/core' +import { tooltip } from '@tanstack/charts/tooltip' +import { scaleLinear } from 'd3-scale' +import { + browserColors, + browserData, + centerLabels, + type BrowserDatum, + type CenterLabel, +} from './data' +import { PieDonutTextCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import { tanstackCase } from '../../shared/mount' +import { + createShadcnSpringRenderer, + shadcnSpringMotion, +} from '../../shared/shadcn-motion' +import type { ChartTooltipOptions } from '@tanstack/charts' +import type { PieDatum } from '@tanstack/charts/polar' +import type { ConformanceInput } from '../../types' + +const browsers = browserData.map((row) => row.browser) +const arcs = pie(browserData, { + value: 'visitors', + startAngle: Math.PI / 2, + endAngle: (-Math.PI * 3) / 2, +}) + +export const pieDonutTextDefinition = defineChart({ + motion: shadcnSpringMotion, + marks: [ + polar({ + radiusRatio: 0.768, + angle: { scale: scaleLinear().domain([0, Math.PI * 2]) }, + radius: { scale: scaleLinear().domain([0, 1]) }, + marks: [ + radialArc(arcs, { + id: 'browser-slices', + key: 'browser', + innerRadius: ({ radius }) => radius * 0.625, + color: 'browser', + stroke: 'var(--background, var(--panel))', + strokeWidth: 5, + }), + radialText(centerLabels.slice(0, 1), { + id: 'visitor-total', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: -5, + fill: 'var(--foreground, currentColor)', + fontSize: 30, + fontWeight: 700, + }), + radialText(centerLabels.slice(1), { + id: 'visitor-label', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: 19, + fill: 'var(--muted-foreground, var(--muted))', + fontSize: 14, + }), + ], + }), + ], + color: { domain: browsers, range: browserColors }, + margin: 0, +}) + +const donutTooltip: ChartTooltipOptions | CenterLabel> = + { + className: 'sc-chart-tooltip', + content: (points) => ({ + rows: points.flatMap((point) => + 'browser' in point.datum + ? [ + { + label: + point.datum.browser[0]!.toUpperCase() + + point.datum.browser.slice(1), + value: point.datum.visitors.toLocaleString('en-US'), + color: point.color, + }, + ] + : [], + ), + }), + } + +function TanStackView({ input }: { input: ConformanceInput }) { + const renderer = useMemo( + () => + createShadcnSpringRenderer< + PieDatum | CenterLabel, + number, + number + >(), + [], + ) + const definition = useMemo( + () => + defineChart(pieDonutTextDefinition, { + svgAnimation: false, + keyboard: true, + tooltip: { use: tooltip, ...donutTooltip }, + }), + [], + ) + return ( + + {({ width, height }) => ( + + )} + + ) +} + +export const catalogCase = tanstackCase( + () => pieDonutTextDefinition, + 'Browser visitors donut', + donutTooltip, +) +export const tanstackMount = shadcnChartMount(TanStackView) diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts new file mode 100644 index 00000000..07b01682 --- /dev/null +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts @@ -0,0 +1,5 @@ +export { + catalogCase, + pieDonutTextDefinition, + tanstackMount as mount, +} from './tanstack-view' diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/view.tsx b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/view.tsx new file mode 100644 index 00000000..a999fcf7 --- /dev/null +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/view.tsx @@ -0,0 +1,26 @@ +import { + ShadcnChartCard, + ShadcnTrendFooter, +} from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +export function PieDonutTextCard({ + input, + children, +}: { + input: ConformanceInput + children: Parameters[0]['children'] +}) { + return ( + } + > + {children} + + ) +} diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/case.json b/benchmarks/conformance/cases/124-shadcn-radar-multiple/case.json new file mode 100644 index 00000000..e65abcf7 --- /dev/null +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/case.json @@ -0,0 +1,29 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1250, + "id": "124-shadcn-radar-multiple", + "title": "shadcn radar chart – multiple", + "family": "radar", + "intent": "Reproduce shadcn/ui's multi-series radar example while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "multiple series", + "polygon grid", + "angle labels", + "grouped tooltip", + "shadcn card shell" + ], + "geometry": [{ "role": "radar", "count": 2 }], + "source": { + "title": "shadcn/ui chart-radar-multiple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-multiple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-multiple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, polygon guide, angle labels, two filled profiles, tooltip, card dimensions, footer, and themes." + } +} diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/data.ts b/benchmarks/conformance/cases/124-shadcn-radar-multiple/data.ts new file mode 100644 index 00000000..709505d3 --- /dev/null +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/data.ts @@ -0,0 +1,31 @@ +export interface RadarDatum { + month: string + desktop: number + mobile: number +} + +export interface RadarPoint { + month: string + series: 'desktop' | 'mobile' + visitors: number +} + +export const radarData: readonly RadarDatum[] = [ + { month: 'January', desktop: 186, mobile: 80 }, + { month: 'February', desktop: 305, mobile: 200 }, + { month: 'March', desktop: 237, mobile: 120 }, + { month: 'April', desktop: 73, mobile: 190 }, + { month: 'May', desktop: 209, mobile: 130 }, + { month: 'June', desktop: 214, mobile: 140 }, +] + +export const radarMonths = radarData.map((row) => row.month) +export const radarSeries = ['desktop', 'mobile'] as const +export const radarColors = [ + 'var(--chart-1, var(--ts-chart-1))', + 'var(--chart-2, var(--ts-chart-2))', +] as const +export const radarPoints: readonly RadarPoint[] = radarData.flatMap((row) => [ + { month: row.month, series: 'desktop', visitors: row.desktop }, + { month: row.month, series: 'mobile', visitors: row.mobile }, +]) diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts-view.tsx b/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts-view.tsx new file mode 100644 index 00000000..29305f17 --- /dev/null +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts-view.tsx @@ -0,0 +1,44 @@ +import { PolarAngleAxis, PolarGrid, Radar, RadarChart, Tooltip } from 'recharts' +import { radarData } from './data' +import { RadarMultipleCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +function RechartsView({ input }: { input: ConformanceInput }) { + const compactLabels = input.width < 350 + return ( + + {({ width, height }) => ( + + + value.slice(0, 3) : undefined + } + /> + + + + + )} + + ) +} + +export const rechartsMount = shadcnChartMount(RechartsView) diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts b/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts new file mode 100644 index 00000000..93097581 --- /dev/null +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts @@ -0,0 +1 @@ +export { rechartsMount as mount } from './recharts-view' diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx b/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx new file mode 100644 index 00000000..59a4850f --- /dev/null +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx @@ -0,0 +1,139 @@ +import { useMemo } from 'react' +import { defineChart } from '@tanstack/charts' +import { + angleGrid, + polar, + radialArea, + radialGrid, +} from '@tanstack/charts/polar' +import { Chart } from '@tanstack/charts/react/core' +import { tooltip } from '@tanstack/charts/tooltip' +import { scaleLinear, scalePoint } from 'd3-scale' +import { curveLinearClosed } from 'd3-shape' +import { + radarColors, + radarMonths, + radarPoints, + radarSeries, + type RadarPoint, +} from './data' +import { RadarMultipleCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import { tanstackCase } from '../../shared/mount' +import { + createShadcnSpringRenderer, + shadcnSpringMotion, +} from '../../shared/shadcn-motion' +import type { ChartTooltipOptions } from '@tanstack/charts' +import type { ConformanceInput } from '../../types' + +export const radarMultipleDefinition = defineChart({ + motion: shadcnSpringMotion, + marks: [ + polar({ + radiusRatio: 0.76, + angle: { scale: scalePoint().domain(radarMonths), wrap: true }, + radius: { scale: scaleLinear().domain([0, 320]) }, + guides: [ + radialGrid({ + values: [80, 160, 240, 320], + shape: 'polygon', + stroke: 'var(--border)', + }), + angleGrid({ + values: radarMonths, + labels: true, + labelOffset: 10, + labelFill: 'var(--muted-foreground, var(--muted))', + labelFontSize: 12, + stroke: 'var(--border)', + }), + ], + marks: [ + radialArea( + radarPoints.filter((row) => row.series === 'desktop'), + { + id: 'desktop-radar', + className: 'ts-chart__radar', + angle: 'month', + radius: 'visitors', + key: 'month', + curve: curveLinearClosed, + fill: radarColors[0], + fillOpacity: 0.6, + stroke: radarColors[0], + strokeWidth: 1, + }, + ), + radialArea( + radarPoints.filter((row) => row.series === 'mobile'), + { + id: 'mobile-radar', + className: 'ts-chart__radar', + angle: 'month', + radius: 'visitors', + key: 'month', + curve: curveLinearClosed, + fill: radarColors[1], + fillOpacity: 1, + stroke: radarColors[1], + strokeWidth: 1, + }, + ), + ], + }), + ], + color: { domain: radarSeries, range: radarColors }, + margin: 0, +}) + +const radarTooltip: ChartTooltipOptions = { + className: 'sc-chart-tooltip', + anchor: 'group-center', + content: (focused) => ({ + title: focused[0]?.datum.month ?? '', + rows: focused.map((point) => ({ + label: point.datum.series === 'desktop' ? 'Desktop' : 'Mobile', + value: point.datum.visitors.toLocaleString('en-US'), + color: point.datum.series === 'desktop' ? radarColors[0] : radarColors[1], + })), + }), +} + +function TanStackView({ input }: { input: ConformanceInput }) { + const renderer = useMemo( + () => createShadcnSpringRenderer(), + [], + ) + const definition = useMemo( + () => + defineChart(radarMultipleDefinition, { + svgAnimation: false, + focus: 'group-x', + keyboard: true, + tooltip: { use: tooltip, ...radarTooltip }, + }), + [], + ) + return ( + + {({ width, height }) => ( + + )} + + ) +} + +export const catalogCase = tanstackCase( + () => radarMultipleDefinition, + 'Desktop and mobile visitor radar', + radarTooltip, + { guides: true }, +) +export const tanstackMount = shadcnChartMount(TanStackView) diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts b/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts new file mode 100644 index 00000000..b786131e --- /dev/null +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts @@ -0,0 +1,5 @@ +export { + catalogCase, + radarMultipleDefinition, + tanstackMount as mount, +} from './tanstack-view' diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/view.tsx b/benchmarks/conformance/cases/124-shadcn-radar-multiple/view.tsx new file mode 100644 index 00000000..86b793fd --- /dev/null +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/view.tsx @@ -0,0 +1,27 @@ +import { + ShadcnChartCard, + ShadcnTrendFooter, +} from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +export function RadarMultipleCard({ + input, + children, +}: { + input: ConformanceInput + children: Parameters[0]['children'] +}) { + return ( + = 400 ? 16 : 0} + footer={} + > + {children} + + ) +} diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/case.json b/benchmarks/conformance/cases/125-shadcn-radial-text/case.json new file mode 100644 index 00000000..92a0fb84 --- /dev/null +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/case.json @@ -0,0 +1,31 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1260, + "id": "125-shadcn-radial-text", + "title": "shadcn radial chart – text", + "family": "radial", + "intent": "Reproduce shadcn/ui's partial radial chart with center text while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "partial radial bar", + "rounded caps", + "background track", + "center text", + "shadcn card shell" + ], + "geometry": [ + { "role": "arc", "count": 2 }, + { "role": "text", "count": 2 } + ], + "source": { + "title": "shadcn/ui chart-radial-text", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-text" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-text card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream value, 250-degree sweep, 80/90 radii, rounded track, center text, card dimensions, footer, and themes." + } +} diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/data.ts b/benchmarks/conformance/cases/125-shadcn-radial-text/data.ts new file mode 100644 index 00000000..b387bee9 --- /dev/null +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/data.ts @@ -0,0 +1,14 @@ +export interface RadialDatum { + browser: 'safari' + visitors: number + ring: 'visitors' +} + +export const radialData: readonly RadialDatum[] = [ + { browser: 'safari', visitors: 200, ring: 'visitors' }, +] + +export const radialCenterLabels = [ + { id: 'value', angle: 0, radius: 0, text: '200' }, + { id: 'label', angle: 0, radius: 0, text: 'Visitors' }, +] diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/recharts-view.tsx b/benchmarks/conformance/cases/125-shadcn-radial-text/recharts-view.tsx new file mode 100644 index 00000000..dcda5380 --- /dev/null +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/recharts-view.tsx @@ -0,0 +1,65 @@ +import { PolarGrid, RadialBar, RadialBarChart } from 'recharts' +import { radialData } from './data' +import { RadialTextCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +function RechartsView({ input }: { input: ConformanceInput }) { + return ( + + {({ width, height }) => ( + + + + + 200 + + + Visitors + + + )} + + ) +} + +export const rechartsMount = shadcnChartMount(RechartsView) diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts b/benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts new file mode 100644 index 00000000..93097581 --- /dev/null +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts @@ -0,0 +1 @@ +export { rechartsMount as mount } from './recharts-view' diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx b/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx new file mode 100644 index 00000000..8471bb8e --- /dev/null +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx @@ -0,0 +1,129 @@ +import { useMemo } from 'react' +import { defineChart } from '@tanstack/charts' +import { + pie, + polar, + radialArc, + radialBarAngle, + radialText, +} from '@tanstack/charts/polar' +import { Chart } from '@tanstack/charts/react/core' +import { scaleBand, scaleLinear } from 'd3-scale' +import { radialCenterLabels, radialData, type RadialDatum } from './data' +import { RadialTextCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import { tanstackCase } from '../../shared/mount' +import { + createShadcnSpringRenderer, + shadcnSpringMotion, +} from '../../shared/shadcn-motion' +import type { ConformanceInput } from '../../types' +import type { PieDatum } from '@tanstack/charts/polar' + +const startAngle = Math.PI / 2 +const endAngle = (-Math.PI * 160) / 180 +const radiusScale = scaleBand().domain(['visitors']) +const backgroundArc = pie([{ id: 'background', value: 1 }], { value: 'value' }) +type RadialTextDatum = + | PieDatum<{ id: string; value: number }> + | RadialDatum + | (typeof radialCenterLabels)[number] + +export const radialTextDefinition = defineChart({ + motion: shadcnSpringMotion, + marks: [ + polar({ + angle: { scale: scaleLinear().domain([0, Math.PI * 2]) }, + radius: { scale: scaleLinear().domain([0, 1]) }, + marks: [ + radialArc(backgroundArc, { + id: 'radial-background', + key: 'id', + innerRadius: 80, + outerRadius: 90, + fill: 'var(--muted, var(--panel-muted))', + }), + ], + }), + polar({ + radiusRatio: 0.72, + startAngle, + endAngle, + angle: { scale: scaleLinear().domain([0, 200]) }, + radius: { + scale: radiusScale, + range: [80, 90], + }, + marks: [ + radialBarAngle(radialData, { + id: 'radial-value', + angle: 'visitors', + radius: 'ring', + key: 'browser', + fill: 'var(--chart-2, var(--ts-chart-2))', + cornerRadius: 10, + }), + ], + }), + polar({ + angle: { scale: scaleLinear().domain([0, Math.PI * 2]) }, + radius: { scale: scaleLinear().domain([0, 1]) }, + marks: [ + radialText(radialCenterLabels.slice(0, 1), { + id: 'radial-total', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: 0, + fill: 'var(--foreground, currentColor)', + fontSize: 36, + fontWeight: 700, + }), + radialText(radialCenterLabels.slice(1), { + id: 'radial-label', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: 24, + fill: 'var(--muted-foreground, var(--muted))', + fontSize: 14, + }), + ], + }), + ], + margin: 0, +}) + +function TanStackView({ input }: { input: ConformanceInput }) { + const renderer = useMemo( + () => + createShadcnSpringRenderer(), + [], + ) + const definition = useMemo( + () => + defineChart(radialTextDefinition, { svgAnimation: false, focus: false }), + [], + ) + return ( + + {({ width, height }) => ( + + )} + + ) +} + +export const catalogCase = tanstackCase( + () => radialTextDefinition, + 'Safari visitors radial chart', +) +export const tanstackMount = shadcnChartMount(TanStackView) diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts b/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts new file mode 100644 index 00000000..452af0bf --- /dev/null +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts @@ -0,0 +1,5 @@ +export { + catalogCase, + radialTextDefinition, + tanstackMount as mount, +} from './tanstack-view' diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/view.tsx b/benchmarks/conformance/cases/125-shadcn-radial-text/view.tsx new file mode 100644 index 00000000..ac23e919 --- /dev/null +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/view.tsx @@ -0,0 +1,26 @@ +import { + ShadcnChartCard, + ShadcnTrendFooter, +} from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +export function RadialTextCard({ + input, + children, +}: { + input: ConformanceInput + children: Parameters[0]['children'] +}) { + return ( + } + > + {children} + + ) +} diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/case.json b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/case.json new file mode 100644 index 00000000..68048f66 --- /dev/null +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/case.json @@ -0,0 +1,29 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1270, + "id": "126-shadcn-tooltip-advanced", + "title": "shadcn tooltip – advanced", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's stacked-bar card and custom total tooltip while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "stacked bars", + "rounded corners", + "rich tooltip body", + "computed total", + "default focus", + "shadcn card shell" + ], + "geometry": [{ "role": "bar", "count": 12 }], + "source": { + "title": "shadcn/ui chart-tooltip-advanced", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-advanced" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-advanced card and data with TanStack Charts and its React tooltip composition entry.", + "maintain": "Preserve the pinned upstream data, stack order, weekday axis, initial focused day, 180-pixel rich tooltip, row labels, kcal units, total, card dimensions, and themes." + } +} diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/data.ts b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/data.ts new file mode 100644 index 00000000..297cb656 --- /dev/null +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/data.ts @@ -0,0 +1,33 @@ +export interface ActivityDay { + date: string + running: number + swimming: number +} + +export interface ActivityPoint { + date: string + activity: 'running' | 'swimming' + calories: number +} + +export const activityData: readonly ActivityDay[] = [ + { date: '2024-07-15', running: 450, swimming: 300 }, + { date: '2024-07-16', running: 380, swimming: 420 }, + { date: '2024-07-17', running: 520, swimming: 120 }, + { date: '2024-07-18', running: 140, swimming: 550 }, + { date: '2024-07-19', running: 600, swimming: 350 }, + { date: '2024-07-20', running: 480, swimming: 400 }, +] + +export const activities = ['running', 'swimming'] as const +export const activityColors = [ + 'var(--chart-1, var(--ts-chart-1))', + 'var(--chart-2, var(--ts-chart-2))', +] as const +export const activityPoints: readonly ActivityPoint[] = activityData.flatMap( + (row) => [ + { date: row.date, activity: 'running', calories: row.running }, + { date: row.date, activity: 'swimming', calories: row.swimming }, + ], +) +export const weekday = new Intl.DateTimeFormat('en-US', { weekday: 'short' }) diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts-view.tsx b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts-view.tsx new file mode 100644 index 00000000..65d38f80 --- /dev/null +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts-view.tsx @@ -0,0 +1,100 @@ +import { Bar, BarChart, Tooltip, XAxis } from 'recharts' +import { activityData, weekday, type ActivityDay } from './data' +import { AdvancedTooltipCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +function RechartsTooltipBody({ + active, + payload, +}: { + active?: boolean + payload?: readonly { + dataKey?: string + value?: number + payload?: ActivityDay + }[] +}) { + if (!active || !payload?.length) return null + const rows = payload.filter( + (entry) => entry.dataKey === 'running' || entry.dataKey === 'swimming', + ) + const total = rows.reduce((sum, entry) => sum + Number(entry.value ?? 0), 0) + return ( +
+ {rows.map((entry) => ( +
+ + {entry.dataKey === 'running' ? 'Running' : 'Swimming'} + + {entry.value} + kcal + +
+ ))} +
+ Total + + {total} + kcal + +
+
+ ) +} + +function RechartsView({ input }: { input: ConformanceInput }) { + return ( + + {({ width, height }) => ( + + weekday.format(new Date(value))} + /> + + + } + /> + + )} + + ) +} + +export const rechartsMount = shadcnChartMount(RechartsView) diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts new file mode 100644 index 00000000..93097581 --- /dev/null +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts @@ -0,0 +1 @@ +export { rechartsMount as mount } from './recharts-view' diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx new file mode 100644 index 00000000..627603b0 --- /dev/null +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx @@ -0,0 +1,160 @@ +import { useMemo, useRef } from 'react' +import { barY, defineChart, stack } from '@tanstack/charts' +import { RendererChart as TooltipChart } from '@tanstack/charts/react/tooltip' +import { tooltip } from '@tanstack/charts/tooltip' +import { scaleBand, scaleLinear } from 'd3-scale' +import { + activities, + activityColors, + activityPoints, + weekday, + type ActivityPoint, +} from './data' +import { AdvancedTooltipCard } from './view' +import { shadcnChartMount } from '../../shared/shadcn-chart-card' +import { tanstackCase } from '../../shared/mount' +import { + createShadcnSpringRenderer, + shadcnSpringMotion, +} from '../../shared/shadcn-motion' +import type { ChartPoint, ChartTooltipOptions } from '@tanstack/charts' +import type { ConformanceInput } from '../../types' + +export const advancedTooltipDefinition = defineChart({ + motion: shadcnSpringMotion, + marks: [ + barY(activityPoints, { + id: 'activity-bars', + x: 'date', + y: 'calories', + z: 'activity', + color: 'activity', + key: (row) => `${row.date}:${row.activity}`, + layout: stack({ order: activities }), + radius: 4, + }), + ], + x: { + scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: { + line: false, + ticks: { + size: 0, + padding: 10, + format: (value) => weekday.format(new Date(value)), + }, + }, + }, + y: { scale: scaleLinear().domain([0, 1_000]), axis: false }, + color: { domain: activities, range: activityColors }, + margin: { top: 0, right: 7, bottom: 32, left: 7 }, + theme: { foreground: 'var(--muted-foreground, var(--muted))' }, +}) + +const activityTooltip: ChartTooltipOptions = { + className: 'sc-chart-tooltip', + anchor: (_points, context) => ({ + x: context.surface.width * 0.271, + y: context.surface.height * 0.554, + }), + placement: 'bottom-right', + offset: 0, + sort: 'color-domain', + content: () => ({ rows: [] }), +} + +function AdvancedTooltipBody({ + points, +}: { + points: readonly ChartPoint[] +}) { + const ordered = [...points].sort( + (left, right) => + activities.indexOf(left.datum.activity) - + activities.indexOf(right.datum.activity), + ) + const total = ordered.reduce((sum, point) => sum + point.datum.calories, 0) + return ( +
+ {ordered.map((point) => ( +
+ + + {point.datum.activity === 'running' ? 'Running' : 'Swimming'} + + + {point.datum.calories} + kcal + +
+ ))} +
+ Total + + {total} + kcal + +
+
+ ) +} + +function TanStackView({ input }: { input: ConformanceInput }) { + const focused = useRef(false) + const renderer = useMemo( + () => createShadcnSpringRenderer(), + [], + ) + const definition = useMemo( + () => + defineChart(advancedTooltipDefinition, { + svgAnimation: false, + focus: 'group-x', + focusRing: false, + keyboard: true, + tooltip: { use: tooltip, ...activityTooltip }, + }), + [], + ) + return ( + + {({ width, height }) => ( + { + if (focused.current) return + const point = scene.points.find( + (candidate) => candidate.datum.date === '2024-07-16', + ) + if (!point) return + focused.current = true + interaction.setControlledFocus(point, { source: 'programmatic' }) + }} + renderTooltipBody={({ points }) => ( + + )} + /> + )} + + ) +} + +export const catalogCase = tanstackCase( + () => advancedTooltipDefinition, + 'Daily running and swimming calories', + activityTooltip, + { margin: true }, +) +export const tanstackMount = shadcnChartMount(TanStackView) diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts new file mode 100644 index 00000000..ebb5b8c5 --- /dev/null +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts @@ -0,0 +1,5 @@ +export { + advancedTooltipDefinition, + catalogCase, + tanstackMount as mount, +} from './tanstack-view' diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/view.tsx b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/view.tsx new file mode 100644 index 00000000..d6dd3c09 --- /dev/null +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/view.tsx @@ -0,0 +1,20 @@ +import { ShadcnChartCard } from '../../shared/shadcn-chart-card' +import type { ConformanceInput } from '../../types' + +export function AdvancedTooltipCard({ + input, + children, +}: { + input: ConformanceInput + children: Parameters[0]['children'] +}) { + return ( + + {children} + + ) +} diff --git a/benchmarks/conformance/cases/127-shadcn-area-axes/case.json b/benchmarks/conformance/cases/127-shadcn-area-axes/case.json new file mode 100644 index 00000000..259fe8a3 --- /dev/null +++ b/benchmarks/conformance/cases/127-shadcn-area-axes/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1280, + "id": "127-shadcn-area-axes", + "title": "shadcn Area Chart - Axes", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-axes example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "axes", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-axes", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-axes" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-axes card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area axes treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts b/benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts new file mode 100644 index 00000000..1e7c29fd --- /dev/null +++ b/benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-axes') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts b/benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts new file mode 100644 index 00000000..c31d786c --- /dev/null +++ b/benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-axes') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/128-shadcn-area-default/case.json b/benchmarks/conformance/cases/128-shadcn-area-default/case.json new file mode 100644 index 00000000..5954509c --- /dev/null +++ b/benchmarks/conformance/cases/128-shadcn-area-default/case.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1290, + "id": "128-shadcn-area-default", + "title": "shadcn Area Chart", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-default example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-area-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area default treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts b/benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts new file mode 100644 index 00000000..34f380bb --- /dev/null +++ b/benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-default') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts b/benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts new file mode 100644 index 00000000..dcccf27c --- /dev/null +++ b/benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-default') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/129-shadcn-area-gradient/case.json b/benchmarks/conformance/cases/129-shadcn-area-gradient/case.json new file mode 100644 index 00000000..de287864 --- /dev/null +++ b/benchmarks/conformance/cases/129-shadcn-area-gradient/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1300, + "id": "129-shadcn-area-gradient", + "title": "shadcn Area Chart - Gradient", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-gradient example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "gradient", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-gradient", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-gradient" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-gradient card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area gradient treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts b/benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts new file mode 100644 index 00000000..bf121d42 --- /dev/null +++ b/benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-gradient') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts b/benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts new file mode 100644 index 00000000..ef61cdf2 --- /dev/null +++ b/benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-gradient') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/130-shadcn-area-icons/case.json b/benchmarks/conformance/cases/130-shadcn-area-icons/case.json new file mode 100644 index 00000000..be650277 --- /dev/null +++ b/benchmarks/conformance/cases/130-shadcn-area-icons/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1310, + "id": "130-shadcn-area-icons", + "title": "shadcn Area Chart - Icons", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-icons example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "icons", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-icons", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-icons" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-icons card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area icons treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts b/benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts new file mode 100644 index 00000000..7dc0140f --- /dev/null +++ b/benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-icons') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts b/benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts new file mode 100644 index 00000000..9abb14da --- /dev/null +++ b/benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-icons') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/131-shadcn-area-interactive/case.json b/benchmarks/conformance/cases/131-shadcn-area-interactive/case.json new file mode 100644 index 00000000..d8915f98 --- /dev/null +++ b/benchmarks/conformance/cases/131-shadcn-area-interactive/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1320, + "id": "131-shadcn-area-interactive", + "title": "shadcn Area Chart - Interactive", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-interactive example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "interactive", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area interactive treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts b/benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts new file mode 100644 index 00000000..1ee3cfd0 --- /dev/null +++ b/benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-interactive') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts b/benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts new file mode 100644 index 00000000..818e8025 --- /dev/null +++ b/benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-interactive') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/132-shadcn-area-legend/case.json b/benchmarks/conformance/cases/132-shadcn-area-legend/case.json new file mode 100644 index 00000000..5de0b6d7 --- /dev/null +++ b/benchmarks/conformance/cases/132-shadcn-area-legend/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1330, + "id": "132-shadcn-area-legend", + "title": "shadcn Area Chart - Legend", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-legend example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "legend", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-legend", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-legend" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-legend card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area legend treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts b/benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts new file mode 100644 index 00000000..4851fb45 --- /dev/null +++ b/benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-legend') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts b/benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts new file mode 100644 index 00000000..eb2d937c --- /dev/null +++ b/benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-legend') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/133-shadcn-area-linear/case.json b/benchmarks/conformance/cases/133-shadcn-area-linear/case.json new file mode 100644 index 00000000..95b49bc7 --- /dev/null +++ b/benchmarks/conformance/cases/133-shadcn-area-linear/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1340, + "id": "133-shadcn-area-linear", + "title": "shadcn Area Chart - Linear", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-linear example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "linear", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-area-linear", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-linear" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-linear card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area linear treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts b/benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts new file mode 100644 index 00000000..8da61afb --- /dev/null +++ b/benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-linear') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts b/benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts new file mode 100644 index 00000000..d236175c --- /dev/null +++ b/benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-linear') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/case.json b/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/case.json new file mode 100644 index 00000000..67a7c992 --- /dev/null +++ b/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1350, + "id": "134-shadcn-area-stacked-expand", + "title": "shadcn Area Chart - Stacked Expanded", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-stacked-expand example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "stacked expand", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 3 + } + ], + "source": { + "title": "shadcn/ui chart-area-stacked-expand", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-stacked-expand" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-stacked-expand card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area stacked expand treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts b/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts new file mode 100644 index 00000000..519f2bbd --- /dev/null +++ b/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-stacked-expand') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts b/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts new file mode 100644 index 00000000..d5fbb277 --- /dev/null +++ b/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-stacked-expand') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/135-shadcn-area-stacked/case.json b/benchmarks/conformance/cases/135-shadcn-area-stacked/case.json new file mode 100644 index 00000000..16004861 --- /dev/null +++ b/benchmarks/conformance/cases/135-shadcn-area-stacked/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1360, + "id": "135-shadcn-area-stacked", + "title": "shadcn Area Chart - Stacked", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-stacked example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "stacked", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area stacked treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts b/benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts new file mode 100644 index 00000000..791a069f --- /dev/null +++ b/benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-stacked') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts b/benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts new file mode 100644 index 00000000..3dcf9595 --- /dev/null +++ b/benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-stacked') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/136-shadcn-area-step/case.json b/benchmarks/conformance/cases/136-shadcn-area-step/case.json new file mode 100644 index 00000000..67348e6a --- /dev/null +++ b/benchmarks/conformance/cases/136-shadcn-area-step/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1370, + "id": "136-shadcn-area-step", + "title": "shadcn Area Chart - Step", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-step example with TanStack Charts.", + "support": "native", + "features": [ + "area chart", + "step", + "shadcn card shell" + ], + "geometry": [ + { + "role": "area", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-area-step", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-step" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-step card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area step treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts b/benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts new file mode 100644 index 00000000..af77995f --- /dev/null +++ b/benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-area-step') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts b/benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts new file mode 100644 index 00000000..8c9f95bc --- /dev/null +++ b/benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-area-step') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/137-shadcn-bar-active/case.json b/benchmarks/conformance/cases/137-shadcn-bar-active/case.json new file mode 100644 index 00000000..a54eea93 --- /dev/null +++ b/benchmarks/conformance/cases/137-shadcn-bar-active/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1380, + "id": "137-shadcn-bar-active", + "title": "shadcn Bar Chart - Active", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-active example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "active", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-active", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-active" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-active card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar active treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts b/benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts new file mode 100644 index 00000000..6e01e32b --- /dev/null +++ b/benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-active') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts b/benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts new file mode 100644 index 00000000..eec46eee --- /dev/null +++ b/benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-active') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/138-shadcn-bar-default/case.json b/benchmarks/conformance/cases/138-shadcn-bar-default/case.json new file mode 100644 index 00000000..2eebb66e --- /dev/null +++ b/benchmarks/conformance/cases/138-shadcn-bar-default/case.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1390, + "id": "138-shadcn-bar-default", + "title": "shadcn Bar Chart", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-default example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar default treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts b/benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts new file mode 100644 index 00000000..14702a47 --- /dev/null +++ b/benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-default') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts b/benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts new file mode 100644 index 00000000..10bef265 --- /dev/null +++ b/benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-default') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/139-shadcn-bar-horizontal/case.json b/benchmarks/conformance/cases/139-shadcn-bar-horizontal/case.json new file mode 100644 index 00000000..de2f14ad --- /dev/null +++ b/benchmarks/conformance/cases/139-shadcn-bar-horizontal/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1400, + "id": "139-shadcn-bar-horizontal", + "title": "shadcn Bar Chart - Horizontal", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-horizontal example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "horizontal", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-horizontal", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-horizontal" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-horizontal card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar horizontal treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts b/benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts new file mode 100644 index 00000000..cadf3928 --- /dev/null +++ b/benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-horizontal') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts b/benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts new file mode 100644 index 00000000..ee3573ba --- /dev/null +++ b/benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-horizontal') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/140-shadcn-bar-interactive/case.json b/benchmarks/conformance/cases/140-shadcn-bar-interactive/case.json new file mode 100644 index 00000000..94199a75 --- /dev/null +++ b/benchmarks/conformance/cases/140-shadcn-bar-interactive/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1410, + "id": "140-shadcn-bar-interactive", + "title": "shadcn Bar Chart - Interactive", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-interactive example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "interactive", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar interactive treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts b/benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts new file mode 100644 index 00000000..67076812 --- /dev/null +++ b/benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-interactive') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts b/benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts new file mode 100644 index 00000000..10495e83 --- /dev/null +++ b/benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-interactive') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/141-shadcn-bar-label-custom/case.json b/benchmarks/conformance/cases/141-shadcn-bar-label-custom/case.json new file mode 100644 index 00000000..5858df6d --- /dev/null +++ b/benchmarks/conformance/cases/141-shadcn-bar-label-custom/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1420, + "id": "141-shadcn-bar-label-custom", + "title": "shadcn Bar Chart - Custom Label", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-label-custom example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "label custom", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar label custom treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts b/benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts new file mode 100644 index 00000000..bf89ab65 --- /dev/null +++ b/benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-label-custom') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts b/benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts new file mode 100644 index 00000000..ddb3cd9d --- /dev/null +++ b/benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-label-custom') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/142-shadcn-bar-label/case.json b/benchmarks/conformance/cases/142-shadcn-bar-label/case.json new file mode 100644 index 00000000..9a922d88 --- /dev/null +++ b/benchmarks/conformance/cases/142-shadcn-bar-label/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1430, + "id": "142-shadcn-bar-label", + "title": "shadcn Bar Chart - Label", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-label example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "label", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar label treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts b/benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts new file mode 100644 index 00000000..0faf1a6e --- /dev/null +++ b/benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-label') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts b/benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts new file mode 100644 index 00000000..24b06bb8 --- /dev/null +++ b/benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-label') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/143-shadcn-bar-mixed/case.json b/benchmarks/conformance/cases/143-shadcn-bar-mixed/case.json new file mode 100644 index 00000000..33aa61c2 --- /dev/null +++ b/benchmarks/conformance/cases/143-shadcn-bar-mixed/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1440, + "id": "143-shadcn-bar-mixed", + "title": "shadcn Bar Chart - Mixed", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-mixed example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "mixed", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-mixed", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-mixed" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-mixed card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar mixed treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts b/benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts new file mode 100644 index 00000000..8dc5286c --- /dev/null +++ b/benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-mixed') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts b/benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts new file mode 100644 index 00000000..2613aba7 --- /dev/null +++ b/benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-mixed') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/144-shadcn-bar-negative/case.json b/benchmarks/conformance/cases/144-shadcn-bar-negative/case.json new file mode 100644 index 00000000..ae1f66dc --- /dev/null +++ b/benchmarks/conformance/cases/144-shadcn-bar-negative/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1450, + "id": "144-shadcn-bar-negative", + "title": "shadcn Bar Chart - Negative", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-negative example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "negative", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-negative", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-negative" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-negative card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar negative treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts b/benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts new file mode 100644 index 00000000..70d40360 --- /dev/null +++ b/benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-negative') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts b/benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts new file mode 100644 index 00000000..1e5fa74b --- /dev/null +++ b/benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-negative') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/145-shadcn-bar-stacked/case.json b/benchmarks/conformance/cases/145-shadcn-bar-stacked/case.json new file mode 100644 index 00000000..0b8c6747 --- /dev/null +++ b/benchmarks/conformance/cases/145-shadcn-bar-stacked/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1460, + "id": "145-shadcn-bar-stacked", + "title": "shadcn Bar Chart - Stacked + Legend", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-stacked example with TanStack Charts.", + "support": "native", + "features": [ + "bar chart", + "stacked", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 12 + } + ], + "source": { + "title": "shadcn/ui chart-bar-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar stacked treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts b/benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts new file mode 100644 index 00000000..0b2dfe03 --- /dev/null +++ b/benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-bar-stacked') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts b/benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts new file mode 100644 index 00000000..5e899b85 --- /dev/null +++ b/benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-bar-stacked') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/146-shadcn-line-default/case.json b/benchmarks/conformance/cases/146-shadcn-line-default/case.json new file mode 100644 index 00000000..e070f10b --- /dev/null +++ b/benchmarks/conformance/cases/146-shadcn-line-default/case.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1470, + "id": "146-shadcn-line-default", + "title": "shadcn Line Chart", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-default example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line default treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts b/benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts new file mode 100644 index 00000000..7525e0c9 --- /dev/null +++ b/benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-default') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts b/benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts new file mode 100644 index 00000000..96824eac --- /dev/null +++ b/benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-default') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/147-shadcn-line-dots-colors/case.json b/benchmarks/conformance/cases/147-shadcn-line-dots-colors/case.json new file mode 100644 index 00000000..60b78c72 --- /dev/null +++ b/benchmarks/conformance/cases/147-shadcn-line-dots-colors/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1480, + "id": "147-shadcn-line-dots-colors", + "title": "shadcn Line Chart - Dots Colors", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-dots-colors example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "dots colors", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-dots-colors", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-dots-colors" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-dots-colors card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line dots colors treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts b/benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts new file mode 100644 index 00000000..67daf1e9 --- /dev/null +++ b/benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-dots-colors') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts b/benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts new file mode 100644 index 00000000..9dc257d9 --- /dev/null +++ b/benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-dots-colors') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/148-shadcn-line-dots-custom/case.json b/benchmarks/conformance/cases/148-shadcn-line-dots-custom/case.json new file mode 100644 index 00000000..a4e78713 --- /dev/null +++ b/benchmarks/conformance/cases/148-shadcn-line-dots-custom/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1490, + "id": "148-shadcn-line-dots-custom", + "title": "shadcn Line Chart - Custom Dots", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-dots-custom example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "dots custom", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-dots-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-dots-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-dots-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line dots custom treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts b/benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts new file mode 100644 index 00000000..227a82bd --- /dev/null +++ b/benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-dots-custom') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts b/benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts new file mode 100644 index 00000000..2540373e --- /dev/null +++ b/benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-dots-custom') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/149-shadcn-line-dots/case.json b/benchmarks/conformance/cases/149-shadcn-line-dots/case.json new file mode 100644 index 00000000..84840282 --- /dev/null +++ b/benchmarks/conformance/cases/149-shadcn-line-dots/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1500, + "id": "149-shadcn-line-dots", + "title": "shadcn Line Chart - Dots", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-dots example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "dots", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-dots", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-dots" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-dots card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line dots treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts b/benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts new file mode 100644 index 00000000..1ad0f470 --- /dev/null +++ b/benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-dots') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts b/benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts new file mode 100644 index 00000000..bc15ac6b --- /dev/null +++ b/benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-dots') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/150-shadcn-line-interactive/case.json b/benchmarks/conformance/cases/150-shadcn-line-interactive/case.json new file mode 100644 index 00000000..90b9280f --- /dev/null +++ b/benchmarks/conformance/cases/150-shadcn-line-interactive/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1510, + "id": "150-shadcn-line-interactive", + "title": "shadcn Line Chart - Interactive", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-interactive example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "interactive", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-line-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line interactive treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts b/benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts new file mode 100644 index 00000000..d7f4ace1 --- /dev/null +++ b/benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-interactive') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts b/benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts new file mode 100644 index 00000000..16e6285b --- /dev/null +++ b/benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-interactive') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/151-shadcn-line-label-custom/case.json b/benchmarks/conformance/cases/151-shadcn-line-label-custom/case.json new file mode 100644 index 00000000..a14a93ed --- /dev/null +++ b/benchmarks/conformance/cases/151-shadcn-line-label-custom/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1520, + "id": "151-shadcn-line-label-custom", + "title": "shadcn Line Chart - Custom Label", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-label-custom example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "label custom", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line label custom treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts b/benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts new file mode 100644 index 00000000..12e393f4 --- /dev/null +++ b/benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-label-custom') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts b/benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts new file mode 100644 index 00000000..49625516 --- /dev/null +++ b/benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-label-custom') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/152-shadcn-line-label/case.json b/benchmarks/conformance/cases/152-shadcn-line-label/case.json new file mode 100644 index 00000000..9f5e0700 --- /dev/null +++ b/benchmarks/conformance/cases/152-shadcn-line-label/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1530, + "id": "152-shadcn-line-label", + "title": "shadcn Line Chart - Label", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-label example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "label", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line label treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts b/benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts new file mode 100644 index 00000000..85cfabe6 --- /dev/null +++ b/benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-label') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts b/benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts new file mode 100644 index 00000000..430e54b4 --- /dev/null +++ b/benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-label') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/153-shadcn-line-linear/case.json b/benchmarks/conformance/cases/153-shadcn-line-linear/case.json new file mode 100644 index 00000000..854501a8 --- /dev/null +++ b/benchmarks/conformance/cases/153-shadcn-line-linear/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1540, + "id": "153-shadcn-line-linear", + "title": "shadcn Line Chart - Linear", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-linear example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "linear", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-linear", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-linear" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-linear card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line linear treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts b/benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts new file mode 100644 index 00000000..5ebba957 --- /dev/null +++ b/benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-linear') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts b/benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts new file mode 100644 index 00000000..9e3151ce --- /dev/null +++ b/benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-linear') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/154-shadcn-line-multiple/case.json b/benchmarks/conformance/cases/154-shadcn-line-multiple/case.json new file mode 100644 index 00000000..df7fa0ae --- /dev/null +++ b/benchmarks/conformance/cases/154-shadcn-line-multiple/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1550, + "id": "154-shadcn-line-multiple", + "title": "shadcn Line Chart - Multiple", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-multiple example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "multiple", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-line-multiple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-multiple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-multiple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line multiple treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts b/benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts new file mode 100644 index 00000000..6549c16c --- /dev/null +++ b/benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-multiple') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts b/benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts new file mode 100644 index 00000000..2e6653d6 --- /dev/null +++ b/benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-multiple') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/155-shadcn-line-step/case.json b/benchmarks/conformance/cases/155-shadcn-line-step/case.json new file mode 100644 index 00000000..d79e9feb --- /dev/null +++ b/benchmarks/conformance/cases/155-shadcn-line-step/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1560, + "id": "155-shadcn-line-step", + "title": "shadcn Line Chart - Step", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-step example with TanStack Charts.", + "support": "native", + "features": [ + "line chart", + "step", + "shadcn card shell" + ], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-step", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-step" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-step card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line step treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts b/benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts new file mode 100644 index 00000000..53dac7bd --- /dev/null +++ b/benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-line-step') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts b/benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts new file mode 100644 index 00000000..a2459ec3 --- /dev/null +++ b/benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-line-step') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/156-shadcn-pie-donut-active/case.json b/benchmarks/conformance/cases/156-shadcn-pie-donut-active/case.json new file mode 100644 index 00000000..a5c18b7a --- /dev/null +++ b/benchmarks/conformance/cases/156-shadcn-pie-donut-active/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1570, + "id": "156-shadcn-pie-donut-active", + "title": "shadcn Pie Chart - Donut Active", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-donut-active example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "donut active", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-donut-active", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-donut-active" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-donut-active card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie donut active treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts b/benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts new file mode 100644 index 00000000..f7441264 --- /dev/null +++ b/benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-donut-active') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts b/benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts new file mode 100644 index 00000000..aa254872 --- /dev/null +++ b/benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-donut-active') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/157-shadcn-pie-donut/case.json b/benchmarks/conformance/cases/157-shadcn-pie-donut/case.json new file mode 100644 index 00000000..b3641876 --- /dev/null +++ b/benchmarks/conformance/cases/157-shadcn-pie-donut/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1580, + "id": "157-shadcn-pie-donut", + "title": "shadcn Pie Chart - Donut", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-donut example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "donut", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-donut", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-donut" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-donut card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie donut treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts b/benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts new file mode 100644 index 00000000..807c95c2 --- /dev/null +++ b/benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-donut') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts b/benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts new file mode 100644 index 00000000..1841429f --- /dev/null +++ b/benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-donut') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/158-shadcn-pie-interactive/case.json b/benchmarks/conformance/cases/158-shadcn-pie-interactive/case.json new file mode 100644 index 00000000..21d8c9c7 --- /dev/null +++ b/benchmarks/conformance/cases/158-shadcn-pie-interactive/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1590, + "id": "158-shadcn-pie-interactive", + "title": "shadcn Pie Chart - Interactive", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-interactive example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "interactive", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie interactive treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts b/benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts new file mode 100644 index 00000000..dee36507 --- /dev/null +++ b/benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-interactive') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts b/benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts new file mode 100644 index 00000000..2a4b6e69 --- /dev/null +++ b/benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-interactive') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/159-shadcn-pie-label-custom/case.json b/benchmarks/conformance/cases/159-shadcn-pie-label-custom/case.json new file mode 100644 index 00000000..25da4f8c --- /dev/null +++ b/benchmarks/conformance/cases/159-shadcn-pie-label-custom/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1600, + "id": "159-shadcn-pie-label-custom", + "title": "shadcn Pie Chart - Custom Label", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-label-custom example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "label custom", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie label custom treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts b/benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts new file mode 100644 index 00000000..8b1b2a97 --- /dev/null +++ b/benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-label-custom') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts b/benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts new file mode 100644 index 00000000..9cc97793 --- /dev/null +++ b/benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-label-custom') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/160-shadcn-pie-label-list/case.json b/benchmarks/conformance/cases/160-shadcn-pie-label-list/case.json new file mode 100644 index 00000000..6795daa3 --- /dev/null +++ b/benchmarks/conformance/cases/160-shadcn-pie-label-list/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1610, + "id": "160-shadcn-pie-label-list", + "title": "shadcn Pie Chart - Label List", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-label-list example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "label list", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-label-list", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-label-list" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-label-list card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie label list treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts b/benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts new file mode 100644 index 00000000..4e1accee --- /dev/null +++ b/benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-label-list') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts b/benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts new file mode 100644 index 00000000..98ef087b --- /dev/null +++ b/benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-label-list') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/161-shadcn-pie-label/case.json b/benchmarks/conformance/cases/161-shadcn-pie-label/case.json new file mode 100644 index 00000000..5982b8be --- /dev/null +++ b/benchmarks/conformance/cases/161-shadcn-pie-label/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1620, + "id": "161-shadcn-pie-label", + "title": "shadcn Pie Chart - Label", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-label example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "label", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie label treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts b/benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts new file mode 100644 index 00000000..b340b79a --- /dev/null +++ b/benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-label') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts b/benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts new file mode 100644 index 00000000..0ac2dbe4 --- /dev/null +++ b/benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-label') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/162-shadcn-pie-legend/case.json b/benchmarks/conformance/cases/162-shadcn-pie-legend/case.json new file mode 100644 index 00000000..aa11a606 --- /dev/null +++ b/benchmarks/conformance/cases/162-shadcn-pie-legend/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1630, + "id": "162-shadcn-pie-legend", + "title": "shadcn Pie Chart - Legend", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-legend example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "legend", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-legend", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-legend" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-legend card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie legend treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts b/benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts new file mode 100644 index 00000000..6b2b77fc --- /dev/null +++ b/benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-legend') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts b/benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts new file mode 100644 index 00000000..dcfeb277 --- /dev/null +++ b/benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-legend') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/163-shadcn-pie-separator-none/case.json b/benchmarks/conformance/cases/163-shadcn-pie-separator-none/case.json new file mode 100644 index 00000000..7d9cf26b --- /dev/null +++ b/benchmarks/conformance/cases/163-shadcn-pie-separator-none/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1640, + "id": "163-shadcn-pie-separator-none", + "title": "shadcn Pie Chart - Separator None", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-separator-none example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "separator none", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-separator-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-separator-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-separator-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie separator none treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts b/benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts new file mode 100644 index 00000000..00b3d915 --- /dev/null +++ b/benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-separator-none') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts b/benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts new file mode 100644 index 00000000..f11323b7 --- /dev/null +++ b/benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-separator-none') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/164-shadcn-pie-simple/case.json b/benchmarks/conformance/cases/164-shadcn-pie-simple/case.json new file mode 100644 index 00000000..66ee2a40 --- /dev/null +++ b/benchmarks/conformance/cases/164-shadcn-pie-simple/case.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1650, + "id": "164-shadcn-pie-simple", + "title": "shadcn Pie Chart", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-simple example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-simple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-simple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-simple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie simple treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts b/benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts new file mode 100644 index 00000000..01cdb179 --- /dev/null +++ b/benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-simple') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts b/benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts new file mode 100644 index 00000000..7316ddbc --- /dev/null +++ b/benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-simple') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/165-shadcn-pie-stacked/case.json b/benchmarks/conformance/cases/165-shadcn-pie-stacked/case.json new file mode 100644 index 00000000..877799f7 --- /dev/null +++ b/benchmarks/conformance/cases/165-shadcn-pie-stacked/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1660, + "id": "165-shadcn-pie-stacked", + "title": "shadcn Pie Chart - Stacked", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-stacked example with TanStack Charts.", + "support": "native", + "features": [ + "pie chart", + "stacked", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie stacked treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts b/benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts new file mode 100644 index 00000000..cabe6ab8 --- /dev/null +++ b/benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-pie-stacked') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts b/benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts new file mode 100644 index 00000000..af81601e --- /dev/null +++ b/benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-pie-stacked') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/166-shadcn-radar-default/case.json b/benchmarks/conformance/cases/166-shadcn-radar-default/case.json new file mode 100644 index 00000000..eb912f09 --- /dev/null +++ b/benchmarks/conformance/cases/166-shadcn-radar-default/case.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1670, + "id": "166-shadcn-radar-default", + "title": "shadcn Radar Chart", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-default example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar default treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts b/benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts new file mode 100644 index 00000000..17472b0a --- /dev/null +++ b/benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-default') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts b/benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts new file mode 100644 index 00000000..b618d1b6 --- /dev/null +++ b/benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-default') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/167-shadcn-radar-dots/case.json b/benchmarks/conformance/cases/167-shadcn-radar-dots/case.json new file mode 100644 index 00000000..61245b30 --- /dev/null +++ b/benchmarks/conformance/cases/167-shadcn-radar-dots/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1680, + "id": "167-shadcn-radar-dots", + "title": "shadcn Radar Chart - Dots", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-dots example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "dots", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-dots", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-dots" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-dots card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar dots treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts b/benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts new file mode 100644 index 00000000..d6dcca02 --- /dev/null +++ b/benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-dots') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts b/benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts new file mode 100644 index 00000000..77b53490 --- /dev/null +++ b/benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-dots') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/case.json b/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/case.json new file mode 100644 index 00000000..b3701f51 --- /dev/null +++ b/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1690, + "id": "168-shadcn-radar-grid-circle-fill", + "title": "shadcn Radar Chart - Grid Circle Filled", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-fill example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "grid circle fill", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-circle-fill", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-circle-fill" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-circle-fill card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid circle fill treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts b/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts new file mode 100644 index 00000000..3ccb366d --- /dev/null +++ b/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-grid-circle-fill') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts b/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts new file mode 100644 index 00000000..c2958d4e --- /dev/null +++ b/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-grid-circle-fill') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/case.json b/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/case.json new file mode 100644 index 00000000..a1668598 --- /dev/null +++ b/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1700, + "id": "169-shadcn-radar-grid-circle-no-lines", + "title": "shadcn Radar Chart - Grid Circle - No lines", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-no-lines example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "grid circle no lines", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-circle-no-lines", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-circle-no-lines" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-circle-no-lines card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid circle no lines treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts b/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts new file mode 100644 index 00000000..a8c71457 --- /dev/null +++ b/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-grid-circle-no-lines') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts b/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts new file mode 100644 index 00000000..20b63ad7 --- /dev/null +++ b/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-grid-circle-no-lines') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/case.json b/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/case.json new file mode 100644 index 00000000..6ec16b0b --- /dev/null +++ b/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1710, + "id": "170-shadcn-radar-grid-circle", + "title": "shadcn Radar Chart - Grid Circle", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-circle example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "grid circle", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-circle", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-circle" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-circle card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid circle treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts b/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts new file mode 100644 index 00000000..7226a166 --- /dev/null +++ b/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-grid-circle') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts b/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts new file mode 100644 index 00000000..273d3146 --- /dev/null +++ b/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-grid-circle') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/case.json b/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/case.json new file mode 100644 index 00000000..bfa04919 --- /dev/null +++ b/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1720, + "id": "171-shadcn-radar-grid-custom", + "title": "shadcn Radar Chart - Grid Custom", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-custom example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "grid custom", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid custom treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts b/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts new file mode 100644 index 00000000..40e61363 --- /dev/null +++ b/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-grid-custom') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts b/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts new file mode 100644 index 00000000..38216636 --- /dev/null +++ b/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-grid-custom') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/case.json b/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/case.json new file mode 100644 index 00000000..e6b57050 --- /dev/null +++ b/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1730, + "id": "172-shadcn-radar-grid-fill", + "title": "shadcn Radar Chart - Grid Filled", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-fill example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "grid fill", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-fill", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-fill" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-fill card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid fill treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts b/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts new file mode 100644 index 00000000..96348200 --- /dev/null +++ b/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-grid-fill') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts b/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts new file mode 100644 index 00000000..9b0f3286 --- /dev/null +++ b/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-grid-fill') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/173-shadcn-radar-grid-none/case.json b/benchmarks/conformance/cases/173-shadcn-radar-grid-none/case.json new file mode 100644 index 00000000..7e66e1cb --- /dev/null +++ b/benchmarks/conformance/cases/173-shadcn-radar-grid-none/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1740, + "id": "173-shadcn-radar-grid-none", + "title": "shadcn Radar Chart - Grid None", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-none example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "grid none", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid none treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts b/benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts new file mode 100644 index 00000000..655c829d --- /dev/null +++ b/benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-grid-none') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts b/benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts new file mode 100644 index 00000000..6bbb28b8 --- /dev/null +++ b/benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-grid-none') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/174-shadcn-radar-icons/case.json b/benchmarks/conformance/cases/174-shadcn-radar-icons/case.json new file mode 100644 index 00000000..38b8ce4a --- /dev/null +++ b/benchmarks/conformance/cases/174-shadcn-radar-icons/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1750, + "id": "174-shadcn-radar-icons", + "title": "shadcn Radar Chart - Icons", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-icons example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "icons", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-icons", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-icons" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-icons card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar icons treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts b/benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts new file mode 100644 index 00000000..7dccc47c --- /dev/null +++ b/benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-icons') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts b/benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts new file mode 100644 index 00000000..02a0e031 --- /dev/null +++ b/benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-icons') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/175-shadcn-radar-label-custom/case.json b/benchmarks/conformance/cases/175-shadcn-radar-label-custom/case.json new file mode 100644 index 00000000..f7067b78 --- /dev/null +++ b/benchmarks/conformance/cases/175-shadcn-radar-label-custom/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1760, + "id": "175-shadcn-radar-label-custom", + "title": "shadcn Radar Chart - Custom Label", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-label-custom example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "label custom", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar label custom treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts b/benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts new file mode 100644 index 00000000..d3632ae2 --- /dev/null +++ b/benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-label-custom') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts b/benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts new file mode 100644 index 00000000..b82fc1e7 --- /dev/null +++ b/benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-label-custom') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/176-shadcn-radar-legend/case.json b/benchmarks/conformance/cases/176-shadcn-radar-legend/case.json new file mode 100644 index 00000000..3c30a413 --- /dev/null +++ b/benchmarks/conformance/cases/176-shadcn-radar-legend/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1770, + "id": "176-shadcn-radar-legend", + "title": "shadcn Radar Chart - Legend", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-legend example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "legend", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-radar-legend", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-legend" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-legend card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar legend treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts b/benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts new file mode 100644 index 00000000..b545eaab --- /dev/null +++ b/benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-legend') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts b/benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts new file mode 100644 index 00000000..21d0c0ac --- /dev/null +++ b/benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-legend') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/177-shadcn-radar-lines-only/case.json b/benchmarks/conformance/cases/177-shadcn-radar-lines-only/case.json new file mode 100644 index 00000000..3ff366d4 --- /dev/null +++ b/benchmarks/conformance/cases/177-shadcn-radar-lines-only/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1780, + "id": "177-shadcn-radar-lines-only", + "title": "shadcn Radar Chart - Lines Only", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-lines-only example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "lines only", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-lines-only", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-lines-only" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-lines-only card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar lines only treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts b/benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts new file mode 100644 index 00000000..8a54d61b --- /dev/null +++ b/benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-lines-only') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts b/benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts new file mode 100644 index 00000000..2568e8a7 --- /dev/null +++ b/benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-lines-only') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/178-shadcn-radar-radius/case.json b/benchmarks/conformance/cases/178-shadcn-radar-radius/case.json new file mode 100644 index 00000000..c365a101 --- /dev/null +++ b/benchmarks/conformance/cases/178-shadcn-radar-radius/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1790, + "id": "178-shadcn-radar-radius", + "title": "shadcn Radar Chart - Radius Axis", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-radius example with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "radius", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-radius", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-radius" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-radius card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar radius treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts b/benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts new file mode 100644 index 00000000..e4b58838 --- /dev/null +++ b/benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radar-radius') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts b/benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts new file mode 100644 index 00000000..494ae63e --- /dev/null +++ b/benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radar-radius') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/179-shadcn-radial-grid/case.json b/benchmarks/conformance/cases/179-shadcn-radial-grid/case.json new file mode 100644 index 00000000..b6894d41 --- /dev/null +++ b/benchmarks/conformance/cases/179-shadcn-radial-grid/case.json @@ -0,0 +1,37 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1800, + "id": "179-shadcn-radial-grid", + "title": "shadcn Radial Chart - Grid", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-grid example with TanStack Charts.", + "support": "native", + "features": [ + "radial chart", + "grid", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-grid", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-grid" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-grid card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial grid treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts b/benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts new file mode 100644 index 00000000..cda8513e --- /dev/null +++ b/benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radial-grid') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts b/benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts new file mode 100644 index 00000000..b6a5d637 --- /dev/null +++ b/benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radial-grid') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/180-shadcn-radial-label/case.json b/benchmarks/conformance/cases/180-shadcn-radial-label/case.json new file mode 100644 index 00000000..f05bc502 --- /dev/null +++ b/benchmarks/conformance/cases/180-shadcn-radial-label/case.json @@ -0,0 +1,37 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1810, + "id": "180-shadcn-radial-label", + "title": "shadcn Radial Chart - Label", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-label example with TanStack Charts.", + "support": "native", + "features": [ + "radial chart", + "label", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial label treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts b/benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts new file mode 100644 index 00000000..a4ad1231 --- /dev/null +++ b/benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radial-label') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts b/benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts new file mode 100644 index 00000000..d579bd32 --- /dev/null +++ b/benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radial-label') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/181-shadcn-radial-shape/case.json b/benchmarks/conformance/cases/181-shadcn-radial-shape/case.json new file mode 100644 index 00000000..6fa9a1fa --- /dev/null +++ b/benchmarks/conformance/cases/181-shadcn-radial-shape/case.json @@ -0,0 +1,37 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1820, + "id": "181-shadcn-radial-shape", + "title": "shadcn Radial Chart - Shape", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-shape example with TanStack Charts.", + "support": "native", + "features": [ + "radial chart", + "shape", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-shape", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-shape" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-shape card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial shape treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts b/benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts new file mode 100644 index 00000000..8a7c57c2 --- /dev/null +++ b/benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radial-shape') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts b/benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts new file mode 100644 index 00000000..c6592ae8 --- /dev/null +++ b/benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radial-shape') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/182-shadcn-radial-simple/case.json b/benchmarks/conformance/cases/182-shadcn-radial-simple/case.json new file mode 100644 index 00000000..c08f93a0 --- /dev/null +++ b/benchmarks/conformance/cases/182-shadcn-radial-simple/case.json @@ -0,0 +1,36 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1830, + "id": "182-shadcn-radial-simple", + "title": "shadcn Radial Chart", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-simple example with TanStack Charts.", + "support": "native", + "features": [ + "radial chart", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 1, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-simple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-simple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-simple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial simple treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts b/benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts new file mode 100644 index 00000000..7edb27ab --- /dev/null +++ b/benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radial-simple') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts b/benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts new file mode 100644 index 00000000..c49c5783 --- /dev/null +++ b/benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radial-simple') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/183-shadcn-radial-stacked/case.json b/benchmarks/conformance/cases/183-shadcn-radial-stacked/case.json new file mode 100644 index 00000000..e49f3ddc --- /dev/null +++ b/benchmarks/conformance/cases/183-shadcn-radial-stacked/case.json @@ -0,0 +1,37 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1840, + "id": "183-shadcn-radial-stacked", + "title": "shadcn Radial Chart - Stacked", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-stacked example with TanStack Charts.", + "support": "native", + "features": [ + "radial chart", + "stacked", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial stacked treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts b/benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts new file mode 100644 index 00000000..e48f6f48 --- /dev/null +++ b/benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-radial-stacked') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts b/benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts new file mode 100644 index 00000000..31981c9a --- /dev/null +++ b/benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-radial-stacked') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/184-shadcn-tooltip-default/case.json b/benchmarks/conformance/cases/184-shadcn-tooltip-default/case.json new file mode 100644 index 00000000..80d73243 --- /dev/null +++ b/benchmarks/conformance/cases/184-shadcn-tooltip-default/case.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1850, + "id": "184-shadcn-tooltip-default", + "title": "shadcn Tooltip - Default", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-default example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip default treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts b/benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts new file mode 100644 index 00000000..8058a813 --- /dev/null +++ b/benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-default') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts b/benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts new file mode 100644 index 00000000..1c0f2f30 --- /dev/null +++ b/benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-default') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/case.json b/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/case.json new file mode 100644 index 00000000..9d3c91e5 --- /dev/null +++ b/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1860, + "id": "185-shadcn-tooltip-formatter", + "title": "shadcn Tooltip - Formatter", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-formatter example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "formatter", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-formatter", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-formatter" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-formatter card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip formatter treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts b/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts new file mode 100644 index 00000000..9b822bb4 --- /dev/null +++ b/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-formatter') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts b/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts new file mode 100644 index 00000000..accb2ef4 --- /dev/null +++ b/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-formatter') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/186-shadcn-tooltip-icons/case.json b/benchmarks/conformance/cases/186-shadcn-tooltip-icons/case.json new file mode 100644 index 00000000..dbaef0c0 --- /dev/null +++ b/benchmarks/conformance/cases/186-shadcn-tooltip-icons/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1870, + "id": "186-shadcn-tooltip-icons", + "title": "shadcn Tooltip - Icons", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-icons example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "icons", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-icons", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-icons" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-icons card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip icons treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts b/benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts new file mode 100644 index 00000000..ec53fa16 --- /dev/null +++ b/benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-icons') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts b/benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts new file mode 100644 index 00000000..1e5c0c36 --- /dev/null +++ b/benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-icons') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/case.json b/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/case.json new file mode 100644 index 00000000..78a7b663 --- /dev/null +++ b/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1880, + "id": "187-shadcn-tooltip-indicator-line", + "title": "shadcn Tooltip - Line Indicator", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-line example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "indicator line", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-indicator-line", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-indicator-line" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-indicator-line card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip indicator line treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts b/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts new file mode 100644 index 00000000..7fffb4f0 --- /dev/null +++ b/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-indicator-line') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts b/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts new file mode 100644 index 00000000..ffb2d6fc --- /dev/null +++ b/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-indicator-line') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/case.json b/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/case.json new file mode 100644 index 00000000..b4762c3d --- /dev/null +++ b/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1890, + "id": "188-shadcn-tooltip-indicator-none", + "title": "shadcn Tooltip - No Indicator", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-none example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "indicator none", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-indicator-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-indicator-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-indicator-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip indicator none treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts b/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts new file mode 100644 index 00000000..315418eb --- /dev/null +++ b/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-indicator-none') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts b/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts new file mode 100644 index 00000000..57e36efa --- /dev/null +++ b/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-indicator-none') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/case.json b/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/case.json new file mode 100644 index 00000000..25369b2a --- /dev/null +++ b/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1900, + "id": "189-shadcn-tooltip-label-custom", + "title": "shadcn Tooltip - Custom label", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-label-custom example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "label custom", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip label custom treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts b/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts new file mode 100644 index 00000000..8892f69e --- /dev/null +++ b/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-label-custom') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts b/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts new file mode 100644 index 00000000..67907ecf --- /dev/null +++ b/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-label-custom') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/case.json b/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/case.json new file mode 100644 index 00000000..af8b5d16 --- /dev/null +++ b/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1910, + "id": "190-shadcn-tooltip-label-formatter", + "title": "shadcn Tooltip - Label Formatter", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-label-formatter example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "label formatter", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-label-formatter", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-label-formatter" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-label-formatter card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip label formatter treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts b/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts new file mode 100644 index 00000000..85e3be51 --- /dev/null +++ b/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-label-formatter') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts b/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts new file mode 100644 index 00000000..acfbfdc5 --- /dev/null +++ b/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-label-formatter') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/case.json b/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/case.json new file mode 100644 index 00000000..49378b5f --- /dev/null +++ b/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/case.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": [ + "shadcn" + ], + "height": 600, + "order": 1920, + "id": "191-shadcn-tooltip-label-none", + "title": "shadcn Tooltip - No Label", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-label-none example with TanStack Charts.", + "support": "native", + "features": [ + "tooltip chart", + "label none", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-label-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-label-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-label-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip label none treatment, card dimensions, and light and dark tokens." + } +} diff --git a/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts b/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts new file mode 100644 index 00000000..ded331a8 --- /dev/null +++ b/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts @@ -0,0 +1,5 @@ +import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts' + +const example = createShadcnRechartsExample('chart-tooltip-label-none') + +export const mount = example.mount diff --git a/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts b/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts new file mode 100644 index 00000000..dcfea0be --- /dev/null +++ b/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts @@ -0,0 +1,7 @@ +import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack' + +const example = createShadcnTanStackExample('chart-tooltip-label-none') + +export const shadcnDefinition = example.definition +export const catalogCase = example.catalogCase +export const mount = example.mount diff --git a/benchmarks/conformance/catalog-index.json b/benchmarks/conformance/catalog-index.json index 6ec84de2..6c62e1b8 100644 --- a/benchmarks/conformance/catalog-index.json +++ b/benchmarks/conformance/catalog-index.json @@ -10630,6 +10630,2488 @@ "path": "benchmarks/conformance/cases/126-drillable-sunburst/recharts.ts" } } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "height": 860, + "order": 1220, + "id": "121-shadcn-dashboard", + "title": "shadcn dashboard", + "family": "application", + "intent": "Reproduce shadcn/ui's canonical dashboard shell and interactive stacked-area card while replacing only Recharts with TanStack Charts.", + "support": "native", + "features": [ + "responsive dashboard shell", + "stacked area chart", + "natural curves", + "linear gradient fills", + "grouped tooltip", + "responsive time-range controls", + "CSS-variable theming", + "application-level catalog viewport" + ], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui dashboard-01", + "url": "https://ui.shadcn.com/examples/dashboard" + }, + "ai": { + "create": "Reproduce the official shadcn/ui dashboard-01 layout and data. Keep the dashboard shell independent of the chart renderer, then implement its filtered, stacked, gradient area chart with TanStack Charts.", + "maintain": "Preserve the official dashboard data, responsive sidebar, metric cards, time-range behavior, table shell, natural stacked-area geometry, gradients, axis labels, tooltip content, light and dark themes, and a renderer-only compact catalog preview." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1230, + "id": "122-shadcn-bar-multiple", + "title": "shadcn bar chart – multiple", + "family": "bar", + "intent": "Reproduce shadcn/ui's grouped bar example while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "grouped bars", + "rounded corners", + "horizontal grid", + "grouped tooltip", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 12 + } + ], + "source": { + "title": "shadcn/ui chart-bar-multiple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-multiple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-multiple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, grouped layout, axis treatment, tooltip labels, card dimensions, footer, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1240, + "id": "123-shadcn-pie-donut-text", + "title": "shadcn pie chart – donut with text", + "family": "pie", + "intent": "Reproduce shadcn/ui's donut-with-center-text example while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "donut chart", + "center text", + "sector separators", + "tooltip", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 5 + }, + { + "role": "text", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-pie-donut-text", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-donut-text" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-donut-text card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream browser data, donut radii, separators, center total and label, tooltip, card dimensions, footer, and themes." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1250, + "id": "124-shadcn-radar-multiple", + "title": "shadcn radar chart – multiple", + "family": "radar", + "intent": "Reproduce shadcn/ui's multi-series radar example while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "radar chart", + "multiple series", + "polygon grid", + "angle labels", + "grouped tooltip", + "shadcn card shell" + ], + "geometry": [ + { + "role": "radar", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-radar-multiple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-multiple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-multiple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, polygon guide, angle labels, two filled profiles, tooltip, card dimensions, footer, and themes." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1260, + "id": "125-shadcn-radial-text", + "title": "shadcn radial chart – text", + "family": "radial", + "intent": "Reproduce shadcn/ui's partial radial chart with center text while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "partial radial bar", + "rounded caps", + "background track", + "center text", + "shadcn card shell" + ], + "geometry": [ + { + "role": "arc", + "count": 2 + }, + { + "role": "text", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-radial-text", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-text" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-text card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream value, 250-degree sweep, 80/90 radii, rounded track, center text, card dimensions, footer, and themes." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1270, + "id": "126-shadcn-tooltip-advanced", + "title": "shadcn tooltip – advanced", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's stacked-bar card and custom total tooltip while replacing Recharts with TanStack Charts.", + "support": "native", + "features": [ + "stacked bars", + "rounded corners", + "rich tooltip body", + "computed total", + "default focus", + "shadcn card shell" + ], + "geometry": [ + { + "role": "bar", + "count": 12 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-advanced", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-advanced" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-advanced card and data with TanStack Charts and its React tooltip composition entry.", + "maintain": "Preserve the pinned upstream data, stack order, weekday axis, initial focused day, 180-pixel rich tooltip, row labels, kcal units, total, card dimensions, and themes." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1280, + "id": "127-shadcn-area-axes", + "title": "shadcn Area Chart - Axes", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-axes example with TanStack Charts.", + "support": "native", + "features": ["area chart", "axes", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-axes", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-axes" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-axes card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area axes treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1290, + "id": "128-shadcn-area-default", + "title": "shadcn Area Chart", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-default example with TanStack Charts.", + "support": "native", + "features": ["area chart", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-area-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area default treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1300, + "id": "129-shadcn-area-gradient", + "title": "shadcn Area Chart - Gradient", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-gradient example with TanStack Charts.", + "support": "native", + "features": ["area chart", "gradient", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-gradient", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-gradient" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-gradient card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area gradient treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1310, + "id": "130-shadcn-area-icons", + "title": "shadcn Area Chart - Icons", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-icons example with TanStack Charts.", + "support": "native", + "features": ["area chart", "icons", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-icons", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-icons" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-icons card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area icons treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1320, + "id": "131-shadcn-area-interactive", + "title": "shadcn Area Chart - Interactive", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-interactive example with TanStack Charts.", + "support": "native", + "features": ["area chart", "interactive", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area interactive treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1330, + "id": "132-shadcn-area-legend", + "title": "shadcn Area Chart - Legend", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-legend example with TanStack Charts.", + "support": "native", + "features": ["area chart", "legend", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-legend", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-legend" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-legend card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area legend treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1340, + "id": "133-shadcn-area-linear", + "title": "shadcn Area Chart - Linear", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-linear example with TanStack Charts.", + "support": "native", + "features": ["area chart", "linear", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-area-linear", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-linear" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-linear card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area linear treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1350, + "id": "134-shadcn-area-stacked-expand", + "title": "shadcn Area Chart - Stacked Expanded", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-stacked-expand example with TanStack Charts.", + "support": "native", + "features": ["area chart", "stacked expand", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 3 + } + ], + "source": { + "title": "shadcn/ui chart-area-stacked-expand", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-stacked-expand" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-stacked-expand card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area stacked expand treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1360, + "id": "135-shadcn-area-stacked", + "title": "shadcn Area Chart - Stacked", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-stacked example with TanStack Charts.", + "support": "native", + "features": ["area chart", "stacked", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-area-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area stacked treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1370, + "id": "136-shadcn-area-step", + "title": "shadcn Area Chart - Step", + "family": "area", + "intent": "Reproduce shadcn/ui's chart-area-step example with TanStack Charts.", + "support": "native", + "features": ["area chart", "step", "shadcn card shell"], + "geometry": [ + { + "role": "area", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-area-step", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-area-step" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-area-step card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, area step treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1380, + "id": "137-shadcn-bar-active", + "title": "shadcn Bar Chart - Active", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-active example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "active", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-active", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-active" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-active card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar active treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1390, + "id": "138-shadcn-bar-default", + "title": "shadcn Bar Chart", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-default example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar default treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1400, + "id": "139-shadcn-bar-horizontal", + "title": "shadcn Bar Chart - Horizontal", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-horizontal example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "horizontal", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-horizontal", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-horizontal" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-horizontal card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar horizontal treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1410, + "id": "140-shadcn-bar-interactive", + "title": "shadcn Bar Chart - Interactive", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-interactive example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "interactive", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar interactive treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1420, + "id": "141-shadcn-bar-label-custom", + "title": "shadcn Bar Chart - Custom Label", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-label-custom example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "label custom", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar label custom treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1430, + "id": "142-shadcn-bar-label", + "title": "shadcn Bar Chart - Label", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-label example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "label", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar label treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1440, + "id": "143-shadcn-bar-mixed", + "title": "shadcn Bar Chart - Mixed", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-mixed example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "mixed", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-mixed", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-mixed" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-mixed card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar mixed treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1450, + "id": "144-shadcn-bar-negative", + "title": "shadcn Bar Chart - Negative", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-negative example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "negative", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 6 + } + ], + "source": { + "title": "shadcn/ui chart-bar-negative", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-negative" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-negative card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar negative treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1460, + "id": "145-shadcn-bar-stacked", + "title": "shadcn Bar Chart - Stacked + Legend", + "family": "bar", + "intent": "Reproduce shadcn/ui's chart-bar-stacked example with TanStack Charts.", + "support": "native", + "features": ["bar chart", "stacked", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 12 + } + ], + "source": { + "title": "shadcn/ui chart-bar-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-bar-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-bar-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, bar stacked treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1470, + "id": "146-shadcn-line-default", + "title": "shadcn Line Chart", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-default example with TanStack Charts.", + "support": "native", + "features": ["line chart", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line default treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1480, + "id": "147-shadcn-line-dots-colors", + "title": "shadcn Line Chart - Dots Colors", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-dots-colors example with TanStack Charts.", + "support": "native", + "features": ["line chart", "dots colors", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-dots-colors", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-dots-colors" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-dots-colors card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line dots colors treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1490, + "id": "148-shadcn-line-dots-custom", + "title": "shadcn Line Chart - Custom Dots", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-dots-custom example with TanStack Charts.", + "support": "native", + "features": ["line chart", "dots custom", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-dots-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-dots-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-dots-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line dots custom treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1500, + "id": "149-shadcn-line-dots", + "title": "shadcn Line Chart - Dots", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-dots example with TanStack Charts.", + "support": "native", + "features": ["line chart", "dots", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-dots", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-dots" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-dots card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line dots treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1510, + "id": "150-shadcn-line-interactive", + "title": "shadcn Line Chart - Interactive", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-interactive example with TanStack Charts.", + "support": "native", + "features": ["line chart", "interactive", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-line-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line interactive treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1520, + "id": "151-shadcn-line-label-custom", + "title": "shadcn Line Chart - Custom Label", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-label-custom example with TanStack Charts.", + "support": "native", + "features": ["line chart", "label custom", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line label custom treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1530, + "id": "152-shadcn-line-label", + "title": "shadcn Line Chart - Label", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-label example with TanStack Charts.", + "support": "native", + "features": ["line chart", "label", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line label treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1540, + "id": "153-shadcn-line-linear", + "title": "shadcn Line Chart - Linear", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-linear example with TanStack Charts.", + "support": "native", + "features": ["line chart", "linear", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-linear", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-linear" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-linear card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line linear treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1550, + "id": "154-shadcn-line-multiple", + "title": "shadcn Line Chart - Multiple", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-multiple example with TanStack Charts.", + "support": "native", + "features": ["line chart", "multiple", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-line-multiple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-multiple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-multiple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line multiple treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1560, + "id": "155-shadcn-line-step", + "title": "shadcn Line Chart - Step", + "family": "line", + "intent": "Reproduce shadcn/ui's chart-line-step example with TanStack Charts.", + "support": "native", + "features": ["line chart", "step", "shadcn card shell"], + "geometry": [ + { + "role": "line", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-line-step", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-line-step" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-line-step card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, line step treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1570, + "id": "156-shadcn-pie-donut-active", + "title": "shadcn Pie Chart - Donut Active", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-donut-active example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "donut active", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-donut-active", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-donut-active" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-donut-active card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie donut active treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1580, + "id": "157-shadcn-pie-donut", + "title": "shadcn Pie Chart - Donut", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-donut example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "donut", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-donut", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-donut" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-donut card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie donut treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1590, + "id": "158-shadcn-pie-interactive", + "title": "shadcn Pie Chart - Interactive", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-interactive example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "interactive", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-interactive", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-interactive" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-interactive card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie interactive treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1600, + "id": "159-shadcn-pie-label-custom", + "title": "shadcn Pie Chart - Custom Label", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-label-custom example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "label custom", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie label custom treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1610, + "id": "160-shadcn-pie-label-list", + "title": "shadcn Pie Chart - Label List", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-label-list example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "label list", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-label-list", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-label-list" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-label-list card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie label list treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1620, + "id": "161-shadcn-pie-label", + "title": "shadcn Pie Chart - Label", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-label example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "label", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie label treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1630, + "id": "162-shadcn-pie-legend", + "title": "shadcn Pie Chart - Legend", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-legend example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "legend", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-legend", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-legend" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-legend card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie legend treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1640, + "id": "163-shadcn-pie-separator-none", + "title": "shadcn Pie Chart - Separator None", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-separator-none example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "separator none", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-separator-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-separator-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-separator-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie separator none treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1650, + "id": "164-shadcn-pie-simple", + "title": "shadcn Pie Chart", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-simple example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-simple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-simple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-simple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie simple treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1660, + "id": "165-shadcn-pie-stacked", + "title": "shadcn Pie Chart - Stacked", + "family": "pie", + "intent": "Reproduce shadcn/ui's chart-pie-stacked example with TanStack Charts.", + "support": "native", + "features": ["pie chart", "stacked", "shadcn card shell"], + "geometry": [ + { + "role": "arc", + "count": 5 + } + ], + "source": { + "title": "shadcn/ui chart-pie-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-pie-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-pie-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, pie stacked treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1670, + "id": "166-shadcn-radar-default", + "title": "shadcn Radar Chart", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-default example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar default treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1680, + "id": "167-shadcn-radar-dots", + "title": "shadcn Radar Chart - Dots", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-dots example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "dots", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-dots", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-dots" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-dots card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar dots treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1690, + "id": "168-shadcn-radar-grid-circle-fill", + "title": "shadcn Radar Chart - Grid Circle Filled", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-fill example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "grid circle fill", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-circle-fill", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-circle-fill" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-circle-fill card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid circle fill treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1700, + "id": "169-shadcn-radar-grid-circle-no-lines", + "title": "shadcn Radar Chart - Grid Circle - No lines", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-no-lines example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "grid circle no lines", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-circle-no-lines", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-circle-no-lines" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-circle-no-lines card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid circle no lines treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1710, + "id": "170-shadcn-radar-grid-circle", + "title": "shadcn Radar Chart - Grid Circle", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-circle example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "grid circle", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-circle", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-circle" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-circle card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid circle treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1720, + "id": "171-shadcn-radar-grid-custom", + "title": "shadcn Radar Chart - Grid Custom", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-custom example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "grid custom", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid custom treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1730, + "id": "172-shadcn-radar-grid-fill", + "title": "shadcn Radar Chart - Grid Filled", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-fill example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "grid fill", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-fill", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-fill" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-fill card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid fill treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1740, + "id": "173-shadcn-radar-grid-none", + "title": "shadcn Radar Chart - Grid None", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-grid-none example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "grid none", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-grid-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-grid-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-grid-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar grid none treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1750, + "id": "174-shadcn-radar-icons", + "title": "shadcn Radar Chart - Icons", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-icons example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "icons", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-icons", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-icons" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-icons card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar icons treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1760, + "id": "175-shadcn-radar-label-custom", + "title": "shadcn Radar Chart - Custom Label", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-label-custom example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "label custom", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar label custom treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1770, + "id": "176-shadcn-radar-legend", + "title": "shadcn Radar Chart - Legend", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-legend example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "legend", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 2 + } + ], + "source": { + "title": "shadcn/ui chart-radar-legend", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-legend" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-legend card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar legend treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1780, + "id": "177-shadcn-radar-lines-only", + "title": "shadcn Radar Chart - Lines Only", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-lines-only example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "lines only", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-lines-only", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-lines-only" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-lines-only card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar lines only treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1790, + "id": "178-shadcn-radar-radius", + "title": "shadcn Radar Chart - Radius Axis", + "family": "radar", + "intent": "Reproduce shadcn/ui's chart-radar-radius example with TanStack Charts.", + "support": "native", + "features": ["radar chart", "radius", "shadcn card shell"], + "geometry": [ + { + "role": "radar", + "count": 1 + } + ], + "source": { + "title": "shadcn/ui chart-radar-radius", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radar-radius" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radar-radius card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radar radius treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1800, + "id": "179-shadcn-radial-grid", + "title": "shadcn Radial Chart - Grid", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-grid example with TanStack Charts.", + "support": "native", + "features": ["radial chart", "grid", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-grid", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-grid" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-grid card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial grid treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1810, + "id": "180-shadcn-radial-label", + "title": "shadcn Radial Chart - Label", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-label example with TanStack Charts.", + "support": "native", + "features": ["radial chart", "label", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-label", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-label" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-label card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial label treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1820, + "id": "181-shadcn-radial-shape", + "title": "shadcn Radial Chart - Shape", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-shape example with TanStack Charts.", + "support": "native", + "features": ["radial chart", "shape", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-shape", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-shape" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-shape card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial shape treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1830, + "id": "182-shadcn-radial-simple", + "title": "shadcn Radial Chart", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-simple example with TanStack Charts.", + "support": "native", + "features": ["radial chart", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 1, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-simple", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-simple" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-simple card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial simple treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1840, + "id": "183-shadcn-radial-stacked", + "title": "shadcn Radial Chart - Stacked", + "family": "radial", + "intent": "Reproduce shadcn/ui's chart-radial-stacked example with TanStack Charts.", + "support": "native", + "features": ["radial chart", "stacked", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 5, + "rendererRoles": { + "recharts": "arc", + "tanstack": "arc" + } + } + ], + "source": { + "title": "shadcn/ui chart-radial-stacked", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-radial-stacked" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-radial-stacked card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, radial stacked treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1850, + "id": "184-shadcn-tooltip-default", + "title": "shadcn Tooltip - Default", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-default example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-default", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-default" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-default card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip default treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1860, + "id": "185-shadcn-tooltip-formatter", + "title": "shadcn Tooltip - Formatter", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-formatter example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "formatter", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-formatter", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-formatter" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-formatter card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip formatter treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1870, + "id": "186-shadcn-tooltip-icons", + "title": "shadcn Tooltip - Icons", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-icons example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "icons", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-icons", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-icons" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-icons card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip icons treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1880, + "id": "187-shadcn-tooltip-indicator-line", + "title": "shadcn Tooltip - Line Indicator", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-line example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "indicator line", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-indicator-line", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-indicator-line" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-indicator-line card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip indicator line treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1890, + "id": "188-shadcn-tooltip-indicator-none", + "title": "shadcn Tooltip - No Indicator", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-none example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "indicator none", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-indicator-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-indicator-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-indicator-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip indicator none treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1900, + "id": "189-shadcn-tooltip-label-custom", + "title": "shadcn Tooltip - Custom label", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-label-custom example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "label custom", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-label-custom", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-label-custom" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-label-custom card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip label custom treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1910, + "id": "190-shadcn-tooltip-label-formatter", + "title": "shadcn Tooltip - Label Formatter", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-label-formatter example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "label formatter", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-label-formatter", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-label-formatter" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-label-formatter card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip label formatter treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts" + } + } + }, + { + "schemaVersion": 1, + "referenceRenderer": "recharts", + "collections": ["shadcn"], + "height": 600, + "order": 1920, + "id": "191-shadcn-tooltip-label-none", + "title": "shadcn Tooltip - No Label", + "family": "tooltip", + "intent": "Reproduce shadcn/ui's chart-tooltip-label-none example with TanStack Charts.", + "support": "native", + "features": ["tooltip chart", "label none", "shadcn card shell"], + "geometry": [ + { + "role": "bar", + "count": 10 + } + ], + "source": { + "title": "shadcn/ui chart-tooltip-label-none", + "url": "https://ui.shadcn.com/view/new-york-v4/chart-tooltip-label-none" + }, + "ai": { + "create": "Reproduce the official shadcn/ui chart-tooltip-label-none card and data with TanStack Charts.", + "maintain": "Preserve the pinned upstream data, tooltip label none treatment, card dimensions, and light and dark tokens." + }, + "entries": { + "tanstack": "benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts", + "reference": { + "renderer": "recharts", + "path": "benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts" + } + } } ] } diff --git a/benchmarks/conformance/catalog-loader.test.ts b/benchmarks/conformance/catalog-loader.test.ts index 8aceda6c..89bca21c 100644 --- a/benchmarks/conformance/catalog-loader.test.ts +++ b/benchmarks/conformance/catalog-loader.test.ts @@ -237,6 +237,28 @@ describe('loadCatalogSourceClosure', () => { expect(closure.roles.fixture.files).toBe(1) }) + it('includes reusable shadcn chart primitives and their data', async () => { + const modules = { + './cases/example/tanstack.ts': async () => + "import { example } from '../../shared/shadcn-catalog-tanstack'\nexport { example }\n", + './shared/shadcn-catalog-tanstack.ts': async () => + "import { rows } from './shadcn-catalog-data'\nexport const example = rows\n", + './shared/shadcn-catalog-data.ts': async () => + 'export const rows = [1, 2, 3]\n', + } + + const closure = await loadCatalogSourceClosure( + modules, + './cases/example/tanstack.ts', + ) + + expect(closure.files.map(({ kind, path }) => ({ kind, path }))).toEqual([ + { kind: 'entry', path: 'tanstack.ts' }, + { kind: 'support', path: 'shared/shadcn-catalog-tanstack.ts' }, + { kind: 'fixture', path: 'shared/shadcn-catalog-data.ts' }, + ]) + }) + it('includes case-local model modules as authored support', async () => { const entrySource = "import { selectedRows } from './model'\nexport { selectedRows }\n" diff --git a/benchmarks/conformance/catalog-loader.ts b/benchmarks/conformance/catalog-loader.ts index b8d8900a..48da4f89 100644 --- a/benchmarks/conformance/catalog-loader.ts +++ b/benchmarks/conformance/catalog-loader.ts @@ -238,6 +238,9 @@ function catalogSourceKind( if (path.startsWith('./shared/transforms/')) { return 'support' } + if (path.startsWith('./shared/shadcn-')) { + return path.endsWith('-data.ts') ? 'fixture' : 'support' + } if (path === './shared/data.ts' || path.startsWith('./shared/fixtures/')) { return 'fixture' } diff --git a/benchmarks/conformance/metadata.test.ts b/benchmarks/conformance/metadata.test.ts index 06d7b364..05e73753 100644 --- a/benchmarks/conformance/metadata.test.ts +++ b/benchmarks/conformance/metadata.test.ts @@ -19,6 +19,22 @@ const baseMetadata = { } as const describe('conformance metadata', () => { + it('accepts explicit collection membership', () => { + expect( + parseConformanceCaseMeta( + { ...baseMetadata, collections: ['shadcn'] }, + 'case.json', + ).collections, + ).toEqual(['shadcn']) + }) + + it('accepts a taller catalog viewport for application examples', () => { + expect( + parseConformanceCaseMeta({ ...baseMetadata, height: 860 }, 'case.json') + .height, + ).toBe(860) + }) + it('accepts arc geometry for polar sector comparisons', () => { expect( parseConformanceCaseMeta( diff --git a/benchmarks/conformance/metadata.ts b/benchmarks/conformance/metadata.ts index 83b7e36e..2bf8cb9e 100644 --- a/benchmarks/conformance/metadata.ts +++ b/benchmarks/conformance/metadata.ts @@ -23,6 +23,8 @@ export function parseConformanceCaseMeta( value.schemaVersion !== 1 || ('referenceRenderer' in value && !isReferenceRenderer(value.referenceRenderer)) || + ('collections' in value && !isNonEmptyStringArray(value.collections)) || + ('height' in value && !isCaseHeight(value.height)) || !('order' in value) || typeof value.order !== 'number' || !('id' in value) || @@ -56,6 +58,12 @@ export function parseConformanceCaseMeta( 'referenceRenderer' in value && isReferenceRenderer(value.referenceRenderer) ? value.referenceRenderer : undefined + const collections = + 'collections' in value && isNonEmptyStringArray(value.collections) + ? value.collections + : undefined + const height = + 'height' in value && isCaseHeight(value.height) ? value.height : undefined const guideAssertions = 'guideAssertions' in value && isGuideArray(value.guideAssertions) ? value.guideAssertions @@ -74,6 +82,8 @@ export function parseConformanceCaseMeta( return { schemaVersion: 1, ...(referenceRenderer ? { referenceRenderer } : {}), + ...(collections ? { collections } : {}), + ...(height === undefined ? {} : { height }), order: value.order, id: value.id, title: value.title, @@ -92,6 +102,15 @@ export function parseConformanceCaseMeta( } } +function isCaseHeight(value: unknown): value is number { + return ( + typeof value === 'number' && + Number.isSafeInteger(value) && + value >= 120 && + value <= 1_200 + ) +} + function isReferenceRenderer( value: unknown, ): value is ConformanceReferenceRenderer { @@ -115,6 +134,15 @@ function isStringArray(value: unknown): value is string[] { ) } +function isNonEmptyStringArray(value: unknown): value is string[] { + return ( + isStringArray(value) && + value.length > 0 && + value.every((entry) => entry.length > 0) && + new Set(value).size === value.length + ) +} + function isSource(value: unknown): value is ConformanceCaseMeta['source'] { return ( typeof value === 'object' && diff --git a/benchmarks/conformance/previews/112-motion-entrance.svg b/benchmarks/conformance/previews/112-motion-entrance.svg index a95fa321..9a9319a7 100644 --- a/benchmarks/conformance/previews/112-motion-entrance.svg +++ b/benchmarks/conformance/previews/112-motion-entrance.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/113-motion-updates.svg b/benchmarks/conformance/previews/113-motion-updates.svg index 3c039a76..193215ec 100644 --- a/benchmarks/conformance/previews/113-motion-updates.svg +++ b/benchmarks/conformance/previews/113-motion-updates.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/115-definition-motion.svg b/benchmarks/conformance/previews/115-definition-motion.svg index 996711a3..74f7b684 100644 --- a/benchmarks/conformance/previews/115-definition-motion.svg +++ b/benchmarks/conformance/previews/115-definition-motion.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/119-stacked-bar-band-cursor.svg b/benchmarks/conformance/previews/119-stacked-bar-band-cursor.svg index 6b771059..cf3f1221 100644 --- a/benchmarks/conformance/previews/119-stacked-bar-band-cursor.svg +++ b/benchmarks/conformance/previews/119-stacked-bar-band-cursor.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/121-shadcn-dashboard.svg b/benchmarks/conformance/previews/121-shadcn-dashboard.svg new file mode 100644 index 00000000..a860e60a --- /dev/null +++ b/benchmarks/conformance/previews/121-shadcn-dashboard.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/122-shadcn-bar-multiple.svg b/benchmarks/conformance/previews/122-shadcn-bar-multiple.svg new file mode 100644 index 00000000..b24672d0 --- /dev/null +++ b/benchmarks/conformance/previews/122-shadcn-bar-multiple.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/123-shadcn-pie-donut-text.svg b/benchmarks/conformance/previews/123-shadcn-pie-donut-text.svg new file mode 100644 index 00000000..e165c936 --- /dev/null +++ b/benchmarks/conformance/previews/123-shadcn-pie-donut-text.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/124-shadcn-radar-multiple.svg b/benchmarks/conformance/previews/124-shadcn-radar-multiple.svg new file mode 100644 index 00000000..2d0c6736 --- /dev/null +++ b/benchmarks/conformance/previews/124-shadcn-radar-multiple.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/125-shadcn-radial-text.svg b/benchmarks/conformance/previews/125-shadcn-radial-text.svg new file mode 100644 index 00000000..fd18711f --- /dev/null +++ b/benchmarks/conformance/previews/125-shadcn-radial-text.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/126-shadcn-tooltip-advanced.svg b/benchmarks/conformance/previews/126-shadcn-tooltip-advanced.svg new file mode 100644 index 00000000..a6f7c706 --- /dev/null +++ b/benchmarks/conformance/previews/126-shadcn-tooltip-advanced.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/127-shadcn-area-axes.svg b/benchmarks/conformance/previews/127-shadcn-area-axes.svg new file mode 100644 index 00000000..4fc1e8a9 --- /dev/null +++ b/benchmarks/conformance/previews/127-shadcn-area-axes.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/128-shadcn-area-default.svg b/benchmarks/conformance/previews/128-shadcn-area-default.svg new file mode 100644 index 00000000..481b2c2f --- /dev/null +++ b/benchmarks/conformance/previews/128-shadcn-area-default.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/129-shadcn-area-gradient.svg b/benchmarks/conformance/previews/129-shadcn-area-gradient.svg new file mode 100644 index 00000000..3a629505 --- /dev/null +++ b/benchmarks/conformance/previews/129-shadcn-area-gradient.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/13-interval-timeline.svg b/benchmarks/conformance/previews/13-interval-timeline.svg index 8312fe80..d49f9355 100644 --- a/benchmarks/conformance/previews/13-interval-timeline.svg +++ b/benchmarks/conformance/previews/13-interval-timeline.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/130-shadcn-area-icons.svg b/benchmarks/conformance/previews/130-shadcn-area-icons.svg new file mode 100644 index 00000000..ccd30741 --- /dev/null +++ b/benchmarks/conformance/previews/130-shadcn-area-icons.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/131-shadcn-area-interactive.svg b/benchmarks/conformance/previews/131-shadcn-area-interactive.svg new file mode 100644 index 00000000..19d1ce9e --- /dev/null +++ b/benchmarks/conformance/previews/131-shadcn-area-interactive.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/132-shadcn-area-legend.svg b/benchmarks/conformance/previews/132-shadcn-area-legend.svg new file mode 100644 index 00000000..cc36c6eb --- /dev/null +++ b/benchmarks/conformance/previews/132-shadcn-area-legend.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/133-shadcn-area-linear.svg b/benchmarks/conformance/previews/133-shadcn-area-linear.svg new file mode 100644 index 00000000..e0d12aa4 --- /dev/null +++ b/benchmarks/conformance/previews/133-shadcn-area-linear.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/134-shadcn-area-stacked-expand.svg b/benchmarks/conformance/previews/134-shadcn-area-stacked-expand.svg new file mode 100644 index 00000000..64615bb0 --- /dev/null +++ b/benchmarks/conformance/previews/134-shadcn-area-stacked-expand.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/135-shadcn-area-stacked.svg b/benchmarks/conformance/previews/135-shadcn-area-stacked.svg new file mode 100644 index 00000000..dc287c09 --- /dev/null +++ b/benchmarks/conformance/previews/135-shadcn-area-stacked.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/136-shadcn-area-step.svg b/benchmarks/conformance/previews/136-shadcn-area-step.svg new file mode 100644 index 00000000..2f14ad53 --- /dev/null +++ b/benchmarks/conformance/previews/136-shadcn-area-step.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/137-shadcn-bar-active.svg b/benchmarks/conformance/previews/137-shadcn-bar-active.svg new file mode 100644 index 00000000..fc5efdcc --- /dev/null +++ b/benchmarks/conformance/previews/137-shadcn-bar-active.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/138-shadcn-bar-default.svg b/benchmarks/conformance/previews/138-shadcn-bar-default.svg new file mode 100644 index 00000000..126bc3d6 --- /dev/null +++ b/benchmarks/conformance/previews/138-shadcn-bar-default.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/139-shadcn-bar-horizontal.svg b/benchmarks/conformance/previews/139-shadcn-bar-horizontal.svg new file mode 100644 index 00000000..ac05773c --- /dev/null +++ b/benchmarks/conformance/previews/139-shadcn-bar-horizontal.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/140-shadcn-bar-interactive.svg b/benchmarks/conformance/previews/140-shadcn-bar-interactive.svg new file mode 100644 index 00000000..e0d577a1 --- /dev/null +++ b/benchmarks/conformance/previews/140-shadcn-bar-interactive.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/141-shadcn-bar-label-custom.svg b/benchmarks/conformance/previews/141-shadcn-bar-label-custom.svg new file mode 100644 index 00000000..cddfe6d7 --- /dev/null +++ b/benchmarks/conformance/previews/141-shadcn-bar-label-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/142-shadcn-bar-label.svg b/benchmarks/conformance/previews/142-shadcn-bar-label.svg new file mode 100644 index 00000000..1b694972 --- /dev/null +++ b/benchmarks/conformance/previews/142-shadcn-bar-label.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/143-shadcn-bar-mixed.svg b/benchmarks/conformance/previews/143-shadcn-bar-mixed.svg new file mode 100644 index 00000000..b5084ab1 --- /dev/null +++ b/benchmarks/conformance/previews/143-shadcn-bar-mixed.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/144-shadcn-bar-negative.svg b/benchmarks/conformance/previews/144-shadcn-bar-negative.svg new file mode 100644 index 00000000..b58fdb14 --- /dev/null +++ b/benchmarks/conformance/previews/144-shadcn-bar-negative.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/145-shadcn-bar-stacked.svg b/benchmarks/conformance/previews/145-shadcn-bar-stacked.svg new file mode 100644 index 00000000..e08db187 --- /dev/null +++ b/benchmarks/conformance/previews/145-shadcn-bar-stacked.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/146-shadcn-line-default.svg b/benchmarks/conformance/previews/146-shadcn-line-default.svg new file mode 100644 index 00000000..5f6d24f5 --- /dev/null +++ b/benchmarks/conformance/previews/146-shadcn-line-default.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/147-shadcn-line-dots-colors.svg b/benchmarks/conformance/previews/147-shadcn-line-dots-colors.svg new file mode 100644 index 00000000..969cdfe1 --- /dev/null +++ b/benchmarks/conformance/previews/147-shadcn-line-dots-colors.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/148-shadcn-line-dots-custom.svg b/benchmarks/conformance/previews/148-shadcn-line-dots-custom.svg new file mode 100644 index 00000000..535e7869 --- /dev/null +++ b/benchmarks/conformance/previews/148-shadcn-line-dots-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/149-shadcn-line-dots.svg b/benchmarks/conformance/previews/149-shadcn-line-dots.svg new file mode 100644 index 00000000..33487940 --- /dev/null +++ b/benchmarks/conformance/previews/149-shadcn-line-dots.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/15-boxplot.svg b/benchmarks/conformance/previews/15-boxplot.svg index 690be4e2..455e6874 100644 --- a/benchmarks/conformance/previews/15-boxplot.svg +++ b/benchmarks/conformance/previews/15-boxplot.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/150-shadcn-line-interactive.svg b/benchmarks/conformance/previews/150-shadcn-line-interactive.svg new file mode 100644 index 00000000..a7ae2364 --- /dev/null +++ b/benchmarks/conformance/previews/150-shadcn-line-interactive.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/151-shadcn-line-label-custom.svg b/benchmarks/conformance/previews/151-shadcn-line-label-custom.svg new file mode 100644 index 00000000..c7b35054 --- /dev/null +++ b/benchmarks/conformance/previews/151-shadcn-line-label-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/152-shadcn-line-label.svg b/benchmarks/conformance/previews/152-shadcn-line-label.svg new file mode 100644 index 00000000..c767494b --- /dev/null +++ b/benchmarks/conformance/previews/152-shadcn-line-label.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/153-shadcn-line-linear.svg b/benchmarks/conformance/previews/153-shadcn-line-linear.svg new file mode 100644 index 00000000..8997ccc9 --- /dev/null +++ b/benchmarks/conformance/previews/153-shadcn-line-linear.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/154-shadcn-line-multiple.svg b/benchmarks/conformance/previews/154-shadcn-line-multiple.svg new file mode 100644 index 00000000..2bd7f529 --- /dev/null +++ b/benchmarks/conformance/previews/154-shadcn-line-multiple.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/155-shadcn-line-step.svg b/benchmarks/conformance/previews/155-shadcn-line-step.svg new file mode 100644 index 00000000..e5f5dce7 --- /dev/null +++ b/benchmarks/conformance/previews/155-shadcn-line-step.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/156-shadcn-pie-donut-active.svg b/benchmarks/conformance/previews/156-shadcn-pie-donut-active.svg new file mode 100644 index 00000000..b52950c8 --- /dev/null +++ b/benchmarks/conformance/previews/156-shadcn-pie-donut-active.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/157-shadcn-pie-donut.svg b/benchmarks/conformance/previews/157-shadcn-pie-donut.svg new file mode 100644 index 00000000..cfa45480 --- /dev/null +++ b/benchmarks/conformance/previews/157-shadcn-pie-donut.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/158-shadcn-pie-interactive.svg b/benchmarks/conformance/previews/158-shadcn-pie-interactive.svg new file mode 100644 index 00000000..649e9aa3 --- /dev/null +++ b/benchmarks/conformance/previews/158-shadcn-pie-interactive.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/159-shadcn-pie-label-custom.svg b/benchmarks/conformance/previews/159-shadcn-pie-label-custom.svg new file mode 100644 index 00000000..0e67224d --- /dev/null +++ b/benchmarks/conformance/previews/159-shadcn-pie-label-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/160-shadcn-pie-label-list.svg b/benchmarks/conformance/previews/160-shadcn-pie-label-list.svg new file mode 100644 index 00000000..ea615933 --- /dev/null +++ b/benchmarks/conformance/previews/160-shadcn-pie-label-list.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/161-shadcn-pie-label.svg b/benchmarks/conformance/previews/161-shadcn-pie-label.svg new file mode 100644 index 00000000..e1ec79d5 --- /dev/null +++ b/benchmarks/conformance/previews/161-shadcn-pie-label.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/162-shadcn-pie-legend.svg b/benchmarks/conformance/previews/162-shadcn-pie-legend.svg new file mode 100644 index 00000000..ae47a045 --- /dev/null +++ b/benchmarks/conformance/previews/162-shadcn-pie-legend.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/163-shadcn-pie-separator-none.svg b/benchmarks/conformance/previews/163-shadcn-pie-separator-none.svg new file mode 100644 index 00000000..39b1b5a8 --- /dev/null +++ b/benchmarks/conformance/previews/163-shadcn-pie-separator-none.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/164-shadcn-pie-simple.svg b/benchmarks/conformance/previews/164-shadcn-pie-simple.svg new file mode 100644 index 00000000..ff8d22c2 --- /dev/null +++ b/benchmarks/conformance/previews/164-shadcn-pie-simple.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/165-shadcn-pie-stacked.svg b/benchmarks/conformance/previews/165-shadcn-pie-stacked.svg new file mode 100644 index 00000000..29111e5c --- /dev/null +++ b/benchmarks/conformance/previews/165-shadcn-pie-stacked.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/166-shadcn-radar-default.svg b/benchmarks/conformance/previews/166-shadcn-radar-default.svg new file mode 100644 index 00000000..1bb003a5 --- /dev/null +++ b/benchmarks/conformance/previews/166-shadcn-radar-default.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/167-shadcn-radar-dots.svg b/benchmarks/conformance/previews/167-shadcn-radar-dots.svg new file mode 100644 index 00000000..93bd79ff --- /dev/null +++ b/benchmarks/conformance/previews/167-shadcn-radar-dots.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/168-shadcn-radar-grid-circle-fill.svg b/benchmarks/conformance/previews/168-shadcn-radar-grid-circle-fill.svg new file mode 100644 index 00000000..23f2ff15 --- /dev/null +++ b/benchmarks/conformance/previews/168-shadcn-radar-grid-circle-fill.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/169-shadcn-radar-grid-circle-no-lines.svg b/benchmarks/conformance/previews/169-shadcn-radar-grid-circle-no-lines.svg new file mode 100644 index 00000000..5a3768e9 --- /dev/null +++ b/benchmarks/conformance/previews/169-shadcn-radar-grid-circle-no-lines.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/170-shadcn-radar-grid-circle.svg b/benchmarks/conformance/previews/170-shadcn-radar-grid-circle.svg new file mode 100644 index 00000000..d99c0bf7 --- /dev/null +++ b/benchmarks/conformance/previews/170-shadcn-radar-grid-circle.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/171-shadcn-radar-grid-custom.svg b/benchmarks/conformance/previews/171-shadcn-radar-grid-custom.svg new file mode 100644 index 00000000..7bc73556 --- /dev/null +++ b/benchmarks/conformance/previews/171-shadcn-radar-grid-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/172-shadcn-radar-grid-fill.svg b/benchmarks/conformance/previews/172-shadcn-radar-grid-fill.svg new file mode 100644 index 00000000..cfb14e51 --- /dev/null +++ b/benchmarks/conformance/previews/172-shadcn-radar-grid-fill.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg b/benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg new file mode 100644 index 00000000..520c5e8a --- /dev/null +++ b/benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/174-shadcn-radar-icons.svg b/benchmarks/conformance/previews/174-shadcn-radar-icons.svg new file mode 100644 index 00000000..89bcbde7 --- /dev/null +++ b/benchmarks/conformance/previews/174-shadcn-radar-icons.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg b/benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg new file mode 100644 index 00000000..c3bf3361 --- /dev/null +++ b/benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/176-shadcn-radar-legend.svg b/benchmarks/conformance/previews/176-shadcn-radar-legend.svg new file mode 100644 index 00000000..abaebe7f --- /dev/null +++ b/benchmarks/conformance/previews/176-shadcn-radar-legend.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/177-shadcn-radar-lines-only.svg b/benchmarks/conformance/previews/177-shadcn-radar-lines-only.svg new file mode 100644 index 00000000..8ed501ea --- /dev/null +++ b/benchmarks/conformance/previews/177-shadcn-radar-lines-only.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/178-shadcn-radar-radius.svg b/benchmarks/conformance/previews/178-shadcn-radar-radius.svg new file mode 100644 index 00000000..8409934b --- /dev/null +++ b/benchmarks/conformance/previews/178-shadcn-radar-radius.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/179-shadcn-radial-grid.svg b/benchmarks/conformance/previews/179-shadcn-radial-grid.svg new file mode 100644 index 00000000..15d0602e --- /dev/null +++ b/benchmarks/conformance/previews/179-shadcn-radial-grid.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/180-shadcn-radial-label.svg b/benchmarks/conformance/previews/180-shadcn-radial-label.svg new file mode 100644 index 00000000..4f7df098 --- /dev/null +++ b/benchmarks/conformance/previews/180-shadcn-radial-label.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/181-shadcn-radial-shape.svg b/benchmarks/conformance/previews/181-shadcn-radial-shape.svg new file mode 100644 index 00000000..6d49c9a9 --- /dev/null +++ b/benchmarks/conformance/previews/181-shadcn-radial-shape.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/182-shadcn-radial-simple.svg b/benchmarks/conformance/previews/182-shadcn-radial-simple.svg new file mode 100644 index 00000000..81767581 --- /dev/null +++ b/benchmarks/conformance/previews/182-shadcn-radial-simple.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/183-shadcn-radial-stacked.svg b/benchmarks/conformance/previews/183-shadcn-radial-stacked.svg new file mode 100644 index 00000000..76a8540c --- /dev/null +++ b/benchmarks/conformance/previews/183-shadcn-radial-stacked.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/184-shadcn-tooltip-default.svg b/benchmarks/conformance/previews/184-shadcn-tooltip-default.svg new file mode 100644 index 00000000..810d2005 --- /dev/null +++ b/benchmarks/conformance/previews/184-shadcn-tooltip-default.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/185-shadcn-tooltip-formatter.svg b/benchmarks/conformance/previews/185-shadcn-tooltip-formatter.svg new file mode 100644 index 00000000..a8d232a6 --- /dev/null +++ b/benchmarks/conformance/previews/185-shadcn-tooltip-formatter.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/186-shadcn-tooltip-icons.svg b/benchmarks/conformance/previews/186-shadcn-tooltip-icons.svg new file mode 100644 index 00000000..be8a12cd --- /dev/null +++ b/benchmarks/conformance/previews/186-shadcn-tooltip-icons.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/187-shadcn-tooltip-indicator-line.svg b/benchmarks/conformance/previews/187-shadcn-tooltip-indicator-line.svg new file mode 100644 index 00000000..59c1b3c3 --- /dev/null +++ b/benchmarks/conformance/previews/187-shadcn-tooltip-indicator-line.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/188-shadcn-tooltip-indicator-none.svg b/benchmarks/conformance/previews/188-shadcn-tooltip-indicator-none.svg new file mode 100644 index 00000000..56b60bf3 --- /dev/null +++ b/benchmarks/conformance/previews/188-shadcn-tooltip-indicator-none.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/189-shadcn-tooltip-label-custom.svg b/benchmarks/conformance/previews/189-shadcn-tooltip-label-custom.svg new file mode 100644 index 00000000..335ef090 --- /dev/null +++ b/benchmarks/conformance/previews/189-shadcn-tooltip-label-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/190-shadcn-tooltip-label-formatter.svg b/benchmarks/conformance/previews/190-shadcn-tooltip-label-formatter.svg new file mode 100644 index 00000000..10d9e494 --- /dev/null +++ b/benchmarks/conformance/previews/190-shadcn-tooltip-label-formatter.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/191-shadcn-tooltip-label-none.svg b/benchmarks/conformance/previews/191-shadcn-tooltip-label-none.svg new file mode 100644 index 00000000..1c2a202d --- /dev/null +++ b/benchmarks/conformance/previews/191-shadcn-tooltip-label-none.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/26-diverging-likert.svg b/benchmarks/conformance/previews/26-diverging-likert.svg index f8d1b49e..c9739227 100644 --- a/benchmarks/conformance/previews/26-diverging-likert.svg +++ b/benchmarks/conformance/previews/26-diverging-likert.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/29-waterfall.svg b/benchmarks/conformance/previews/29-waterfall.svg index 474f3e50..b4a23fe4 100644 --- a/benchmarks/conformance/previews/29-waterfall.svg +++ b/benchmarks/conformance/previews/29-waterfall.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/59-grouped-reducer-bars.svg b/benchmarks/conformance/previews/59-grouped-reducer-bars.svg index 44556e69..f188f7e7 100644 --- a/benchmarks/conformance/previews/59-grouped-reducer-bars.svg +++ b/benchmarks/conformance/previews/59-grouped-reducer-bars.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/70-composed-chart.svg b/benchmarks/conformance/previews/70-composed-chart.svg index 9879d4cc..080f97c0 100644 --- a/benchmarks/conformance/previews/70-composed-chart.svg +++ b/benchmarks/conformance/previews/70-composed-chart.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/71-recharts-population-pyramid.svg b/benchmarks/conformance/previews/71-recharts-population-pyramid.svg index 6a83b0cb..6b6011eb 100644 --- a/benchmarks/conformance/previews/71-recharts-population-pyramid.svg +++ b/benchmarks/conformance/previews/71-recharts-population-pyramid.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/72-recharts-mixed-bars.svg b/benchmarks/conformance/previews/72-recharts-mixed-bars.svg index cc6aab20..58f8649c 100644 --- a/benchmarks/conformance/previews/72-recharts-mixed-bars.svg +++ b/benchmarks/conformance/previews/72-recharts-mixed-bars.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/84-pinned-nested-chart-tooltip.svg b/benchmarks/conformance/previews/84-pinned-nested-chart-tooltip.svg index bf0531e9..6351adfd 100644 --- a/benchmarks/conformance/previews/84-pinned-nested-chart-tooltip.svg +++ b/benchmarks/conformance/previews/84-pinned-nested-chart-tooltip.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/bar-grouped.svg b/benchmarks/conformance/previews/bar-grouped.svg index 1d760e86..a3094d30 100644 --- a/benchmarks/conformance/previews/bar-grouped.svg +++ b/benchmarks/conformance/previews/bar-grouped.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/bar-horizontal-ranking.svg b/benchmarks/conformance/previews/bar-horizontal-ranking.svg index f25241e7..6def6852 100644 --- a/benchmarks/conformance/previews/bar-horizontal-ranking.svg +++ b/benchmarks/conformance/previews/bar-horizontal-ranking.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/bar-stacked.svg b/benchmarks/conformance/previews/bar-stacked.svg index 3c4ab317..79e1b01d 100644 --- a/benchmarks/conformance/previews/bar-stacked.svg +++ b/benchmarks/conformance/previews/bar-stacked.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/bar-vertical-sorted.svg b/benchmarks/conformance/previews/bar-vertical-sorted.svg index 9fcce601..14fc2d56 100644 --- a/benchmarks/conformance/previews/bar-vertical-sorted.svg +++ b/benchmarks/conformance/previews/bar-vertical-sorted.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/shadcn/README.md b/benchmarks/conformance/shadcn/README.md new file mode 100644 index 00000000..0ee15b86 --- /dev/null +++ b/benchmarks/conformance/shadcn/README.md @@ -0,0 +1,29 @@ +# shadcn chart mirror + +`catalog.json` pins the canonical 70-example shadcn chart catalog by commit and +Git blob SHA. A `localCaseId` means that upstream example has a TanStack Charts +comparison case in `../cases`. + +```sh +pnpm shadcn:catalog:check +pnpm shadcn:catalog:upstream +``` + +The first command is offline and validates the complete inventory plus all 70 +local mappings. The second compares the pinned blobs with shadcn's current +`main` tree and reports changed, added, and removed paths. + +Run `pnpm shadcn:catalog:generate` after adding an upstream manifest entry. It +assigns a stable case ID and writes the metadata plus thin TanStack and Recharts +entry modules. Existing generated IDs remain stable. + +The catalog uses seven shared family implementations, shared pinned data, and a +shared shadcn card shell. Thin `recharts.ts` and `tanstack.ts` entry points keep +each example addressable and the measured bundle graphs isolated. The five +original spike cases remain standalone parity fixtures. + +Run any reviewed family slice through the quick parity profile with: + +```sh +pnpm conformance:quick -- --case=122-shadcn-bar-multiple,123-shadcn-pie-donut-text,124-shadcn-radar-multiple,125-shadcn-radial-text,126-shadcn-tooltip-advanced +``` diff --git a/benchmarks/conformance/shadcn/area-interactive-data.json b/benchmarks/conformance/shadcn/area-interactive-data.json new file mode 100644 index 00000000..a522abc4 --- /dev/null +++ b/benchmarks/conformance/shadcn/area-interactive-data.json @@ -0,0 +1,457 @@ +[ + { + "date": "2024-04-01", + "desktop": 222, + "mobile": 150 + }, + { + "date": "2024-04-02", + "desktop": 97, + "mobile": 180 + }, + { + "date": "2024-04-03", + "desktop": 167, + "mobile": 120 + }, + { + "date": "2024-04-04", + "desktop": 242, + "mobile": 260 + }, + { + "date": "2024-04-05", + "desktop": 373, + "mobile": 290 + }, + { + "date": "2024-04-06", + "desktop": 301, + "mobile": 340 + }, + { + "date": "2024-04-07", + "desktop": 245, + "mobile": 180 + }, + { + "date": "2024-04-08", + "desktop": 409, + "mobile": 320 + }, + { + "date": "2024-04-09", + "desktop": 59, + "mobile": 110 + }, + { + "date": "2024-04-10", + "desktop": 261, + "mobile": 190 + }, + { + "date": "2024-04-11", + "desktop": 327, + "mobile": 350 + }, + { + "date": "2024-04-12", + "desktop": 292, + "mobile": 210 + }, + { + "date": "2024-04-13", + "desktop": 342, + "mobile": 380 + }, + { + "date": "2024-04-14", + "desktop": 137, + "mobile": 220 + }, + { + "date": "2024-04-15", + "desktop": 120, + "mobile": 170 + }, + { + "date": "2024-04-16", + "desktop": 138, + "mobile": 190 + }, + { + "date": "2024-04-17", + "desktop": 446, + "mobile": 360 + }, + { + "date": "2024-04-18", + "desktop": 364, + "mobile": 410 + }, + { + "date": "2024-04-19", + "desktop": 243, + "mobile": 180 + }, + { + "date": "2024-04-20", + "desktop": 89, + "mobile": 150 + }, + { + "date": "2024-04-21", + "desktop": 137, + "mobile": 200 + }, + { + "date": "2024-04-22", + "desktop": 224, + "mobile": 170 + }, + { + "date": "2024-04-23", + "desktop": 138, + "mobile": 230 + }, + { + "date": "2024-04-24", + "desktop": 387, + "mobile": 290 + }, + { + "date": "2024-04-25", + "desktop": 215, + "mobile": 250 + }, + { + "date": "2024-04-26", + "desktop": 75, + "mobile": 130 + }, + { + "date": "2024-04-27", + "desktop": 383, + "mobile": 420 + }, + { + "date": "2024-04-28", + "desktop": 122, + "mobile": 180 + }, + { + "date": "2024-04-29", + "desktop": 315, + "mobile": 240 + }, + { + "date": "2024-04-30", + "desktop": 454, + "mobile": 380 + }, + { + "date": "2024-05-01", + "desktop": 165, + "mobile": 220 + }, + { + "date": "2024-05-02", + "desktop": 293, + "mobile": 310 + }, + { + "date": "2024-05-03", + "desktop": 247, + "mobile": 190 + }, + { + "date": "2024-05-04", + "desktop": 385, + "mobile": 420 + }, + { + "date": "2024-05-05", + "desktop": 481, + "mobile": 390 + }, + { + "date": "2024-05-06", + "desktop": 498, + "mobile": 520 + }, + { + "date": "2024-05-07", + "desktop": 388, + "mobile": 300 + }, + { + "date": "2024-05-08", + "desktop": 149, + "mobile": 210 + }, + { + "date": "2024-05-09", + "desktop": 227, + "mobile": 180 + }, + { + "date": "2024-05-10", + "desktop": 293, + "mobile": 330 + }, + { + "date": "2024-05-11", + "desktop": 335, + "mobile": 270 + }, + { + "date": "2024-05-12", + "desktop": 197, + "mobile": 240 + }, + { + "date": "2024-05-13", + "desktop": 197, + "mobile": 160 + }, + { + "date": "2024-05-14", + "desktop": 448, + "mobile": 490 + }, + { + "date": "2024-05-15", + "desktop": 473, + "mobile": 380 + }, + { + "date": "2024-05-16", + "desktop": 338, + "mobile": 400 + }, + { + "date": "2024-05-17", + "desktop": 499, + "mobile": 420 + }, + { + "date": "2024-05-18", + "desktop": 315, + "mobile": 350 + }, + { + "date": "2024-05-19", + "desktop": 235, + "mobile": 180 + }, + { + "date": "2024-05-20", + "desktop": 177, + "mobile": 230 + }, + { + "date": "2024-05-21", + "desktop": 82, + "mobile": 140 + }, + { + "date": "2024-05-22", + "desktop": 81, + "mobile": 120 + }, + { + "date": "2024-05-23", + "desktop": 252, + "mobile": 290 + }, + { + "date": "2024-05-24", + "desktop": 294, + "mobile": 220 + }, + { + "date": "2024-05-25", + "desktop": 201, + "mobile": 250 + }, + { + "date": "2024-05-26", + "desktop": 213, + "mobile": 170 + }, + { + "date": "2024-05-27", + "desktop": 420, + "mobile": 460 + }, + { + "date": "2024-05-28", + "desktop": 233, + "mobile": 190 + }, + { + "date": "2024-05-29", + "desktop": 78, + "mobile": 130 + }, + { + "date": "2024-05-30", + "desktop": 340, + "mobile": 280 + }, + { + "date": "2024-05-31", + "desktop": 178, + "mobile": 230 + }, + { + "date": "2024-06-01", + "desktop": 178, + "mobile": 200 + }, + { + "date": "2024-06-02", + "desktop": 470, + "mobile": 410 + }, + { + "date": "2024-06-03", + "desktop": 103, + "mobile": 160 + }, + { + "date": "2024-06-04", + "desktop": 439, + "mobile": 380 + }, + { + "date": "2024-06-05", + "desktop": 88, + "mobile": 140 + }, + { + "date": "2024-06-06", + "desktop": 294, + "mobile": 250 + }, + { + "date": "2024-06-07", + "desktop": 323, + "mobile": 370 + }, + { + "date": "2024-06-08", + "desktop": 385, + "mobile": 320 + }, + { + "date": "2024-06-09", + "desktop": 438, + "mobile": 480 + }, + { + "date": "2024-06-10", + "desktop": 155, + "mobile": 200 + }, + { + "date": "2024-06-11", + "desktop": 92, + "mobile": 150 + }, + { + "date": "2024-06-12", + "desktop": 492, + "mobile": 420 + }, + { + "date": "2024-06-13", + "desktop": 81, + "mobile": 130 + }, + { + "date": "2024-06-14", + "desktop": 426, + "mobile": 380 + }, + { + "date": "2024-06-15", + "desktop": 307, + "mobile": 350 + }, + { + "date": "2024-06-16", + "desktop": 371, + "mobile": 310 + }, + { + "date": "2024-06-17", + "desktop": 475, + "mobile": 520 + }, + { + "date": "2024-06-18", + "desktop": 107, + "mobile": 170 + }, + { + "date": "2024-06-19", + "desktop": 341, + "mobile": 290 + }, + { + "date": "2024-06-20", + "desktop": 408, + "mobile": 450 + }, + { + "date": "2024-06-21", + "desktop": 169, + "mobile": 210 + }, + { + "date": "2024-06-22", + "desktop": 317, + "mobile": 270 + }, + { + "date": "2024-06-23", + "desktop": 480, + "mobile": 530 + }, + { + "date": "2024-06-24", + "desktop": 132, + "mobile": 180 + }, + { + "date": "2024-06-25", + "desktop": 141, + "mobile": 190 + }, + { + "date": "2024-06-26", + "desktop": 434, + "mobile": 380 + }, + { + "date": "2024-06-27", + "desktop": 448, + "mobile": 490 + }, + { + "date": "2024-06-28", + "desktop": 149, + "mobile": 200 + }, + { + "date": "2024-06-29", + "desktop": 103, + "mobile": 160 + }, + { + "date": "2024-06-30", + "desktop": 446, + "mobile": 400 + } +] diff --git a/benchmarks/conformance/shadcn/catalog.json b/benchmarks/conformance/shadcn/catalog.json new file mode 100644 index 00000000..82c98892 --- /dev/null +++ b/benchmarks/conformance/shadcn/catalog.json @@ -0,0 +1,502 @@ +{ + "schemaVersion": 1, + "upstream": { + "repository": "shadcn-ui/ui", + "commit": "a85299a9edd2a961e32f01ced86963a852652bd2", + "pathRoot": "apps/v4/registry/new-york-v4/charts", + "registryPath": "apps/v4/registry/new-york-v4/charts/_registry.ts", + "registryBlobSha": "deeda2cba61a75fbfbb16437d56630d8785f4d44" + }, + "cases": [ + { + "name": "chart-area-axes", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-axes.tsx", + "blobSha": "ee429429fbb7a8afeb411a386140e6406e08e06d", + "localCaseId": "127-shadcn-area-axes" + }, + { + "name": "chart-area-default", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-default.tsx", + "blobSha": "3dfbcd3fc3c2f6861f4bb4211155710fec609b50", + "localCaseId": "128-shadcn-area-default" + }, + { + "name": "chart-area-gradient", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-gradient.tsx", + "blobSha": "648355c436faf0f3bb62d8954b5567a11b80424d", + "localCaseId": "129-shadcn-area-gradient" + }, + { + "name": "chart-area-icons", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-icons.tsx", + "blobSha": "295160e905f7fc05fcf138b9cc88efcc806574b2", + "localCaseId": "130-shadcn-area-icons" + }, + { + "name": "chart-area-interactive", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-interactive.tsx", + "blobSha": "8f6e69d40971e901b8b0d28b31a3dcf8580ac907", + "localCaseId": "131-shadcn-area-interactive" + }, + { + "name": "chart-area-legend", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-legend.tsx", + "blobSha": "eddd6c255019fed830a3d58582afff55fcff7664", + "localCaseId": "132-shadcn-area-legend" + }, + { + "name": "chart-area-linear", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-linear.tsx", + "blobSha": "5e2a36507de6c607f8c5639be11d0ea1179a5e2c", + "localCaseId": "133-shadcn-area-linear" + }, + { + "name": "chart-area-stacked-expand", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-stacked-expand.tsx", + "blobSha": "95a7851529d85cb9a7c171a1a56167752c54c2b1", + "localCaseId": "134-shadcn-area-stacked-expand" + }, + { + "name": "chart-area-stacked", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-stacked.tsx", + "blobSha": "92dc3edd1417e0d6c1d99d5502414995f1060ad9", + "localCaseId": "135-shadcn-area-stacked" + }, + { + "name": "chart-area-step", + "family": "area", + "path": "apps/v4/registry/new-york-v4/charts/chart-area-step.tsx", + "blobSha": "2c2dd581772d355c962924a00fd130a8c9b92a04", + "localCaseId": "136-shadcn-area-step" + }, + { + "name": "chart-bar-active", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-active.tsx", + "blobSha": "f76c5812e5e4f1beb32a2ec3fd51cafdcaa67870", + "localCaseId": "137-shadcn-bar-active" + }, + { + "name": "chart-bar-default", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-default.tsx", + "blobSha": "dc921b04f9f34bede4a58dae8e308b582b9d6c4a", + "localCaseId": "138-shadcn-bar-default" + }, + { + "name": "chart-bar-horizontal", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-horizontal.tsx", + "blobSha": "2016a9785c6da00c39e86bdd014dc6d4f0c48d70", + "localCaseId": "139-shadcn-bar-horizontal" + }, + { + "name": "chart-bar-interactive", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-interactive.tsx", + "blobSha": "124e381442e7872f5b49b75afcbfff09484f747f", + "localCaseId": "140-shadcn-bar-interactive" + }, + { + "name": "chart-bar-label-custom", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-label-custom.tsx", + "blobSha": "bde2b2bfd8c5830824a2326ed44d3eac9af16101", + "localCaseId": "141-shadcn-bar-label-custom" + }, + { + "name": "chart-bar-label", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-label.tsx", + "blobSha": "390e1b03282fdbb51e86f1f19827290441bc8dce", + "localCaseId": "142-shadcn-bar-label" + }, + { + "name": "chart-bar-mixed", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-mixed.tsx", + "blobSha": "bac07d75f0ac98f892ab4618471e085a2b1f1512", + "localCaseId": "143-shadcn-bar-mixed" + }, + { + "name": "chart-bar-multiple", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-multiple.tsx", + "blobSha": "99b894f293093e1a88bab71ed1f3d5097d0e205c", + "localCaseId": "122-shadcn-bar-multiple" + }, + { + "name": "chart-bar-negative", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-negative.tsx", + "blobSha": "982bccdb9cd4ebb5010a10cbfd43bfff876dd94c", + "localCaseId": "144-shadcn-bar-negative" + }, + { + "name": "chart-bar-stacked", + "family": "bar", + "path": "apps/v4/registry/new-york-v4/charts/chart-bar-stacked.tsx", + "blobSha": "99ceda588e9b49e54f9c5e41c267314cc73d6dce", + "localCaseId": "145-shadcn-bar-stacked" + }, + { + "name": "chart-line-default", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-default.tsx", + "blobSha": "669ebf5022ac06d94a016b84dc4706d27d19595f", + "localCaseId": "146-shadcn-line-default" + }, + { + "name": "chart-line-dots-colors", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots-colors.tsx", + "blobSha": "451c24fd34f9ccac3da83e2fb2c24eeefaa0aead", + "localCaseId": "147-shadcn-line-dots-colors" + }, + { + "name": "chart-line-dots-custom", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots-custom.tsx", + "blobSha": "355f23a1071b60c8c4563320e79e9f30ff36ec3d", + "localCaseId": "148-shadcn-line-dots-custom" + }, + { + "name": "chart-line-dots", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots.tsx", + "blobSha": "0d1df7b6e6ef141f599848faa14b0e2f342a21a3", + "localCaseId": "149-shadcn-line-dots" + }, + { + "name": "chart-line-interactive", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-interactive.tsx", + "blobSha": "3feeb25b0d4452fb35e57299997b6e089e671460", + "localCaseId": "150-shadcn-line-interactive" + }, + { + "name": "chart-line-label-custom", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-label-custom.tsx", + "blobSha": "14aaa7f92af490d14ab6e4e36c112ed949c805b4", + "localCaseId": "151-shadcn-line-label-custom" + }, + { + "name": "chart-line-label", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-label.tsx", + "blobSha": "7a333fc3a29b097f9918e7a5ead51a81073fe800", + "localCaseId": "152-shadcn-line-label" + }, + { + "name": "chart-line-linear", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-linear.tsx", + "blobSha": "e0c2d34ac8328611c6d572b19043ce95ca00f64d", + "localCaseId": "153-shadcn-line-linear" + }, + { + "name": "chart-line-multiple", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-multiple.tsx", + "blobSha": "fb162420976cc77ce7a7fa3e36b7fdf63a9ab18e", + "localCaseId": "154-shadcn-line-multiple" + }, + { + "name": "chart-line-step", + "family": "line", + "path": "apps/v4/registry/new-york-v4/charts/chart-line-step.tsx", + "blobSha": "5dce7fcbbcbc32f34441e3793bdbe152d91e45f7", + "localCaseId": "155-shadcn-line-step" + }, + { + "name": "chart-pie-donut-active", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut-active.tsx", + "blobSha": "b2e41b5ebbd9fe392435e1f3417aecf2df35ae8b", + "localCaseId": "156-shadcn-pie-donut-active" + }, + { + "name": "chart-pie-donut-text", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut-text.tsx", + "blobSha": "c7e3d834954dbee3af6a33eac6a8cf74b333350f", + "localCaseId": "123-shadcn-pie-donut-text" + }, + { + "name": "chart-pie-donut", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut.tsx", + "blobSha": "c4ca8674ee42a22e9572fa385318cb4b42da2fac", + "localCaseId": "157-shadcn-pie-donut" + }, + { + "name": "chart-pie-interactive", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-interactive.tsx", + "blobSha": "dfe17b688b3dd35a36ccda5435966b9f4160c128", + "localCaseId": "158-shadcn-pie-interactive" + }, + { + "name": "chart-pie-label-custom", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label-custom.tsx", + "blobSha": "465c78c2a8d83f4c924433db265f524bb4962a6e", + "localCaseId": "159-shadcn-pie-label-custom" + }, + { + "name": "chart-pie-label-list", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label-list.tsx", + "blobSha": "ff179593352b9f541743e50eb8303fcf92320913", + "localCaseId": "160-shadcn-pie-label-list" + }, + { + "name": "chart-pie-label", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label.tsx", + "blobSha": "3257c585110fb58deb95c4d5d61fe15c5ec3bde5", + "localCaseId": "161-shadcn-pie-label" + }, + { + "name": "chart-pie-legend", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-legend.tsx", + "blobSha": "aa6ca2705c5bdd3a4e2f6be9fc08870298eb37ef", + "localCaseId": "162-shadcn-pie-legend" + }, + { + "name": "chart-pie-separator-none", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-separator-none.tsx", + "blobSha": "e313ea46e768bf54d89ee2db59c8d6f519a40b46", + "localCaseId": "163-shadcn-pie-separator-none" + }, + { + "name": "chart-pie-simple", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-simple.tsx", + "blobSha": "1c90420f93ce32ecfa3810dfa264f51ad2e501c6", + "localCaseId": "164-shadcn-pie-simple" + }, + { + "name": "chart-pie-stacked", + "family": "pie", + "path": "apps/v4/registry/new-york-v4/charts/chart-pie-stacked.tsx", + "blobSha": "e7e984972554d171a5a957a059558db827e0e307", + "localCaseId": "165-shadcn-pie-stacked" + }, + { + "name": "chart-radar-default", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-default.tsx", + "blobSha": "425afde7ff3e7c972e20934b63218c537455f82d", + "localCaseId": "166-shadcn-radar-default" + }, + { + "name": "chart-radar-dots", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-dots.tsx", + "blobSha": "be84261030eaa17694843243463244a016a311b0", + "localCaseId": "167-shadcn-radar-dots" + }, + { + "name": "chart-radar-grid-circle-fill", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx", + "blobSha": "bb58bce241bf01efcb649cbba144a7dc55fc7637", + "localCaseId": "168-shadcn-radar-grid-circle-fill" + }, + { + "name": "chart-radar-grid-circle-no-lines", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx", + "blobSha": "e098f0f1b91900fc4950610f8da0d987f0a1fe35", + "localCaseId": "169-shadcn-radar-grid-circle-no-lines" + }, + { + "name": "chart-radar-grid-circle", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle.tsx", + "blobSha": "67601f06ae0e5449167607683564a96a04b80fd7", + "localCaseId": "170-shadcn-radar-grid-circle" + }, + { + "name": "chart-radar-grid-custom", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-custom.tsx", + "blobSha": "9ab8ad6127646c42c4a005ad7c369ff25b60994a", + "localCaseId": "171-shadcn-radar-grid-custom" + }, + { + "name": "chart-radar-grid-fill", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-fill.tsx", + "blobSha": "b3ebb61358b3c51528385402fee7697ae11516c5", + "localCaseId": "172-shadcn-radar-grid-fill" + }, + { + "name": "chart-radar-grid-none", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-none.tsx", + "blobSha": "0bdb7769a9113342db51b3a1250433cfb9c3fc4d", + "localCaseId": "173-shadcn-radar-grid-none" + }, + { + "name": "chart-radar-icons", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-icons.tsx", + "blobSha": "3c4eec62fb8756910bf8968973d616b918f9764b", + "localCaseId": "174-shadcn-radar-icons" + }, + { + "name": "chart-radar-label-custom", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-label-custom.tsx", + "blobSha": "bf16fa743613a25c3641593c7a60ef052fe861ca", + "localCaseId": "175-shadcn-radar-label-custom" + }, + { + "name": "chart-radar-legend", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-legend.tsx", + "blobSha": "31bdb565433854385b152710a3fade68f5823bc7", + "localCaseId": "176-shadcn-radar-legend" + }, + { + "name": "chart-radar-lines-only", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-lines-only.tsx", + "blobSha": "c62cddf7355f0a003d072a93c77456883deed4ab", + "localCaseId": "177-shadcn-radar-lines-only" + }, + { + "name": "chart-radar-multiple", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-multiple.tsx", + "blobSha": "b7d2102f9588a4b86f6cc281ae61eb7efe97e5ed", + "localCaseId": "124-shadcn-radar-multiple" + }, + { + "name": "chart-radar-radius", + "family": "radar", + "path": "apps/v4/registry/new-york-v4/charts/chart-radar-radius.tsx", + "blobSha": "61f29bb5b8262c6917d9b0a19f1e4509f228e09c", + "localCaseId": "178-shadcn-radar-radius" + }, + { + "name": "chart-radial-grid", + "family": "radial", + "path": "apps/v4/registry/new-york-v4/charts/chart-radial-grid.tsx", + "blobSha": "032eb98a9e2cab56d7b7a1413af496193477d04c", + "localCaseId": "179-shadcn-radial-grid" + }, + { + "name": "chart-radial-label", + "family": "radial", + "path": "apps/v4/registry/new-york-v4/charts/chart-radial-label.tsx", + "blobSha": "effb735c84fb1ecee61fd8bab07f1daba1d65135", + "localCaseId": "180-shadcn-radial-label" + }, + { + "name": "chart-radial-shape", + "family": "radial", + "path": "apps/v4/registry/new-york-v4/charts/chart-radial-shape.tsx", + "blobSha": "9550a5bf0f2eab53933f8709d25ca1439964ec3d", + "localCaseId": "181-shadcn-radial-shape" + }, + { + "name": "chart-radial-simple", + "family": "radial", + "path": "apps/v4/registry/new-york-v4/charts/chart-radial-simple.tsx", + "blobSha": "b13e20e5b584ca18b44201ba4c147fefa8a00f1d", + "localCaseId": "182-shadcn-radial-simple" + }, + { + "name": "chart-radial-stacked", + "family": "radial", + "path": "apps/v4/registry/new-york-v4/charts/chart-radial-stacked.tsx", + "blobSha": "71fbf5756f9811672c7881fa9d1ef87db549391d", + "localCaseId": "183-shadcn-radial-stacked" + }, + { + "name": "chart-radial-text", + "family": "radial", + "path": "apps/v4/registry/new-york-v4/charts/chart-radial-text.tsx", + "blobSha": "f10347522cd27689bd960a4ed7e5033c5659b93c", + "localCaseId": "125-shadcn-radial-text" + }, + { + "name": "chart-tooltip-advanced", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-advanced.tsx", + "blobSha": "6c55b5e514836c30ae1ff570dee3d3217aca6e9c", + "localCaseId": "126-shadcn-tooltip-advanced" + }, + { + "name": "chart-tooltip-default", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-default.tsx", + "blobSha": "829cc53633afd526f25b7982c2516ff9b590420d", + "localCaseId": "184-shadcn-tooltip-default" + }, + { + "name": "chart-tooltip-formatter", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-formatter.tsx", + "blobSha": "6d0ebf02dda90e7a688b53cdd1c8be735e192f69", + "localCaseId": "185-shadcn-tooltip-formatter" + }, + { + "name": "chart-tooltip-icons", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-icons.tsx", + "blobSha": "1117d4494cb8316edc4a9096549adf339ec65d17", + "localCaseId": "186-shadcn-tooltip-icons" + }, + { + "name": "chart-tooltip-indicator-line", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx", + "blobSha": "2d09ce8039b05c753efde134dc3e8710d92c8e63", + "localCaseId": "187-shadcn-tooltip-indicator-line" + }, + { + "name": "chart-tooltip-indicator-none", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx", + "blobSha": "6416520431aeeda2bfc170066385538b60e6e920", + "localCaseId": "188-shadcn-tooltip-indicator-none" + }, + { + "name": "chart-tooltip-label-custom", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-custom.tsx", + "blobSha": "b8095ffe6b9accbcc8480c125931db7294effa81", + "localCaseId": "189-shadcn-tooltip-label-custom" + }, + { + "name": "chart-tooltip-label-formatter", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx", + "blobSha": "0b885d71e18d581793bc2e316c3f1402daf59182", + "localCaseId": "190-shadcn-tooltip-label-formatter" + }, + { + "name": "chart-tooltip-label-none", + "family": "tooltip", + "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-none.tsx", + "blobSha": "f5f220bb1f20928bd1c9934ddf014cb72b89fb98", + "localCaseId": "191-shadcn-tooltip-label-none" + } + ] +} diff --git a/benchmarks/conformance/shadcn/reference/chart-area-axes.png b/benchmarks/conformance/shadcn/reference/chart-area-axes.png new file mode 100644 index 0000000000000000000000000000000000000000..e937f467697816256c86388d07de6cd834ccedde GIT binary patch literal 24226 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

e*g8=rrP=c{;1mRad^m{q&9Z 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 SqS=GLp*p8)i2bN-5%gb|hj6<9 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-area-default.png b/benchmarks/conformance/shadcn/reference/chart-area-default.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7897e00aa67f7e65e6b8ad28adf5b713c8cf71 GIT binary patch literal 20286 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

po~0IagrR6OaGp) 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 CtoMQd literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-area-icons.png b/benchmarks/conformance/shadcn/reference/chart-area-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..660f115bf9542fae51522df6c7eefafc680c229a GIT binary patch literal 24663 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%0ANjmM2Q&wreH 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 T{i_!Khv=HdE%gFbi-7+ExJK?^ literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-area-linear.png b/benchmarks/conformance/shadcn/reference/chart-area-linear.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6575bdbe678b32c189773dc7fc407dc70cd344 GIT binary patch literal 20160 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-area-stacked-expand.png b/benchmarks/conformance/shadcn/reference/chart-area-stacked-expand.png new file mode 100644 index 0000000000000000000000000000000000000000..53c570f98cfa167acb0c0ebf6d40f112b4d55af8 GIT binary patch literal 24230 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%0D%x)cDk;;yeDKhf-v-GI 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-area-stacked.png b/benchmarks/conformance/shadcn/reference/chart-area-stacked.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd77b34c7bfbd70880cd95655e402e5c77f65e2 GIT binary patch literal 23790 zcmdRWWl$VZ)Fl#};O-0>913*MBO#*WEH_f-F%7bg0KBv6ovC|h6w8iv1 zG|RUrI27lwU95;wfU^DGWBw!h__!i6Qp)cX$g8(~ntVZ;!g(%8#l^)Vu5WH`9@8r;E0dD6!1p&_*?chD0|EjN4PISe#a&e?L7<$0Z0%VM zD|2%imiG4c-rio~@J)D_Cg3kGkD7x6E1MCxj$=b~HxCa_H?5}kQzew7?f%{#$fdWZ z$3HkY*g88a3rdCr7k77a)1>242s->mLN+Kc@agdp2@?}@QBgudLPaIU9R9C`Hhw+p zbW(6|5i^CMn5d}o!7n==(k_B~iT#vAIdSnBNsOAcwKWw;$~3rY?zoa&;(t;FyM{<=O?;mVVX)xEGIGqbaZsK78n>9?oO8rCx(IR z*cO$;xc2xXk&%&QWMs(5$e7}X;j?yZ_@eam_6DI6PE{DR+OD>EJ{=bBbvmD~kxu*l zj?)|+A75+#;R1owq$SME%!FXm!NbA5C;CJWJiWz4#=7_4_FYo87*{WA8EM8eemAUZ zVp3A(^1a>NfI zM;CfA?wDxa&j{O}`28CP1cDgYV09rHh}%^fwts&OW9^9M($v*``Xh$Ei3SW(;3!l~FR|0FHid)Gb8$I8Tx>@1UrEczggm|p zz1~cxyQ~r7krcTn4zty#g$bVh zv`p`}#Va0sChhN&68M`+y@Bt0R~Z-?k2_iLKG5PSJw$oGh^=1%=1@xIdT;k9{)3v~ zk5kT3zFZrhl>W>M_{F?$O5)uKI?MVVXp-3|IuTzPOpWxq-gEWV^PzB`ZwzU<8Bd+rqs0s;bZ@~DnFL7I<-FcZb+ zAwzw)M@N=z?`YA*4iSx42-{y#SlhmjCNgX5H!Xjh;LlC6>GXQ7T5&#I3gFYW)e9~@ z7jQY#x0W~F-u{U|*2R3iKk@h2=}ufUA;_xB^(y?k44u+cJb!fk+O z6O3qtB@CbQ#lVayU+jRH+hyJQGckcqN%!6 z^QNZ6fBBAO-E}*H(`t?aHQKPLmwVjT9WgYzCbg>q};i*vQ6^SRJc=lf8$y5%`Z~fp4curJI zj9pC=+T*dky zty#(rCMy$ZAyaeErpN8>{?89$TNB(-Oy&m{_cYu%9<3cl@F>`+(DL&~$0KvRv@$H5*ntbxQ#r51@S<&CA*uBn5 zU?^Z61r-^3J(|CkYIYun#ehGls4VELMmC9};Ai{#%r_p)0M-pF=3Y+IVplpP%vQ11 z$O6M0t=q&RNt&oQfR*v6{w%19;K9Fp_vxXI{yRHbL~BZ>f>MT|J9sdXa~<2p+Y@fK zDw*qpBe=P$3d5=PEzS#v_pfG5)FLnq*ON~8(_f-HFo`9B$ZXR!!2H$V4JOdbh+9PD zi(4yhdT?;>*x%DJ?)ARYua9exQRc7JTUvd7WSwQ`G!!iJ6$V!01ni!A_{07`r=Gg4 z^HVCPNa*9^{-(0Caw!?n;`fT?_Lm{{R+z z@mWyNP>A?fT`)cW#MA9DvBxB^AGn#AtO0MK^egz#ReOT}8g)cGzVo17cKdtgmyXbs z3N@$vuQY%1LIzDyABJM6fK^Vmg)vz~Cw%UTi;r*N<)vQX>g9>TW&Zu~<$3~4K%nL5 zYUNG|Cc%FUWgvHm$aWF%iNG{^LGo)YO67Ap@<;2gF&`Ctx#&%`Z9&RCdBDE%0z%ut z063A{<3gkkx@vdx@Nluy+xsTx614@fLTF1-T%5~f6q$h8NL^7xM1-I=?TSy`F3Hfn z_|sK@v7Oy{=ik@!Cf^@G1X$%>`R=y{Mx@-_-p*xQ>U_Jcl#WdKXmM2eF}vA@6E%E8 zzs4*iGm|_6xi~PZ=PP}nu00A1`^i$@C+@!*zY7#n1Lf2!fPm-raygh!!Hj%HL;96mCJK}pxwKXs=5a2X_Q>;+|Fi5Y~9O_v03V;W-B{2Kr>5K)r4xb*1 zg2=rHW-Zm#ad^9oyk9wWbDJz29Y4)IlY8D^#vb7szdhlOwYTNx_8K)ujyd@!FN;&m?`x4 zD%roz{bU{QP8LH#LV#h-ZT1GSKZTWJQ(s1KuLWy~OA)~_hJN9HHxZc9Z83q*7K{+F(n7T$MUx?{JwjYzII zl3}gRr@G!;lep5dvX&P>1fOva=0`yO2T8eqLhU{JgaikpcKrjU98j>y0Gx#a95)CA z%l3bG;twsfzJY;(wl=+ZAOJ1vJ?XS?=XrP1F>De`jdYEu9Q03@K@{Wi8CC}O;%guzpGudR*0 ztrMG8{`2;JXz&U)!#iTFu1t?Bq`C0xy|Eux!*l@1jJVxcs<*n$1PoB^j zwUsx!=DPjfKU(2z?!~Q7aw0*?@Nj>Bet~o#obaRLfwKPa1h6`q_y4G4r1Cl*`~iab zdE50kkHg-OPPIOT>og++!%kUzQWDroShpyozXm`X35;49KhB!HA4iQUTF+VlsC2T{ zuD7)2vhEpls_5BXQGs?%1Msg}d$<>1wE?@W-Q|3(2v#{Yr$$CW;dHr?^{visT@Z)y z$K8pDO_1CR?rmxE+$wRHySJC4eR*>uP8i{21^7*Sgqe7|&R1u^)89Jg zR2kNO8QbXg>jYLg8Y%CF%*F5Hx$<7H(8Gq`dt$CErsI|7+Ki0X=lk5D-fN35UlJ1% zOlHgI22KL-4TUKKV9?_HKcl0dFw)a^>1QSO>k@ZoWtP0HI-jjHTQ72~e59nz1{QO7 zcegtk`!>Da*hG}J`)-0(i}R_a;SfMx#z#g%LqfXcD9lwTH|KXplfb-8PO`mvqxKu%lp~nA)l-IthZo-d*g=08 zdBGzQaK~{7wGbAG;wDwHy-n$+)&2YSS}lC@BZ3=+6z4Z0UX86C#jw}gqlG-#)_c}a zB`rxw$=7~UuO20UDfptW5D0nkH`rZVb|nCeO|P9^P$fAXU>>F)Hc1Duy4t+o9`}>e z|6%-m;%Bp?!L8G|j{$JO%a@|AdY6Z?^74HjjemljFX)+^nW8hjo{(03y^TrOyA63%H|5tnwOcA?P&icYoYXO8pzkCXAMS)Psyk zDr#_V3>S3!c`ln?=R(*F-nP#jn~~#{zO1mSr{7ZUZ|L)Z6CQ_#mVvaUcz+C)lx^GP z0I)B&kfx`m`s%oVi?)whRkq{B_#pLK&RF`gHt%5R=V%1G6W#Zjbv~c9y7I_#fe_HU zKh1aQ$;u*gQL)v|8+i+8b~NdMQQmn=q~h>od-uNsb4J{9Xr8&^mKEDmkwuoZ@BOm6 zc+utrd-bbtX6J|Oeg`n_mX`ijel`63m?3}f@05>|gI+-Jz7g$utv2v2$732E$e2bY zeg|w495sAsC$6cd*ZcKBkSJ&Pkkl9Br5j&?ufF2*dIW%F^#|i9A};VYB(L?dGIcuP z5c!#wX`Ru!dIr<0`>NEdt*ia31Xow^8 z4;=_S9pqMaJTZ`|{;j{*>^4o|vRMLlJH{Qk_X|5MdZxTJc~)5N`Sb?e^vi;XAN(p1 z(38Jd69yN9e_C|mQ5Fog!38o0hOx9DmZP;t&=;&y2|l0H0(4~6<9h7DryU4yBt^6k zy){!c?d{yJT_wnyp&(pF*0SRz&=^zWX}$mI)d5?1Fz_SWgkw@k zQe1o|XWEIQQ<^hk`m%6>p~g*+PVgIt2={@)MCHIXboM!CFtEDpLR4B@Uy3@nK~hUt zzT4<;TrnTvLvnW2K*9&L0%Iz4EwrS4Rq(zUI9!Z*A&`x87#r*5mScR1m{!Bo)P=}UMOL|)$5H71_zk@U>CrX$ zK7)tB)${1a4n{}vfLBVWh)PrX$5iV=09*(*_!NA55CMcGGGTsHa`59)3mUa>RcZ*joPXuvN z7<4TRByCLaSg;e`2#Ow_vUOR50-ZiKi@0L_Mgbs@*U$+NU*E?B zHJHiK77@q}!*$HYqgwuDWRHu{u9r|^q<%ug53M*b6S^^v%O-(bciifA%f8Oa#j zdqd3rmfdkFqPdK{O`G4VJpm}GUb2*uU*^I?m;SLq5ECU78-4KR^3!@#zZly* z0rkKUnNnoX@$1jA=*0ye;oHj24S$O+L`GS?vcVWh(@8X&HwRr2EfPDzBROk%ic^fP zCt_uVT73!yeg{!e7_PjkEag`qB|3WR($h0zdW}ddkSt=b1%@^?1x$Y^ML-oYDb-!n zoPpnNRX1zO-uvUHJ;JB<%kRI@Br(3jdAfefrWH(4V8ZYayp;L6rKgeXiPNEtldSft z^6d~mD`d!g!4=hYu1rT8wgZSAyqU`EE6&R{3PL-HdbW=b+fhbtySVI5Xp?-iHto^T z7~-^Z87=9-UsyG}>7{P6Cf$e84$4o{rej`Q6 zlj8pZdYK`q2;}v4p6V)z)hLo)^p|d=Uf74s3y7;?S!?ExGamK0A>5Zx>FFPehXqz) z8PlO;;eBP4`&A39xb6a#GC(!YRQadKydSs(`~F}rpwcpzM4 z^R2P-^?fFZIPHLaOfHb|Z96PT1p+!{Kop)Jl*9gbd8am0kntrY@I>f9iq!2LjS zXGo$GHqo;g7yP*(vc9}f!;54T+3JR8m4xq4vsY%mPy2=PDN~L`*fA*AT}N5B5uA+L zmz1BG5&n)N+WXGhg88sA(<6wvbNt%@2F*r8FKqPVv>t#5oz({4%d=?3rnm(@2Wbd> zQC>&DULT>-&=FiFG(pPss(G?hX3SJu?|i#=w1M%v99x;k$E8lpd!yE7(HLD$h0UaI zqu(k|IG5A&;JEa6S6RM0_#(a|{zum;4$2whKs!fKVl@OqbT$}**RKo?@}dTk@x=J( z#_!EBMvNS-QrBAnre~>!XiOXh&6kCN4Nz_fH9z_PdbQzyzdrGw{6$-T2f!nNiqFvH z!{cKJ=^~%cDgO_kE)p5S{PjP>RR1rM-v5^_g|Dthr}3`}7x`Onh{qgH&bhdSsXR6Z zxwuS4XlS*B=ytwH_ybcCg%Q#~RHpxfY;dOkvs|I_q;Tt-Tok0fV`l3kNAN;DUE|CqY(K3t$T`5*IlCI2}nAe zgg~D(9f>;^6uUQ8iJHQgn@L^P_Ale^ReIIEKr~3~6jYdxMNadS>VS;8Cz}r`=71x2 z{?MEJAqk6tX#cv@l62FDkYxlp+msX8BwQ(T<1$ohx@wVs8P8DY6K&;_3MEz8c7tAX z*|vrE?n@7cdUS^pSG^{a!$~sue8w&uye6kD@4k__=8qMDU(Q3 zBxZnxIjLg|wLGzB_IQ|_HZ5@q**$qt7`w(W(s5V5vj8fn^*DNeoNHV=k;^eF>O0-k zvz~a;n57(cuR4HP9UDY$8rw}6Jx-jp0kn^RMwe_@6h&&Bev^Y{*-FI4XkBS-P5ic5vG1@alaN>Y60vu2mgR_QC&#_`HJC$E*)+EH82 zFx=HCB_&W*X7jN@7tqG>MRU@Hdp^ee(A{yhr}=>%9|S6ig0`0HPdI{#qvDkb&Qz9< z4nLwcI#b)%2Am{dv(#ZmHHG=&%W->ai|32m*y{Az7+x^?RW`O4`=Ch}>@VBSD!{i36Z{dk~?hy>eoJ5p-4%g(tVqkwXy z@%oq_G?UE;B-_?uZ4>f59&i0iNjIAnOytb90?m?2a{YkH<44Ud3-rU*J?iPk{-^$; zZ7}P0qkqUy`(i5$3y?}niZuEHCgI5q>o8a)y;$&9+mqgFM@@OzIMxkKFq#8qU&!_6;cc!MV z%#XMDmr`l6@X(8kpZP$qFdgut+YZ(;)ivLBV-Zqho@0VQNrO;=wf)ce4g?cyU+FNR zkMw&ExG^xBx!^Ad%XqUp@`*_4&A5S)@+ulGQS8nFBP}85Qdmr8g4-=&m37|R{t&ml z+fEv*2N;hf1bU^&Z!tER?lML+@B)LUvGi$<6Mb6bzn-c3ZMx{H3g3Xuf#*KiNtQ&# z16<6MpzD26nF>NG2`=3ZVxV($`e6;9Sa7gDU{&bzbLGO{RD(Yox5YE8W&Vw}8>-=M zSMU&<+3QYF0Vf?Ae%oQh%q9mIFg*N)w~m{>uP05Y5idmAKKm$4Mu;361j6rvdW-VZ zQB^IDY!*Q)6$^HC8*)JcZhb<~RhW-IJcn~gM!BN}${+`&sBF0L2>T{aWKw8BW` zmS{wWNl0<(>pJum1hGXm-tA52XsM0HM!HV2#k}fPqy#}!QH>ujgB?+0FpMbou}&Ca zO=kwMF=IYL?xEIFSo#wz=gAYfo3WQ5(Mm1&tth4K+eE)8-j0T`G(DEIF-ChmqVBDW4HcZg`6<0kH9 z6^nrraNO@V-pgPevTnYKR+#BqJl;j;;R4m1Z3n=vzj7l_)3=y$`)mo{0RR2(r&KG{dkXeoBj#Nx;I-x z72=gluAgCwn)OeMjUQJiN~Y*AiHl3xFG9WTCR=i0aenc@*YOfp#6!f4q16BAlSC5V z#CEyW>{Tp7#XAzIzBnc(i5-Kf&*pP)CT$+k2ahyKcpI)NhI{PVBnztH(?Z#ZWzb3L zJ112^xd~O}Gkg864MgDKSs2$zLBbJ-S5*`zG;AYQr#4lfDaF1RYArdBcY@MObVl{m zH(w3$-_E()=7mnvqzZSXhpRT8w&0pGNt} zBy*&r+8Jj3;G%B{oT`T9h}OUu6wgrxL@ z{S0<7O-@dQ4)_s8Wn0tp0`h-1vF?8}s~N2~zJwq~Z^>TXy-Y+U6^wNZB3zUSULhe8l}KPX zm6aFjFEFx)V^7q{0lhaV@cu5BRXL)S9%D$hwO?-AeM;FehZNd*$DW?GN>W!?&-eP5 zmxpx1RQ5nOeL7J~UWl{Ps9Q;*9{FvGAxvnt1fQW&MNPvd@~`gYMSLj3Wkax~r`s-6 zHJujXhQBp{eneL8L#-{OfAGXo@#J%~Ct)}U@<3V%(ZAhl17fC_H^iudI-b!-d7Fp&s}=ALCXlG zQM`*O4hR?HjE;SU+&c01^&LAO1UICC&oKBfwi^-cM6~vei zuPJgU1ooly)l!KN^n5@J0FW6sL1koY9vtOeV-coH6NlGpJ z#hw|b59WxUVGQZNh5r?$VdPefCiwOpVM&Rk;!derNY=tFMnV%o_%Z2hU@J}B7>_yB ze*DOqJQwURRCPDj5i9v=eDS3v_cst9W3jqXwA_&9y7TR|W;0)z-_o~~v>3GxyRWcU zdYxuCWhbRW_>Jlr^w7iRk-9nOn#qNU?X64DQ2=JVsEJGU^uk8)$H5Wg@54 z>_+K*7h7whGm^-RX5NWUg1j)Fd6ip&O4Cb*%s=ZuS>P12qmw!Nk%%;Yuh;dk_v7^- zoq!SLQa3Dz+;@HWP_7;%6^X*qF55qE8z zRX93*W!PakHb~l+hYp|BPhzWIhmH{=ToO^-8!c?zJ^IN{g_s^u2TEuSs?E1*3SE1v z7Cr0wHpP@LT)rJx`$7}sfBQwGxvg2_J<^~QvWi2z=5PfnPjvqH!Zf9LI&$1PC4^BC zyK9}chzbUahshCT;+Q2>Z3Z)Vzy&jhmW15 zzg(y2ixy>uAD8{&wX;!M$Cb1ZXMrV+wD}fmM4R4Y#x{X1Hnx`qot9QP-qPQj85?$p zmpu-?KDKufO$~EL;;HA2u_-=6)Pxqa3@b4T$EXkXgTGMyl==Aj9wGs3^mi5CB(A0; zHIVQ3WCGHa6^nVv%{4=aw#laq;n*g1zV|`BVUF!fb7c-EIH9T-;jbkX%N7-1@|y)s ze~!&<89SKB-XR@$6)SckVeyH(nsufTTHLwf7k8H^7I5j1Q+DIeM^M_?Xad-h)UT7@ zpFQ7|218L=3j9F$4s>2lyJ#nFaF>7;oa!-}{fr&+mSrTX2UGO~q#7#8*0LpsV$2d< z&&IDtn6D8p`}s6Vqm27;r<1J00$lGW%?cnWwb^ zV&kU;<6a7PTH4tyV?Q`%-9oo=)hBdZV}&h=(bS>A)ZszLRNVXf%XB4g?MCBhF2py``{xVS?t!5 z^Y?1RABtmF504&VHs37gZ;FH|YtVxbH|ju64bhm^g4jC2h{{5X`6WC!#7wz-?145X zW*rP}A4AXjCWI$Mmq$B`C!kOaHkb`hG{t$AU?|jo5Sh*j@;+(h;=05)5P=6YDSDL;A--jGS#rD}}QiFI! zF}UdQPq3tayw+$nzfL+mELa0o%3(g+UHR~AG+u1c(i_++aV-vmUm#49@E0v{Q!K%Q z>~y@uz~U1}YtNys7w!ZHvy60dT7(#nGv-^g=1 zinb|?rbObH%B7u>*)t*xc^j}mFnJbvPj9#}jMXksb_xkd1_8n0TbuSz7m4jT>YgEW zVp1+fi93n1j?u{5O>9V)2}4kPr1T{PiZyaGl$A;eMcA=(Gtw&g$g6DLhxok$5<>|< z#%<6A69mC{TiYUM+G|fjW>hC5=gq&Pm+YJ$6-&qHxYHC$A#u^2@hQ!gTDxzgfU#W3xr`VNA9hh|I`5;$ZM@FvJVBOq#^IVUZXZwZr2 z9G=+&ajMYA8N=||xl>tx>^6#-Hq1C0Ty})>W++mQnibM`DAu5HlFc5m6BqO)spqWN znE%Ny3*XF67M>PN6ev40?Ed!vddRb)1Lx(}2;blkO7;Z@5Ht@!C=J zJ^~X|(+5SHlc-`|L5B{Ko6)u4OBMriisk<=W%B-~$xT-j9=|Es4;9e>$h=^C9Xga# zLchFAynu27`p(l3VHc|7HDuj?n&HSgSMT7+*;el)NQCSC|1&MIz!^X1|lk%0^h zgap+XoVPz3qgKNz5erdY34D-!W@~Qh4EOA4-aM^3`7;_D1oKZ`@J_t1R+bqjJRjE2 zv5d$G7Zu`zGdNzU1jehjdrg$nsG7Ehs3LPH z{}OgBkOSFFtLDX7yXS>QP`84N1q~+RY;tv0$)=o$!LUx^O4eMJoN!i**B?p6Dqf@H z6`@v+x>op9B{{JWUcW`E^cC5&t#42auDmnq!L2l2f?HE3qBfJIQ2n$FolieSLp|^ zH(*|mQdi2KKCaWKZh`V0{Fe+*y4q2Oo#E@TTV?)bKbKX%1z3M(VZ0m8LSt~Bv~lLu zk*J~58L^_~lArA}$n`H0L0kpv)bL3}lvCiUq=NAIq)N_v>ObUh2_CSK$R%NQS-I9rq!Wx-;LNlmlm^seG zAWsS5kkH|7{fx?`7s{E49!~Q_>qnGh#P>^0=1|l=Hpvas9y3etv!Y$e$V^qfi%NxP zuTyFc>8CoiA0PMve(Cc3%16UWGNi!l=Ew{C_0WV!X$b?nfRwj48ud)gXe8;V^2&Yx zv*YHDy8iEIfL|U$r`So$pT{n!zLwst{d@-LI_I<}|`)|LFypjQ&fq>!&a56tUFB8(ku}xeC%agMSWT{J@~q zezW88p;*}Ow~((S}$@m_%kPzB!Ts^hp4EZnLIk-n#NFZ{?14N zcFE2uZaIW|U>03dS2I8MbFDN)&Rk!K5NFUYKduMLSv+{{+<7=JgWoj1zK27{MIAD_ zdu3vIZwFzicdB7lnIlV_f*fKqit&cE0x~GPhXcL}++DOk zc&x#9)+Q(#A!32f?olHC1x*WK0W|1RBF#mjv537_D!Zml_cGpMvzs`SjhfJRc{+n1 z7UaCA6}pNEyP#r*H!{zc*CbwWvu%?7D?d+kjyx_NCgr2<>5*vU;rD_UcV)#dqg`ko zsYKC+6i6u$CMiiLEhDodT*e(iU?NO*MIM<&2JXLCrl;A!dSfe(>#QsZQAW`nOXVJI=5)Es7r zMtLfpZcsi>&=~neWob06L)9FX2t9SB(dhP!M2JNPZYG@J9d3r~#Pj~1%k$zW`xte& z`HP@yVBr_Nk#($0dtM{yIu!R$qOHbU)#L2(vn~;-=PvraiRT$NsG$B~VK1%a0_Vb_ zI9K?G;Xc75eGC3?)r=-k%X+pU9xXEbM`o5r*$ufalOxP=guOGtMD;N?bmqHW#lV-1Y?A=CE5j7g(`kk4a@ zB~~**Zi_4-C`r|;v-YXOf_H_(lh(x*aSlI9ndR{LoReFDnCy>s6QV+Ra05|`*JL%=ES<{vpUTMb*uzT^RWAz znq1pIn%3&`Mh8^JRE>*veri=`A@1?h$%u&Of86!4+|0Vzx>O?RyR^Pl2whR-6b)B$ zDk~+QneK0Lg|ZXS`4CuAmZ;S55T7)!aArWY1BE;)&_L_9r{!w+sp^ZXMaPFR2>rCf zu1MvHDB)CbgI%jGC4!m?^N(qMrM(~h{>IBiU%nR-6$+-uKNHN(dLbAXli@M_7M5zi)Ff+qH{GHqPxow7jF|(or<`26lCxiP{ zlWt@L^FhPalpB360?oJQXA>6m#&e1xkCqOksH zqigE3=`6*uNbTnI=pCm;1YHe)+hKj9&TYBasUL^#eU}Btb~E3RZ| zYK5neXR;-+m4>(Y`fc@jd?uTo=aFwEsLt$mi6YZuPi0gM7^mS&6w8j&OY18XovBBk zs8m&1fb9B%?2aZ@?QC{^iG=U#EKW~I5B(VzHT#e&oc`w{ zkI_<)oMUjGl-xZ58ZLK!nJR9Rjzob(P~RAy5$hpFNz0S8{!Ehvzc?f8!-)y({^Gg$ zoU)hDltJEZsi$mInrcu2*{WCqN+i0(ONaWcO{p5((Tv{fl0$sbcvh9XQ{k+a9vnmX zvy1Y+mvCoaZ+mB|DJs+49r*FGEpkyua}_4uaS@^DVw!{_N2Z7FtniT~(_t1Y zZ@XJNx*7F(kgebA45l0ib~YcVW$PIa%IMTdRFIC@jjQBV35pVIb95IL?R%To=z#BO2Z zqKcuhfNyX_Vz~ z2zx54W-pmG`Kl|9YaFAMMOAT>aJ)K3D*M@d4TF0Ott|9Ecz;Jh$T_*{B1vQMbK)bi z(aWcT7R>;9mdl@mG=eWj*G5*M%j?VYdrGa1h2jV$-kQ>1$(5$_KQuf}WIv{{`c!}M zux);-z;prS&s|)-RPs0YQ`TLs&bs$a*R^z8q9ip5#aM|IxYu&kQ_-Pp*o0iYvNT)7 zV$`P_SNH`No${zbc{gjw%9@Y=Qx-#<$0s#=v(B%DLM_U}!vMYn!ryoYotDUY@67^k zDe*%9FJHd2d3gGK* z|2d_~|36ee%u_>a9%w3vp{lV`u{?*$;H;Ac%t8{Axe(J1yD%|PQ7iS2rGJM1-_?%) zkG)xivCirLkqh|ml;>GCuuU~JSAgII%d#G5j@?Jc19~S5;m_}Grj;^3+lwB^*VNQh z5qJX{t5IU_$6frDJ~?~M!$Y&!A_3ibfmuzr>C&uHe8 z)z*7J8G^CB@N6yZ=}9)DD|Q`I*T2i&w*&9CEfzA7sh}HJG!*W2@zUjGgF-RI9p#ZcyUCe-#3r|oR z(D#&A}`4?J9M2N3O>n7WNN*eome0&<`Tpmz{xlYANgR3Tn~tS3J|UwbG?9}=QW z)zi~cbucwO&F6UFW2BVMn~6h2nNvDg;%Wk47 zKzO58AdhMJPB5`I2we&a>?etE0mvl)nM;Tl0ZXgXF&7}fi6rIQk`$Lq83v@fv@_BF z#Q2Lf{Ulx5c})^VgI9o%Zy5LrFCZz5q8ChD2jt(z#v41sasBZt|GF=!qWF70c5xvH zMx=7tv}^_v_thoTTFqBjRW!r@-2sGC)&7&X#6WBLO0z@%+{q{SaCKqt^8w=jDysH= z*hDBh{7%I(UuonGwB_e0yaL*6ijV%km_K~@w%HQ^s1HB1Od}y7F=|!JG=h1+l-qIs z=3(9~q7lNP;RNhG`nN|57gtwU(<8_2_iKEBb_tNicJ%d$zo7I*NFUc*&1X1_^SH(< zQvt7rxQX=#R5#mNE82#J9qzYB8ym(uBLDP!rC;;6Bt67q`c~wvVeqyAWji2y`c4`! z0$6yATiz`6*7EdL+e3weRWk<--9v`A{@vI-kqH9jn*uecQuU*!K4J^ZmJy{g$}(AQGqTOp(eS)Bx^FNhK9m zmBDB01vU?+YX7k?dtf0vaPsr(7h!(odwzP#DfW>FvP30U_vD+xXXJPRXMVImGo_-U zg5?Hc(i^!N9t(7Z*)hW7D3*^43mRfBukd3c)b);k^_9}jjn zDj)tpVUh?Xf02bL9iyCZdT%Qu+Jve%k^L;pb}T1a>txNH27rAChjZ9z-uCEF?I9yDG@0k zfT`ijGnC{y(rG~unLFZqb$ThnEU@+bm^p4F*!6$fqkPKp*M+ev#lXI1)~>=gbfp{^ zFFy;>)iE0W{oAa3?$gUMF%N`#&Wd2AANN|Qe`ZGg=7!C5s@27=?j8{TG0dPYYzzo_ z*VQ}LnC=D?2*?`hvobM#T37JqsP3nlK_!41Ks2zmWpSSzQrACP7JA&lcEtOq&DH-W zwt14IzDY9j0^Z^fbZTe2{^@)2?CY#|XS6micECl@USDnx zRwIkq{A4F<$Cs3q9r1yNy{PVLGs$ggXwWQjdb&CE+vyULE4%IBnrsB;63`&dxukO2 zaV0s<5R_G2{H!ZszOe6K$U8fs6n(I_DFB+3jn%&F{Z7G8Ha^C1>IEdI{WtBb;W?Yg zf{9IiTey~FpNub}Uj5JoyZ*#BPtp`9eHby#V_kX!G?Y(jq0h!USf}jP%E+AWQfZ6e z!{q-k|3L~6^w!nY)zKj|MInwcWo@YR$<6(zRI;>=F-e74Zbs+7fU-^d^bM;;ReLP^ zuD?@09w0P|xR!9Jk~t#0-ftdtO4Yor+mU=Xr--Zn-YYTMY}DzcJtL|h%7>Hkv)}wN zfH3^+?ce(&fY%tjac=pwnD!%cU8lnSmtxL59O^#Y|Aa`EWG8!;C&rdNOUodY7}>HL z9=nh<_AN5jQc{oIOd-3+zROxsgtBKBV_$|4&ON`se&_si&UOAdf4DBpb;nGnOLwUc{LM!Fk$?6IE9_4?@0c5rn(QElVT&p!#s3)h@}FDw|JSDfk6!Sc zAuBE@C@3moReYYBn)>RM(aB>8^0L1a?`Oan0NU z!*798N~$D0{FKaB`5_DMAD02t;Zd74TJ2$dq7LydPHCH~hK7a^UWPIQeeitHA*5cY z>A420JtiT!))n~c5K{3cN6jZDCpw?IyD@9y&Q|(B80qXjf*_tTW~|hfBKa4DOgfYT z_SSTDb-xdBr^11@p(#YwcJs+$GnChwt-a=xiOEUpsB4cNRSX+?d6hkT##n3tAQJ4m z&`>g&yAW>A(KaitsMrC?Fa$)DouvUHf<~j@aAmUj1Q#pGrQkN)#TOE%4D1&@cw!pu zx)|ox)b_?9pfYJQl5j!!yrLEo2?-A=Xy6mj;|a}dR!)G8fgn4P)x;vq+SSG7Tqj_M zj4{h2<)Slz01H50aQkADx-kFRI=M4`s@VN4XX!>J@p9M_o%M{C=g^ zgzU2E-f%*NCQ>mVX)amda$ZO~0tl`h}mGF^GR@*9#N0-~b1A2>tcIs~Mu zZniW3t^_*8`+cYosq3EIh-ye|c5MlW>SeUg!>=BH(*3x4^k1NpNm=COlICLw$o?j+ zaW8HaKoDG6;{!N=|95wRqMN7kN(@K9A+NCuuLCn6!hl9oyOwMg$G69}J11LUt2B_DEp#EYN%L)tWUSbG?e>HT} zY=KafQ%HBDK1&_Tz}Em&pFf19PmO%ok2bre^ui({xJ1wtQVhVYI1_e@;Tra409?1k zCNcXm!Vm^JPw%;4ta;&HqF59oU+3z{AGlBJC&yBpFU8A;R88 zy;hhEAL%*_k3Ze0`Yju_3U7@3OEp2+ZtLKXBdNXs(IkK10ch4FoR;X6_2O|g{gaZM z{FF_6w1`Hv@H0xo)+hP}4V5sO40E+3PR@Npm@9Av%9IMAnV`n-Vy+^6R!5D@XbRls zBHp~9V^z51JLsN_X`xvL&_~}ik|nz^1mej0YxwH8eD>M|71k2?v31xN<7pYrXo;IG zxygS=8vXu5f|`Q-x$0s676}XA>Bt(Y=!7OYLFSPYAXK5JZGLj61rPRNRVpYw-<$Ux zWMBg=|HdVTUK$~wZr*CpKH1hdd9qB>rzJEC5Y_5Fochi#X|ee0S5y&O&y}CZhAVkX zWm!PC!M@<}xWF4pfA-Nwl%Cx^3T^}cKfGsGH@o`;;3#}TtV$a^gj$Auy z#%LwysKOn=-tmieAoNpPPRkn^J5QlxgvgmOaTww7-(eS(v-NJg(qM>6P}xHyhuuU_ z)EWPbJk1_WL@URc81adEOqZ}M_ZK5M%`(Cure!rg(&?z{lz|^%@cjWpUTwh6q5$F% zQy3Hm8BqbS^T$?WEC`d^$x|{dB{`s-R2Jvr~#YYzvcBV8Er^SGJIwtFS z(vM6s%F_Er7fFVDEF!B${qp%@aDi^H`xM7i4$LKsD*rS+}94P@o! zei)LU%zgWoa^kL>2~&X>@p+c=7FD)U8Qw+kTyAOa)fhIc%#@2?F7AUiPC>d z5L}XHHf*`<&=WnZJVi!E=SX4)=4rG${Q#m_l0In`Y(}RCuMEpLXJlpZvp6m?;v-|N zVH)*D+8xyk*!1+?*EscUf6(Nd$5ue4?H%b;9L!HNqwe4E=2$A;^YCDbn-wGgeuG#7Jg8PDMFo+R;KBPLwVahwRT`yz z8bzvnkb>r)0qc!5OlRVq zwb%_yMiANgZCI&JC6rBeTXgL}HU1$zBcrwon$7^zfe?^jx(f)OHqZi5&u>f#@b3JU zRLRTRH7+#W1Y(EKuJmzymb`{%P4t_Y{pl#aPI25!`)!*BPIJ*Km^EabX(Jogy3^?_ zzJwx9@9Ks#!=8SSpp+SMa>Xq53#+N|sF{0Pjs=pK3JU%k#cCTZ6u{H41h5r2F+X;0 zltv^DKuy|8WNTd{tE$+z#DP(q#D3D+vjRiu8M$?*FX4S|-*DjWh$GWQQ_Ch$<@CuI z2N)Idf8wbvk#AYTbyMh_BNA`Eor1Q#Y3A#DBt^KBsm}AA0ER^PA^%EIQ&zZV$J16o z;YEubK*uBeI>(#9#ieHNW-wK^A8X*$gVTs}=_j1M$(6y}u?YekRWA6{+uIvrpv9Q= zQBZNvj6JD@a?qnsYuZj-Qa+-C-hK!UQi=G(JKS8~Anh+{V_XuMbM#VAz1Ddk2Zk^^ zIl~lNpuG69I8cYh)3du}@xOW(S*jLBFX6_Vh4=%WlTD#nh;G4|;kPZz=+rYFbrt9Q zzYZIh-mwNs%|h6BasO5{hQnR65r;{2VUXisiYLyNJJU2<);|`wtAB{2MBd8Y3mCG* zd~X(Y(X9|hbP1te3HIz{$xEiH<7h;B0b}`Z**|G%aVG68?gj=g_PaHVH+n?xrd^#I zo@QC|FaVb;1TCqU@YLNMu89| zv+5a3rnNaSrS?to!HUi)-M7Loqtuo24cY}Wb+rdRly3}LjKfiWp4F)>krQ4_pV^1M(>4HDw#0{y8sZ4Y4% z`R_23|7E=BEGR6L5EFCS&`TEWb3ewD@|l&ZWm&)>St=;5`%I9l{`yYWk^Ia7h**(} z7qLqhLkDv8_%wnW_VwV2?8wZ|&#%L*tNRcPx8>wE#lUu2f!c(J(^7tDDIv6UbmNTy zdoUaTKeBrHvZCCs*ijm|d4P&SRYJNf5&!SN$n(BimH@H=H4accAcbK%SWPG?DW@K@ zxG;;}wP^Gwv4>#Iz!Z+}eH}UmabMiFh_EnKD3h9q&Htx!&EzoJw128O{aFqm6-x$ko$NI(^BLj3_ueV z&M%vIls6|ZlR)!a1h=j;OQf|wFhEl?vMFKgvaIY55!N{^W2RbwLI$l)+%Vg{I-$3l z;y9j((W$8^kRB;~u{10F?_w*sUX+xU_Wg17_g6`2s|lAevnSb`K!ee8qaR) zg5aZmbn6)fZGJ8@?^e+zXE(O2Jo(HnX(0cVp zY*evessOLZ7NB8XK`>s48yD7q*7V|`cqdj#T(07w+y(+u^i)@a%@qpwX)snvX2tNW zmOIf)5j7+=eZHcMSq}_nRwMNsZ?FQ938xcli?Yz}-G_Ce{fB?!IX0Qxje)h`O+}#D zw$DZJ(=SMFBLiaX+4IXMpZ<6vEdgyL6BlD^gB*mpz?K-n!T4jsPG(heyyw1CxF1{3 z%P{TfvX7|kZPHu-8&$@P$R*OyD|G+YmsCgIiqmmo_?K>edP&X0t$lhwr|_lr(wjir z%4_J5GfhZzcB8kkf?c8u&kz(Go2C9lfCs@!WEuE+@1p>VJr)N59j~ux$|`jFuQE2@ z>+3Jf%`Gnb-!!@-ga_{C;pEAYbtC@A3*p;b0ZMg!zg+=`%M?bW4n5pm6-T5|sp%}} zBlpZxB8D`_ak3fGw&6|l;G|=X3hJ|CIvU0Sjw!Z=@aRgW)%x z6fPhPoWEsif94^}weXd1ih^fRb4xQs7|)!X@U7)8-(8Llh~_n((_8c1%X^u<57>4t z2EjBqGBQ%bW3 z+-<44MI3;=c2hl?u2t{m7ZhJF72qc^?>aLa=io?48mS8nrh+F(>oks)xFCaW2il;N zy^Fp59C$WQM6XrZ_6-rHeP5yQT1A%iY=2i*=szhZgIPfP^z8RUEW3qgn9&zAJ_k;E zTUFL7RsBdI{vux7o{Pfz@1k_DB>?D4<#2BA1SA5`IGo+;vnabt>coGxV9}|Sry}O*R`c!Ym+XnxJrkN`)qV%Kj(+Id?tC)mZ&nv z5S*h=hv$t0?G?3DNR`|2vaTH5-gz5-C~|zL4R; z!SCOTmsifid-3o;W@`F>o0#j(+lkHA=MOUv|mwSUXY zg8~C#>kDoL){Xp0LtYSKz=S|8os^Wcn51}H@E0m zgo=YC7O&ZnJ_g;XiqGNI)fgl)BG-{3SKUP^RGzYQzI-E%9?#OI9bnab2{kXc<6mbWt)wWSq@q~V!QL*z`>UZn+Q6N4 zP|DDwmCQ}O(Pv!Iu#MdxlT1oc;-#z3Jjzzyj%UEa_M84da^e}w#Mn%Y)9$pJY31C} zRlG*UmxIN&q=&}F#`uSVY@xZEXY zj|V%3V@6LWa2w-QP1U*_J%J+p^(RX|(b;bO&D$Eu3d=)UV}#YG9=~PD8~H8ah5o(i zY^@8ANpI)CJW75``RZ3a_&%c6&m|^(j9*IlP=tD`9vh;u=%WnZEk1qP$kixWtbp9M z(a@ln6WL>d4%v++zs9E=#3yIJ$MrRa+G;dgHIxq8L-9?-VN-?dZI2x?=s6T&{_^_r z#PBe(9X0s|{F={m{Cc5bun7fS0vBN}b#J~}tr0;tnu=0u#3=;7U!A*EYc}`{)$IxX zlb)Ko?7L5Zpv!8f0H31Q!;nRUf4#*DRmMbr`0k^B^Wgq_{CRAAGWY!^Tw(_Kdu8aS zB97c|ITwhbhe9NKSiYjKGDAMT+F>jBu?YXj4__Krvx2%)^TFh{NG+?X&Fq}~idk2u zIS;4P;d09y zdK`x-h(GnYP-=i(zp{MwNyKWp()DCBh(^ry&u@w6ZvxkcGl<%D`Np(~>7WpX9{R6) z4JcUsN5=`{Jk2uKtDOp_!(!T>0pRZ04kV3stJV^1S3;jkb|$H+X&A>^mJ6-L*_-tJ zim*f-4=W^si~O8d_IER9kiXOHaXR7aUcFO3 z)wy)kFT!yXepmk0!FI_&y1eB~HQ(n1w_PFrSO{EPqdDY#^Bzx?H(kNguxZsVXdt^ zF*7;p1tE}|=!r$<1Y@wx_iB&&DL>~*1Vrm_xkigPS(OVg?+Mwjey1;LBhzZd+MR1a z4NB9_RN5{%?o19w1;Y_B8G4DfvTvTUMnyy@(RTbXp8k_0>FY}ii>?=b?$aMHVm~M- z+AcsRAl(yrk0il$GwW>DE#!rJDBY+*TftYu3t4J@vp-)$@kt$$m^L~$1pAvve;?#TDG;4riUA>Wxz17u&MJV|7 zy!Y>R+1STkf|4AtpI~4cwc0o&cne3j#Bv$7f69n&H#&mc91y7`*fif=KI0h>C62r; z0y*mC5t^&_xZ=K<-ygRp+YH1QXOO%dNpY*N7e`>uooAzGeHok@wiF~F$Vmg6w(T&! zisQGWESY&O9lVTC#nC#XC-Z`q0nSK`mKEUXj5f+g)xkfml(1T$j#M7!Ek5MX2FHR#U^| zvlEE}W|UIi6dg(@roGRQ_ocRz$@BpanXGqp)?rL1ylSFiWI|or7Q4uGukP%yHe@xl zHBiWLT;CV(>|*kB!9hg73-XQty~qqUA#5lWI>G;4Shp&$gT{@O)Q0+}48pwR87`-T zR-8S((xMSvl}w#%d=#okUzv`*H7Mg<%&XniJ>M7Ro!7;z5)PxP>TT93hdR0@!HMvj ziwDo&kmRD~y@<>f(6x;2y*BZC+INq9r%e$#N30WrHic+GpBw z^DV=)qI^SBj$@egC0DX9SVtw2rprE$A^8p@^(p>M^~G7Up#-~brdUuaKs``i2-~gR%I}L6 zfUm_n6$fVA)GQ-p$FWxS*lV_x+it0&G`Nf8<3(NUE@-)|K5U_q*Wwy(**B(0ht!|^ z)hZzqz`YM~ZfhsqP5k`O?!>BA{CE?z6-{Bhi};<~?ck+H{h%+HR~X=MdQ;lhweEl- zHh2Ot%ijehF$tl2hnx<~h>8B+_rAJMgXBO~z!6u>av5gV0KV@CutKVXRJZdv<7cnLkBiQTQ|*b$t}T zLk$-B(=*+*%zY)(L=XN^bAUxQFd&DW&jCO(?cuka4DEB8w#Ds|s&n2h>VSbBD(Oo| z4~yPnLrpd2!a?iqDz{x~=Sq@IePE#=b}}M?`#NnVPd`F2nWPfs}myFm9qGjlOfAyM{ja+C_8M zyG|3Q+QM(){hpKYFg`Y`Uq@G+k?0N|EVBEE+o-cpzXd>pvL+m= z?<*k^Yo6Hn0R0Rcp3T7rwx+V)XV7}+LN8sCUoqNYyN~HO*_v(xaD+{+{invsde;lo z7-i%j^5UpU%zJSHy&h4**UB|Fms@v}k}cG(?T!A}gY_i3T$X=4cs>ixSBMk?dp1yH>2R?vK&apeG=jwr8`=3h@i_ zrl!|!q{mK{TT+FDHD7|JJ8claM&ofjII6B2A78i@r3;Jcn01`8L<3Lb3D9O9hpeT9 zh$nX%qKIF-i{>#UtXOsCjA6;I^nB%y87%p%KUTn6+;Wn)-%~TPhQH~)lPatPU3iN+ zXbgLPK9|lf=@$mLC1|bF?|r$+6+>ix{pBX;Zvr))pnm*m^&>`C_yo`Jv{#E$OJHkeRC=`~VXa4p_w(6shclI)m#=AM=Y#rp zHDQ`K1C}Stw5iYgB|LizIz~DC{0mS%+QnT+KYaL<7U8_GxUruaCpgMB)&LEA5uqcH z-3#v0|3KRPu3*+S{W$=fLhnysN(=<__v6p<+#BSdFd}A`anExpTK{eHOnZ5J_DNTQ z%PIw7i1QNE#mNJpm=zA$@|K#tdN)w1C&3D(nA<m+QNNSjGLXNCdR4v<|e&{mxjq`P6jiSd_S2kJk-@g-igY zF!I%fUpsWp^i`1$Pl+!6c>d!yVc?Wm)2*}hL9c>RysV4~L`(fjq?WTVVQlBZQ)>H* zKCoFkI6cF}HZxNyFN!sc$-gHKy`X1Utf1zs__W(IJ?%oaJCeJ+V6?N~OWS`_#b;mt zRDEG^Xjyn0ye{`1^@Lv{&K9S|zF0(}q2i}`6|-+ZT5;KwvP`V6_&nUz;(zh+Mhna5!tPL-ZO2_QMLRqyVQq(O3hhrd;mcGB|qZt z)O6CX|ZD?|9d|T6PK|4B*pr9Y4{bIuotvu>+VH6W7!AqOqMM@?!QG|giZemTX`8{)k?9+q(lzaSs+LDPxXXrj)vvn|kadJAb#o8X9XSmDyDyTA%7dC5rh? zMAPU-Iq_>%1eNNZk)=jeQ@{CblsfjrNk*Yosu<}7pn^yEDVHl)GV$83$ z;anu%2@+t13~AVr zkAfK*LXC-*rB4U{-fMdK{O5CqdxCNXg8X4Dt@488++XiPxUWiwnJAE!g$j_7jaxc^<9I?RX8F zVpZKli<0fCN)ppJ+jamlqB(wd$ls#{atusa^U{Uc1jD`p{KvP_vaMXJlN67Hefk4S z%~b)=6k7RLjc>@a-Gqr_ep4qvd)4c-c1uc&nY_leniwi5$ZSGucFL*PEnU4Duq(Ao58FEL4+@HUR&OM2wYWZ1z6lfA#n;Bm{O z8!Gr~lPh$wponYrH*G)mvRvB*AtmpRQ#&B;Fi$~QCm7^@h1Z#DCx0N|_{lsQ)3XS~ zqb0UFbwZ9|Qg!X3KK`j?xVgg6fHW86`)dq)0SZn%jA5N+b^%spUn&FAGI9sDHoW2X z=?yb^<$R^>_Gf-?qh1{?g+Tf-qn{zJ^qM-NbN-~slJBqnxR54Yl0zhLJM#56XR@o`>Dqxju+2m=g;O|35JgCNA68o9OBf+x2WM* z+2$AIss3Ui)Ix}FB;@{^C?Mc5qn@$`M=m_@qLJr}JlB3n=yQP?oXGjYZzF~CGtB@! zjJJBe*vOeJ+UfU3UyIOVllvcj6VU=_x7W+eerHc%_O2>YjWk1Hp(kzr-IA6u6n;x{ zNa4-TwXbd`n{AKxS7WV%FQnRlUcsPp9SW%KF5pJBKpd3Jx0l)DEkF6i_xX*H-C5v{ z)UUc}PbTSX#w0vNj+?`%hEx`D{pQ<_ve?@CP>>fybu+P4>d^UPNR?e@do-oiAVy$cIup zj3`On%r|-YJsaYM&k8Re`ehglfAkxuEXN-Kh#|-Qe$-#{kUE7>0;3U)`~~WzLPL-|P~yx{lME_VLnfM=7h`%)&_2 zqc5}O)x9EZ6K$^!8#1&=-nFYAmDH<*YImK>cQ#~SY~^@4ktn>aWn0=R7M+dR=KQ$1 zcr(^Vm-o^vk1Yx#pML#=a)z?g!&fRn;Uy%J5!V^C^w4ZB$N@$$qZcE5I^&dl5lF?_qaPG|TZq zxzN&Q++S5C)hsVtP%2W1aM~9GcM)oeFg#5}>g{`aP{c#duk_HjjTn)1Ot-LrX7S&5 z@HejvxY)oL%KBJRwL4RJ6y^vZf@pp;=_m4%_8$G^Ly8tfE;lmYGn86CR!Ok`-&>B& z40>5nWvt)1PFtV-fsBnXXbW4l6C*MeP6ZKr7fb&4^8*#Bpe@{g97AQR3zS-rq*BgP z|DTPd|KhSk??+E>;MIZWKeuo4;VC%j+igM_L}ctQ!ugpg94Nvlg5f{8FaPt`23D1- zS~;f-v(M{*O;%PdQR|Nyia%LDC^`);4iy)_mVmscPr}ha@7R}e>Wyh>e8Tmiu;$Ib z1oUZ15?ClXQn@M^z`Tz7Kp;y>+)sa`K0V4}b48(dN zkmAVG->5%s$UA_tH(rbEm`4>d@*Au+AA--v$Ek^hLqbU~FN8@SQb3hAi0nI}dNy4} z(n8{2sm_YSw9N<=DPj{Jq8GPGdz?y|liMV+DR2r)lQk<`9tknIAL=L;-LK!##LhB# z)HvjyooY316!GK}_R9b4w)&rWW3{~v3ID7G{3}o6f99nBr4xaduck54`~<3Osq)ZV zQ4V+ig(ccKFB?=4{z}DbcApMmVdaf z4tqGjeJNI0>9l)VPL&gA;($hYvEM?3cFfOrfGsQv5)!`?{eR)3h3A`O3n4_(H;P*c|GuvKj&AyuvVIl1kSMYQhQL%myL&ZT^<)J zQHl2bLO0msoAWd0K-CAf(cn{oZWo|}5kinQH(gPYk#^o2{%G`#hU$#vl)tcEkgo4N zw(sQvmUAlz1a!p*N4R^eM5xO{uD?u5Ot^ugmz|?PPc&Uc?3q<)L zV4^jrcrq6`A1pf49{{3o#KyALAAbc@EndsXa8Wa0rpK#lX5}uky?rS1E*CTE08sj0 z0@gG=B+Td#!s+Rft}s?BaEHT&R>0qz_JO-afoMT{B6p?!k589s#Cz@FgY|kb@I#~h zTe#FVP1xj|&(;t=202L>RujeaVHEdZ6!m4+a|snn+5=jq5vpqX*MKd)WqYXN_h~qt ztKjb$&wzfmi(3c))J9!UY?ZW7l)BWB&D%bMNlfc`~m*b!CzN7s!sTl%}#jaWpvWq&mT z8y?T8tb?7Mrj0g~G}3n{iT$Zq^{WS6;~&Ag$XJP`~jVAxL=>gjY3pWk42$Jsau1a)_f!MDXaQXbu=X@7Rok z@Usb(b7x5!-W$rL8@=|icj#lua(3*#!Dn{2~OgK?0>M~{7gzG zX~47^PVY4#H-!ltoj!n|E(VaFmxF|jI`79`j5aBz z>&(YMuk|4{h_Jr9&DJEmXy_QS9)`;l#@55r5uKuYxiqv#Lekq)b;m z(&ZHH(e0v?4;fB3I}*?c@Lbk2@f3azH`b7E@geYvyfs6auaDF&-5WRNazD4BfYYg|xKgR8UF69wRD*5o3wag(QU_U`5LI50v=tmRPC)&w?ib#=M=i*i4+r`ysA)&&pc|0b`uW8Hbhw#AUBOqJ zxIwlO7?T1uilE4gE1UtBpTy!6)PFlMTmnjxAqsK#b5H}8?2J2@pb&zzBxe}vYEB_u zIKsODxxzs}#UH5uCtWU9QH95}KNs|8e2~I=5($Vh$xsa6XR;3B$m#8g5(o-;^gLKF zS*yazmS91>unz<=N&&R7s5|)!5DkN=D`<~ryE9kuPP0#)6aXx`g@t2dDdM=@*&WHI zC4RMC0y^|LushXns+^N8%O_TUO4A5|$lkf*LbLaGTMZ43CX=113Wk0(a0w+$p=jq- z*KttIL<&ar1DJvYilEUP+QV%)Z{zT!OMBmoR|ybH$MXGqAl%`qJqw<~)ybCAUk%ff zy*W5orIbQ;bXs;PbH-6RYX20K1L`^?n8>tb?&h=t9qe&orLYGbr{jcI6SeOPxla@x zsIKebaQa0>W;)A|s=T}dLAOm%|5(6gLau==lYR* zpfT0Mt|qFCdQQgY3x# z(FH(o7p@=(NpnOy!DYk<642$~c>c?Y{q+alm6}hF0^52pUp_$2g&+xVv*tCftznTgSt4sjc$S~&H z2(XKX>r3#HNi@UBxj@);FLfZ7FE1 z*2TU)Piss8BJ(!)g_R@_ZjydF14Lz2K4C(4JAzt5CN&~jc_#bUV&aOv$xX8etcyhct@z2SYGg{$-o@y<}5-@)2|3y zfn4B8ub{DT*F}i`t=^j~!7e4tXyG!w0fzW54@DTpmMXX!AAPhT5K7erIyE(wM%$5{ z<46;DiJvc8mNJ$F@X>A~zB|>JebS?kg}84`Y5FOjg=T;dA5Kpo4LeYN0fG*E+6K%O zv=Dqqz60WdX(b;0LTmes%yy2>K$7up+D8MOL*O?u_ZeQNO1% zD&CFC=D*K4+#bpLu5puMfWeb6-+IAxxAhjWEUDu*h57x8KpH{s-Ic zEuBxV_8J-_yl?_F1)V-heSB>0%07aY!@K(NJ5nBf`13R)!6dWkC3F9r{a`;RT9Sl9 z-w%cXn7;ss+NMhImAo(6m$=%@ep|I43@aXOTsF@4utDGjSIy2+h_0Ol#Hv)9{A83L z@{RmRxe3_l>HEpKI_sfKD5hZkGdGhy5UNN9awa|M+_9_7a!OY5wpf4F$&y!S@s(YG z;T}k(Xpc^a>EGP}&&c*EY~0^v!js^y=4ZAcfvM<}>zk{+Pg8auZ9|)k*e1eAir?$?t+^2Cb>0&q=`(l(r;9&}xzM>#H`|N1ZqJw5xeb4u$5`V10jb`|wzl=<~v|o&z7T*GiJFb^D$Rhn%>-yykkZ3&=Si^d1hCGB(JaHeQ}= ztpPdn8M&RuJd!-v*au$&BMM#@xhROwd93dkb1GPNC@-=jWhr;%8ikslI#1=LD%Ovo zOH&@EeVrr|^m?dFNTm^2JFJklXbk}BnUX+qx$2zl>=@14RTMzLow0wNXt;T03iPfh zGu8%*TVXpT?ze|70`Xh5&K1g{Lb@ZaVA?Q{XBN^lH;6>X1Wz47&)82b+WWN!N1eez zv_3rI%Q8#Qy63L&iW~4D(JTohPy?O`hPRXo49Igt8K!K>tM*0o=Bs|&L=AD`zQeHR z)E1TxTIJlJfy~uQMR(9|t_~#9HURR>STb|(MK)|i8D+;)#<4`iPFe7ZwZl*A4FvS= zaRA1JqF4{JHg;agzGatq9;{IZoJYhfOTc~8d#gd<cx=));;QMNrK=@sA+b^*-;8s)i`d?3&B6(*PxldJU+8;2dl*dCk8X}JL!1SAIQ z^$8OP%M;KRmF~GZkM@fm^@2K32YfXUX!$rww15{j9LP{9u78(Hq){foRDV`Xt4n{l zjtHT0MR#r-2ts;4+E>$}KE4gLsR0=zDi+o~?lEn9IiwVkj+C;$9{%VXN-kn39*y(- zH&JpT4pe|J$l|4Fih=C@xKAO+IW}o?#J6Su0^X5;X6LbD|HJpaSS;9woqG0P%HV@}xf%@DXGpiqM{J@dIg? zb_&y0|2V^x2XYUnA((3W+Ppg)mGhpUPEDQ=scOJ(IT)oizYZwBzglN;fVe7eR$MY=&nV3DI-vcn#7~7A!)DJ4_{s7R3O5W z0%EpHeoqJIB-W!tYR!n6{bu}6->izeUOYYfriB^3Skuh*iCn!rtX)VSN*E$8q{?I~ z)2FU+*)FN+Ph_H=UbzuqBBUQPcu9yzMX_jLYa3>A1LcIrc2UZ}*>CatE|A6HHxH0IVx?H3;U1&Idsr6SRdIKmbiT z6x&jgL6Cg*%di~SkBq2{yY$eq)mZ95(t3rQeU zv_}8vN+w5KE(UPagKwDwB>+HX_dgQ2eC8uRPDso_pkfN0Zv{FX$fUUf!tV#?_;#XG z;~3<^V>K;k-ZU&P!nW)WIhB0kJw11s#!lz|0lh6tdST_`1_1ySM_e1hy?#`Jd7#%( z>^jZG6r#?Y8sp%W&UesYN*B3EPB#ZuxFATQsjBOofEgGturUkZVm7|k(2seo-}WpHOfKbUN- z^~I7$X`lc&Z(l*rdH4d3607sGwbijRP2_1`g_Ow5Bw#=2DBXmiUn3A)7+84_)|bZ{ z6BPhG67=blMW@hv0Z8r9%hkbo2MlsFg00zi2}qA`@9GGc5_;{f96_csbPu1=yrjWU z5G+u6hMNQW{-_UqD6HzZSG9LkMe%^Hv{FR~QpR9NV8%QXGyU;fF+dG#LUV=yHHi>A z9e;lFqgg;+U-?kEQ>}=&x(TeW)o)y|AB_twz8yC7WV^=N7et^x6R9w=lda$Pc%Tv?#>yi0g$cfQQ4F6PKp# zde|hbkV^YboY9+)pXV8HLgLA+QAyeRRAF zB#Dgn*C%79iL~fxk`TegAB7g3>O%tT_A-ES(lKSpF?lmhEM0=Q{=Ve}#%ee%xEV02 z0g}N%rw*bjI0WG*7qJIygIdbU$`dKhLjaWK0OpsISFQ=BSX|rg>2XJx8L1%{SG1DD zU$6})vku$C7X280&|-#2^%Bjqs^A%L!z(7ZySk+g0k?VS8@Y40YFm1u#jje9f8zTm zmGp0ZnPKw6S$e*`xE;H;ogV&`zcLiPw@Hdy=9NSvsrybFw(@Jh$V>73xA1;IOG&#X z!L*{q5M?jpFtmRTaTxXB&9sYm$YQt6K44tQhlEvKb|&c*1UBqodtQ<7eD(7s|LFWp z6Fp^xUqz(wQ8l@di3Ltua0eHANm&gN3 zx7w*q^&e!Z$JMEn-o@Q{AOtY7E-y-I$Kz3T0!fA7aDId)y{YE|eG7W^H zKz3budab}TwK-SF<0LnxxA1vR0*gCI%I$=o6YJ+}^xU{z2ULv+6%o=ZY`Jo@6u=$T zy%%Geps$P`G&nZw(p#ikW)}JjCS;=UvIpG53ytmyy$uZ&v!&ON`AHrCh~0I#4?pQg zi5&h(pxXfn;s%7BqxK*iGvMl~0m*$K_p8-4dzp4-0I;4u6#-+GnrCt@ooHrRZrVE>oV(PQgcpoUmyfJuT*d;{6xPoCIvsN@}fO!Sysfd%BTh$EdHd+q+Kw{>8| z>;20T1nV@=5kS#u2+IQVd%|E2a^mhpd#ZI)i%TS^l)C^WBySVSW;VZnIaO}irI!#d zH4Rt>p84NHL1W71ZU3LRs)DyP_CwFJR=2(827!ui2a2t&rv)5j#C6;c+5&YLn=ber z+j5*$Lh14ZHv?%Q^~E8p?0ns7$_yxC<);F5-OKbVI;_wVp?T)}dMi0bo1e1R#=Y|m zAR`@U5)SGomA@0-(=({WWOIbayIj%5l1*%oGiX-!Tz44Co zJ)d$3Fwf0n5=}6O>%btZ8JKrH*-`dHFX-o#Vz^2OPlqq0>ADVh>qwt_8lX0eA{Vb%V~GFvbdW=g`9<+6Q z>`Y8dY;1g9ATf07OT4T-?3^!^j7<}$BSK*Kcf|rgq*kjR4Y=o*79-}h0VB~tL1oco!95#HcqdLzF{ z3%U5V0P;0!E--un$}^w!tSC5-fgU1iQUKy1d4bUmsHDN$u-1P}45vFWC?xdOTK{$F zSGnK#^ei#UC^@<^KZ-$~QWlIR-~Ww&7!D?m!Pd8$!MizDYP&`Kpz*@(z?xqMp;C4( wO~!rO##rkH4#ucas7P3bCHMypnj~RixV89P&0^VIQEYbY{p|IuHP@VT?I1N3c?xnmatH)M z@%)*L1_VOr2mV1W5`s^XnHBOOkgJgAGEZP`Nz0R@Uevg$){Q8_JKIwqZ{JSKrIwAn z`_?am%_Lp#s_~^@qY?*B?MRLr54EYOTezT%FsUZO8&@MTa-T&}_S^Wqi{5(?9`aq~ zdYt*!cfa>etRxb)+8R=`-LLrZ2B$~2@O(78=3M!J3O&!ucUuE! zI0ojN(wug93k%;p`TG8A)@9jSMVMEu+SYw~OXLXyM92hvJ z(xNK?JU!ptQA^hT&s>Hct2Og@-5+FXJ^YAV@mr}k734sSVrMX-^Q5rv*>4cdZJ9!s3!_D8!b$fJ!m=HZpTO!=N< zQEfqR?)hbzlTUJ?bo{SIdYRJ6_r~q&lxfP|=i4{zXnET}Afp=j9SRA=C&ybo$l3a> z?y@~Lq{rTB0dd33+e<#j8*R=0q&7F*zq}(mjC6$2Y+;J9i20B!3_@4yF$Y`oOPErW zS;wdDWXoja(6=Be_={L5yt7904jQJp$zCSvvYhK~&~?Mc9t6VyxEz`$@>8%T*0p1E z@t;(CFeSgZ3~RxfKTRg0*hOcW?B%>07>-yLW14LZ9Z1oyvYRY5SL}i>EnD=YOjf@( zJsLoz`W*fYWF86yXTw+)TlL*#{8W3%rG3mDF@CYqywYycV+W@_KAtc?RI?;+?6naf z{;|~jJ32O#%u$(XY0>%cYv2{_2hySW%(oy?0#Ph9#Ry%NQ1ZH8Egx;tsuu3#=M=E zr+G?_ybyzKN)~m6zE{4z55EUZ^gZ}PyMiyQTh(}Vg;8YCeQ>Su%;#ih*nYHBHXDsl zW64;B!MMrTvrH6f>G75-#R|UCQKh5=frCzRsipbZ<#NGBt9(v8;O{CO;ggGETFse`!dzTjW~p?2 zIPD8Ko>W8WBKNI1PMzX3PC**kL$s2zk`e<*AQ^@P_LnAR=0ih6y_ZYcoW=V3`r5?m z!sInkcgzxP$1A>ZM4o#v&$kT1xELCS$swI{r)hAtU(}HJHzX z5dV~Hr}^$~JCI7yCC!9q(^6?@c%lDBl?mxy38jlM%U2KtvKJ#VzB6gEm`sCyi#v zUJ^Aec;aU1sZ5eMJCOA}sxyXz+o)b=mK3j_8=zl-$iApuU{89TFM_GQ0d2b@y!q$5 zCD>Zehq?(cCf+k|NKcQZ&!BF6tod>E>t8OxUD0>zS8JDGi)d%3*ziS-hTNiQpQC~= zKiD;B=7V|u9&8cpL_n_wsS}ZS8LoN6TfTg$*?e)0U< zgA4_&89Q*zGAI>D8p#I|@OqWFN9iC4RV5CxavW(M(J5&uSWoP?&>F*z%}yQk`D_;S z@AYrZ_h>WOSm^OD4CZOt;Lv}ju%J@yW_}lWM3X~AO6mN*I=rKM$H;4=#pPOL_Kn_W zO|7ByjfZ#+bK5{lM!v8D4IOKAjebQ)%IfBK?%~gs>^VyD84|%F93HUt(sh?U(B;8 zeolJbdMkyArBj`zD~3b6lEz6xd&JL=OX@7$rUrpSOGASM&?tt>@UTbn?0A1RT=DZmP!GG_ zy?giK>w9>@TbI6xk|Mi1N!Y0` zLsryvH6QFIa6P|fXOWHM6(EAU;&@B}WJ4vpi~+c2oU3-n(-*)-+o^oxMxzQ702-Ck z_6K~ZpVby@svy%dp1FqIsqPe21zVba4Prr5jb}&r@j^l`6BEgR5eA6_PpTI8d+8KMg9N?BoO6X4~paV`V8ah zScPJj<0NvJhRZ-_It4kTt1tl~0AZS(){OzFzppQF{^FnvKn%U3c~2g@M`Hn~(_~uO zo$E@ZfZV1ReeTpW?R$2zJX#iG6g)*iFL1tmyFP!u&8PYr0iYndS}h%wK(07{`t6&H zr~cjnT8elgk0Q1IC8VDpdQgoD2b!E9UjboJ}ZRpVllH;?sELnWs2Ehuz<@U4qjKHHFwi1lZ?ODjFB^f2!e}0D`F{ zgIP-+uS)||z8ntQA7fXFsfU{Jjt0s3D@L=WlaB4H6NC0+86? z_-Tv{M!RT8yQNr8cPEp#Tj;BuX4bQ7UB+mo%Z0~p|9p>CC8|No@RwsgY0nlyNt06% zPY0*e`h+ch!~skTO^oR!e{dud21m zzE?hGbZ7p!-Mu=a5Cleo9FDK}E`CVgo?{7xAraAF|HGS}jAm0t_$oGizy&2yWh>Dhmwo}W3&C&uMnEh8N_#%&M_FG2);dd*O zHTd7e_W_u@7%9(G!aSJp=*3gHE5mH%K6(uvNZB+`!fLGoz1CUw5oyP#>Y3B5njS_i z1<+Ym<%E&*y_?B?WCmKo|KI|2C`Ogw`Q3kZ$L+OWGkZ09Koj_ft801V^6dgO#ZgCW zJJ+{E5<)Ad(K16%@cU#YkoJ_jV#Ecn5=C7LI}PAI11QzutXHSU2mDN!%UVfsQY@$= z<(V?YJ2=ZnF~yzN|Kz@v88uyl-9WdOwJZhGaPXxSkaL^m4xtU}cH1NGp_Jl(G5J!i zQ7_+VI6FN8J?g*-`crsKDrmo~(fZ~XmuxTUhJC>dh}qX3JE|Ga-sLhgWMI#gWpl0#GuzQt{Y5`sc$GTnL{9` zuv~BvX4`!e#d)vbcw*nDoy0lX{O)<1-Ji3%85~%tO;(}0JLPCgQS#&t9~iT0qCf$t z^{kF46T;MQL&Xkq%v4UAUKU16mMW^TadB3ew2%l>D;Iu6!VzPIhcVsc7VuECF2y;{ z>%MFv3lhHPr5g|3j*(D6NkkFu-!CANi08YzaxAS5XcE=I5C55L`0p3dfAJFkk01I{ z`SWunB|gBJbpHDFOKB*L@cg@VbqFjCiwGconv696Vp5*mpnO79qtMfwH@=rWI&MEn zqglE>y|?GVk6cP&aFg_-qOJgS7T|Mw2ve8-i*AgamYu?pcY|&j%SyKDz%JANkvt>! z2d;>qm@<@c~jA~)CN2$Y6t*5zh@puLs3RE&dy z1Y#8BVmNMO)6*#2guDQYZ%^Km7)C4iXKouA&Gixi|Dada0=Y;;aM`WWN1uAprlmFR zxnwq@m>I-P7D6;-^~>pGm(TxRfB%pE9TGon;zu)Go66mRZ(omK{pb3w<*oTBXF{f~ zHu;eb+{l^a6+?cvBMNLyoqwo!gropxm4*;8y&ALDvU?m9cro$zn^qGTWIgyFJk_y& zuOI23;P?cZA5$k@#D~nXn~67&nXC0lQ(`mcf7@GY1k+IX@jW$%jv?~F?s_Aow}&oK z6O~B8-@aB9( zzsZad3#%CzBz4f`6Oo8nAyxD=6viStj-?sS+No@yv5#?`5m-M#-J4Ci!!{7F=m+6J z!M~V)2`RjK^~!)D`Fa!m+&^j6e?9y=egs!^NS9khOm2()jd=YY0lBj8*<^Pt{*TXR z2z;-Mgn~BXU7!jFU}w_^yE(ONc{!>QaO27vr5&Rg8A{nNbM)AqJf2gNTuHz`Cn04mo}x}E>t7K$leC=8-L)UU8k<-(woPxT@thPgdYK@}^rZMp z$YF=njY9r=b2lOFS{G*+Z0;}8o9*wh-dz@%sTNamIn8|LGteNs z;?-s@JiFbIXR-O%|5X^W$qoe1msv{)D(ms82X*LI`{$saoM`HSOm%#~e5X8pO9=T* z>ElD5Q2cs4QuMP)a_wIM;zP3DZ03LU=)hTZ7evheQ1;k&dIu>j`m^*YwouuqMnaf} zJy3f@y-yt#6Pl;XQfZMrvM)4L^M@RyU4kXQ$x4_)LOY`pRt? z1qFqdFH41Abaa&4=6)!*-4e;MKU%mGl{pZ%A$C`w6~>mLS2B`rdeX|Q@90Q8bu6qj zKvT0;UmXMLdut-GIb*rHtd z1VSXmRVsMLeVx=7ySsrNoY>Yq)xC6v?aNT_XbvCZROc(|Ai4RLM67tpZ+5eoa{nBR zt#;{>dLj1B7gL7BEh%nA*7XaH2s%~rubrN#Hm*J%g*5W|kpgtPvqY^~`{9j0vI!Mo zIi*u+F-s6tw=&|ruu9OlEE)0gSPp!B;ri)2B=4M^;3K()hzCX|U-v^HBz^`zyVNlh zVK+BM4~a;(A7?sGV|P)_)70rfwJ z_+N?Q-x6!_WwL*V+rO>_6tYKtR8&;F)3*=QE{pqJWoKs(3hJ19$MRsHGW{;DGLTXh zm94(Q$Rez3OaDgYIoQBPX$-9ESY^HkA(cqc?#j@QA9;2Cmo5Sf(f;M`VqC*}ol{!} z(5J;!SKoB{@-olI@NR!)qHBCi;=uK&fz6Fo@t3Yo$J(al=X+>9+sq$`@H5dbZ81OV zc~7`Dei3F;VnA&GzWGHa;eWFX{~(9_Hvw(3)}v#xfWNqazv;{Ce*fC=f4lF$Nzk9~ z5d2@9@jspA-)s7}qyKfp|31mTnvDO~*F=)2T8hd4>V?gO4{XMRw`Drs&V92Twe>NK zs^xgYB6v0uZz6HZwc~&5npIS=`OC{;S~)sqh5a<&Tj?1JoP&gBIV9)(6lot_yp|`B z*YYmu`zTFU(0K7=y$}y4S2%lT-QEXp(tej^UhBw(s3dr(k$Wyl#k~Oz$uf^S{+awj z1M>=DDNkOyHCh{CqLC`K@bi?&)WALzRkt)v{5P^-XOpl)*o9f6f3p?!FY?a+z z?^u7_lBq~zZnVr6iI2`5OmMgFP*5<$4hH|Y zT5jOk_cLp>HdcM%D<$hKe)%X7b+|(Ohw3~-AOCw}Mscdi*QxFZ8W?uWd=OApIFcY< zae@e<&4TB6BgA-ekVvX0RRa8Qg`3Y#>*xBuD`!pkBDdZ7f86?`OYWu9_tv7dDelzp zt_w>|l~XhNPdu4Kz7#fh-h);kasbt~2lTcQT&AA|t17lgY z=}xMu8(i9tKY3rPSW&z(%>O9oY_g&=X0zrvCJxY^H=w`gg{m#y+QjfB?#92nA0?W1 zp%873wtP~dhs~{7R@z#UD{~L;NQP4L`->(H>GlqAYVx5EbS*|(bB(o7EG+V}vW%-6 zze%2Vu-@UZ{Ti0LFSOOqseUc~kU~9A=~bY`#-&)sv2yX)Q~w7so!{!u+)8$p@0|g} zYQ9;4Fz{GJd(&4j@YQIvly2Bx$saCszcpJ03?p*3BgN@n2b-*y?z6IbjGe}E^7yWN zoO=BT(e}nbU6(pYk>f_H7F1$oqO`-kw7T)EuRbnySiWfNMunq(q1AY2%K$p&8AhFT zrS;OM*|JTiiY;w9!;>G=&GfW3-MQ;~CkeLEhs52 zbQb>Gd`aVTfih2x6wa}aAKI3p%RjeEdBAu2sm4-5;ClN?ZE7XBA+VS{z9YcpY{D3#;{K5Ivy z7v$}P&HrTfJ>CFLF0Pv2p9E~jZkpknNtw&F$rP1=_OvuZak#hU`<=52mao&-^s(h5 z?NVp4&2Zu1;NWBPPUpq`Y=szTtuJ7N75)H4ed%1QxkSy@TWPEBpG4gRj%1YZ+6NMf z0dUO(tZpw304|kEw&+P#fl-6U+>dxw@f{e@zp7r1KDO$;eS&~vv^Xb2f#o9h_+U$N zZ^EgqZ2nvoO1E=lF^pMlJUay<#Hf8{M#f;DJCKsY=1XdS17E|;sAXzsn1#k-H6Vp= zSLacvj3n^eO!*wG07>XvsUn{NW*{K?V$M$Y8b8u z;+^WftJ{^ppD1WwXp90DH{c`k1`?e@!2bSzo+fGz2qv<{tHLYg1Jv{bIm((Qs_~D_ zds4*5EC9Q{2D~>w$if14TLg(;faXw8^JdD0g2n#Cgy}lhpKtM6M04s7olc!@52$)n zEuw(et-!FZvO^gNSb6UeICKozxA%87Ikjq?t-a5sIp6hWQs67FRZdY%{rt5DHp3?=H;uf=Dj|7<``~c30I5a+7Mbp=g2W$sMKEW zZ6-0d;;H^S1?4Zkk~Hkeg)GRZQ z1Y$BTOa-WqZCR=EC%;{l2&tig3onyD|VoRY>L+w@pp_DcYg@0UA zfKpLya1ii!Ex2|NcN@e$IJu5zYT)JbLhS*SbGlG5(T8Y-L{Y!|7O)icYx8f`%%@=NGCoy=*n`Og?hGm``#Fv$NuZSDo8=#%nF|zIt}?4=+>}nzInX zFnNhNuVLZ_7m`}5fB__Tu;j|{A0_p3r&p9sE(^2I{)>u4JoG}b!cRr+2G|}ght@I( zEI4~UQ@DsUv~utvLJDcRqL}HTC66*`ev9Vh(=NB06xoT`{+?qI4xo2UA|gPZ*?TZZ zjzWH1nD@JNw&dx)G=)_lGtgr3@=WgcSy-~o{A_;%&2v#auT!TA*e!Cgvmg%?aP>94 zA;P^L6cw&cO|TIMCPWp@X_s-^+Qa#dDEYiJdk|b=HbW1o*uD=o41Gp8PR{Nhxfiv!%q!Puopn4U;7scyR@<3wu1I$9mk^VvyI=CYSB{ zfdg~yJ%@BRnTg>ZKbKyif$%&N(sAV@>Q@t%m#;K^nwh@Iqh!T`?skPXM<1q;sbr-e zU)4R8S6)nSV}HnrW7@t-bEDI+?oFBbYWn9_)7X<3ZKFJnXwENuVreOz;gYAhOd&or z$Z*g5x&Nk=5UUw~J6k;n&%9lT$?svi4FOw^!@dTzs;i zcibe$n&QKUDUkk3Gdumc{s)TG5F-X1a2t1_{PPYJrkS4sHZydVi(wl3z{R|zO| z8po!>OBO5bMha0PnP@y8VfveeFh)^22Ic272E=9{6SGE8LEj>k)dbZWTnvr)641Na z&rzjuMy3}H-vFP3#k@0Tg^pZm*X7T4QP4PLt_Y{rAsR^SH#V|uOh#TpkHnD@H`?b# z*nyPnhnLc^k9NMmQW;e(wZ^T)It$-2(waC@C1Xhh_@zw=2cm#lUo~mewP%G^Y77Jx znK7x%fjd_QNzSW)&ooeYvmbXi5QIHvRM_!(HEVNIj>fiK??po@C}W;SmfZ~A z7*Y9%aqqm<58`G|)-gygpd?4g;r}NfX4po+)FV zza}W*FelN@1L&`?az+v7Tu_0NMUed`AY7OwysB$ip_6(i$N zPoCl{(Z45l2{x%v&A&krrlc46LCh)-K*fzs*5PmKpnl{nnoZjErZofCQ$CMx=;ERw z`XYc7-+?z5lZtrU^800Nr)bpond z-*#f&2AOE`=T#CR6*>zCiME-XpGgY~3kE5rMvGl}*gBC9-Qsj6xyFsy&T3E-K*HTl z4`gzj6WS4=oVreFNHC~LHv1)RJOO5pX1Lh|xq1z_-GD_Y`h6W=OyScSplyw(uxCHr6=5n|CowdKXfd3n#`F{iL_(aLoWM8rn-KVcMoP^; z9{E)G1?3v_r$8bYWgh#{^CMt`*}!(gnxR)^=M7v%i>&}|F;Y>LdG6WGrUFy(JMXu^ zXyf4^9Rom9L)VXZkQ%mrTnDx?cFi1M)uCclD&7mf#hYU{SzCd?(Scwr+i2LEIs$&X zT35&QnSa=WD0YA=erYjBHI=D!G+(!DFoo)Y3g4-2z1zln3i{=hkT5EU<9i({;c&6d zc3|3ep6z&$`XiP*mBRlMi(AY>NCqob(K5=Q zCWeHcU-L7qCNOBxct@&P4U`?vBk-Fw;Pn9bAdrIIQ7lA*k)fj&<62fFd*zg7* zY5Y&%4#S_FOrKeQkN7$y4w{3qD*h2qFbojRD5_O;ZtDWedL-ji(-6eh*UIo=%^SljI4TwO_UL2S*+pE)`wzX$Pm@-T}T3?9YqyHyNPMk(~fZ ztL&{#ayM-E0}rHu^f!@|bAZe4EC<|h33eRcX)B>oToCdm}Vp#@|%uh6?P~*ZhNQo7w22H{9UJJAWDZm8j(E#eK zM8gMCN`~H_wv)AR?h?ED{a+t%Fu)O2pclKKU(kn@nPCHoy% z2m3`DYXE;W57800>}k7Q0NUA)sjF&NIn=>uNX}6zh^+Hg1+-j^C%fa*ZnG4q_JJ0? zd!GgTcs-WEPRN|lcr@YEBM#OvN6xMy`)D1wn_k#s@ck0WQVD|gQ;e3-_wIV%2? z1^g;};Ypq97r<0Sg!r__Qo&e_ z}mk-ZwQo7S&; zWmr5|N_-NSRgn4(flvHNkgF5AhQT#X^G2YZU6u1ZTB+hMJ?WLcvZ#)3ulVYFvSchG zCjKpqeyIgV6w@`<=s_kp={x`iCSHB*j^~vpx{u(qO%rSdRe_$K-X>hrS(?RDuI(1n zj>@2G-$xx_X!E9L>}tD0u>bIrbZ@*GgWXj9sL>J0<(p|9R@)1GwFLw^UFP`8!s0_0 zFq1&{66b&+RE>4SsRlF0$Uxa>h{mL7%KG^xQP1{DfGMdH%zZot_A}eG4`_|-;EiX< z6vr>bpOk1Sp>8Irntsg@H-Jav-ZP(H!&!k@h=qz_Bh2Z*?~W+TA93k({nzl$e8jd7 zxWnd!cr)Ayc1Q+IZFnWDk(Sp|QC_!X&WFs2>$`AwuA<< z_u}L(!j|z52T>)i`1h?1U=(Q!^tJSmb`lj0h>c(0RIgfAFen3?-x$*m`&Bf8w}PPa zRL{qZjBVZYZ{fIB+o0Lb&&cfaJ@;f=Fd@fB4i>8g ztsu@~_3VHHe?-Cj3J15LAMWQ9IbbES{Y&> zO-yE8$R^9l(3DeD#-2^ZJ{*4vPk-Tpn^X&%=*dl3@ATEtYFBnjX z7Hu)3fZYkS=%qPB%!Wt_V zH2z%Bu`$q*iCj8?C-7<6GB9Sd!B6=}338_OSJHWS`+ics#Z0!6FTaj0k>DVd@Y2ua` zBuKz{0<#}1*E&hf9QZ^Vvi&;DJi81KAK+A&V4lz+5!&rpo>wD}LZ$JwMMCNaHkmv! zbuKH;mlNu6EqddD$LB58P_lv*W0~BO6)BrXaAd*;jsaD;1}%1W+4X@J%6_~77ZE@V zwuc3iYU)5qJhm5J_lWPY2~fLrl88292vv4Q!GJkzQ3uiQzA4FBRCuK+43o4>>cU%3;F!{hT!plcd z_j#;dmkb_Xv@s7bg#jq5s{tawORrvW2okww@giesEm$zh}yoL@V?>^>~+4iiT;VrW%tf#_T5=Sz{gegWZcrET977o zy#xyxgRJ5(!vM+Ia5%PPkz~M$F{hM9dFIx=SWv1FtzaO;tUv4d;^{}`JFH4^Y5V0i z(fm)+D1$Xd-Li(%NEKBJ&@j@R8bqBE2Nhl;_j`s!RO|TU>~8$PcKv%1>Mek&0KcS& zIGg|mAgb(IHPbJ1Sp%;yT(P^Rnr+fMq1U?^Q{y%FLH2s~I%7|AN(tXGkH+pseAzc~k-M9S)nIE%dPLz(4{7T2 z!uYAu!Q;;X$6(sa5zVCgz|34oAu0yjrQtRb`;~qX(oO&)m_G(Y_U$@#2rnn;U(SsG z8uTx{?*~S+_LfIYA;v3{b;H2EOEXYqKmFm@|7hs+KV$MsE*o&aV6 zw9&}cTb5Z_S+B+`Iekx$)z#Hm9W^vHAE+b=fn5gXEXn|x+*&t7q6;Ph-jPv(#3D93 z3E-%4h74JeuM_*0#Q~T%oB}%pAh+&hQNcTR(g8irx|BEIzR;Tvy!H59@bS)}fOY@x zxHS$)O%(LqMeQbl{?ZFWybre*ryG3%Z|=-^3{2Q7;ef_>c7Gh{^e09eV6MKT;`4&^ z?r!PmMrx*rIPmi;v-+ab!6MA3covc!Cw~J!Rs6|WGfu(013+|V(`P5fwZ4V>Zp4Bg zjJCnB1J!4L(ko~|6S2-LT`(=NhXa+%c5J((jR`EsIG7qa1-Fx!zXxbo%(S&VDm#0z z{xZbu;TM|q>esVis715PLK#N@%=n|PfQkdw?641@TlC96U}{s{7FBeZhu5a6c2Nav zG#HmV9~J<38I~_2FOLZss=%GbT*O76Pcwm{zVaGf3^Mr~pwdpjNbhG3Z57eJlylBP ze0S1yI+@?*b7v{&!$)Ti0L2RXZG8s#av(nVadqvQFmPk{GsxL#97OK7xJTZVby=G# zC{yFaU@G4>uXZ+!f?03Lqh(&(8Xz73#b8_#mVd7=2=fZLTckrL=H>wUlq5MO(6<8= z489{9rPhgl+Fzxaqty5MoHeg?u(99e1Bwc&0pOyuffo<;%B=uJkB-B=Ka5P#zM?*k zHvvO56%AN8jvqt|P)atzWUQ)dDrItlo=#g1F)l4&%nQgBV<@8wlWbtm83}occxWV7 zqxCC%L9u&`5QN8rW!F6WiX|3dpJxG`T0l398?2tzZ-`fl- z^?Tz#DOg5hoOQ*or*pj<} ztsbY~(Sjos*#iup4oWlq=>>75+?vvnPQ%1*)}UXlv1(QQiEi%&d0og~R)4s7SZGs% z#Rcqu9>&oJ{YZ^658r=5{ocFE)xHZV!>2(F^)krA z;{tChwHsv`Zd91b9XaPpJAk$-zKQKE{#Eu4fEAgn8vOa~+7=5VufB4Tsb!2a$;qwc zjE@ENKjVJ0>TE<D6X*4s1S1dvK;Uk5}rPl!T)jo9{k zTZ)7i=vS?tH({n)Jx#=N56ek+E+WNLt|*DW|ISsXB+XbEZbir(zQ2$e4$7d@fU@8s zg@D(-11tKC0mqO`bm2af&N)w`8vP8{qB!g^k0MtwlvAE5n&udBP9NM+i5&)MZ}bbS z`55%kOTP+#4^`-h_Qk+D(26l!nP7~oq|g|e1!n*0H|uNjmmZ@cdZV|_XRnCSDHWFD zy_6;Rgj|#pbMdNnO{QfPt#W85)bqS+y4m|97mIjQ255>qiHi}`BtQpwLv~zo0N5Bk zxE|1j`faIJ=0OKv@}Thc;1hgqG}SIj&ZNW1w+X8h0 zs*65*q61-O3${65^aS-PU*)N!*e&oOe|Sialav^WC+CU35)Yu0nZ{3ID5IvDMA|^- zX1M0S=s+Bp21$B)m!YYa4*giuFymtmniR);sKpX_lDD;Z-w*|(U8PX_2`|v&_iQY* zp_3YFM>jl1z%(n~V)29`fC)*&Li?VQz?5%aNWQMT__F8=S`+!xrLr#*_SnMb*aNY1 zGbvA(@x7cg{LhH$kPvtQ1OrV`EgI3T-jne?7i+OS%7K)D-3MUoIcZ+05sjroOU@Q9 zK*zr@*eO(FOs(gGo)r6^%h2447#9%>`X&VC(XMrm-fV4mm52@MrPc;sW!jlNBMGcA z!k7@(j9{av5+QxXG3yM!tfmO1+<~*_=2zS*($K&a+btAiXnz0w2v)I#sU^fGFTAhR z{*D=)Bv=kn#7rhVhRNFzvKOYv*RClgwy9J}H(X^zt+3Z#X+2nvb+MUGN8ZGXTTMLW zj(5p$9EG$O+`ZL=CPeuuddxe&=F6RHYQ zlhs~b>dXbD=TfK$)Z6y?@6#EZ^_1jPyaKHl7UeGF^iU*a=BbvanvW2(Et2gfUqtRb z?VAgHG+$jF2^)?Db<5sLBa<`-^{7EwU;%Vctwb;{n+cr<7>ys@PiooykOfsy*zWEX zE8q1X&oPwv63~+7Cb$bH%QQyg#kBNCNB=lm-_@m}!oOgPA1qNL9@D~=zkRGhkTd$S z0S2mPTrNX)}RRy9N&HF?;+87?w)`e2@z)7VvHMO4^mu%#;&j1m{RtaAn$%P29|w_U*WYZLVW5?-)Pz9RoU4}Wg1A__qV^ngq6oW*K|L@tD;sJD2m2Zlcc z5xi)dJPB$J?{q<78C|E=t*nLsFGu}JLPj$n$AVP*@f2vggEl3zI6FLp)lFl0bJq+n zJy7_PDJVQsck?S$Q7@4CdvVWt6|LnBR;tLq%w%0jk9TBABEi|-9yNc3cd`;QpvV=B z>2?L(2%XU?U?Sy2OIVJ;^kb5?va%WGh3aE>%ajjbVieEmZS7~2bDpBWJau#G7*T|$ z%%-#sxrw22YdCY!BG;cnE*%9%!>hb`4X|OfPG5ORp)*|)tS0B>@QvqaXSfv?c+Cl! z2~A`z<$JFXVX9aI$DqQN1lMCAm;gF%;gl^Oj4rc_M{=FiVlgnB?gBN;$C}!(CY#sM z-i1v{Fq$ht3RgA~sfv_v9@@>6Zl;DLP!Dbwc(xQUWt0uwFX7r7t6{Q}yt1rjfgwuA zPjfl+Gx2>z_iGKm&Wp>A@y0GoSDe?Ll`8?dg7?EKN_ zGf+oHPwqTqEU1;oZ!Zwr1{IMEHd|q(+KL`&UAJM7Et}glSeDO}PH0IVe!4|Tw>|U~ zDU$G{mm>5leK=Swi~idlzWC&b4m30wOK!{`&^?HS*K_%iM3~CBQC0&dNi88Iv&6() z6!g8mT@A}t-~lA-vDLk5W_l1xkZ({nPKr#rur zU8nNYH$eQ@RH6L_7z4Ea2)b|nUK~K3OQi|r1D_Mb86TPW6|T`eMv}M9bn&sF(b^RW zTxn2qzSM$1t3qw-g5qJCN+4e}tEN9UhyS3HSphnFdl|>GTGzG0_SDDb!5Po2>BQ`9 z2@kSR0}{v;AMnl?m@-s*yWnn@k7Flgt;d+C zic)l+TTr&tNF)4Z7abjb5!u{v{;BCeqI$|0^-CspGDPATL&`bD_O1c2vB>*SDPusA z+~CwR+rBn&72OfN9k1HG*k43dKE5!cx^9dnpBm@M3xG=oJfsk5_8wcATynnmG-{*m zK-U-^fp~tTa?uVqa}*vprS758GERo&(%tADq_owP-!&E_av<;P)%#5BAdr4d5toM+ zrFn{`gLk8Eb}pp)5QA3`b^IiFm3LX=0Mj=%%UlQgI7N29dt#(X6g1>uj?U}>aOVGy zS(mPI#vkv1@w}_Lz$hCyAPC05@A#?%H@+ETOW~JT&??Sk9X{}j`t<2C1R}(KN;w01 zCJh22h(kYkDH9J5Pf1CM8Tjf4Z{(6qi72_Hp?c*D;GGa)c(MH@(0|mH>FOwTWF4B{ zUT|HTvV}mTK95$|XoL4UQP;H|1PW0%(FLgdV?glsB{nnAUIG)5N#n`9@fWCi#y7wv zAIN~KyN23^w?h%ho*Di9{co#ADsA-vBNt4~{t}$S7uL7d+8?wvRj4Q#DIpLD)w8FH zx)2Cy5cq{$A_Yg1*;I2Okn50Vit;e8@2le%{b2A3;^tT7#hRy4cQvjnhU=2kU8hwd zVG6IbFp8l&6~MLSS1xZoI50H0;A=n|iwz=GEe>*1l*jI{8ed{RC0cdPjt{E~%0*A# z6H47z+fMxX^Yy}nkmuU|NoNB44{Z3?*bjjOjbRK+;r2)*HlV4gDNev#rukMUd(dZA>BN{A*bfV( z(0mdI#5?<{=F_L#gs%hxB3*qef$ZWnZqK$@UK zfrPwQ5CuOxJbx#oZ`6awsO+j1fI!&cwSL}IiZ+&(x0vb^nez>QWPm$jN7YNaEq-zO zgF4=b;DA6ngDe`uhyO*C5=Y*FKih;@?Ek6jNhiiOQ9vNyZ-@qEVuDB@;$P47NNDQ8 zkw-*^`hWs?uiGogkr)+O{{8pwA42B! ze0ze#YwN*$gvOcQPLB#1#nqP9Rwx|Xk2f$sZ4;<-7%6$C)*8o$t3t`;A*%M?T;WHX z*PXqiVgeT<=ezf$TcBpAHs+h*+L-s+*v|=9c>C{nRQ40qKPlZD&9yA!c{_Kjv03pC zj9j-n#AHu4e!pz`)N}Jx^|*UPMavNa;TC7V{buhT7nf$TBwUQYdPAY=U+JJ3(_^o~ zn?thJqf!84dm6&MF-DRtyQk{sIcL; zva+&lQoNOW4rV{gBJ~Zkk?QK7Zn}+@IZnJ}5HQO%g)u`-Ps{Dd4yw01+xAQuLu=;~ z?P(JxqQR>2_R}rwF5{)VHqtDH4&Io-P%_gS( zwejPnoK%^Eskh(`x)qdm8B>?>IHvO~eM;&zS?ix9>e$SD1qI*A@S^LfuRkp`%A#yFDmY0lww&y6Eyn9`=38R)yHUca7>?5~w&~JOPIUYU9ogC0sdQh# zj+Cjv4n~*~ABxr*+4%0S6x0Pwhcdvt?N93$@ZVoOUnYZGznh-72P>4>>3+hg8uLxe zIi)G2G|T^Zk9g25J5uI&9;gvaVm_~b-^Zggm`=aT2G*(~ozrJbU;j;Prn)-sAakRZw`-6pErqk?`3;&uAzu z{P{prS`8xkv+S8yo^dH_z`=CG+lyk3Be3lv%K4?f9Nc&5C2N77|8C;@5S4Djwf@J= zY=OC3CEnZf=Kj0zR2hHGBg2j}55kE1^smtJagR|Dv)CI;vf!?pBU$>YU7e`C*M2VS zn7&@9!FdV%17}3gzR=1660d(tUf6y(Kd@&!qf3QEPm5k%RfkBoJEFbgHS@ z=Fc|P)`=Mpvcev|n)!o9qh(K*v_LA1m)P}zbu|SYLpg$xlasS%Z^XV7iSI2?je7tN zwt7x@FXUIPNiKYU{pNA2)ArDhm+N)JfXdI{%KGV4&p*G@UFb+E2d(q%MQV`bSz4(w zAVIoa>5$1%o+(nEYh{k3%L947vk_wFb(?>Eq!ibYL>Mi{(KCa>x=9x}5=r{396o{J zhtb+igX_DSj7ktswgV5QFFNK}cO>p%=nUrC;_Ft6+SJed4(H-qfAJ$KhpM`y_s0n3 zlllLS4;NAg^Gpmt968q>a`E%8MXT}KP1e>RRD6qUd+riadN&j8^Lu`uig|%rBhp4C zHl|(XU^MPHkehJR6TEa|ql@U-$|Y1%My6K#4fKa=%;IU8dT%dy$E;afS@C>!_XX)d z0nvV+oGvl7UVH4+@P=GfKxrK`D0+TV+j!plD9z-NYVU2|^%{e(iIi&2-m0qMHF@CkWX@rmT$E7l=TDei5$1>lv@Xr48x={AY2!wZyYy zHG!J`Gu6<7B5_)?wRbpeX8gNRSWqI4| z?5w-k!yxyTQ~*4{GWzZ;rcc{f;g*Hbx%=iCo^&;j9zFUgt*Ui29mci?+F)*RrywLq zq2LagVFK2+KQ}7_=1G^$n1wGvJK48;kCfPjvyrFV?2!$s(f&*S^(<-EiPuOZYOL_Z zlZbAlf9Usp-u3D5N|Z(tk`dllAC3mqUuu*>gv~+abHuvdpB%4C@?K$6gmRhcCZ<1z;f#wj*$B&HWe?Y)>Dc4DA?SPSY5Xfarg>d=u2>k5L+Pm!!K z0A;gt%Q8<`CEaYlsEoU|@trXRE@j7;keQv3K`4_*uRZVRsokIO%~biUuZx{3{$0oT zpk^kV7r^!HXJ5JOO7=iwG$`b`bMYGUw^0ue5}7TxW&A2sYd`@*2Ms7#y;vE@OZ8oo zutGM5(;e@x7esK63NIxQrhVeB2vobAog6}|I_z3EuV;Z8-}+p->gEsM{k37_fSjZy z)g^nqWp6a4ft)5dyN`$u{t6+5=h#Y z%Uuxt9WE}eIDW)Y{|XGuNcYG$ZXdC3BxK#NTW1R=1&N-aeBnRcJpYTm_kVbLupx~g z4-e1zF!n%3W+H@w?tG97DI~pyC?Ej`BPst={T_Vhoe(0uFy&Yj?bmM>MMdgSG)#`r z7~#!F6p-gP>XqvEe$OB0SrZ?9O?(kv(%Yy`a7DdF=-usv$c1oRj_36F?_5C8mC_w` zp}=CJpQ9mRnHcL`ne9>bzFp?N!f2A9r%lW*>7uWn9Ap*Tm*`MO*bl6UL9YM3H1$jE z23-@6h;QGAH@6^n=}AnVa%QKzM?dsiDl8{`zW3efcr2wsYA2_#9Yem}-2)h8GyzsxS)BnxD z`#(P#|9|k4e-gid+WV*l_o=<&=^|@(PIh*dB_o78cV>20!&aLFPy=$8c&EB|8Sl!g zTe?M9%+82wKon8eDIU7ab21D4wL@`3Z`eR%g&}t@l6-P0v2=7{URMLd6R_LYkZHHJnfd2P+f~)qkH^Io0R`i_+rib$ zLnkSjKb-XG$yIr>`pYKQ68xXd%N0pP|L+MI_mEC4(b!5${Wbmj(&LUMGOkZckQD>r z2wtZ90OUvUi~MdMdp>agTZYqiI*shh4E4dI`D!c|F<`{;S4w0Q7zr+3V-fqRpL%dx zRIo^M=e`H?qxj_484o(CsVG9E!APH-vpI{sipc>FO^GOFQ)07qYi0)*_ncI6iTsMW7;%f}ls^%;>8 z&mlLE1{rP33++PzLuuU^q!icF%UB-0SbwUj==TNt{%#P7BKi{MTDi^z27U0{@3lE+ z)$hIk_=x*E`aeC!P&U?)``;OMkhQqREOha!hR=_w;Uq|c(RyT zNN2m?mGXo}Db2A<)TONnyo`yx0O&#FE12KNq&UeO{XMCW_Uj!yIIAD7YU_x50t)XP zQ;LmtDr@uT%d&R2t&b{c#;-siuCot<23LhZ#JXhf!1qZ3_b7g4%1TPZOK<<~qecki z3x^m+%u?m%+1b1Yv+5OXE$!;ho(XwJN8M() zJf68zQW6uR{#9j@i}Zpw8+)o(d@|{T6_<<*EJBX_JcHPCgWm2i&WxSho)O~Xl9cR1 z5>|F(Sk7_z40V{ELdiu#-BMMLtY`tuj9>NZW1bwL_7Hmq_QDIf}h zuj|*#`%t}N_Zv~T_aA?;!7T^Ew2+tAxRS_fiM`t=$+VsspLm#@LA#(+`&My_ECj^o zrNB|@q}xpGQH2M}uiRqnJj;Hf2R=Nd2p0x_v$4B9Kgwr4=R_k4$_=$i2kI@#hDKH{MelMRGW)U118uRQgg!mGQo@H za(MH%$Fm3z-Rd@lRt<;&uj5^Lye?N4_TTIeB_-I|HKCh{+^GZ_t6!5wR_ZC6{8Bs< zR_t?JK`%2ke$H^M!aG!CIc|0yZ*gjVzwE6qLYl}e+l(%QUkR&OzTlz_A{2|vA}=fv zZwo0eR!wT<)JR#H7HLb|@CZ2T47SFrs~g69y?S&%@{w#O^}c7q1P9%A&)=#4c0)#x zax817KW}o8fw17=4LU1+=j)w0wfug3+n#pZ=3^xVj=v1UM$XUf|22Ke-{*Tz7L+^M z^`bAX^!1XvzQT`tjxVXPtkBkf#PXRMwuNx|E`4g<4=vD$D5Sa-5n0ymd5Wc9W346W zs})@@dJay81y{FiaUcQ72dK)2k@ryFmR8z36=_6On-W;5)W<1NX$~^BwIk1?`_zZf z@HIu6SiZEbMU+iq=xBR%G8b=K$VJ2>lfj3CuFk>!>n4ig)56P4*&h?ucD>`t ze^))IAPtP4Yv@dtdUC5Ci~>0o^IgXl9xM?u-JZ;E?o zuT0B4}I-7IqiMxnA^rgI@|$UDGx* z`(!J&_Sa3IDbZ@CUzxfda6?*AiV7lkYbrJ4|EXc>mqd`tr&~V)PJPH^!L)fg8#r2I zr8b4cU@+$--;E`}fUt@nV~Ej!Y{aI|cP86UEz}2-y``Y?*&p|$I`IS2j-(0DY{ZD6 zKx4Tr>4uiq1rWlasQwrmUoN`=ngNet=opr^IckcW-T` z@go)K14Lzs<7gR>d{nixK1a-{Zkf~b8N&+9qE zJUanwGoV$MfwELP_2!EDA928S#exalt%s1Co6D&d*N@R_K7%&DURp>E)ZF{I-6^H< zN4xGH817|V|Fr<7A!DFB8W3%uKj#4|73drti6Se2a`5x3Mxg2K$0}Z(Yi<|1hcmVp z-Z429I+xJ#>i6dw39+*`oO$f64o~{;CkMC#ZovbP`1e2e`b^aa@0Ax+Z>a+Hj}g$o zce~D2iMd#V0W4gt9B49gfUZb!A22dTfBZb*W@l#yl)<&`^tYEeZalj9*kg4_H5N+6 zB&u#C=)Mf&lL$DeP!3-nJipX&QhQn8{k{!!8NPVK(QB+3#95^pTO}z;%VagEitF>?`YI- zT_yrt+1?+kgUD%(Ugb6OAR)SX~K`1 z!9V8b$e!+eMQo#zoUmp!m6Y|8MWpUn~E#_dEUEkt8POJTb;! zpq>8fEwv1KKXF1Y+$@6Lb_iqFhpK$xS6alVO-4Zx0Nd5iGloZie@X$fpYZVJ{FClV zIYkwfcs`RoaAvn$0>z*H;39@AH5nc(R)wC2?=MJBO#co$7UOxx{)8fZayye+z-{@$8gI%*nwo=c}}LKgTmo%`)D5 zoSX@luIqyrpbs_fZ-B+C&dMfM>Ot5f-JbR(Fd*Eb^2rnT@da+TMK&_agY&N>w!xlY zj%TRkyAnmzI`+4x#<1?-9@(^eVcHYnG!yrLt&pKsUV}3FJDT2 zg?@27Yp~GQhUSM8lW)t-RGQDR3D#tjeu?ga@GA0fI7g-R;{Z^y^b1lA! z+C2_eEMeDs&smisBYJIj(406rd4}Tu*p!M_#0H6|Lk2=?lo3#A2#9;ew1$i3$#xg<+i@#OALoUJ>KFv20?q9vD4`f~$P$u^XqsKPL zcz%SiQvn5xfU5u5Wub5r!&e&6gvzT zF^V7+TgdO9_i{;N8f93#t)KcrN#OdZM;Af;lm1j&L2$pKYO({1OT;Cf*wV2n&+lqK z6CS>JgYu2#m2|9j*5S|w&X5rmn@H(EH)Xq8b&|)RBER=3z_jBpeBL zY8S8Gx^5>u&MbS2O=s}?!(1>YbN_>pY&Qe)@4uw`{l7FmasMLu9vd5*kYINgH0O&z zvtX()<$F#E3n{q|p`{?dT@U&zA6uIJU_MF?0XmAxoAm25Ic&Jd z=65h1MkeNZa)*EsK`UQBSZKGXfzGG_+O1*d7h!*OOcx z@z0O9TGF3{xy_~$Pi!`48Xa%JfS-aE4MGWY*QN8mL#qY^#)oSlXYB&pm!v?e0}aZl z_Hdq6+GmK9vd&=z=sf}krmvLR;`n3_rpQ>90AM)YT`6}M7Mxp~YIu8JBQdMYu@4nN zuaDNA28}gE(tR1UIMP%#t$r*V_krgA-cp~6r;wl^Z4<*kK;7p~W&~ zIz9^2+PY3^K`v2~8Eo$EXZ#(9`4{vgJ2 zFpMk6g*>C;CK*$lH1HA-kL!rIX6VZa-*xFKQ?k6z(tF=#2I+@iudZAgor7Z6{ z2tS$znQVcq&MM=xvj{4xioNxyBj3-tIFnUJsy$G04{5m6y9q!-BLcBLQOHI!>>3NQ zAHCTud-jN(oxPbXa2IdDbohAl4^5@-zm^->^WPr5tfpJ5n2ls|uI?eSo0K{9bb*Gp zS2pQ=Jf-st`y>E#0E(-(x&f>>7l@zy8A&ZE5ta^(L_3XFR^~l0&<0O}FfIm&ZCF$= z@XU`T%4vr%Y9Lm7x@S`52XxD1Nq5~3-r$Q@(5053=pws->bp`Vse5jjFfOr8uQa6| ztMT=Go{4El_1pRj79Oc?0W?t|n@$IyIsgn++HFDrfTIqWRbUOCYhy+PJBH;Z&UjNn zQ1Y50m{xX=wo{3@438uvjH&K%_WHVE3Ww<(3Eq7 z|1g+&r5hDnt6qY;QYt8o0RK`dOEcV5;Ro+Z+To0 zc#31q4mV{w2_&u)?e=%BOF88-7*NAR?T?o^Po}8@4}j~y@%I_<6fxe>$+RO+zI85r zJ2>QyYxPjYuKpz0OrSk8YCoF&0jlhhlbbM`?1d>q`D^kQ)5XV%Z9doRQL)LG?snUx z`lCh}gYc#(rxi+E)p^Uij(cZ9=T#Yl3(!45-_w=H-0G&pev3s($S6gA_6InaA9%R{ zUa})sf`K?{x6@6|`Tnr>o?d7krI~vYkuvec>C8s~*mIt6*Z}c(lBoZ);D;5wrqvyf z@$tZ8D20eB!w~&Ig^T%<(BP8a;n~b8t9ZQj7MNvP8@fS2!CD+Y!4*Q0+N}< zH}bfE(O4(vjg~CodI>@=${D9lbq}rDxyQ|!ZI)SgN^q_O!m!Os{+plb34&)Ui^H-& zWdshzU1PUZpBuZ&Xq3SdKEpye&MGr;X;qdh5npgA`UX!}c%%Xglzl;T71W*i?53iC zLBey*R3v^+J1mpkR?7Po^f-a3;|f|VjnxFGfrOj8vL*60iITki>pip|NFX_#+AL{D zU8sWm7Rr~1s`b5|Z#n#-W;(cs`frw%fzM+{FCni1P8Gh4bTa7P8dDJ7_>loy8^}vS z$cyZs_jS!a;Q2v14^f-gnTd{4p2LhIA6|QBYSzc-7bYz61WVf@{oz@ppy98u)_5UkWz6I-Aap6*V{4oCXO?r`iG3=F!iN>64(k(eCwfOdT@}EfQnPa= zmDcmTCM{UXCHy#nBl#sGyY>%Urgmx*e?L`(FR%l-f#HY(LK!SXThI8sL`;|#lX0J) zpa0AgD?qrH?Ujn&l8MUN-R*l<9&19ld0?0wse%k7rLw=zoWCta}4X*Jczus=ZPo&Xls{s#pVe58Y$tcJOUkBC)!9Ij0U z?~dwRD)ZLfFw_SZ7_jaMeX(wi9j-e&!dZ9I5s?dQer``ZMMU$96=u6~DnuZcl7*yc zP*Snm9Dj^2>~yq);3Bd-hs&&Nq1&{s!m z9%6$R9Wqy-lVMkHyMiH)->67Ysqk`|owIaRlWVCnqq_k-FK%Z9nxseUE%Y!X$xYVj zTj~}T&vh$Lb(ZBzY{pmk0LO0)j>oXW11EIjMCb6(wRlh8Dt|sl#BjXU-$-N1e~jM|>~^`&1E1jmak1sGk}yrxJR-;rt!KVR^K*JEUo9=&V={xdq?M52DT z54FSGOTW#N__`CNE_Aq_R{Ej!t|qul{*76OuIymXSbs)p1Lr0tK57M)cyQ(-S|k@> zTLSpSSne#3=!reAhq(LfVC^J5T4Q+53-=_j<4sZPT;a{Zr)nR6>&qH3AcHV&Xp6P5 zq7q@hsU-tTh@fL{Tw@0#$yEF6>-EH=!8+mM<9Av>_9ywY{?s%IILPh;TV{ig%PPyV}W$xLg{Cm)by7xN9oJZP=80<_`M%41f#TUUL$_ zV37;Jx1l$CT%Skk1y~u0e9ZLBn5b@V^Y_j*yYHrO%#5~(xzm!pCl57Sd#6SNsvu_b z(IF}wICc-5JE2oT%J6yMViFNS-;&7_2L(tMk+iU(J!}BnPNdXIfV$HrXFfZ37QV=Y zSQ}sa4><`HZq_Tko}U8l1j6|q0f1FiBAFir>3#U{0aQ)gHvpySTVyMo0SU8Ovp;bR zIy!LwRJlwm@L^2K^H1?1mubqJ#+QjXGh23l-roQQBeZcT_HSxPNXXETA+hdl%mQBX z^wvIMbpISM0K@Cg)8uhrE;$7#0vKL9TUv&IUHNY`XJ$r*dc)uL_V0pLt)SzVf$j~Q z(usWwlXn0PPkQXV70O^{t2qg9l?j;I`%aV88j|J!x&y4vzD@hLAAr0AHfG>8Pwdvq z5dyYG!yguv{u@*BHMIZ&NG^Gk-x0(pa8FSlfB~XE_7y0bpfYtEa!IHQ#hzd z{933fQ~zB&XmWywdmyHHLntjv^<tXxR(bv=3AnDeVnekUU*E9=|ibK=a0Y+jh$E)H1O0)c-F*l{;sewOxV<15bv zrkuIfSgsx5{=)|3)Fj8oX3q*jzEqLs2LU2%2n;R2Rf)N#?TBr)2KXObK0ja=@EbV8 zL*Sx@jV|Q`;EwPI`Qv?Hgb}vuEuReVovJ6HrQWFE|PU?6lPYX8_%yqI5vAFZ{p z>qqOjFZXXUdV^^W&@_2~b4gL)!BIZ*tUK9KBP>L7s<}-M46MEY6Bx|oc)yOAHx6E2 zBQW=(!;Ku#=1bnY*Guy}P>LUJ8k>8<-T4reJD|kXE@pgm9Yd*vq38!{dE`ZG(?usM zUS*bH4CKYmcOfuzvPP!BF6J-m6U?zN%-Dzqd>&+VKe13C_*$#)Wl@KrG!8sHtb0X? z`lL8|IYR{ahp8;g?Q0Af<$HqBQG|_m(GCN-MkCUVNhvU!LEv^LOKKdQ0`nkXA|}$G zT-%vPq65JaboGask#cn$l>qSEWIbr@%`;Fb!B*J+0)?1Uoid{3vS-qjuY_ zqK}cghvP)Gk%{)(6_*`ukt#+@z@{?t+4g3A7=H$s1f;a7G+F6u;OU|YYSG)ED=bp^ zk+o8l-&l#evLZ5QI(w@BB8^!WpM51m`I6&!=9TaHvz70#mOW&#w~f&&D1OU5ol4E6 zH@LRA8l3y8h*|;?$Ipq&u=wBXpeBG6E@=S%TE

7Ye~4c?$0jo(YJWbNX?zB^C9sL1D#k&=Idqixs(B3a*u`Ddg zq-v>5G()&oEiH6H?RmL_IVpL{h-ga~S^t5t5g$q)K8g*+t2PZX^sM*-${Wn$Ho)K9 zm!n1PK<~`49J=@{Hm2+Gb~_l~%zTzOrSEP0blXB3@q=ibsPW}pJsEF`cBe;t>-|7brWo+03KHYn0?-A z76LBg>j&f=i^fFKY~I>%3IvumAFAuV*;_hsocBgAUT5}rWuHafu0_Ht2v+jj*8y-u(jLi;A#XCQ7@ zPU;WVJ|l(SC9KqRE;41@OjrbpTRry*TF41y9$^~VMIA>hO*E>q9@+w1_vUHoVHAf7 zR+ZPR+AGpAgV3HJ)XZA(Mq3I~qpLYIx%^(3(GQeWUnMND5Q{Y#6+E)D`3R~(-s8f< zb4$1M(PHKZD)|o_2O?rWYqZ23`L=Rr^tVn1ZlHQLQp(MwA@_$>cIb$nC!FPMP9X3{ ztoauYnuwawcsZ4vyF;}X65nd`!snj;cgO@J7Szk z+Qe`YY=dI?+ii#XWh_?dLBMLJI4wRb?UGD&d^?n%64}32mZCtFQ6=e%f6;q6_hqhm zU2Ufe!G+|SJPEe~rFf9L2+RsqsmP!Kr^d><8E{6O=It-tL*&31xQ@^p=T7!jSHz%j zP;M05*Qy_lLXw~Mle@KldnD=)&#+?B7OAD(Q5DYqSVM`^#D|WWsC?G_d&`fw+rRwC zORso@Dq<1a`Xe=Wv&6PXp%IslWpwQ?UKGTp{`B8dWw}B33}C}vO>C|~*_}y0JcaQ|2VQW5nB*@Xm*tvAkOi z6@fMth1`Y9Qxsz55Eb~jLHDxI&y;sM`k@fF&0fm0)Jvrd58!0R!)F8eX=uHvrFVDb z87vUD-8*!>({)s`3-~^e${sA&S*@2>_8xv-w`1-6{%Nnd?hBqihHXN{M4FO<>K?L- zjzUtsv5-Z*GfFh$r4EJdFRcV=uZ<}O-mA>w+Os6kS`nw*w{RZog*#+CLGF3wUu!3t z2)1>^;M4(8f=+6y=-VrPuLyCmtrP!#jI?(0FFd9BoA^ze`pMs{$k4mpWmptlOcdqA z4*C_?PXPIAOs{6G#cv+3)@)j(u;_F(jXoRSxYkz{HJXq>c>cEhb9v&vDKZ?;lrB9P zN{Is9x2h}-fHF7rwO7s(+5#ECBSEjLbQpdiHp@#3t62P%IEt?WCgE_$SgA5J{6~h* zFM3|aQ2h{FhhcrDBg_t7&JEDu?HCg9gN{hIKn zf|?>G9T~@=!iLUw^WI5&=u(Y>7w#r%>hj%cb}FU>1bKR3uT5rxE9Z9#yyKnWf*+W! z^i3C$G)*YWI^g4ls~=mod>Iq9P}>6#M|Tzj#@lt%-FlPOqKtHdYN#XK9J4u zzDVV>GA+s6acA*e({zU&rK>fC-Sy;DNt!o)IMuL%Uj`cK9Hlv}O93Q|azorx5>r5r zU8X#kPjVjd(`|G)XHNrLSUkrz0T=#>QKa=i`I?9aGHe%&h?y<@_`YlRk%b2F&to~{ zRnZPGfeFt^e@41Vz?zBTD8-v~Y~cZ*-=zXsoQ-&(qA_Bp(UEcuuxW#yR0%$znM5Qb zEgX+C)?m<%6-?|Jcp^NAE72cXq4Wi?^guS0D;EC9{(33c0XLk2kQW3Ks?u4!c>so6 zH}R;;gvne6fC3Ff)j6#L|Jq774$m6a(j1l_>>IHb^$^qzLw(mPUing5K5u!#bg$gK z-vp>O@fPY*xmio&RptA;_dd6}xm)x{11t@nK4%D5+I1|EtOgPz0LTLU2$6@4jM3yv zhKP;30ovq1t6}-xIUNe<$lK)UW{i1kmMxO+$2!}`7V!qbxKo3!b--M=zGB&ZDjeld zXO+`%n2)HUpmvA6c%T~p_JlguD)UO}o4&xU^(@-^m8hI@{Sry2gO867nAcXvi6?4?v0yi+y81tw z9^gL_&n{5V*ID8F(AwI%W&RTI5wBjo0^^Vn1d?{gHrk-HAn+)$9uk+8buXz`)dGC^ zmTF(s<;#~7_ji?3q$MsCZk`IoCUWbWHXr`@+63-GjIvu;_Q#JOU-V9d(r{+V81C2v~0+PbUJnrsUZ*|@qprdPXmPFeDEcMc;zD9J@@3pz!AtZB~8VA Ih39Yn7h)|%@Bjb+ literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-bar-horizontal.png b/benchmarks/conformance/shadcn/reference/chart-bar-horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..d83959cadc816131a26ccc128f8e9d59fc74cbb7 GIT binary patch literal 17142 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 P2DziCu8?>0-t+$tyUt0K literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-bar-interactive.png b/benchmarks/conformance/shadcn/reference/chart-bar-interactive.png new file mode 100644 index 0000000000000000000000000000000000000000..fb58da98a7961f1f26cead08edfb068a3cfa9d73 GIT binary patch literal 22483 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-bar-label-custom.png b/benchmarks/conformance/shadcn/reference/chart-bar-label-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..a99b6f62afdbdff9b15925fcda5a1b0e9a1dc208 GIT binary patch literal 21709 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 K^J1UNS^oq4wPmpY literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-bar-label.png b/benchmarks/conformance/shadcn/reference/chart-bar-label.png new file mode 100644 index 0000000000000000000000000000000000000000..e0176d492acc389b2a13c748903dff5e17a31328 GIT binary patch literal 19586 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 F{|)17<=FrL literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-bar-mixed.png b/benchmarks/conformance/shadcn/reference/chart-bar-mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..abbeee002d1f02910a5b547699d38a71290c4a9f GIT binary patch literal 17899 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 XWz9v|l7b|`7Koy}np}a*>yQ5r$&da~ literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-bar-stacked.png b/benchmarks/conformance/shadcn/reference/chart-bar-stacked.png new file mode 100644 index 0000000000000000000000000000000000000000..d3736371e87fe7748a99c4bc3418ebda2e7ea620 GIT binary patch literal 18946 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 Hefxg^3${C9 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-line-default.png b/benchmarks/conformance/shadcn/reference/chart-line-default.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaae5b4c3486a43303ea61fd52f7b7fc06cd79d GIT binary patch literal 22304 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-line-dots-colors.png b/benchmarks/conformance/shadcn/reference/chart-line-dots-colors.png new file mode 100644 index 0000000000000000000000000000000000000000..33c2e6e25df24beb078186fc5f52a3ad136ddd49 GIT binary patch literal 19468 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-line-dots-custom.png b/benchmarks/conformance/shadcn/reference/chart-line-dots-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..23b4e24fd28ce51d22ddb69cc2045082e306b5d2 GIT binary patch literal 24567 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 ai6KU$f?-(+0(oEwME#zQa*dL8)PDd@(ULL% literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-line-label-custom.png b/benchmarks/conformance/shadcn/reference/chart-line-label-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..797ada4effa5a920c580b7e41c2a990a27e7318f GIT binary patch literal 22480 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 l|NmdIT|g5=2iTh*6`Pf?$-WAxQK# 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-default.png b/benchmarks/conformance/shadcn/reference/chart-radar-default.png new file mode 100644 index 0000000000000000000000000000000000000000..5c809d52e9f4180e7b9bd0349f387f0cebc58166 GIT binary patch literal 23971 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-dots.png b/benchmarks/conformance/shadcn/reference/chart-radar-dots.png new file mode 100644 index 0000000000000000000000000000000000000000..ded8e88eb1f7c492af52dca5e0bd5bc10ad9b04e GIT binary patch literal 24875 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-grid-circle-fill.png b/benchmarks/conformance/shadcn/reference/chart-radar-grid-circle-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9b58a8f5c374adc9b622fb25b05eaea99f8406 GIT binary patch literal 27505 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 Uc!N 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-grid-fill.png b/benchmarks/conformance/shadcn/reference/chart-radar-grid-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8dc78ce534fb4f65e5ab5a6aef6533e269e706 GIT binary patch literal 25176 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-grid-none.png b/benchmarks/conformance/shadcn/reference/chart-radar-grid-none.png new file mode 100644 index 0000000000000000000000000000000000000000..14983547fba9a1b0d8d0b3f325bc5735c31d6370 GIT binary patch literal 19172 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-icons.png b/benchmarks/conformance/shadcn/reference/chart-radar-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..583b03e17e411662c49837dfc2c5f8c44b80c632 GIT binary patch literal 25389 zcmeFZWmuI_*Dfj{Dc#*6AR$P1BPAUY0@B^xwP+BK1_@CC>F$zlknWalr1xCD?{|Kj z>pJ_|`~UgLVy)+yG3FTexW_$a#5*M!G!$Z#XV0FY$;nEpK6?fm@a!4P2ofy#Bpi?J z^4T-YXL6Ea>K>T~S%{hHzn30IuR2*-1}8FtWN}m^ao^$M;;NK0s~)_PHsLxQ&S<0S zvB1uwC+4~hB4lRNE=P^bgGA=Z;*e0=y8jrwYJEB$8Q

XtGI56KFd35vk7+aJS>T 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%0D^hbcDgn3W=zSYq*s>%Y)6=?j_K?3qOUw{)uqD& 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

ocw;e&~>4w%I_qywm3Qoz#@@WHwQc5||}e7>N` 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 bO-V*|NA=sb-gDvjKV-*`=xDrFGx7T`&-|sJ literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-legend.png b/benchmarks/conformance/shadcn/reference/chart-radar-legend.png new file mode 100644 index 0000000000000000000000000000000000000000..bfeca858662a5e2e3054df7460999e2072eaad6e GIT binary patch literal 25404 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 HY$E>+GG!G^ literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-lines-only.png b/benchmarks/conformance/shadcn/reference/chart-radar-lines-only.png new file mode 100644 index 0000000000000000000000000000000000000000..16b1decfc1b6804b9839ca3b96b1d8789f264e5a GIT binary patch literal 28328 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 tggAdwN*W%biSGX6H2b|8@!4 zc2{yRD9=g!&9%3n=PK?Hlyh(D9O6Vzv!kSUquq zv_t=oAM+UJzq+Ei|I>8&zxEHQI8)PaaGm3?aN5V?){@(IYXh8mDz`DJ#CKsFD$nyN zYW1ZS27X+`sbYr~IHq*Gu^5c)L{qF{rmvl=Yr*#IjYT?=!~-4zK1F1ndV$tB?|JyF zg~b3;F+l*51%;X+aS8#)wwG5R1S1_1?6UNQ-3hYi8o<0EI6~}25W)sQse`B&q4RdC!A8PObl_LH?nEnRja(9m% z@Q#l3rFLCVrhW$I0T@heEiJ<4@-LrNoA3D~5@tLt%JLv{`0Q|~EP}KTfi=tT{+$L1*;Ig@){^wk zd+@IM<4j>Vy`e$bYa5KDUqDp`lax(H&5xs#l`TSc9V<=_UxdY{`1CX6EGYg&2u~>O zqq4}A72tcy63q{jq+b>o$yq<33ze=yb$R+M@+Ld#ytwMP2J|X)X2Q=r5_oM5{W>w^ zBA-xz5Rwo(we0k zwDP-G)11(P^fEAmaG(f+fU(OpJDV=^EHYj2`j?%!{mIcrt4>BSC&jL}&tS~l-28%a z^bDJ?L$enUre%rJIB$UHDDC)PJSW%ja-7?G+K?`XigAl!iSIAaVY_`A4)-rF-uIha z%H)=KbYup2_-Q5<_I)v-xZjXaIMs-q@SXzbcSfzN{(z=z%Tzbi-=;*cMV%_hm(uZD z21{uaRo>(YOZ8|77r>Ys2X%F`-on!iV42%N5ZcYDT&xhYl9Nb@J!~lmo04LG8X^#Y<*~SR5 z_H-xBEyv6U4TXxAq9wQHuUT3~IR-!*X!I0)9BTLJp7{9qZNc_yZjFsw^A6n&aD5iz z=7Zw@2D?2rCmd+Ft0&AsV6Obe%Ypn0=b8<>)cv`%~Mjtc1-mOc~#lnCFhYo$(|<(@SE z;u3UFe~~REDZ`N6T}w+V?a4eKULS9Mjq5hkioQ_|uQ|Mg&H!9S&)h5DJ=p|p7dpIk z?mydQ4nLXviacH)6>DiVQ~6*CH7Ryp>LpwdTY*5(Nr3Y{V9`2o^yV5y-=5MuBO&JB zZF&qtfDXE>Ek;gtd=1Da-HnNO&0jX#zppwSv3t-U>bNfT5PO6wu;A{_n2d0*^Hu9e z&tPX-6*~(1n%jh?TqvR%LnJMD&AF6+B*FbVBA(scKOCd2sdRi%YUj^x;qqxRnT)X7 z7c@kI<4MD-<;i@^2#8`pYDVz~NZ-&jPftH@Ci1CS>@5i%IKRhNm>L@~wyThB4pSKT z0g6fX1xQaCj5aF+hMFypNOJ6%`Yaw|RlseN_A`{GxVPN_Lbh&c9l71gIU)tOA$I%Q zM@Z|`dGme&7qES`ICqV!m?>rn>}G=bv(y^h>h4lvggaB}%j$;sc8x=914)~lomP;W zdTx99kqV(7hOB35YFf3aASY*j$R|UY8U8FdaCB7%f6l|tZ*%TPMKtn>28R0j`i6$=#V+X&HTm#49WW{Puf`j* zEA|~E)o0I^NCio9yoH1F^y$-GNCqu4CH+1;Jp9bN5(QFWVcSNn+E={VKN{MIeuMb^ z)P(4K)Mf*PqNx;wsZE0Tx4;8UB;))aD@i=kpBkMf~>Uw literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radar-radius.png b/benchmarks/conformance/shadcn/reference/chart-radar-radius.png new file mode 100644 index 0000000000000000000000000000000000000000..2b6c3f8041d990efcf43f6d558b71df1f6ab6967 GIT binary patch literal 24287 zcmeFZRall=)HVu=@B-4^UDDDm4N?Ls-Gb8HjdX`dH`3kRDJ9+AE#0suuJ1eD*R}uu zbg!f3>wIFy7~_ud81zA25(xnx0SXEVNm@!w2@2|k7Zen93*-g(C6tSt9SRB+N?J_# zqf_!h3Y;6}Qt@4drI(u+L3EwxuP;zjLJ~(^Q^Qf#;9!^%<<{7z5<)Nu*X<1?yk&~0F zMzOcImw=G@qK07*5fNR{oSdAnva*Jm<6(X9idxFdBo~`LvP9_;4nq}zkm18snrNAR z`h?|aU|=vlKK}Bz6%;fR9UUDbWKKsX=!PD-N%Kk@GK2lA3k^;IULSS zK0kyUw@9azm}>a<@8IBIo6nC_ZF$UZ7Jtda`TD|8_@asgt|+RhscC8+6t;W*vOj52 z(s{lJleE;>*ceyq>kuq7^|8!`+8#X^>kAR%%B8Kr*7~ne#6ShCB%_63bYwsqh*-@J9$5cBIw_ zF427eJ^^^9i0>=g((CubKY4*n#qS zs4t?_^Ee1jBordJ2@@$aHuzQZ-3taVsLl&U6%4V0hA#s{R$rj&f*~ER{^vrmpHM0) zDxPOUT!kv7oM=6X9Ht(3hqV{`(*(72OiVeHg`bPxf``t+sCo5<5#Vf!T38%`5nPT( zn&UQ0o=@)KWs45;3A!w%Q$@{}bMyiN?mK@nczAe{EE;wVA_TVF8fT4?tV{e5aS}Nz z!G@H!KHf$MJ+d%v$0!J%6gOXAJ25>~jmy*1)3Y&d|E4e9Abq;>eCj>T&rSW!vE+WW zNS&wYcG6vw7r}oj#pdXIJ}ODqU*1a$R)D+$KIo;ql$4aTw6wf@&rW&^2DPly;8*w@wvoHj9?(^og&1=E*vZfi4blQ9S z`#21$R$%fGM0_|=I7V1hx3KX=#o7D(sd9iirhai;JW)O&f|I&?n`{BywHQ) z_+z^JhqYI1?%OGj_@!)*=i>@;1a*4_h1?xK=#*vuUay5Pd)#cs3A*1>Qd74)-tO;D z6`Kxg!;!eLP~9v)J%0T+cXMQ?ULwb)^D!BMYaiWRaF6aj!adSs&8Z_I$W#JZ^DSSD%~Gunc3af`gf`3m|g1zS&Mg zn-jQN7%zS8TcJ{-Ios^&_@eBGAFc zVc&8Nii&6RhqA-0AiKw<23Z~EI}XiTaM>>w`>x}(`l_Yjux5UkXPa<+sITR6&eXE?q2}0n2JwM3 z@VD)K^VJdsTX1=eiR2MB-NSV2qhI5un8&NOypy;9R|kihN_2S7lWv@-zZQ!PJoFK~ zd$b>soFyvJGQ>l$M=`H2=PjiTvZg2`!!;|uz>7cJpN%NyPfSeQ-`_L0-ba%UC9nmE zjw0vfnIeN&s^QG$FjFgR$3 zEb{Q-BR;FgfNtrFdGir*M5CM2&F^q1Td>VHTS*@|Mvr&LbMIn<179E^V}Fx*0Ee>g zjf>m;N$v9wAir;j{bGS=v*X zM|Ut*V47{)&Dr)yssKUM^~JQ#vdcc>elx1satwOq=Dh!+X)#n5t;hc8z)KYVKU|E# zFVYGVQJ>NE{>FX{Gg_#)6h3Fm(`|h7R?1mv>VVf=7iv#tJj*IpGfb0(%IEHm8kvU@{i)bJd(zx0D!3JJ8YnAg>e0m@ipPhkb6GIRX~`ngwc`AN>p6N&gY$v-Ov zS^^HzPlChb#yfJ7EcRSw?Qm>^Sh#zTSxX8EY+z=lS??+yF6YnOdeLr+CENa34zKx| z5Is=qnKkX2JdQD}WY;d(4EVf4bVEE~;Br{8)4Z`}8C&MO z37iN_$*=DGS)-sNy;fVF9+*E#zRGN8SH@30iZ=)+lX?gFaxhcA!{n?#_fC?~+82}w z2r1q7n`2^meR z49oX(=pmxaD-T1`h+(?GFQ_@xHu7SLt?Yb0^BNiuvN;+u5_nTk4cR;qUZQ-X#I}_! zLeCnnHdRR-a9}&f3J7?^jbf)$DW#2iBQ{~3=_{eZt`GZaMNG%z=GU186TasV$8>s2 zUfrR=0X@PcF?&uCZ8WmOOhC=cwN`7v)!DU9WscIgR7z zJ#m;rYB{D><{F-(gkEdZ^xTGSAhLEAv&NY|Z4y$6KNRyO%>01(?f&Mm47FbC#g;zJNG0 zf17uATx_uKOXW!CenSa!CCZT4>Pvgl>w4VG)q1!DpI)D2)N5|^C}fbsh% zC1&TC5kCh(IA?W4{@~66T#!WL`u=^eyQgv10f-N7wh5nPcD4SF4v{JZ9vZIM^Y9Hp zML$q)kG$cCxi4o7&Q4FiVOz1k{XIP2=CM*x+OSsufZ93(iRZobxY0q#C(cya^CVKv zAU(>kb&M!MP_BOe{w-y*-jwEg#N)H!q@&JRUtb?)EL6eeers2l zWTb;#)D-OGaP{5MaDAjhA_r&9YFl$wgW2&nLPq;;wF6Gfq$=K_oCv|&K1UpRVJ*Dl zyX6@j3)(mXzD`6kv0R$pEe`q}h{i&MC@7kDQGJz_vJ*IW1Z7g+VEHZ&=clQIPIBtL z5}cY-6DF%3c|pHS9_PR~N4eTCPrLgN7Vd=JUJuQAch*=5PbMb$71Ylo$TPr4>nCkXMEQR~{Qt*P;eRfK z1VK$tOkiSR;gMJ~--gG(99SZ>m{oH1tVDi$lK)@|9Re zDAnz>pGxNEYh0G}ni{|zs{8x<+fzL1N=lBpadh0a625voTueV>u`0r4gqza=W`NH8 zh#VJ2tC9&U>c{}6;Nxo)cjeGx1XN(P6Qo;ElidM9`1R|ThFQ5EyZ}3IVPWC=`g)jS zgW=I}N#jw&=yEJ7`P+6fm|19{+np?ayl3D_UsAUQp!_P&^^)uHY-vG3ffIkiigg<_ z-1*Vsd{qM9aT5j_!f&IYRtbCoF#m5NA|eI^2Y}biTQo8v`uX`yYdI1Lzry$k-Xj3u z#mnp%dET`^3faQH#i$l8hK9e4vA};-u(F88nd*W71amFB*@7I}xDhQAE_k~GxXa^y zX)9;OHUJD6i^g&L`}_4wfW3xce1W?MNcRxLl7>Y+l^~R5aHU#{+fAGI%Nvu`4!`(V zfNNkadv#j6Tk(%8T`v!2M}(g4?~Yq_07+I03J>p*I5Rt(t)wAXp-a{ihW=kI;26O1 zA5ds!S9f}DXPENM1)##wr>LH-w9k-bu#xf(yv2ajW+TsFu&g^L~iRZz5 zt)+=cL9+xC;rt#UiCV+Olm-{bAi2?BhZ3t@F7^Oiwnq4f9njTVZ@aBD46x$a%GS5b zw=(bFbI%QNEz7cEGpPRE%}ra2&lhc3YdR2FREp2ermWefDA^BTZh3|&{wO5Gf8&ug z@i}B?KYZ}Pp14`-4&kA8^!5YL$!h&z(@Ken&{5_gH#?jCvt`{N;0oU_1DaoH{;)*^ zJOZcW2ZioV{Vw6cF_$QYd0}x)rpQ6_mJyopsz}}!f~9x;fU`)RL~_ahE;Zf!9g9@h z&9eenaLu%~YZxI<^d*uI3bu`{?SuSp=HLP6z5Lufsv~ZWwrZi1E(}fiQtf7LdxKWl zM&{aiZA`2_7x^yp&FKq}(XC$Gw@Q$aG@BUt(8<9@@3&)I9B4y5wh@1?pP^+T%^sp>T;*rs-OaXvE@N^hSN z+za}@*C*>YGI^*%Lq9R^9`BB~?Jx=Y^>BVKSXCMh{2UEk(Wg;J9qf!7!Y@Q^p^^=j zpNYVX?`0n`BtA;^qv4>RB`Qu~H%9N>9v!^EFYTnrmKHbw=i6+ei z8W#LQuAe**lP*TxU$%$`QHPB0{^re7^TK_&F_R5bESzBEkY&WP)bPD)T=uw=OXfbw zP4h@(`zqgQVvQ_9?;Df(V_L`a0ni6epbnJFblRS*XQ*F-pohnxCcOj_1f+XCPWsM^ zHhhtKg?W6|u`iM=H`xZkFvn202@Ns)T}b39HzSMs>t~>xfjlq4zI22J^bRL^`C%Yh z44|0xgyOybh=^9+m6+avK{DQ!g<##CefoDz?bt2E>J-3zaJhjNa-ac7yf+%NR)x>`3V+< z7>F}Cwz5fGzdi$yxDrM@ZqX0zd_F%QJbID{^a;WN2wS<~gwO2;#nE4#r`tGt54i~f zRM*;Cufk54d5w3-FX&~pW@ShjgQFE6-(74dnpX7DV*C8oGtUZch8P@_bs|HE=Rfp= z1L6v{DScM2X;hb-RTI-2!9(h!Us%rdB2E%PP6;9R%8Q9XFIUJc0d{009sgcL)qT0tT+(dpIWDO58M zeTr`NNAF)0^c4Dpi;HR28yPV*kT>9XZQpbL=HS^)UMbjJk0Sa)c_sYi) z(y>H%%w@{;^pb~l2&c9(=wOTC*02}eBKv4@iUdkg#lHwe+-R4JN!vd7z>G`!wi*J3 z!p!;i5Y2={wGNuIW_b=Nk{2f86{R;EtAa$T+6-c5cwT9>7!tt4#IrX)X;LiRBKVVM zaewqq_u0Ulcka&Zd9k2MWp4yR#|6Ef*R^@a4Vm_Vjr=QG`E)bld27yMKF7WW9dEhT zqsj1jaEp|{2kNY-R$6C!g>&xMb(N7fr+IISu+kWRNz?Vq$60A&WfjgwLR9pAO6qTV z>9Xt$k?%ALv$6h2!GxNz3dPbX=WsX7peE|{-4RE%Kf-xC+j4lF;LZMov(aB7O9@jbt0xk}5QJBDk z>&2d*nSol<=YT?%$PPm`&Bgdwec^AM;t#{ST!m?eQWwvpjEB5?J` zr2J&h{|`55s6zgM@Sj}3oVtxfHQZ%gCke;%Re!1(_(0c=NoXEQ`u+?m&AZtjNKN(>|viqV1$c(;m&*-KHS)cK4uG%!EQ36YiYk@rR+OWp&nRmo24ItL; z0v6rWB@JQKIe!TuPK1U`c-^AOk;xLsoZld0e zS@%Wz=~e1cEJ1SPn(ZG*4K+LQ9y4DkjNZ;vnd(6~UkPpBe)dKZ+G0bWAp$ zrQKPeA38~%!as4rI5&mmC{D`(ua%H8hM$R-*KDTDAe_fv{TErcLI_D)lqB(NnYx>D z**)Z$0s;U_Otvvq=8i$OPyOv6ZWedJ{Wa5O?k1Pp^H@=gbwQ&DyH&%&hYjOYD2$q$&9E`VYlgYp_?-+u8@ z!GDY^C3$^x;k%h*Ud|ODAMF^41R}#^R7XOr_`CzD1hJNbAglQ0mGK!p{vMdX zV(E~e!O=zJgxtwg)!dYu0%L_7Xw|~Q(6yptO}OBXnF1L%|EJc>|1DAb|855T|4;nC z=gma1dwY8Y1#c*PcjCM70X5HRX=y1dE32q@`{vCXLBST&>5|b=6IsO3_CHTmB6ckA z-@pG{qL}~~FffvmlanJO%S;4j0@ea;c%A zfmpzWl8S0J_8SYyNtfFvZEcGV$d>Ev`7R)h^MKVzMi6T$D;xNt4pEx`rC-4Hl3gUw z;q{!vU;?+Ti%SEBc})oya8Nypii@9l*{Q4;FB8+SFPePA=1+|!+YteS-f#|)K%+AK zZUi1(vN=8}OJQN*I3}&PY-~w=7d>5FWza577K^+N?HEaaYyn1P)@nEhA+Fu*Vt>5U ztkyZZJ(zF?egNwb0}j`>)=1S~385*6OU-;IOIrsb@8iQ}shF7~%*x@RuMap(r^?=S z5fm>1pJfCPYQCd7gElYdQeZ1`&YL~!+!d!AF$$kQs0UJm!#zrzUsR-7ZG!be!k?Ck zs=Er+K~K_WjL>(m9R5uy5ZwSWRwYGwc&5g{{lU?)8wKW?YD{eG1<21#s%5%BP>5eK zEp46x7PIgR2C=&rlY=88y-h}6zs3x4n0qZMikY#)z0SltoGiq-OpIq6C@(KhGOOsn zzd1Wp>GVgcG+x=**yxX;`OiHXg}9)o20Dl-Dxz60o}b&1_fzANMt)$Kbh?SXeAQZ)3ccoR^Nl)MWdKKrW!R~YBQ z2Rl>i!{^VRRaIwzX$`y}qocKHM3=0U0yHP~IxN;hf7HNdT_MWBX9R;ro)XUuP+ca? zIxC=1PEJm0_9;pd*#kbK_v328R$*Am|2m9oNq0yufXK)<(CKrLDj76(hanI(BA0+2 z8)_NiV3rR>P>NrlvGl)M0N(Qv`6}lB-LL|hDis)$o=}ke4m|yyY7=t8%E_L&~j=?;E)MtT0Nhh!3~6L0$v7E`|bt&2sIUzA=sgO z4n5y4Mw-ou4Z|qUaU&^sX7#FX&qfOnc!9vW()8%d)^hrro=Bj_)3%2N1)W^1Q5@`Y z9UU|C$iRRB85h?yp5ohkD-#4SUL{=p?i_PqwrbmriZ8pJA*mJH4)X+X0HKCp^+>PN zpJyKMB)(+iC}3iM{UA^NsG<^c)P1bJ$#w{()CZaoXbp{x>4H{`kgrB@L9lgQ%=K{w zY3m;_^mcXOS{48SY(x;4$YH1*A%tb9t8Mb6kicZipH%{=L_~5?w774dL+Rsq6;fdx z_W>G(#EO5AltBdw&qgG0+LD2lD*;)3e*eC542V8cqy7GrL{C0?g^mDQ1bX_+ zv&IN~FbPRX5&*hz6==0V&fyampXHBz-#4_ZwAl{5uxaiOI=X4{b$7MW9ea z^rZOIN0NEYX1}Jn0|VPlW$oI!Gnto%XBI-H9;hvfp2@+D0cjX>62C+h`Z3Z%go%M6 zYVuR!9j!K`rU{&3puzoGem@*|4r}^ahKw8)^j$EvsVnHW0-1c(vo>~y`K#om%lVGp zBVi!LEMnB(Sb7y$!=2Y11Hiw$>hMFHF4pL!gG7@ZKHJKb(EB9r=cB-pxBZhYJn?b} z?Y+1u>4b!4pu9hfYT%X+zFIBLBVA}gVIdmNMzKb%g+sQXkXyiTx^J-sp&Jm_vLqvx zz+C=JgW_Vx4CKgSq9zvr%xjli_CX7VG}H=koF%=6(hOA5BT=f+a57^+I?!L&6^J67 zpaMbS8+Uu_@&zldepF8&IfKnAkCSyFn2uy?I3;8-0-s~g7en3(wk`9u?bcvDs2nZ8 z+Xwf(sTg2t1poVV65)A$glk8^B$g|gQs(;&!Bk+BQ)R7i!zGGcp6GA)8g-9P51jJB zlsziYOpc%X15#f<-7P!pX=Sot>D6|X#?>}A%Di)QQFC>)BoAj+j4%^_KhN7ad7!IrHVi~c+&TEHl zQo;i9J7i*hr==$6X-(T9&}`zeGw)j)Y`{n9DJF~8TI+Ye zyEJs}kEYsAwjBnQ0}%n?*%1Q$8O@-+1L5-?h)pg1)JeFOr?{R?cDqW;6jj}Uh@Qk1#^ z#R8RHR{I{vq@)8OoAxc;*dPb+>5fgOj_zhG_Vgq9?Xd4W!I1ISaeI?)ZywDTsH>tBxrtcbmG z%R@f;+*j4hXx# z85YMLmo&SPxEB5banm3~LEvJd{X1L|_S);?Npf(Kw?S_eIT{WP>g%Jjeql7-vu&tp z4i1iz!Tdki;IDhdo72U=tjdz&2B-GOt(Ww1Ajv`FY=4wG6)_-ZW>$zH2o4khcX(0A zWNmGoab!%0N;4QToIt9mXz;TrqA)K=zVvNSIW^rBWsmb?Pt9lE#S~@l@tc-{?0zJ1 zO0aY(gkN8@1BfvVUIAhM_YlecP~uy4tkeOzf`|E9YgW(k^=$6rUT%!>rq2N(wr}c8 zyZj(R=(?i`s#fr<{}!RLr5zTYfWbyYNmE|>)8_Bx=`XptUmT>v zkqurfP6wLWh>qSwLWRh`8Vk7)yYE;I=}q{Xet3L=X0E*&#u@iH0o8hf4rhx|ix3NI z(etl^!%%b@w!`r#7nONuq!3xT6nHurkNe9`XXb^c zIr5*Lw+@f7xkUcHKe0=fw1*<{!oeiEY{uId$UJ60MFW^5UbWE z0VmEFHrXE2gi%Zf3a{1bb9`5@fcD91$9(b52s>~thZpLs<6_x4FDk`>@JG2p} zie9G`!Q3cAF0=Us6{ky2kEXZXwOu{kL#~gj!4+ek+AeakW(!%hPp-Rb;>z-kRZb7Q zZ_d`abX+Wt*xWfu>UyDLTr3;JJJ-9qd%Ajh{vhY&=bd2YP%SPJ>T!DFZ0*pJG#;Fl zd~CY=N?Isrl_HTSKeE&+VDktwV_c$t);CD*=5LI zR2Mn5r+e2Ty;B z`lr+#uVjIJr7GSxeBx&Dv|sX$d8)s^(iu+S-)fLtM#yVVrXv$9DH$Fo4+;)9$w#x4 z(rTtFyu3flYAF#csL_|I#h+iJqc?S4gdctUFF;InL_4r62^Xd#A+B@Ybm~{?Z=en4 zYwI)G%zhw|<6yb)a$&-!^I`r!FfRIJrCa<#2lJ}8dh20Xz*8fm<vZl7n>lNX&g@W0t-D*( zNDF@$U%n#Xw%e?rGBVKZDrW8tT%V9*X`52{_|Zlb?K<=e#RXQ%YmkbPNn=1S00U`q zU#>AD_iq3Yt$YDa`usXXD*2|6|7=t#;>5f=NxUWtLr{>8l`O|uRJRO|pc0X@(R#$-@ZqM}*}#>~=H=2LJIVnwaSExJxcDb6 zf~D*Z1!a%*`UrT=yd@5ZXfXU}%Lj?lOZfDLp-%bwX^w%W#n1w37zh|{Dg;%=3Fh0 z0AtRn!0D+;gD!*2Cznt83EX&_*&AZZB92H`3qvBlgkbg?s9eK+eeWa{m0{`qQ!>lxJVINt;EkfC(VN%jLyr&g4>2Ro&!7Z6gvE52Y(Y!k_S}ZAQDVC}@f>T2(&Sk8bQ6X;b%1h&RE~59#w6mOpU0ov< zUy!-$ui?f|a=yKc8b(Pif{f(kcn-gjD8vE`K}!dMaEO#|yor$!HOh&P&x_1);HnRi zD54|Q=1h#Yn`rIdeSUJz6VkDf3siv2cLfFNXb}ai79<+c>R6o+b)w^y6qcGA@x9YZ z7ta*~cmpT(5tLj&e%Y2<)Cm?-XAW(S>xQt359bdMA7k^(P{*5xdXZD~FgjtN))x9o zqxUR~;4F`1ap221bH6tHuNJTq3U)O6JHhbqFzCWp0}_nlkgqQk%H7x-h2^ap$t1=v zdaUW(mIvw95l9|YF6*{$U=V3wQhxkURaBcDY#u|G{aBYoE8_bSa3kWr$2l&4uvKaj zl(HYPhJN;F+t{Ox;Qq8OPFBvixo*~&%>H-z{l{D%=9Zpmicp;l0)AQgZX7-GsGlu zn9D8%^l%Kk^q?XBMdT0MwB&ySxI^2Ml~%#$#acZ*s1nS zGY5tc!YC_HxzL~_Z5~|=a+_XR9@KHq_;ot!xN#pA6*??#ue=OT^|;JdBpG(q8-$KY zY;9!A6%iLVw3C%JG%uP|iCB2dufAu@XYuC!D1O+g_3?w!Vz5w%eCYG*Uiar56Y#;q z%OPQ@X(?-HZAxF&*r^t-oX$4dj*nF?B|J<73ZN8~7J`oUlEOtN$BN)RBnOA@Ek94V zOtg$&9My;)>-?fgDt1juPbXH*#Gru2CWnF!D?IB#_MY`mNtoyM)$$o*ZzSYwssDbu*fE8Btt{k$(EI}|uJ>Xs!dy}# zzK^J#K9D?N(pew=x*O2&^3KgIkjj(JI82pjKHgTMw3MaiaZ;NP{-C#P-N{=Ly*%Qx znTt6ans+2r)K-cYI7)C)e%dm9x;n|MNG?}N(iM#j-Ldo$dEXQ?>BgFQM*jTDazd9W zTn_vO_`N+7lT-C?GrzdI3#8hc@9N;G>37rroRsXP()z2aW@m$6eipsd`*c6{Danwy zb?f^R_U1#=Y*obdPj^?6+ljSCe_s(V$GxxUJ`&`>Hc?jE-QC={+18@HV8Wc|z`CHqDqp&Zyx&P-J^0bh=6K9{H07I2_9|^T>W{gV zyOvx#4VUHH8;-)3)D9ZM$)B6klOH8|VcGf!Hp7JA5HH%$QwTt4K!0n=p2G>_7v-6X z-%?=mwG|gD{_*os%kc1pI)Rktlfza|OW)#MkMDsny^c_!$zg=FyTm2Gl~MnivvtA) zx@`dOJm%9|uJUc<_D?#vGXr0KCF+ua2;q8;kUyEV0ng{K;w?3APL5zrc1F%4U7-UR zZ458FaL*;p-_n*ArZ>MaY`yB_5;Bt=-;Az z?)qVnnH7zWvGt_>v=fk%qC1JRR#`*qx;@sgSFuy~MX=;yCGoaE33CnxtLeBcm0HzK zn#IEL8wPpRvxxMruy;htoVk+lAuKz!v*ESi+B6=Y-+Vl1Gb5V-nt*6{;zlsb{5MJ+OSHYy7)M;}a77dJ-e zE~?+R>HpqO^bZ{xFe}ebLZ1l5K=z9A>T$*(hbl%Emc+v#aUPl@ZE^nso`nYgZ@fms zTgf??Qywk3RzeKT4X=MBj~vPzPxCEZM;Aq%B?+G8rYSll8a&{=Vo;g$!6gKp?5liw{DO$DcCx~&V|0ny=# zK8skDT>m-2cyVreQRHAuIV2@kp$7gUEDJ;hQY%<4Iv65}hdd_rpI3W$LQ6AewE;bt zj4s2zajfl0x6@=y)N2hRiot8YtgI%$v;xe0tT&;AyP>(M*31 z`!1pE4^3r>iqT(ztZ8oMX zDm(XKy1yJfKMW5Ee;8o-dCyN%e_TS%5Q;yM!}%WL8w44RhZcrW3~KJlwap&O?<7Hk zo5b|@DPpS!t$R{F^?6s16E(@}S9B-TpGPRsSa*7v#B|jU|8}f_Ed(1aWq`B}SX+#$LNS_@;i{LT>g87Y6q2wo{G} z0vZ50na?{GUt{<7eJI!FC+Z2YUMhP$7H?1L&`{zpB4V;tG~j+4>8Mqx-lJ}>k)#zk zHLf_xGG%;538lcrK%Hetj4C5*L_t^;^9DO1B?^wR?%Y#hn;x~`R48O`h!Lkq}BMZLsE3w(Y`9>&kk`1TBU(YTs$ zYGL&Me%#@plo3guwYJ4j;up30_8J+@`8iHPU4%6xELNRga%cBF2KNC>Bc_Y#!@2ZX zY6sTS;R6V#gnz?$_1Yr^Q%}-F!(4QO{u}n=rN1JX#~ox%Usj10ZU#MbF>^N37b2@6 z@+a^;&CbUkF^IVr?*KDLgIX8lQW z$v7sSYXoNn9oM^^ZW~&d6o40(2%f@;=G~_8`-`;d{X~& zlc`NFQM5GJ3@%si>%}cr-ENjC|xwK&cXy5_@xd z2%i0O&(d7W-PzetOH0efM&HcLP9!;@C9YqJl_*@ALiTvDwRqL0j+UvoDKmP2y`4ht zQbmmA-(2od+0~S6esN541O>sL2xdwAqDu5Unrx45Z$x6@GsC{7XJTX}^B#DuudfQP zi`M_Vh_Y;=e=aUAu&`o*>jg*{5(gjOQ1aWFPFapt$s^29N&zAZTT4bv3tyt#fnhkdb< z-Uy|XL|~t|s3HPdyccra(pj*gy}OpXh?|JrxsC>Ud~xwbS0><0YXq{yU9efO@q74Z z6S+C=V`b}~L<J(VpR48$0I8-k$oP zj+>jCtQ%AYXp93!ZC*(}6-&}j%(y8082qnFYXX*Ye{qKJXQ#!clV}9l4#PVA6Y}{I zF0hQ;f6?W?MRMo2HlpNQ67`~iMT+X`a+)K7*;wai=UOiY$+zQqy>OS!X!n%V)PibA z%aLkj0~gaPmRecqtVgND_Z5pu^0hF~A8Q``?h<47hvtP6FFXG%ZACxulh08Mot4)t zVLHdoWc6a@G&QsoR3K<5RMqdU|9R9Un4{g?j7{ZyKiD&5)c~U^#`$~-3|@5wmGUC^ zw#$S)$ymQcqC$&JP1V-YY6em?_=2%StC3unpe67v7m-D{XP;aBL={{^Zo)iu!nd^3 ztRy_?R8O%aI#1_n)}Y;AlcQ2L*1u+V_}XTcXX&nG7@`mF5MgU)?-Zo|iTH2+Cu z(nxO=r_eTCXS35X@{I92}gUo<5r~|4b>v&RbmD=~1K8hpp|&9xVvX zvd549*X$pqfFq-(h9?&=I7s=GYA*zqZ>ugdYLza(*7uqlp9!b~tfQ>ZSyPetI325u zemkiDDk=CB)KIZMa7l}8ELxU8>QqTnGdV6UAT^__NLHGKEhmxUn9X@VEJV{eeYPOr z>AfA!dQxIyVp7un6&9;=MNMj#xyndyfx5D4xo~Jmq3q!@pUAp<41Y?ez)Rbn?%r+= zCpCJGk}2>_EO_2E0chF=-QBc?X{q(pQrW<$&(7vXGuE$E%ir=g7|h1YDI2Wo$X+$N zk8CX_8a)|=jQl~tSZI} zc8&9cvhw#A;44nx_YL*W!6H&JQc!fF@qDRMFgkZv9-K(XY5MJ(kkLH!YW?w6RYgTI zzs_x*n}w0)H(vqUlZ)%i!%2IBAGp#?1%G`P4GaW=Rul2poj=k2u5=FuwcZIJ1E+W1 zZ|Lb2Nn1Sz+Fv<~F2bLcs880;j@0zc-nuDX3>Jm>n z_%b52&e8kp)9282g!lVXu}<2t!|%f;Q3*x<(ZeTEAc1T z`1rddl1fghwbl#r9p0qHH=&U$fszvy=-!Vt3S4MP3YqiRh$%P?0b~>y13IWfukWy1 z%mc@_3)2}yNhf_oL&Eb@IM^<5AoG<8kb+&FVB=V*{Hm}n*MNhK9ZjU5pkOIq%S^_L zhpvleje6I8e`Cx@;?DOb>o>I~sW0H!LXO8{)!p{T4|6%SsfoJZENyS|qMMq?OOV^y zR=XXn48ZpZ1Nj=*6_u5WhDBw^g<~RO5EJ`g2>6J?46y(BVxUC%%i{>VBaU3XzjrId zUZv!q+N|l9oXgkFOX7* zbpf{k4O(~_gxlX*&=ZoMpD$+?L`*sY6A-n>vM(%KRc~ox_GBSEED__-?DCZ9(ahE{ zH8ALH^}EwD2R4hc~yR`1_-%y_5+Ye)!1tgBoD1FxG zcH-A^v^*9#BNN_?Yk&2O)*PrOtX4O=G0@Tbq5?j;6DcVv)phR(Fcvph4eOAJefwue z&^OG%zAA(RPW{dYDLw?Py3$?*u9%Ewf%yQ;`SvhG8fM~D>3_8mA(dEpkmvxQIZ_@kkj>svk>NNN7@o2rG|l zd{4U3FGoGZJEePGy?4Y?f5H%a`y0hh(MHEC(I2E zsq6_J)d;zn?Fsy|8&UN-*%(UDGBLdQzZe zRBCoiW3!~G8$Vea*69KnO?}>Y{}clnIyz%uYp#;K?+@2g)6yE6Ju#=w%ckMtmHHgW zt8EScrLLY(#mE{mRYojQrGV*!oq`7wzrZp~rz$GSP9hePXG}ZxODrQuJnruG2Z5?u z=bbvzhqJT#aN48efRhN3zSjB(5~K+F zdB25_*4l2&r+uXIuQ~BJIdJvsSW_7A*}JHZ{)lvLCa?Rq4}?kHiw9nQw`t2fTj%RV z_H_;?f??p|ihB#=SfRlu_4$WmLHj)QD`j_4*32(#1x^6R?G2~dRioVLr%U^eoP$L$d zFK0oWMqTu_|&fLffy)` zzp`Sw%Tonhd_9)@TSci;m6e|~J+1>TP%~4WZRC(;LOwl@5iE+MBwXaLDCUmExkT(g zWRQ28K8aL$QnrzgNuT(TqG2PSafbwwNHl?7JpLF0{MzDNHuc=w6o?+EfvTvKNw_s0 z?8z;tWK|OU%*@Q$Y)EzA1X6C^0BgBJs3-vS5aS_@vu8KQBKpEmqCu?{Ky=Pj@ot5b(ze84}AAptpY zd?w_ilObmXO5Drg;?%`xBfuD6-|%NrR{+i~@YcT}P>{UV_{K(Cc^$K$PRT|%KKRbCj;lRNDaek zX5*5@JDt9g8!~DQ5bNj*RNQ;2Xz;apAg#aN&TAdFu)1-c0rCCaBL-vKNSm2p*yz5?S<4qA?sR;=*(2Je%3utZqxB*s-K!V$TaO6I7WX4DA(uC1nZ z3kMGSg6VLsa^;F}!!<&l_z}dC6y2XM{Q$`4=x1=LCUBI^NSiec;Uyx-5q82^A-V(VFM5u>fvOBArjs!f$y8$*EU#*?>+>kKdY73 zq|FZ4zJC=ga2b;I1lYaPQOQJ}bl}m@!Bg-F!1ydQDnH0e&}M`tf{uY& zjbtA`%810|c=IM$U&h@JLI?i67T^D;oimSzs{Q-8Eymbsv1Ul9?7OUuv1Q4YsO&;n znx-0VTe97QhPVsax4T7(?6PFblENS+vWpb5#!dKrPtPCE@Adrkd!E0aKY5ws%sJ;e z*Y|r}pZ8l3zOz80Uv`ASRh;qf`HY00fYUnRl04EQRl{#-g}Q+B&)RTs7-%ul>}xa8 zw4hjl6?6(I2^%SVAT1K5+Kq|tkaP99++0ZyLXs1v1VSknHu4DMOFlQje!OVkWbns! zgJ$Kt0?s9PIGU9+I@uslV$=}ra`C_~nZ7PQjV6o;+y{6aHD9?uwlrG1<_{O9z|E{< zVggEnnOybEfeSFy=pj?c+1JT->f}ke20`m%XVH{U z3I5k2+b+im$VXE2rGTk~StriZw`(TaNOny1Yv@H3*FkuB9%nTF) zyXeNDybw`XkJx!@?q`Gpg6|`)AYIY)&>-J*SF%>%x|dFbFS7_g@{rd@tS7zGkA@3u z@8^@_0Yd;3Ce_ty$0EJPq0IhD!x;y=4dS_RhuGC>a>Y3h=C$NPicW}eypt_cUP>8m zp3p(KN~d{=$WF;S!0N2dTo+d1)14~21gzgnsNqt4lOOuof0{%gucZ5 zzjWrn`TXBxJOBT||B>_@4}Rkr9xN z($?Z!oBg2JH2tD#Y$_GvpvSwQA@|I@oqQt!d_u239tnWx+&||BfC62pGSk<83lwNp zQc@|Ts&38qeL?cRGBO?^(1<`532HBPNLAL=Y1XbJ9XHwD{IL%yEG5k$1j_|RSWS3m zeg5XBD=EsKeX;=-hM4TVpdyFbpFpb?zIag~EMbmHjkAuGM?w9h#{#_G{XS2_71*28*|)c_xSyEV)D8`P60En2Z9Utn#2yV^ZURc9 z4aMaOm7!YW-)0-G4qcF!UNBrhvepr1846e4J@U-zywH^_J^g8@%(Dj}@DYhlEyQd| zAI2bZ1~GH;+z+7gtDynd`3OL^eCV$&KvAWJSHE;+DgrcFpB=nv+`khF=}jg`X4%>f zA_|P4pFS#XZsV>aAv#+V^gAns&tH~)srv2|vT>f+)7{DF z#V7R`0qz9fpMelEhm7Pypo$+`hfpCX9-{iRuy7lAO(dgbB2(iIadB6AnQU(*$0yXP z>rQkuf+7$=Qm&o@*VlTr%gSOP79sEpMI^;4%@<-geML0J3jtIV`q`$k5+Xx17CC<=OO zxVDlWDS8t0eRK#j9e^j7t+okV$A#Ea+v2Q)5QYunu z6iT36EIw!a5uV5NP}WvBi_AoBf`_ zAnHAMmJrGw5{pMoLWZwCQ8#p~#!o^Mluq^kkfscTx6U@Wv^MY1GqUQkQs4Ig@8j!r z1OneKAxRGB@^hhHkjM%UWkV^Yw&7Y>3XD*PQr6(U3Ek>F!>fjiGN7OGRn^@G%KpN; z+1eps(9Lc5C{tVI0zfmdziDY}Z@&Z2EPSarYqr z!^Xy@Ws0&|!jjQtFCGwf!*H0{{-#p8`D3#%SyjjHkj^!QI^-OrM>^Nl=qz2(_XyKLb3>oC1n7wJ?{T!NK zM6}lh2Ly+;|>+!1{dxww1cXu^FiE39BJ%V{nbOE%?MIgLh@^F)5(Ix2bzO>tN zcW;ayXffnGIuxhk_Jj0=khj14;|?1~d~#0C76sNab3G%27XyDyA%wzN{W3<556XEr zq1naq}qmbOKGLcUPYMa z?$3OGeL7O7&6pXmx>z-CZky_?@yPs*n7^)Mp#$ovUSzoXLH?LB3A3;U#-h`nPJZ{x zOnF*m@cF(`)C85aZ?_7s1(aR1?2hKN$Q57dkJKvpA$H8GbYWE@xO{FG#-4A4F3AE4 z>VJ%TNsL2)ItRSIhc$d!6(T%w)y?)M>Si9W^Q$eR>X)9Oi;LFZ4O zCAK!o34!cxqnreE|1zqQBXQ-O$cXc>&ntOfTnsZm4~ZDr8qQAUQ*3LSkv5{caX}#K zHez>^>ut4+VN^YM@}Br?YPBDPkb%bd0D`v7`F^Iq+6gV#%CCRB#4m%PhfMqASv*4UYt1qQW2MdG$j$*8JP9vE(M<)7bOQ+U{h2$7TaMC@0`v$DAnXH zSk_OO2j&&Qxvpwi5Z*Yb9b8I|lw{;G6Sa(;&3$a=qL82Q;9c%aYiP_#p6*O}x9Boi z-y^knum{3%Evt(-)gF=30TPJ=s{@gLLd~)hw4nt~MLS_uCF8R*zV9BK z$QZa@24ie|E-Ofe%fza%oE7+1uDR!mFu{T@psS}x;(&>~3f#YF&l;#5?vDZKkoN^u zv*^wu=6Ahr#o!_bZGI;5e}GY~mSGiEFzp!r`Li^_ayez7I^-?MwB|>=ZJ6;jZLnjQ zYtm$DfX)q;z7uj@jn{agF(yXJ=sCMS@tkB}4uY0gD$IDZg?d2C*N^Qm1&>@h)I7Rx zj0x5gkNqbP_o62Ykfc3%rV2&$Kh1-pn3G^}>JRusGUp=mK$M*G+KWTEZx6&f%k0P3Huh{(YyiA?J(}2n<}Y3KR3O-@jcO^})3xU>lBMjYSd}K3W~moKLSo3|(Wl$t#oKhu19$0}AScHtxK5$f zFgI0`{N^3L>v!rlwmOgejm4&D-~vtx*&%MalEkOah{7-l7K&nk{%XDZsjGP3MiF{V z@!MxBM?i9TNU-F$6cnY3K7$xTmtYm;KQ)H_TN9I}57}fOxPOW36Y(Bvz7$8Ga?;q0 zQETAHbH8$B5vIP!E!=%3x;Q70L;w@QAViLf8-dCP!J58)_1gKk@Tm;6n-(@U57N_X zfw1}kHKxF5mzASqC;)34OQSna^Wzn;xTCNaqS-$L(bCj-QzO~mE}zLih2x<>HUrNT zR67Vx2X)&|C=9l@x1l7?Q2tBeTz6-ueW`mV0!Yadp-B+`S=#RI1UJi#sD#Cd!BO|x z`u;Y7LNo&Oi?`?d4pbmzrMzZFRxt7xWaOjb;m1azoK* zH2yvG5C$X?4*KLhI$_{w-a}0+CG_rYGUo3hLoxV9Y~?>6Seu_QK?bs?R_+DQ&APg} zZ{MyRzK?&v;bIU-5os@GpuVUi>s;(FA9kSunuLGZ*CgVo_o0I6)A0Wd)`r)>U! z-pkEpe|OW+>D9vmO#uyd7b;j7OP$_?wtdGWzDBBzQ00K-36Ky_uN1^t;|-E2PXGr= z<1Fhp*RVgQ0|h=P52pQNxTnL;LDd5!WW&3jo+srXiqdZ!1(swJAfZ@;Hh5pT)qT{T z`s5!`US3Y6+70tDu=0<@snANNf}7H!$&+gmM#)y(m}9c^rRb&ABTl3MJ6hs<7LxTmO#7ZO9VFqXE`)|SsAWi^KGD8sFf{UhZE(AGVrDp3=G(eN5CV@RJ9nqzLrLI2p2a0M;iRi zp(%~=MFqw#I)slZ^^5-Zp}*-(!W5c5%G|KCd&Bzj#Vc5kQms7FM9;6eL#RS}3F(ZX+2p78{G!;hFEUz2qC^CLVS#0q=|oO-ze>3h2PF`OlZd>bj)YO1$K{7ysatZGZtwq1#ji9 z4M@__aA+QsFInOu84?RwdF>SAQ4#fwNaY$ZL{5*Q$;f!``bfr z>?R81Vq=%;*37Y=4$?@N)%)I(6=A?hJ2hmOKI9Tz)qRbBs;2%XL&oo+vaMO>XJ4L) zBoMTP{MAY{e86m0TB}MFWSufo9gR#_58A0Dr#RPf^Y-3UWvsCiXi$-6YCk8L<;p99 zTf=CHA&gkjHQ1o!f4QlgFL2&z8cO)fo$(E_9gLdYpKET$^!qjZGrMKpf0DnJ!7Fi_ z|GM@_`C<1<-%jC7V2QL@xup9s*Y08LEk9UE#`72#b0*%4&O_V}|B+t%-zLld_HtwR z7iPTS2$0uk%+#shlX3GqC%Vh$&tLg3Nw^9M9~@iH{40&Yn95n+U4Ek0TG;rX4R|{h)OVhvo!XfckwL1vCpw ze_!8yhiTTafp6r+uhAJ!PxqOc pyw5>Hv%gO_Y6g~i8b+kYq^C)^*0osjf~Nxcm9f4#?j_ba{9j+pZYcl& literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radial-grid.png b/benchmarks/conformance/shadcn/reference/chart-radial-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2fbf42ff14ed7c80308b63d771843aca398b54 GIT binary patch literal 33036 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radial-label.png b/benchmarks/conformance/shadcn/reference/chart-radial-label.png new file mode 100644 index 0000000000000000000000000000000000000000..a37b41eeac2c0f9481c5d87fdab9951f5b2efe06 GIT binary patch literal 38677 zcmdSARajh2v;~N3up|Vxkl^kF3lazf4ek(vySux)JHg!@8h3}r-Q8W9Is9|))4a?# zGcWVl&FQLLyVhQN)v80Vth5*!3O))H6cn2HPm$kHP%vIlP|)Q_Fu*sF8>AIbP?%8S zB7zD|X~*gCZXd-6`V8+FPLYwx;1btQwQ_5}Q(M?)38|YXfSL&uil!3q7k?X7eeR_` zJ%xV1c{;dqdbe!exT5iQPpIqb^~>wx^X;vHfuUif`>y*M)<3%8(vOl9^4x+v`X2Aw}{j zM4FnK%IXmm6!amTmoA2RcjGVd^!V7^)WrPuXHuGo*4EaruyZuyOjZy_kq0MS{Aq>dWo zBQg1OdwY9_y$v2DfuO51zd1XZ|wy=;Y&}PMP&3%B~_10{cbZ6}6+YS?um%uGAFNcW& zII_03mR++ynx)rhw7TA(ENyjia(9mL=tK->fn-s+~j<#E8 zIdoDn@bqG}J}NEa!omWp!HCym4hiOm4_9;Ap6R^Kzb9AviCx36fGqah z?8GZuL48g5f{bWT^AJel;e~<#2iNi4?fIgAdV1RYz;G;Wp-7&REAXsw3;pDQR=M2n zc;0%w!+WT|8kHK0t5#1>PgqE(9r9>OLPBD&5^<64xaxg`J*nRqYEC_##yt)4^b`;P z@w-2oE!GY?5P!P58W&h=wl{UEbiF-BuF>Mg;1*la5kFgLah%E(ALoCfb0OgJtr$z^ znVUpm7^Oj4aTW8y(Q<-5z5Yb6meuv}@K9ed3v8LkvlE+8AUaWo>nZnj)LWHqe4*)u zFZ&T4n3YAUKeu7o{;(S@M(hpea5QVaHzz-UNI&F7PTc-l4?e6(sbBY<%Ka z?w=@GL@2tTv^2WULL!5v50vmN4T{j+Dgd&V+}zxtpdfOwh^$LvV`FXi8|<-HAUWNE7-HsfhS%Ku_v^5B)K*Uj zzTR(}HkU3@<#lnWZ3=JsP>|_?Z>}3tb5!4I9|mG&p%G?>klvWdNX53Vy*opOAt|vF%PTJ1nE!wFDNfwad969m}-WI zOI3`nHo61lX8uL;qbxu!hZ)VAB1i<#w^;c3JuWtTWq2=oI(-qX-~V>+k|7&IEQ(!xSQeBO6l`&D*Y`DG)p&Ka?N{%l&wV!l|5Na9xMw4wj;cY$>JRB>EN zN(iXEyklEV)pp<0q#9AxGY*hzaDtncv?U8Jlq#`8bv*O;V z_fDH{%WH3S665?OX~-mvps9OW3jM1Ba$-b2}llA7hQ63aoNp-}rur+?cxOQ2U@|E82PIYMI)lq=M>Zg>hV!J$pp_I$Z1Z#nfTc)Xd@KASGU z2pg-?>#w%KA||%jqn``Nv!86cOG?6BVs@Jx!j9L1Z~i!($T&x#8<;&#chTQ!{co!bo8biNb;8)GpXBU^cS*hBzcxDJOOp*A&MC?`I^4|2{5 zkH6zWoD*YWU^?Y<_W`bzWkG`C1+T8Ia=|{~3QEk6auM^pah2|63kL$Vy!Q2ziYS>C zIxVds-{by2fHNXFaKh&FhZ8z~J@*kb zwpV#YlH2OLIPrpp#ncF77jS>H`^gThtcY!KFVnL;Eb*-!mczy~bU;HxhqQJ+`!KaW z9+p(TW&rFaM(mvXBlHte>1>IzCAe5IY7gjek$9|qV6gpat8?YmCk73bKi>K{EP8!m z<(e%PYwa%s(c}(zPd7(*04v;_Ea5~Sz@vWZ;5A=qX8-H4JrLdO=)KRFYYOlu(B|$o zdqX#(Jr0WsFh_rAG}Y487>st+VZsEO85$U{^o#%c#gk7)MwWf-s%(=j;LY_2R3q|M zJFvNh^fNennI4bED$jtpd4n2>=d(4?o7ZXcT-mHQdvv=4vQ;IHWZt?wb_6C7QCYg5 zt$Prlbp^X3|`2_ucPh$MP)+oRLd$F0B znF$F>o5}_?+?164lN!J>MZo<7G_imJFg%{Gl1gFI1t&tC9-Cc>8 zo?_N`7gW#Zi$GE&0G&oZe-1oc?cva=$o>-z&zDLy(ARgr8s*&B*tj2>p1zvM7PbYp z_?x{+cL3V(KweyOdio2{j8aRP0QHqq{JROp47Pk`G?kNt*NN%t*F5K|U7&MapPzR) zY0z1zDgg>?g1N=^ZKR_PIRB{n$L;8~|z!|Xx^S58@ z)$V9F^N{g${wU}b5^7^IS6-%pZ?kiDwgz-z2lG;`Hhi`D221Uoty0yR)22OQs0hx40M>BHr4pV$#t^*j0eP zB8Yghw4zq`_xAyzM6;LufmW&1Xr=iESSaR3A5$JLb-pWnUxYJbjEh5Ix{riP&T)=ta<88z+KFzIMv04 z6)+Zp#(pd|-hg`9R3jG+)ACJPLN7pndU|TL-Sytz6o-QGxts~neC;!7F=5C4Gr-G?n$2+L0YbuQai|OT zZ!%>o@CaPOX*~7C!Th^+cKZ->aa?jTa-N?#iaahwi_PljC>lv9DwD;-8$vvu@7Fth zH`a*Cti{NGaHJ3;N?dwwcCnllN`wkiE>vvun%<6D|p58}W*LqXEayNxQki3ArMy^-O zk3U z0MtMZI$j>-G9iF5aOl-)U2YCHA$ylAKELw-Qsln+EUf*%UH~&Q)}HRyqlD>pcUQk= z-TEA=Lh5SXs}a^kIHon3G%jY78LHaglP@S@e(HF`Xo;8mlmD`-sSqFefPTngvtr#( zwAdx^`fRJvLGk)lPKy70;BlE3-}=_=@q(-bu3N|x&e)VXAg(Jw5VdAI>ef2F{s{j{ zK~hSY3=K7Ipoo07TOW2)nQk6$Pf%g;DYN~7V_h1%=_fXJCMK)Ro?t4t#el2|O$UuU zfN=py?!7QdnA@Wcg@(`Og|Kxf+au_Uu&_|t+ezO|7M3${<%NyzT|1l;W>Sy#thB#S zvj=o+Yu}$BtBo$8bs)OqB(2{UI`s|@^uCGLLtmhEYA#MJ+rZXf7ylz7>n+_-gk#iQ zrKTvNN6cSNlMUE0#p(t{`d?QC97 ziMf8nhH>u#6IpAXP4(sr6sAOlznzT#ujlvwFPiJy4FAs^g#RB$;1!Jp&}nqVpQl1T zAiEERe6m0nP|yWTlpF~t_W1HY1&wn-QjxtSQ5+vc6yLm)G}vpf8OM@Hq9Q&AegBRb zrTHH-CfuKq$X(Qc<}mWxT7^|QcwKLW7% z41h`S0mnv;I;rBfT=w!&z~?@|gt3w$DDMI`+vsin&)#;)rIm*m&FJ;6%xYw*Nu)HG zfZ0V1z&BDx|l!Gp7#Y^YLOd-xY17NP%%H`A$O4( z{e&0fg6g55qzs&yLuW%u(eI9!Kh|IcFpE(QI83NtZwJ%-RxZbeyf2k6yiIX}$~*Mw z9>mAl_|Av07-hD?p72+#)ir&+OLcuFyn*oS8ZD;OH$z6}Hs|V$YjV96(bryxqe&F=(zy0t&Q_i{#= zgY!!XsX4XBh7)beUUznC(s+>}#xjnR)8Wp}LBtk5kp=rF)NqKnhyDo#mSuEXJNuW( zs@w)iAUxH)!-h#xNl*Ugoaxw*PT{i_WF z)8%wEt$raRQ}RxvXLF^C>2txWDfnAgCKjBoKj0@)!A+^lG0Pcf@~S$T&>fHX8eY~D z53IRRdEQm|9Jfl4G#~HLvsD-xX_2^?nZb)&Z10{94V7k(UDWlS@2U3DlnVX72 zqa}4WLFjZk0Q@Q&wX)l>S>{nhzt}Y#pZJbx(9FA$Iv#aC6N#bzW=U&`N)Y^;o`Q$y zVBOYKA{L6EFV5UdA-lPWa4{FkF#b#y!z~o+lA+x?m9Ho-Ad30=U#)c+;2os2medIKIZ8y=W;*qCa2l4LoWSqs zbO(~EZ$891jakZ_c{+N>CmNu&dAwB0s|4|o2fY%1>FDuHM8UIE47k=3r&6ipIJyge zF#K11bQmTIOR(5&e`%h?`JwB@H#!Oj}76B*s zmyvH~J3AN+Pw+Vrpbto>#+H#`k4t>hH-}t(i5kyeuO7}8qPO8qg4v)*Cf%&1mxiYq zdX7OZGVa$G?t)L{&A%-iA?sS~?QUi1fvMhDJ)W@dbv6b1>)_nc5MXl~?wLyB?51%* zhR>Cs&qU+3=o_D)(>3zZ@9-xURvF!If6u0Br)k_-ex}8dI&>aOU7+Tj@dZYKdK;yu zZiL-uU&tj?hCyPK$+Mm7B{1GO`4#%0?w_Xo7GmUMz2%{SqsR2=J>D5nq&Ss~+sayh zk+toak$iKk2hrUY~8)F7> zJoQv~{$TCDu==n!emGx8Z@%$;c^#nHSLC6x_8cm})yKZ$?%sIbs8CgHnv-!cMGUn! zRa0_xaKz?ahR0AQWRk&<`>3Lp5EoCr1sWmbrj!v4ghE_sdIugJY$0a9zImSk8h(Oc z-7e9atz};K@QCGX5n4Da<7}jIF1|a(9zxpe^M^}nyr91G+Ix?-_HXZ!Bt6;XSm^5* z9SSlgfgc_|n1chQUprBBqc1>LR5|hTW4v~Uv=$wg1OMy2zt0xV2qk06raX=T$v(Pq@8re_1GMxr;5#jT))60Z%u|Nv#t@5C?+Qr02?&v2c;&TLDcR!i>1#h zv1hMox4kihO31Z^mir5{XoujEvXXS3hCkwiQ5YFxd=Bk8-K)=KfiyZVj69+@wyt-& zo-OKL)Vw!&zQ%ayj7c|r*ZK1O>^gAP#@#=RR7JO<=F0S8nfAr0~dl)ZU@U$3Q@Mz3};p8vhp!B#Y)dofUSY)Cg zyKBd}CE<_nB;3wMw%2yf zRYj7POY4{E(%37=>kGS|TkROq<0$A=Qg2qYxhIjaF}E$$=Ah&orM5oHZGbp5oG;V$ zA{bKH&HuC|l34U1Z6f#pXo05gFQkQY-*A|Xa2R9M!Dvsc{qw|5uRK_~dvLC0v4!aD zV0oe>T3y4uOE0$bvbQ5Yc`O;0q^W!BfMo*zJyNyArPL8MTl?sDuS&wg;!4xnOLCp@ zYuze8-8#U8&(XWh)`W`OlHVi-Z7Y)f@;m`H=>NMlZ4>Hnv1pCZ9-b>fB6sYcW_Zhj{oXzkGN58#cGS)EfHBQi(VfwD8>R zf(Nasq!?UCzb5b#cWr51X$q=bpy4m*O0VyMc84$@UZ!I?(G9`wwmO|TIX6&?uhHa} z54nHPFVMcEsp5N1sJDvrp&RDrju@S=x3_1<4?RA-I*lwMp{LtpTl=nkk<8P2+FA#9 zz(+FNuBoTisySd+>blMb)3!k5zJqAV9B?0hezLriOfohs@sqyb-MGuh( zOsnmE14!@T*ZCcD`E$LxuN9*xCKwMWAq42dqX`C7hr`s=aSBj;qlF_k{aV$_%38)Q z$+~<`ZQVQlZ=~)ZtyQ}?MX@jhj@p0E^Gw1=kGB*&X;U?x!}pta$Cvc>5BFSmi4=%N zS-Xhf>?Pj=9a`{J|x4qg>sJ?JQL9Km?p z?RL27uAOhV5pRNiKM{k6*{87nyB8X8opye4p$jL+M@>a#Wz>nra}zGZjNwUfan2nG zo+GUe6mx~#OUV8^|LmY*7V9W)&98WrNy5h{t0bud*d}9wxq&@ zDAbg~KCW-)C;^Nk+Dl?ivWQYLbp4lOkr5Xz#?=+s`w_?l7^xW#(VDLZt#c%vjJH!N z59O(04ykNoni&s=j>!?C{^W=FN}d|s{Uw#`7m{b52T-q#`zeCuug~-36KmmEBKE#; zNrioY;E`CS#aSA?19~ZhNp^*99UA)+dt>)*P!(Dc4*;I3OJc!3AlL&^PQJ> z|8hbnKS+alDpfJ4cKQ%djhLr+XgBD;7lVD*}3nU-l9z^#kNxMUo zFR}8dQBP^HO?YL^qi|rAzvsy1p$L_Tmam~_xIT7Eh#$APq;JEt z0E6nOm(M;>GX1EgitYT&`F0d&?1V$Hno@jh`hK@2V7FUI;* znh+H~O#C=iySvVg*ABgUJl1{;Nkz-fbCtA3o$nkzcJs00PF98d(w{8)!_csDy3yt1 zzP$*ssga#6kC-T~mz{1Xy{2GQub+M%#XrDD`_uRjlwxoV=0dF}8EV<8iz_8W3=s8% z#Etu$2iX z%I0PAj~PymANUs$cKqefhfCGvy!Kg4`G$k)L|(B~m$TDT5m#NO11Ju82u?#~ro&}j z+qd?;r{NN9{woFaEUhM)Mhtrr;|Uvjo{(`_TG_Uq-~k_I#xMN^R*}j$3n8lB=_xqq zs*FtH4Scm%=hWpH@}Z(yN4vKl;qbAf6kq{NAHuy37`AvTBNy#@OuxT(#5I%s^=xVo zK0&JJE+h6!Z#D6c{P2T;-e50{`lzqsS0Y{K@_%TfC6r6uH( zqXf4mTjt$@y`d$Ugc=qkZStQ)bMWD2imV(Yb6RLT}%DE+cF@vJEEq!tneRW^+2ZK`$#r5HtA zfrVAg>n)wByta8aYa(g@e|%g_XG!M^PcxlMOTfvN0MF)`%Po|QD5tXZ6(iqKfHR9v z;o^kagh(A3BV*+B!@Kbsj_ar8<2ZI6=k5YD(@vpYKTs%@_pNO)8l@@<^LyFA3AGP7k|=his4Z9dtPiC$X8x75?wiEx%~#Yd$% z?#Dr7nQK(}-Du3aCagp;6$#XUu0ecW0TjY+pSF5UL2G*7y%C{>%B`Tz=y!Xnv**!# z%67)c@2j(_E_yLl4zkg$s?KH$g3g^5pOO`@edFl6w+~)aEBbEjL#3i$??R1xwF0}R z_I=z0G>K=V&BxJPZTmpm9gX|(H89P!bZ#lC3;9~H^?hHh=`Wb~M(c&2{DGWxy>&0* z^T@WTu}7e%@T?Lf4(;7u-(hihs*=;GD26gBCu^$@5cV#myR)g{PmX$|Vdvg;v(wQR z&`4AyaMa};y!daz*3BL>Ch?0&j{b?b1p8j@XPA^Qti-)^xVCEMOpxj>ak9U(qSDql zJ8t&iJvp&(lx|h+%&pe)f0c_T!(o#{V@j4xTY713Y&1$AkMxXlTW3=i{dxO5_oB}J z8z)q&viJFUd_-=MJt~pca{rUu-%9Y#--iqT%ZipBUU~Kj-^O>k54yVj+|;~Y;Mtx4 zf;pD3Q?g@j^9XV4V+N(u5BPyYqema{Cq|E2;G9rjk9S!9vf9p1+B)kYenhZ4n!Dw7 zWxkq$f6@9b(OhJaIcyxh=@2bU#J1-^qPt`$JW}u&ZmCYH2kGVSo z35M<;5@D_O+NUtRhMHT_qiG>@RGOLfh*6ENHMLt*$~wfII*g99c|SH{PbSH%AeV*9 zZZG0e{bPS6i8Uj`baI9O8K+b75dMz7YfLj!jXRS)k9CFB2U-oOtF!259?Og0moAM2CbL%BZC|xG zm0j|wzf9z5+Ij-0eviaNpDv+b{Fbn*Qcau7I_@ItK@9}6Hrb0O955dg<`&_T_d>R& z@8L|;TpQV~v0~3j>vNWK7vYA6P#q`eJ&QlJ05VBge4T01I}=Nlr{*AnJw{4uU#T?X zSqIa07Y?c~UM23AsPk9ax%2!Hc!aYhuygIGHM<$ZjD__pB!J_9*7doV;hEObs9)=Z zKY`Oultr0=Q}<<0Q0nLtdJ+v&&C)8}yyvR7mT|1wWi?KCXNs(zh4=F=%E7pBD=qJp z{Ir;bim(acXIGWOlI8L!%a~~!ziSPH2gZJu8Y=Qc{cXk8bFrB?!w7m7MQXD2aHl0Z ziau{sG!xp_$GFLQS@5l}GkM0A%Ws{7C+N1tPZ2@wxanZqDGuUsq_SZ_1y!SuY;t*n zW4kOrG)w3C9WwDfIYLa2!E@se5$%J+w-?@wlEV(%q?BbxgPyHA*VA+ln8{Rp?NRB! zN^$#tCuJ_TWzXb%GJW5b5`eOL+S=P??73g<_9cZV;(f&Wnv+TIepLbOlbO$QS+*L! z2K<%)(}}>@_lHRIXszTdemY1vYU&)P*~7P<+l!`TG0z89HO@p(r1e=$dj|2GX(qML zdH}%e%}J8^&u-;EOA88$z0aPLZZCuw7EYI!8xOa1mio0hQVd7*pY4o4GrG*~=S4jJ zDM9~LQHEJVv=p+M0VUI9%U5Iyo2@KghS7sz2590qE zWc(R9l0b{UJsMagf8w^pHV?Ryzl(2(hl+CoV;T4AI#5a2Sp_*_5uciR+*8~bY&3(; zXKkT(UcUaE&viBph=N5~qP(oS^ zdBN_$!b5ec9F@7c%QdbV_>-tTW

?mw1jsa(onS$emTdCdW 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radial-shape.png b/benchmarks/conformance/shadcn/reference/chart-radial-shape.png new file mode 100644 index 0000000000000000000000000000000000000000..4e580da28ba6eacb8651f5464b4ab2576dd0eb5a GIT binary patch literal 20507 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-radial-text.png b/benchmarks/conformance/shadcn/reference/chart-radial-text.png new file mode 100644 index 0000000000000000000000000000000000000000..470eb3ce89c68afafd3e5224f38c3c36619e04f6 GIT binary patch literal 22217 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%0DwiHlB%-du4AFiD#8v#K9k2uX?0*$E!uh+L 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-tooltip-indicator-line.png b/benchmarks/conformance/shadcn/reference/chart-tooltip-indicator-line.png new file mode 100644 index 0000000000000000000000000000000000000000..f78d4cf70c8af14a449afafa2ea6f7d1493826a5 GIT binary patch literal 16274 zcmd73Wn7eD+wObQN*REZgh(TyFd#^YBGS?w(v5V7iXccRp_Fva4Bd?=T@o`i2uOD~ ztZSZU@4cS2fA4zVXYIW{EI%j?6Zc&Ab)E4)jx+R?k_-tU4Iu#Y3LeNb}_W4tF&*b$ff@Ctc>Gqv~${*PBTXJey-5l>2YgP1-ShYI ziRm=wBbabX1owvX58uKYOHrDKhwY4=q1pVbC`Vl% zaCPbIV5ntIWV~?r7Kb3Vj)GI24}#M8ezmuAg(B4R=bUTS6WFk|R}is0MvcDts@cR4 z#4Z{d8X9tg;jrfq+0R4cqs z)yCgy=HTF{?WyL4AZg4s**wq9$)Vv2ggw@;aW)4R6c&$t^ykO>#E)`L^JFp*ME*WL zo{GyW6X`gCxh8FPcmBrAXIE-8v=H>_0TPN#!^Vfw9)HgZylxC$t!M$|W@qnk5rJ1G zb#!!uZ^OW=MsGDk(BnV|A8N+J1#d&j7>EVEfv||7K%8sfWp^bZ9Ow^(O$9*&H!)9T z?7}Vk`}Z&16ZdNULhpms1d|f`iOS*OVciOwI8KeOSY{UYpAaNYVSzVUYA&zEgDy0% zCCqyI9>4Y^5oU}06mY)NzKTLzU7k6v&9z0)R!GLMDk`LVFD6*J=Hd{L_IPQmp$pui z5Sj&#K4keEZPpffOnbHeH8L~Ha-d~kFw&;Yxj;@Ke$wDT>?R*{u)cAq<=BmtCcc!F zl~qts7mejH7_WsF`)|#r_-rN!+KiMd5KR-9c2CRQRACBkBU^etXngu$P$ zb-A0jNq|K)bczoORBrXSjZPMJDQvnt1z$16Ycb(xFv&!P?KeNvK&H&qUg}l3?MR_q z9H*APQ|sAQQ|jI#9NsUybT_Ukv2i6QN#NpdjPmAWjT+fhty|ewuene*R}~f4tBa#l z_i<~RP>Iv!%=Rb-p%1y1{VBDddXt1~Pr)Vq-luh}e`wJ|MMpTCueP*Vw}qBOHf(Dd z`MGUWjA#}a8Z4~5zaj4Vx8v3o*NFH4A;As$^Mes1TV88NeXoVMI*+YN%H#9Be%_kD z(O@ms?oHUAB-2`m9=e0;M{)m-Ed4gz<=AxLj;f~NL!S!SjT%o9DA(3>87ZdD3%V>S z%pavL?soHznADzZ&;Hy9z=k9P!&aD)UVDoM?qlYw@*@Z>$DtfW!W+Fh)o)&ZAf$*z z`kftW6d=D=sP4H4WiJL|;fRiWPDv@`E9SKk8L)2+qd>tm$}DVxv?=2V5`V+}orVH; zE9FplHTP~|+{D)jmb{DSBX0B*Fa5+n&qoZS0$5Sxt ze!5mPl&d`Qv&VixSDQ;+sp$Z%C+E6BP4@<~3ZL$94^~KA?8msr(mQ9%#g$8$ryPd% zlO#z5G*(oBEr^KlJ(}{UsA{^p^x5#`MrX?0h`3wjIOE^_m0S0!)Vy0jD)sAEi!DR@ zz#O&7^Yfu)6d~8ivj;QBqey*UyWZuz5-}fh1V7)oD-B3Z- z$@cHe5?I#@+5 zefLONv=!;6fQxEG8IY~gBMR(`)VKzW+@cEN&qtar7xorK8dXMg&vY){TttM1s!TSX zt|I6}Tz^-j`tF9V>VC+p?dANWp+I}o`Bz*Ee2d6gqo|q1 z-lX={Rvnk|N_*SV+pV>lnc;`KwVG4v28bP{m;jrv-i2}p$#9{5JarxTVi|7=SfNE` z0f))a#A4?G8k|b{L{4cg5Bs;i3NK6Sg-{!An;t{u4K0)6r*=~nOVbW37K(^R=*OF* zC8lCkf5G4XxRwagTw;jvD(rrs#=VuI@pO2DdQ1W`x-YS)$@|&Sd0O#O1>PSobaVx0 z(G67nb_>ycnaFZp_zQs#z2nCqxZ3_6cJWVmWUlZwPaS0s6F@i=$Nhj8Urd6JoUXJ_ zasVexv31+PV=CLQJUCl}j7x`2F>!zH6K~=qgY@j>5Cqw^4!qNh(VR{H(Ng2Gr0asz zE?qTV+xlkYpWn>4NtQ1Fx9P7M&Arp!)<$zQrtH7zaJW8(u6apAj6O!N_KEH(^y86R zAQ$^uGntJea*LPtuBs7Ya_}55|_vGgW2+HtOElBpdP7REorA$ z+nA{HaHQy}eGEdTE!F6FLv7rg7sxM{SJn{3mKopou5l^F2YI9022$0CP0WKMkkLwb z%U~rkl5e)%E8*kA3CI3aiJ2w8ser4C zuF#$Nb~Y9kx2GdOZq~ivhERkH_x5@A!V(6Rq5VoWr+)Qz1`Um2F(Ip6!~z3 z(DY+)(n)S`-O^~WF&cZ;YFJ(+6GdOpa53$(mCulNf%MD1EW_55;TFkJf%$fGS6PMh zCkYj~EcG>A93~xD8&7S+5rwMR2onRGrGI{@pA}$T$17};=1RfS2q`$VXS7$Oz4C=l zV@`DN;#vt8o#xx}O{N?D>U4X>xANjw?ja_tn&S4D^Mf=P^n5xOoEK_}H)}!dv(WwR zD6z@1pPnvu^rRr&9F}^4-2RJMx|ID({mG`_zijKKCMJYC+>L*IlbmMhXV@QWjN@0o zaq!r1TXjy!4W`(XAc2~3&-!n9tLSO;ZtV3-%zzrHl){6E27>bN416WpAh6~Ctpeyj zu9XP+1Fw#nuEe5$B6Z4kE21g5H0yV}xX}CQ&q8kBzKvV~wZR%#a&hndJPu}w^X;GD ztQV|YoE?FiwJ;et>ATy>R%Y4HgDlvcjD{kp9-5pTZX{BH7z#=X1@Y{hoXx2^Au+Kj zP?M>~OUR7oDyRPaYo@4>D&7D#Vu5bOpex9)yA`+1pP86sz%E)TjbeF?8bQU782RZ_ z9f*GNah&Faoh!Mi4p*ud$2;@j117R$$%;riA_hfRS#ydjyIkb4UC)o5xWsvz&UdlT zcXxigCjeXF0_+_b85vqAkPLj$4Q6(OT33)VX#}i{4JOO2hw8odEhf%@z*ST<7XM`lNxQy|~jjF+zv@z&pDV32s-5(L)9 z(4`lKrn$qTpJ%ToZvAt-$}x4~nWnmrg9fN2Jl01`ybo;b<1%*2hm^|hoL!!6fdW)! zNWt-^zDdC=k6Pm&*!Iympzs?h(5o`2bGHszo^$CJ z%O!a1d;I2GclLo5(T%&0(*iz#dZrxo8M=~Dd7vsB7q#yJq1YUPKIC?^2clMeK}?HP z?z*iJ0gA86>E9PURTcIVnggl`O>P#Q`L+m+cpEIlx>_|SZRB0yj0w(r;>Uk*va6Tu zDYCh=3d`?kGU}vT8Du}!T3x1(qI**5I3wO$vtHW0uXVlPiK?s4L=ImaCNuAq^^2jOqwXjr2`Yv>ZSXnLR5PfmKzkcO0=M*tYP(2-Jvjrv**R4W4GujD6)M-eUFQ~WKcQq zbO|T5r}>``)l_{7pNHUq!>mz*l*uKq6)NADZe%OE$j>Cpt|nC*-a*rl_uJGXmbOrw ze4BR~Dt|W?FzKvSU2)qC=e-6^QCbI=F^pfMWQ-DK|J^Zp;vCXhk{qk5P`cdB;(XJa z2%|Yr_vV<2vyn65&N0)-IW?;JaCq|numHM^+qb?%nUeQ^K#jvTO>|Fkxz*|Q_S^*0 zSc|X!nJ$1)9SIwCNq?wy8%WvyTOnajBR2w-9R|Kwu8=Y>7{Mkqwk6sSPPw{sC5xyjC98lk!Z1;YM|1RXBTp5SB%6T#wYINd=e^uUX{-AZU&qNKYj_RVYyD7mb()gAW}=Pet%o=~`G;(>GuLlx1?9f;V< z4$B$TdzO6Fue2L0YPuY+b+awPYV6h^XkUqBOgQP9Xs*kf}tH`V_Xgl$I@JT90UHUI({2wx*E72JB2`lV)} zOix)XCMxYg=bD`CQJ|}4TB!LouWzWhBJA)P)h~_%k$(r->W&wlT{pM+ zUQ%Pq?ioyvbWo*5Hm3+TI#T#3wD#2fG;y*YF?c7s5qf18#v4eavNhfCK4TRRVibBx z-7GHQhyzL9OpnCQuv_# z{`Myb|7K&#*?9d$!*vb0nWZy}Uwm?`y1${8;lbYY1Bq?@G z&^e+v1=$n80=%~A7AGThzbn9=K!t;UGbiJ|;^UXHF!qGJ|AJoqFR#-%Js-rVMTAbe z{;8*}VR74uOm0ptDHzq;Or((eqK!ixFtM3MB+R41QqzH?VxK~cNsLEKMC?T_hL+7t z>zhfXypQ^FM*wQBQan@WaM^x%8}p0XQiXfTG5`F{e+}LKmoNLjSF)0^Pp?-x6`gq1 zjrny1MaQ$N6w_Bbc z&EMfaGs>~!0H;Z*uRQIDEy(V4{8HRTTo1Ga+nou7o-Ur}!^-iZ3Xmk$W3py~$oMxm z13>KiLuUE(e}tL;auxp-_x$HmBQNOr0!_fXJ(#kqys(c}RbbE8nJyPa2_PK;|42hP z_v8njoM*ne)F{*&Pdeifl>D55M-qgT$q6}jG-&e3At^3=N)>m50_)qj9t|C1|k7J7Z}Be%9A>w`zM zM~Oe%71=|%zVAHq!QtimPD2f)hY?c!u<6rv8S$Z>X=N~3;qrd&t?%vX9S%uRV1*kW zEHaVpw#+`ne*Ni=z&lh9-!XOa8_#gbQKrCK$bW2Gwa20_8129{|L1{BJQ$Zz0R^|x zO|g+O98<+-A;ThORDc!OGIb|@)@q1;+W8#Qe*F_G|0mz)|4pF(e?K*Y_-68{hahyb z{+cl^B996O`T@S`zrnu$<&*y;6+=*Cg(xa*`5y;;T!5clq&)3EXXpQXeV;FBwOn$| zxgFUq%?S9|T^1a`lmET<`R`}^UvT}O9*?K@V}}vRy16Dc`YWz6 z0UD-?CK(*@!4wJ~WfdYG$CBSlCAWrxu&}A{Tz{-^R8`8`>GE>}&E(Oe!3F1pIX9iKzjd2>Y?Lt{Bt^>h`W^$5{>n2EddF8{B7%Zn_qkQa8^$|fT{3_`PD0nDart&<+XQ7T zN8DO}{h}f#f}OmF*vg2Oht-N5ADnX?(r$Mbig`?9TsWOm% zHVbZ(zOda?Eow~@s7~m-Re+T3#q#bw3s%p2^_0tcs`dc1^Coh9kEpIa1k3n&^Uj}^ z8=z$bkX)-kH+xxw=@Q^`bdP!W*C{}tj{x>*^gB!OUgf}B!a%4K-CY2gB)01J+(Aj> zxibgqGG9QK(B9E8F^)i5kzi<|e&W9VE0hc)Rfzchh&hm4 z%x9QcSj>N?Jq4J$lp#_RLkIvza=f~{0L^s3a(akD=hvbDB8cTK+v^{xz710dq`K1y zXpaCr*QTssC~drZ;vZswaF}&m8M*?~CkpcF zSM!O8j5mf7nxJMx9%$D%XCKJItERo>L-2sqg=$bp6zIggev!E?%g2cO3hTaB$_nkv z+gfmS+1YWp2A87aWc3cHH-YdGkrQyXAykpM(OMq3XqE9SgcR-_*O+(-K&yJCZZ|K$ zDErF;@Zjz^uBE-m;r!`x>zIbV`1p80OSIR@iRnc>M~h#>1H~M(zYNPT__;O*Vxe2- z+oKS#8_m1#xOI1bUNnw0u)-mco6v7*QH2>t1B*^?X_Pb?08N&pZ+ z#+>*5t+5RBGXy)gsH@BW;#4tJ{34Vs<@aZ}8`>4Hl@X+lDR1TqJ_(KX5ZC~lChD}oyJ`FnNJhvEhfu8LjK~7G&HI<`L!`#|Q^ge(V zQve+R3`BFpz7@?Pk34~Qh~bQ$zW4(8qK?q;@&V2bQR8=n)WoZG8?{0|$aZ$J*M%`2`_ za^fucvgk6=Va(`xtGPoj(CB&c=g-@dF8v(j6n0(e^OxLjfzWV+M&PAJ{^=lRBx(!D zH79^myKVqlUa-4gF=9Belq0;#$*Wu5aXA<&L+|x`z7%uv`p#;>IlxGa`T-XQHm*^3 zg;lwi!Re*(V6@h*0=xywuBhgC?h}f6Bz_<0Pj0+4F+8)ca{{h45|Uq|#^o#R)LFrw zjx?-uFDTt}6S9q59R`df*$u5Dr<1+%-D5hxZ#({>sfgRE*`%N8g@)*aEjZF?mXn%D zZIv(c{E8a$g?d#=25VqtBPxs92BLlqk6%@Ky&`oDbv zQ7X^+$XFHlSPc83zcEo=Q{{0x+{ZTy8#(o}So8*YQ3Li3_6U#P<-1PP40+k);K=Ed zWn`w4lhYzI2y_|)+8?dIBqt;N4>)p@hpQ|Q$C^4iKqXgum;cNVAieoZzPO7KwLW2^ z3!C5oGpT8o-rhYw#UGD%Il275!2~1V@$bBLe8@;QtsTQsX&lv?J2WaqdBXb}MsXTG zu!xA9G7pVZpG~t;d1}_GH%MMH7QLQuUXgf$opZbSYQ%Ww1}-igHdW(Juwe`4=O@@y z)b-Q7L=7k5Eptm}#UITWt8X@MbFGPe7xHM&-gCqXx`R#SMX6dp|LvyN<KrB`#0)GzOkRXK=cQ?V9@#T&n_2#*j`U$+MaoWnFp#NBzto1>|FJD#RhYtrXv7YNmNwr*Fh&MWS zF7=2~%t=r~1S(kbL6b9eINr)Lcecc4hcH2L`S(3VaHEo)yEs7eywDjyy&6u<4`RE^ zfHWob(p?ZLYu5_(O3h?#Y-|9B1Nq0ljoLCRD~tH<E zHC>>d0$3$0pdRSr*U!`#$?GIvWnz=szJ>7*DZXwRshddOENEB*hCH@0GkHk1+Dm%*QgKy zQt;BAu3I3;arX-pRdQ|W0KBd3BCmYyfObt1v=0n--; ziF1DxFzwN_r|-ey^Au$dJfLl0%UR0%rdcqV=5h{;JZ}-3ZL5E_|7STw2sJy zXCffA0wnPnNWKwI6yr*#>O2Deyd?l}u*!Wy*LD%)ZWsZtMf zc1vVqSW|>{YBf&^JZT@A1TpD9D+8dObFgm%NRi-<`Ay|lPF4r-seIT1-U)3WRZt1d zUk;eqmyweCU!E+1*GDi&7`kBV)TA=tUmQ0bD)FsnRVPW@C9rdwqNJ6q-0*O z3S>Y6+eKjRfRollUZ?k2FZuZKnxd`JACK9S`@PURO04i^^3@5yGK=2WA7FJGfml;z zH|7kS6C{&xqVLhs8MbZ%;6$?CA8#!7Tl4&Pc{Yl_Veaye+abR#tM^e!cl&0+97q9U-H=)`@s$q2Ke#830o^HnXsyJ@Pc zzZU1`ZP-_hxV!`f7>&|2I5@L~lY(}m#UPzFfHUZQjb;sFC9sI3fvtiv4%nK)oVBJL zNp9HY@Bm)F(f4F485}!Oj0$?|xB>SudhJrn^d%MhfIcV#AD*+aQ{R@NJ z@YtFWS}cl`H8Rdb$KI&9{H#=YuWet!+S;R1R;6Oq@ zb^00Z_*Re=1Z;L=LNUJu5c`tE{Z4_tHN3JhQRO(0UG%HQtGB$LXfKO^*7$VXH)XHq zq+jwgQ{e2gALD&0x2P)|uV;PT0%Ej{6zKpFE=;LK3cs(I1nc}h_Ky$H3rSBGkGog6 zk{|E=U#Kb|uU3xnQYG+rv#d6|KzmGYy&E-|0Zr2206z4G04rQ-ufvt!N3res(VfK_ z#07Ug4Uf3EI1djG=+|)5ij|JsR?A;cZ2@)A#ebRov(Y`=n{cbAnZF;L{q$+cH3Fn} zK!)LB=IZij)HKQuh-vxx`K-LW_1o_bxZ~L7fed*=bUTp48|UN`AtZA9n^I|kIz@nk9OP1j1t!^HR}ZRRBR)^ zMNc)j(G*qiU;@&+$3UqxeDecu6-&Tw^i^F82vN9vVHihMOiT>Wuw4~FfdvOuS-|B< zuGAWkv0r89wWyrzgAbVj^?g@2aFZz{Jdz#)vb{7=_iaWB#k_X^0@r~b$T* zFf|nenh)Bt!>ySnsSkue0n|z<(63SD8s1IJJpU9H26QU~NI6-mdbYIUzMgV&T^Jr6 z6>vTe{sp$bb5NeyUeNrxA#t7tTfR9PEzhG<@3{j!hl-a|0H6c=+7iaWWH1SU`tm>~ z=m0iBPK%^_qW-ZzMeMA8uWxO%1c(>3v;tOX3Hupu`2ZPdg#+!I^SCXFp~?5eInK{* z4ZZO@{XKjF2FLrBdpBK4|L0ybCMiXbKsNeWXFwXn;1uu#K~W>d7j1s2A1Jppb}2EcFO{> z-qrx&Gb~r@u~o>VAzKeL#FzjOAc2;#hEXf~2UMg%3`4GfL~{sww8)4EjZHXKny@lR zETDE(da_ZTarWgo#Bv8Kd@d(wsCmg_#xM6+<(R`8ruNqC!)K|ZWS71HBM^sy1F+tq zaDwwEc`}@aqR_l6c3{_LRd<9l9(AeFhB!xwRAk{BQA}{wiD_jJ1E*YB*D^5ntxwkQ zi-{T3Oar4~Tq}^uU*Xy9Dj#LsIRfcEVNaA7^@GyLw}kTyV<4=>Bpz@BFhcc+zDq>T z2E%Rqo8s4u$%PJrz|ofIQT&i|K;%cL+gf1a4Eo$v`m^iC**Q*Ei*J|8zZaqJ+UCIM z$jHd(=r#^;evad>v3a8KwWxs@=Q}PjXk5f>G+e3~pvP4r_~OXQ&sZyBv#d`90SX~- zYAOkh-0Iza@qx~xo!&>mzypY)Z=ly89+aro2m=eBt?vCyVBD+l?n^}H6$eYjRTFYX ztZ+666!=#V>Zm=i0qt|Dm3?bKqt$!N<_@^rOMU3z{R&=y>e4LIgJBFruvKJ;DK`?^ zfT+l*sZlvqd}n88Ro6BW>!twZ$m*F&Z9lW|ZePu+L3YJDD1Y0$-Lz ze~LZoQ)?#JSA>|oybUal=a*-`SJ&W`0jUIdtLGMwee@jN>T1h0Wl-w||2AH02nwvl%9b;6(*303zo5SCqQFbxpayQ$C$?xz`I`S0 z`4c;C1+K5CGRUJrm%O)D;w%UL0E?-oOf~h9Q#g2^C8Pf9|I{jD0fsY z)T%u175Xtl)cW_{F@DA%sj#-h~gxfC^uNA3PV+G;2 z1iPXcN3vMC$E(n1F@Li%oS>?2u|Z-$>qAT|H{GueHDn zN)u*mDy$NIHko8}r%au6QFzUF2EGKCWM{p+S~v9R0E#^Fyi*&6KM zcYefobiACtP)@lpr`u^CYSc+B-TT}f=hyDNVRk5dbNHIES?^Cl5`I7^0dI%9O11d(|VjjY%3j5ghsY zHHMW;{QQrn7-lO>hA(QSv(!hvFuO3fx(TqfEQA$H%f8^wruhrVWf30iVWuIMSR z&naKpWnv7j)8vRI1E9H++IftQL>BE9^H^MkMfG$d84K^&a+2>0AKUVs2Y&A64{w+o ziX6Shr9YLPH1MieYK(Bou7-#)_Ga^JH=_UUvdN~+gDG~-@WcVm@Hi@J*`%)(SzK#t zoCaUQbhQqPCQD65`(mzXc|U*J|LjfNA2KR^L+RqEcc?udB-10rpB~;?=PeV(>Lp6# zhJpnS3jNTawa9gIyS=tpZmwq0Bz|T*i`+RI|!3OB+>@ee_<~Pr4 zWxKCMh2It26yYh`TYp6Vtcg0#X)$X_mqOsyExfxpk?i?c>s%Zz;Zqj0LluqF!YyWk zDfb_R1RLlCxEOE;GQNO*Rv{man9JnA*!GGBdAWQ2++L98SoX+kZG2V1rS(`Ei=(L3 z?5C10SA(D%_c1d9W9H7~bpr;~T(10pZjB>vkNKoAl5@xNLLe1%96gj zQ$BLNXDo9>`}-2|6Z&`UPM*g`Sr;0u43rF?piL^*Wdei{4H*Yzj7 zvHXejBl*`ZOu-Qs_x|)03y0n%iQZB{};wig_c4acLL@AUk;#R(5m3Ixy zn^tU{8IF4Q&X@3EJrcZv_li_BaBw*QDA`tHI_owz^=&O)_{HvwK54?6;3H#pw!VKR zQrGqOV4 zG(wi0YY*ABhy`_KDDCT&njTHRwkznH-$!EmvzcH2BE!BoCE54H&t)3#2Qel>`g`Rf zJGtH~_EA-OhB%>D4R~Tw=7~hGC(EPR|7P$4yo1Yk=$94yxxEY2 z(w?0$BlV>oe!F=gwd%H@q_F=Rnp{6B?)M~rZ0On4!Gu8-j4r>%5QNjJP+J@NdW(I|# zcNnAJ8iVBtk>nqZPkw0U%T|*6igv&EQ&af<_q4YM39?3vdAFLkxvPi;4QHqmF3h<4 zTT3mL!u9%Z^&0b<5iyPY=~3>AZv4m6AtuGC*Y5{MY%vS^yD*J5osTv7;+kFF{|c@e zXk`KV{sEtU9}}ze+ila9%x)_J#J|wQOE+2py~D!_7yV09j-{Vu+Y{uvk)$a8GkO`X z1@vKo#~dFNr{6b4*m)|g9mMD<4W@Elt^a>B zgjix%E0kX+$iA=mHjXsPafQd__KmV(+4X5-r$TShjj#TO8pN`>e+eKJf6>nQ#{#8j^(jKIS9$K?YGp~f;g4nEH;*)QlhhPC zo+Pw)ARZ{!ckTW{AYV$8GKh=v@br<_1;;4{b>CGK?96B7F88k%D~!!I8rZio>uQU~ z{uItff{4$QW##B)&Q5%Fo8mQRYhsygg3>{6XWm^~n^^u3GJbazo5brZ*%=BEr8#RW zi~C)RX4{;5QCd1Fo^cf4fk(OyKtB~w6JqA3x&ihU{@*AyOYsGQHeh~!9?WX`m1Lb7G1%STOVKrp~fa`&! zNbrr%-!C!%H}Uoh1Jc+C%uua8`bCCfXLF#%UF`er zv(<2v_=;Q=tNzWbR9q8A$x~410Zo2;1g#LjIm^pd?;l`BUZkX?z_CDn0@@vahXbgP zPcemimvzE`0C1nzK;)#1)++9#M<9>3!J#6;?SKV4trJW?x138XU-MZ1a04M4%s zMq&Zw?Esr+=8l0`tOF!MzoyhMj+OYYFQE?LwL)N?rUAKsI!GJIN-nB-k-Iqs2DtL( z`hysX8kmg&E-DDw8qoU>R8Pl?8h?|inl>*byF?~Zpx2Bj4<2Zp+L+8V`gs@Xb&n2V z2qT6qfMG7A&_^KtCGug6(sipEw=&;TtW`f}RZKKHpa6Eib>L~92b)kcG*f7jEyZ*0 z9TATwxcv&+gAONP46Pw&sW&P2eH@^E2JJ51UHOv_)0MWOIo}ohMj4UlEkj43E%M&T zoA(~K&dtBt@8T*dw;GuHLBKHV6q=%<>kKA72$M{s7fT zWp4E#oAR4mTn;K6_T~w&qmCzF_RsX7n2}#PTNbuu4@!Y33DIlu7ME;GeFmZR)dmY1)?h+Cza zxhg`$vt{>o<$K?Q)=*!Weq#{$F)zT5VI^h{bW_N&{6PA+@9{iwgw-mal1n**D_<3m zP{lL=&dB)|_d*Pu$C2S-brSp)j$z=6=XR_xY|#XxR27!xTyV_-8dk^0Z+}k={CNOi zLM}{=m+L@&*pvSrcb4w&4F3;_6oj`A@HN^n@>b2~ev0aHk2ULLzx0R=sn zB1x}(H!iVyXmyz)=ChC1$(EzAeW<~YE~)vdwe*UN(~5i$eVqFCp*Ic&Pi-`$SH8WD zL-(k%=V6bl$8D9hPcQU;FyVKohyX^ZT}c*TJ#fKDGWv?w)( zl~TnGWbOggUtrVE8DMvx??eT~14EtOIY77VVElwX?Dib-ETF-Ng_$}2P4@e<>gva2 zU!~x91y%2h8c(}UZx&Cp3fx8>5zUK>YEjW1jS0|HJen;4{XWfA3e5KFRDj^-`&ZJX zVYG2IHq16M)|NEY`GFHPF1aZxbJDs#jmGN#{nE=Ttmv3#ZNuR8hyM*o0IOH+c=~M;Sknu7d!WJCc}lP(Mi4$=DO5 zjyDMgH^6iTW}asiND@W&3_nCHR@sg?v;BTo z@FB)^NuJaLMS@w9urQ|g;5qoKA~H4RzQp-pbQ)w9A@GJD=^nq4EU`uQVadF=axalpqUBHkc$vx01~SX@K1h>WG*h;FCmJ z*T8NduQvWtGJag1cDs#_~CsGxA?{3v+)$pBW-KG6}_Gmmc+d>Ip=P$-{4F+7e0V~ zpnA)XecnBou-GXxlU=B&DVzO@)P3t~kJKMNl$m=(6;WYranw6iw4}N^~#*G^(PTyKu9?Ht@>-LTd`cc)( zg)<^&bt@}1)6ldC#8_M~GS^B`Q4uqmm6b&+Xyq1a%!?Nv5fKp`t(~jM{ki}Tfsjcj zk#JizqGAirT|ZOgc5T!&=snjq z!6#YRSXfvjBu2#j!^swMwpqOK5bUJExEy3|&M)WA_VY%e2RR!G`}hbIdCC%1Rn?%N zAndnAgp#r{&b0OPVx*u|zY6nRX69yXyu2^ty5&|h@S`1+RdQkUJr6Z%C`Lu_5uZs~ zT3WQ*=}Z%Bnh^-UJIMo`5^{mZnF2xx#AgL(2>K(2K*32h$f;l zw-E@TYp0jqk2-H=X=z#Ox&n``7$+oneQBlfL`gv*Pp8yuYaT<2xVDRaPB@hO;A|k- z0)w&hdmh$&Y%{m)Sjt^L#e2nfbw*FmG?KBhX zIJVZtgyXMYu2~>KT)P=Hd|!LiYoimXrH}c1-(Ou>+<9@J*!O7b(?U*KTH0Agx3LiZ zt}Ol9ZI(|@*GD{8rW)NnJUl+}=$myX=37ohWH5Pe_K16KTcj8^`e5%+uqyoe21|69 z=(#Mq_xA(lvhV7bv*8T)%!1Pl>OJ;7PmXrX&CERXrASxx?CQ&rxtgJL!i+-J(fB1z z&br|$)jrLn!u{Fma^b%Qb&Bc5Jzo5b=Ccw^a_rzB6W@$DAZ7B|H6FId=ILN%Y>L+= z+feT?S*oe7DVuqJqK|Aue28ErUv$J>zAw&J{?^W$LOb#Jk>yKKOz zTRiig_{rgh}T5!*I*Sw9p)#h93};lkw^1s*OgyK zaMZmdI6LofyxL6Gm#KWxCV4#WkY8f>rP2GqMVxSJq&#H8W^Llz{Mx=w=GHl?Kg4zm zm#lOtW)fTz3y_??n>})|D)tf^Kl#h8FzZ#xUoj#(GCYlkj?R(g-vo}268b7^{xEtj z^67gXELC#d!Q^S08|b-h&i3dU@Nd|OPwtFPjeYU2k;|7m5eQy|r5HdUVV(fLpOIm0bz2?$CVe|FOiMz+`#SRurTXnp39j2BGYM0gaFVft3 zsBFG~&Cg*#Hgeu4&?!w(s>CpB6rkF^&O35FL^pJ3pwoz_M}1GkA>Ax=B3I_KE#Fzv z;QBPObEbR`*W~myQWmarKdt&T82y1wdAoe;@UT`}<7{`ls5(kBfDR$m&hZYRd3Etm zB`+tZJSO@WTWEN)zfg!fq~g+?U0I*{vE{lt_GP}-O1fPC1FPblJ9i+>nFjw2<|?r0 z&w9^FL~_-L;aa|Ymp2|&%Y&h;XWQjD{M};en7uHDdl?Eb6AtLDqViM~2q$7H&MfD= zck+dhnbpas%8=zrPFz2t52atwB{i@4h%4_9)6Y$oQ+EsI*+J$THX0BXAK>R|6(0Znp!}5jp7Z=)a~oyJ zqcTnn%v)M3=T0%lzu&tO?hP|l5ZR)$tuEybN*rzWg&NWdRj>-Y%55C{bGw>vC{>OO z_pCEkaKpn1Ra+nJgFQ3TK$|~mu)^yKr+JY3SJ=DOaLjY;xf+k2 z9PiN4Of#>OS~$N*oijx@lGW1X&!0a}i!Ph?g5=0rIZ|@$bG$dBNy5%AfIlB=S8Vlg z@^GTiAtNEFR{gWCoCNB&wn<8?$X37lFtv({kfRC1(qbC{nb_xf?9pwbEtC8^xGffz zP_&f*F2`T-y*8QSTyMH&1j@<#XbWfXX>;Hi?RklvA*b$pD|KaMWpjO*xg+)4gQz6m zWB2k5eYV@hZr0)_Cp-v0HRKgMdKwx_hR?Z=s`lq|1%K{M$Jt?XkPFMTD?(j(s-ed` zIwcQ7e_vvjEwlNf`Pk(LccsP6fxp{y`9GuCV5s?oP$EVJ)0UnuUg&h1ql{ype(VMw)~{I*h5U-)UfR}q4a~sjxosK z)17e(dseHMyVIhQHpN%Cb+z>ro@}p-8ip$}mv{Iq1h5Sf_GGP|CjMb(9Hu~D&nc>n zbridCvVsp)-1G(I=4siwQa~gqD3pz_#hk!77FFK5=lrLzVPBpv`<3%xnI-KNhI=lH zPk8H}58Dq_IdFde$gO9F{^n0aN-OG^_G~)8azw2Uv*0}psh2p7Lp{S{Y~$4h9u>)o z-I?*4xr{gg&3TELpZwj2kb9_fe|+Li68Ch0tbumd(sxF4aH2DHleeifA{!3Ze~{7& z6!r2+?r>+2rcY5d+ch3l6wvaUg`{YtHhMIj79eaNYyQ*fk}cA)L%r_q#tVqg8lo;M zBlr*4CsHs0iMyeSx z-Ltp4FDEB=c0KjN;IsW1buSP4l)SL|yL(pGEyP>h$v-kCV|=&2{qq|wbLy3OzNGES z18prWQDfn>?(}X*5BbBHp!xo6im}MSX9i@^YIZu_);Jk--Ekjo_sA6w5%p&5SX7$q zWVcPS{~^)|60}MK+W7(?yevX}7s*xtgHQh>RP*lvP}JYT>-DQ&FC6Tw>_q=AHSfkF zAd2>b9H0yt_XzeSXD(GPT=wBZjchfUK6q&dwn*6La91A9858;0Q>WT->NI-i{Lhj> z))ZuAZJor6s=6WePL9$2dCS{Np|parqE2R09cbQ$-Dm2Lmb)(^RFtBgBgkm(+~np~ zq;Q)4X$fayrYk{l+?Pj~nVFe|wTmSK1KR4+vBGu*XuUr5 z3)?t6UbynyAn^QXclSO2WI?hYO2;BeAw9Gcys{Om>>lP`Pz zaNOC!i#c)S=BaZ4G_BwxdzrRwkm(k5w09cZ)}D!HHwTiTx}eSjP@G*`EX%I9brFvq zEJvZ@7Kf@gw*S}(Lr&71H)*nxZ-h+L5yw?fC9VIfa>V0F(z?%dZPu82+g1RDlFA)` z8S--}gn7Cu<2g-_6cqYxsOSJ1H%zn~RS?GsqOjT*xYF|?N(phdm}U~hSQuLC(D0rE92{ z`s5Q&P4c?lLi@?$p|uNoa-PO*^D+XFp4LyGov!`kBey;^X0@MQa)TgkJ3F^Fx9Vu2 zuyLpmX_I-~z%<{1sAyi5sxK!}U0oeX?s>-Ehx2njbK^r6H)(0 z2XoRfeAbrvMxEV_oxO{J%_2$fWB(LPrj=b5fAr4}m(?A}*D*Rz70*4@@Ri&iFoA4T zkF_7P%(PTGMr@b<&OZwrk1n0D$;wd|oh8#3J9+w>XG4VTM&cVi)MIj=?SxAntEgs0 z7vpQ^O`_%f8Bc&P+rTUUgM3QD$K^OvK8V3+)2c(9=`(Rrfvj4EwA0Rb=kJ;HYhM_dp!wKA5(fzhO z@$Fr{0~TPe#eg2cr9V$SIia)&L57-C(bpajvg`rQ*Y7;>PHOsK4fv)dyVm^_T2+n-R5X?+=LZtS zxvt1}^X5&9(XW%J7RJrZ^0^^?gB_HOGAe^-e~^IvtJzsZ6s4g2lX`rYwJit3_^a%T zmK7bcLGcAYoUc|e?Ikr#V7)Vv_Tx4Q5uRv$#HY^yT*~T@^#}x|yb4hfj&~gP`e7FH ze@|8T_x1PR3K0LlyVReZ0AXys;j{6Br*tRlJPV&{hJ&J0YkP)=jKAYM1QB_|@lm=v zs`@-qe)NQ-Gt4+jx$HAuKsH+Mfv7hN&+m{V6BXM_O^C1k!TGFzmqPg$c4(uN&)oLA zUB2XZ{%mdd)hOi3Ho|<;DUFa6 zv1)0wNZ~X8!A)|4?80fA<*VrYd1JBX&N&O}7~ZlW($i2ozX$iTu_m zv_M?5zSJ~@Yity-;}%YqpF2oO{>?{%7!SJgLbTiw#hzK%!VxWjG*`2-9g9`g6cZaZ;BEfhe@TFm~1~PE;~3qD+|QppmH}hR`*-qnHTccerSI zpGo1|?@edX_~#NjCZMi%Boe!!+z$Jdqs0^vQkMoOngTB?ioAUS%Aeae)nETcw)^)t z^=||0rA^~m5)cAwAXGrRcn?kJb5*Bm zIldZyy|4KZ?-eDt#eX0@{>w8o#T1dZT(J{S{}kJKpm@kfA)ll9{W!V)QoTabM3#r*+w_HJQP11W@|M&&FdK16Kv ziOl2`=Zwze{&Q%lFLqx#rw4KRzZOReuj8FlXY0SsKpPXGC5rv*b;A!LTS!sixhci^ zJVt;$$>RS1T2K9#hx*@1um6op??>Ui>MJTGMV#)}7f#Mrgw$#Zgy(-N2t_EaKyY6S zC6OlseR#D%PtU*i!6~`=_sa0U+@4YQjvq=(klOXm^+F`5gnnAvXY9-6GYs@$Rj>kZ zN@f0|@A>yDvK@bcHaX2QKcrRg4s83K*IJn=k00~N^rh6C=i{KcB&W_ip~g(=cUuaP z`qo2Gxp6!sN{I9hGuQ&m%nTO;IrNV7qRBs?(V&9I#>DKos1NDLI5lN)z?l|%^`uj z3bwjzCDN}u9@<&{(hLm?!zL;od^g$RVljQLq2m7qaZZ#z;I;Hy`{$wa-iv7-J%Ao= zdOtx66$&{XS*ZeY;zvkd!V8hEs?f8_WDSdszUqG`nYA%eL{Ja|A3k#%ACqF+`Zh5e z=-TIP?k9s|92^`mF)>6^7T5hQWgX}Daka|IJY0?CP#+wlB~yCx1itXXS!1-i_q}LY zwphn>*FJ?XqLSA_p0cuU@W^$u%*eCmi)qdjai24~cJorxIStHg9)dvR`t@-zI`(Ex zfOr^uIyqQr{P5v};yA}gkUi{z*#rfVWKB^fgNr&kGNL_K{nkSevQm_Y_jq;MK0w~? z`x9Y+X}K&7>esyZUG0=9=)1o;2kIDVpvV|l9IJBTqVDlzxa2a>X#hL9n)#=~duCO_ zCr9`bqt&)*gv)NFL!bC#=F0%M@YZEfP`PX##%0Q{>}NH4ECStJ>ggtd4!m;uN_ z1AVT!!E!+K$5tJDcdnk}J9C>jVv2I?>&fAabrX5Z$eQTHt=cy%_m?o z48_O&Su|E;A+Jsw_ZgRmWG0&uff|B zmGDu|w%QatlN`TcyY%<{XPLb0cUQ-;-%Q%VvW**n4>|wH1);;J$*-zPL_LgZJBdI_ zRF05jC3xe~39Nsv81guq7Ar&A0{i*PIiJWDDDZMkbbP!RJgSy~yG*wG6k3awmDRv? z*ck-K@L&_cn0(XzT1`=uA{TF*fMw+S_o|sn4226CH2JS#(exF4cZOXH2=ager{DeK zOtCP_P1xvyAJutE&G*MoDgF7&{a>VtnEl3O-uG#lP65B>H}8r+Pr+*O2y@q}2Ar@{ zy9-65nDnCeF?JJn39$Soe7-YL{2=lPPY?a;;${5=D?%$c&aFY{s2o=?C~bz*P`Cox zs?gxzUXOlpmwa`7ThuwWxkCCyMqeNThF7v=-d%yPJ84Z&qF4ExI^JT@&r*f8sg&n6M-a`Fa+_{`O& znnI9pvLH@9!e|{6?>gsj?5uyPqx>Qj;h0sLNp?-WLWuG9hEQw-t|Y8FE1e_Oo$hC= ze@4ijyy3#i_pry{wF!PJGHJUgV{$%2Mprj>AH$ZYomXm>yQ`_A18%f>SoQ;hY&Dk2 z!#n7O!rDWp25s}!&O6sv4qc`tA1L+=tn+YrQkUQ1M#ZJL+g6`H>$)vqsvIiJX|x-~ z7XD(=3P9|%`ysFFzF_jVOYHCj<{bnO0BJ5W`e^TdhPtf_iexgitjXeJR zg|@xp#fzK#M?G>(;vSn>tk0f31Bt5Ti~m{blZTmbM)NhYd);Re%sVO}kLW`JfT;QY z{d<;H;YhrwlalCE)aK?U?C@!NE-o&%87zwt_pET9;8q-RXk!3j4hq%*7zFrY?&XCP zMh?$zUAwA^*BtjuLlsiPXxifsa5zUBybmD3urwK}t*6?JHi&x;I^kV6&R8bKm&LYuM184H+K%-8wUfF|BMdlU5SNJl*mfh_#GI>@F`q%M#LK z@lj@GF<-r~_u@55p&A{4)TTz8J*~bPLMPlM@}mXf1o>?gQi|`vk}%q@@pvBvzFYzP z3&MjJm_MheCiVF|sF&%V407V~4C-~Y5*%7-3<{C1t{@od#ywNOK!q-MMi)10v!QDA zDs2tD)?TwhPlLv!X2DaPK1kAKg9P9|&Gw`QR&;|6qI`EQ4J6oH>U_Cn-y_YKg=5@F zB$3pfEMZ7*37lPYBgmhk|wYO7|BD_FvFI0Mg4;z^MD9@btP9Cw3_!aQM; z@TxN7bj5^WTLR8gB!c(#L0Lk_iNx>r1HuschHzh=r@87uR~Z=cy^u&@>w(*(M41^G z9{MHFKLPiSdzh(|@R3K~s#7D3GeRKwt(xUPjWcQ|&h2ULq2>$m_3zBV_N2APha24$ zuBKpT9Dsr{_j2wx%?uf9&gv0J*YntXy2mVKX}Sb^U@ zB3mHqqW^l)50BsquR)$qmF@z#iDg#minsJC6!-<7=1Y8O4W$btp-J&Rw>3{7dhuNg zp)?6zNN>sz>{AZDECo2+BQ?&s4lWk?H+iyaK~C-l+cUY$6CfZ`k@kQcC75U z)8)~-yKai?)}Xjj(b4?@fif#A(hH;SHvXFS=xC!`QZT;GvM(c2-#s~m;odeJAKQVV zr*RX4y6j;?=>dub*rcgn6C10k?~lW>SBdtHijH2 zE-sf%J|ytmUQEW9HE>t^J>$?L^LdqhZ4(U|ykl3qD4<8L?fI(hd3&#&2`mcr{cH^AxFnUqIOqX`oGj2xB)To4aE_8F#i(Mre zl_ne`zzd1o1TZeKJLb;|LMNQo%`az}&RlK=pC`}xW5>iJC8Y*{j*5Fl_TyjQzI_We z&~K6M3O<*`0odr%JOxce2lKgwd8W`LGhAlbCuB1i4;cY~rvTzB*(iZ*km|tCc+rhh z6jJ~tSOH2h^nsj$a^GBNFQJ|}qxTVVA-K)r8T4<%!g(;ESW8lZmheBGN#Y6QO0lPVY2>j14UBQAezz)MVVR!x{OPjr`^ z%bf#9$b4scm=jBVOZyl2l_T|@b|ZCrX&;n&6}D1PIG*|6_;_d7bbqn)A#*fT`Gie7 zqTuFo(@?!>?KGMK@g3gc+b&ZD7+4(x=lRHqhB*ym?4-6 zCIq7}&IYYatb`08#sNFAbQiSFM^XK>TH>5U9$O{osuAP{+n|S+xm1agpe2ekwbpr| z!n`{%FYnfrN8m*UjVk~s4XKJa7(8xT`8NVm-cu&azFP%IH0Star}0FG8a&uqDEX&_ z;*>0w;U1JB0)+6dvOE?a2P-|ySuNS}Xg~3lrbBM@P@`{SO`8wCcD7}FqxqP`Qim2Q zOt3FD47vlu!nSu`8jBMx%s69+v}p1XngTUGXYO#pr5S-V z32~IKUyJ4R!cgH1zA=Z3t^ayJmd#&inX7#9S{^_)K2Bl4yU!I-{Tn4ec+|Uf`e>=J zw=*wmT~FiFXZetUDb&1<>S#I77C(0P*I@9;6&vBr4GNbUiW%U}}QG4}JR zu3M8I-of^gdeT#t^_CzC3{|DP3&Qv{LiY1E%T+E(ubzP!?#iJO$0>PdO*GeOZ{Eq# z=!uRN$0;uyDKUMb$n^$EJ-s6Ni7}M^l&AwV$Wh;l0AWaxBWp?4HF@74yABo*>>$40 z&^MmtO^d%v!C&)U`h4qY)hZyW^~UL@ZY%t2Z$Kk8R)%S@oCrY_A3x@A6x&9s!oWl#xB>yE`zP*9+0h{e<;@}TeU_;3&R z)G0K!d5~KrrXZ((Krv3kxoD7xkS8WKHa0RcWi`zHPM0^sf(q|W<1)qnv{YQ#x@X&s zmT%4)sxHms@T4uB^lUoU|MGd@GrwjCn*C7;pm)!qCj=Q^Yaws?eq}e%^I6X17BVK+H4O}^Dy8j!%V~@7nBP{k%eyy#Jih-}LUy$)4Qqom;q{i&wi69Sv6O7bRl1rgQq` zRb$YpC7f;1(T`?6y~&qkok6v9N!t24nK9sU3bNIU-wJM)Fl5v@?$%k$m?_!cZTyP* zmbKwopG_0iqVXYm`H_6My~vHHqib8c*ur+Y`j*>3Ym6v^soJ~5zISv@rU}Tsdc!fv zUs_Uf!vEWR>AN^O(3x+AL&A~O$-l~0M!i0(@Qd@8RRZaYJGZyrDr>dKYLCy83@^TU zMb)7>JKe62NDe?;G-ULimZEmjG|`b&HSQ15G|p@Jt~B^_h=rj#Gxx`(+2mavb6PXgwjcTZ^Yv=5)4_kgKT`io!T)In;nGeKP(VCT zU(ngEZ9ZXUNHI<_`e-Mv);0MbviDL{LTIt5l^c2H-q|HZ`miV+E4V(0=Y+btN|}XU|i{b3>#0w@1QiZiK%yl0z`Jtrd@mot2)c=Jc$>?KLC1?42(X zEu@rEcG*hgQig^6>=0iR^%R`my`)`GWv~293qd`8&@#p6S0~OYsXr_Bc=7Fb(N#`i z4}C3}zxA`uQ-Ar$Ux0t`bIUX>FW$g%yPIG}NtF8S3s%>URNbtZY)c`=T#Sx6#yih= zeh6N+BF?2}3;UEgd8vNdZC^Jz&IxIYoqki`??HVIdB$GbX;++lu>Qi5Zm&H4!Y(J5 zSc!?qjjzVucmvh(&3hDI3w~{d7{4p8I4Af1UiL6xt^-Wkj#=@ks2}os-3m&L&JqLr|NN3`E_Npy>IrG3h7nX#) zy>5yqyD}-t&DZ@@fs zAWqRLWq-}@ec*~o^04eH@8?Br<*aNkHd>0_p&nMxx~nexxBhYZfkSS`HMH(j*}ZI& zOwt$~8W;_z`{+#aPb@Ym2QBjYhpt^|{y3TXy}Iq>%F@f2YvZY*i%YYd>c85PIP70W z+($H5z6v&)WcCkj8`rXp8K-FtyVlW@vZ2s<82Ic|Uh6PKe0hg>V;&mU_}4j3-JU3J zXhViByty#M{Hk8A(><}=w=-$C*oe=4dqwx1Fw^e1_FD8yNRG|C-BE&srbX>c%~!f_ zcj?zR8<(snd}eM6)MO+a65n=L_{ee1`?1b70Z56{h3B>-zu5lRrC;uJJSiwzyF$0z zrWKbWW}%))xQ)KP(u2ak_cwT*`c(C++wfRK7s}(r(?VyY>^>IGmS22%aml~PDW8?EPx{sI?X>5}` zXg8XqX=d&I(%Cxdm*pVYZfe0U!f+Hid?mh$knsZPHFkKaR23R)u_t=nqn6*Rg95!4 zgk`+4SVhjf5cs%8RsUv_P?{1iMM*KRS z=XctRzlS1`c;t~#YE=CQ9g?w{-{YcHWZEwTz!b+fwb>rSU8!08@l!TqyjiL8=;^he zmzvnQU!Dm$Q2q6Vao`N6pY(MF$?LkVJDZk*7a^C%$dsy8M;+EPx zsk$HX$iFZ$kfWJz)$#P5F6&q0$X*5AH|-?(Otyuzs94Nx0^QgSzKriTm=)d)vT|V3 z%wqdVDCARaD0BvA^qtR8=2xdL=ZxJ)DtO6nvvzzJNWLl5(O+o2FC^TFikTSGpJrMq z!C&Ly5{D+WFwl@dRRVY2ucXAhn=$Ow|8+9v->=EPwb=jfm->^FjKS~(cpLo*e)2?gF^#G5(r5wrB@*s$*cApd$5d0&r`E=6nFJ(9StK0W1nsF^_KX zon6CbFupdAc1A}*k77-8_dcJmQz~m$_Ce`xds8Q1M<%b;`#YjLqrSc%zQ-F$(b3VMfhr}6x%Z|$hVciYYPiGjfPerP*3qWcf)RoU z902$&S3vW2;3+hdN#DJJPq70)9H^RLR>&5UgMRq|_bCE@ zpeYVUw#1+rz2F_AT_xxP0+zik0a+2mW6%v%VbLQEthZ0;-cmeJU&p_Xz@{?vTq=j= z-K^cdLujBTp}CU=PG#(GSP6Jw0dDRkFlFX`mu8+P0BH+GZJa@`3Mnn#0H?CXMF`nf z2Yw_hsV8`p;N+xrtJ}nYXw?9;Wl-MZ!&4afS@z6G?(jId=V<8xO9R78buc6p;zTA} z`y0 zy~{t|X2R7DdO`Nr$18&M!BGtbu7pKE+!X$-8m`TEqb z1!&^UJMR0z+c*R|`ss-oLng_W?9QyD`Uerd()#8ID|IjH*i-!wY452keu5*{dKeO7&>H|a~%I!myL)-rIgAuT6W zxT=Eih3y%n>U$!yLL0iPO;|ilHzNeW5LhE$Fond-rKf-T;H6MLe((wMcpPPsnJLy9NJ3wWg(Gd|wU(qhh z;8t3FReMzadCOt-8?~XfAwIS(K=##^yK#K&46(_iSgdTSCTm@}WuNTi=*CR9>sC^z z6Pw2Sya`#;0@|QKmBDBtCC;&J5Z$$+gu(`iunNHW4eGSNH1U5=XQ+i~xcT}F%ld*%={x86 zuOso2oUuBf1fCjC7)1=7!Gk(tx=zW-5dPEov0;~~;#|5b6(B|knq_ylfTdX7%>)?? zqNL8E=f+Yr8KaoCyTYfRmq8DQNvQ>A7&*DOr6H&uH(QP~IKVX?rxz=4CEa^5YxLEB zTMWz|6J(RevWM~}*+?009Eg5%5fF{0YDtm5i{n_Ar?R^SY)t z*!)bMJQwxQ3|TIn1%+m{tw!iHnS4(4{8D0jnGF45vLxpn2&j zm=ymMZG?R1duBNRA~^$s1r!eKewf!v(2@j$xRmVAA;myFu+|szVa)?)u&u4_!xtFH z75TORvMp74foK>=ia0_=7_wq+*7Sr1E6Sw1-8tUq2I&44YXUQ4f=0EOv=ZrVbyXTyDzq~Q@gJo6qu3dYtHP@VTRfw93JQ*n+DFgx`Q&f=E zfI#s5ArQPq5`1vv@6c8x1VRB(lzpz{k+42-&6^4_*|vSj`e3j(j2S8&_c4MshneG{ z+bypdwe=kKvfV=G+2fB4^rRey(nM6UQAX6%6x&ws_Kff!e7^85{&q9IYx51|S7o=u zU0=`f^>w@0kuLA0!_%J4*4M9J-;>hN)YKHu$j+vRK&Fkgw6t>Ve*XN~*VlLP-SzmU z$;++O7aypqa2pu0{zN)(N^&SH&jzZZf~$Y}^l3Dw&H-(cB);&22Q$CFu)y-PVawno zHMNdupVI@_+ubS-c?f6u;nq~aI7Tb?D;@+A^gvS5NYMZT7x>X>(Id{-pk$os+7e3r z>Ib(y1R_17sH7z7eN<>k%*2F)ZM-_chp16e6*xILaky@X=;5KAj1ftS#t=y8M;Sp@ z)HiuXqqCLkJ*hc18HY5)z5V zdJss;u&lhiWpKgORgn;4NCO@rIFp>&9}n^tf_D?*Pe5VkIT zVgG-fn#$1d`0-=E%k#r5XuR?l5!dD3j%dzXOp_H69Q|?!@JE2nWN*0-dBIb6l!gb9Eo;0v{pi*Ae=2yv{q z$DzGfJhdf0r*2RK@9h@cGt?8rcJ)@B*K7zIoq$aSZo9Zg(rbPA={HqMHkCiWe^)H0 zg}F+h<^-~}G4MECbNQ5S-eyTs4Wq)1VWG;|P)>f!reLx-NsqtNET6>FCM%RK!5vQ9 z*^&o!OBbg+mlEMl(3|vv$~SDG1dg;4-|r5j`r}I6Hbz$iRAYFbkInqL#)MW+55{eR z>u$V3y!jL3)FW{?h|$+^cit!+%GWRNwhd5Ems<%~9n5tZGIY;vckD4Pe$!QZI60P~ zNQvp3aG%125ku4z%#?q|NO&DA{4h?6ipmh(DX72bkI7%malYDQcNR|83X%owAnty>fU&wTR6Q|P%pVrGQck>;eGU0;yq)Ia_qCQGW+WJudnzG zFoG{~H8LfS=f5%e9zBPWGqB%-G+gJ*BGsi%dbS9r!>Hc3)+`0YlKRVwY5^*gM0LN8 z#OmewmY?lV{`qVe55MLOLA|3S8eG!d;Dxu_0nWP$r>Hic5hfaBI z)q+hGd#1L&Vr=nsN!el&Dm0Oyq%%V`U8bamiDZ4#6}Jz5Z8g8-Ovl(K(}SMx%^!Wo z+RQvHtJP!99(+gIFx<-rsG?HKo}`X-5J7Ds)8MbNGBfqu?=;-tsY&sh0z0bGWocDd z8d3Ze7Glej;;NIj_8j|02gl)0-4u5@Z2sx750l3_;g)l=lTab_4i%}s=O>|esco{P9cs4a zO7#U&J92KebH<%%j-%iLo9To^NvL_Sve?ahlKAd> zbm~%-?5|=qy&6_M@~+}V5xIPo+XgDE^0eK^l_Eu;A1{J#4u#3n$~7Ce{4{oBxmTY4 zIi-z&ZJ4zTt)0||-5x39mo*&@`~8UR<{pA;5ZzD~f0!Yy`*T_v8p|&0sk+(=!=GkB zJ{U_T?CvPO+V03&zE*=LcMAFL5F^#Aq#+Ix7^{s8b?TD$egguXVwuS=fM@+thiv|N zAhGpwiPKywo%jK2(LSI&yv4zlGs(qRtAf~@Tdqg@MT=!3;(MA--~uX8U|`i(UtCBB z#Ita(WgQ={wPFp9-mz-%aIa{v)!Yp+q7dftSrU_l&lfPZ0hJqTu8g*I`vptaf+PyK z{1e68krUA{im^$Lxd<-CEY;*q#4Y>LlBb(}dOfjIK8J=NVrtz+iIy+2xAqSVM4Y~8 zLh)=oDyZ2}!j{^QOI;kzaloX`{x-SvNa!3Vp5_uyJ`0)!5n<4(iquLXVxjYg)X8$X z(G8CzGRs=hQG@7-@M`~y_CWIIuKs2a2pd`$zXGhug^uV~3JSf2IRZ-{Dn1>-ChZr@ zc9A|PwHKJT?kOLR%?{8#uXdcOgWSrNE=BRb3>(dk6F%P?kf2fH(j9uy6(>-;`JABk zG32+=Pxl{dW{rbAGfIAghIYroXc z{S_OsSLH4P9X8A(eEu6WL=ZIySi~Il7rV)q_YPCmxyr|#yG53~Pgb(&*kJ)yU>VS6GSvAe;6TiFJSIEu!)biS-d3^ zWVYYk;8t767Sqbf+oC%XpBd-xMtx8-9K+}fO=!;zuqC?opB?W;SL5^);4GXO`vvcy zj~qc*$BeBW+rGz&mLGQsO$|=xy@N6=ep8hksgR<#AD5@6%VFd-k)Gz#d&o`D2iny)=qKTnl!voZq+9fxFCAJa-(dF|8m4K8S8NX zG9Sh~Ql8N>0|bT9XkwJAndl98qH1)YQZ5LMs0LU>4uyvH z3dhDa76Vg8nP8W5MUw#l05g4vra#!4GG0ho70i25ce0vC?V+x&PB)amXBpYk)*qAi z&|m@X>|B&)G5`Au(Gg?5-}#y`hbQdD#o2DpH&$rBgn?_{%P<1 zkz*Zm46q*uW$C+)={80$JCKx7!7zXLl8Wt(nzNlwXdFKX_h&Ir&G8*$-}SlpP6u40 zs)aiR~QvMDhXDIb*!DvrJhR( z>5Jf-eb4(r0*B$~-QU=9@z-EVhpXKIteQ`@1>qjCI{383;`Cr6nghmRT<5)+7xhEw zBQY6W%sUM|w2AhbE_E>nUum3=q*@)j$zDSA$I3QIY~VzVXE6t2ty8on=kG*`^|!AA zzn>34^cS10mEmm^2iLN&s@iDhah(Be9kFQg*8YS~O zOe{&^1i3A`jcPzuAJ-^V(ofqx#-^ZLp}nDdyuU>)MzaDe3y3-@k83ap!Ml)@w?SB1 z%xV!TXe?KgjQ}Fuu076W1+d~>*X{Fr1Q1B!?SIFB{{y&ax^I3{IsjlDI^%juBFM`O zUV@`U_sNl3ukxWk0Q4Lz_cal20HAUTu+e7yr7x68)Rmos10@qg8aG*N*#km^h)IKg zh&qk^#3ZD6frpG&-Je@yyrfR+1{chX`ICFo<*l)9P z2_4;~>Ayh3V^s5YMh4RY;MD8TK9Ji%Q0o8*FcyE?8^h(Y)Qt@T`|%(=JRD$cBbP1# zF8wloqS;F5d@H@eVYH zrJ}6*^Mf&vij16EsN--dVDw2>&@?CmMEEKf+mrLdsrrkPwRj=N&3(eqsHIWr@ALEX z4eh9K5x4c2>v8o9Ad&BYp-&-(3|lTW;Yi7qm6fa%absJ|L~{t`<=L)k(B|XpgtUhq zAnLQog?pTBx1FDpxI&D^=2!Cy@(ruY@E}rPtZO)oEi?)QHKk~dgHPB?a8odxNq}L& z?yGiPabC^MCQfqfOHxOKu$HKbAC9}|mx7#!LxVjoAu4(TaOS{y-fO)|=S;V#Djca- z{C9DWzbWJ-{E2aKC!5t@L?;jyXCyQUx$4 zVQ3P20Z~+O}+Vjh!xm#Vi+L*W` zWe{#*qc;2dXQc&FYv^LvCGH=cN2y|3_T^?Rq)_+e-WdR(%4jAloaVx5`Lu4JBnJ|6 ztOPe%ZZS}z;iXEqoLXru4Uj9D7n|Of7v}|aCn$}#{TYhLGB87*w9i0rJ_4x8Rfm)> zc`YqA+2!;Kdnaoj7A0LzDsbWP3ierKVBgs`uACogldhY;G z@6s(oEd82u=Ud@m)WzO_YH1TpOyyK;<6X2j-s0G3xnn_Xr432mRE|e4K8K!bbR$gc zdC+HvytgM{j!MGzYA|l;q~f-w8+90;Ohh!kDqgOK_!w#1# zt%v;D7~HM0Z0H`<4k@j4mnLIX^t}8qjh`P_iG;fS8yE0`YB#Az?arM$C7QVR_;SCp z?pJ{ggTUZK4@YyI83gTO9P*14uW?U#??xO9!If2a4yXKdG!9k<&D2X%C-OFB5iw@c0jS!H@5bd0i9;mGo5qiFH`^HV2kiHiOI~5g_QetU1#)?$ zaRAOvjmC4*Yh6ChIFDFFWeuLQL-;Wt`|I>?FO<4*ER?!13BOH2u5;M$Z~cko8!NFk zA7{|nsDS;+b@N_`)`^PDu2}hOw!7G6lvxig?@w(HqA{|9nTWZq_r6&E_^V1An_(jh zT_%x!Q4>myL1WKZ{5~#T}z3a5ha!Uy(xaBikR5!L^t?Qz9B(Dm{ly& zVYE>6j>Z$(!{55$>Gsh08?n}jiEa*m<&8)SG z|MBzwI_zZEV~5hF{Tl7-sSk`SFj>?Mq_3jmQD39IQO7&tEplR-Vo+*zqy5lO!$;rG z=Mn6GL9sG2@;yE&Ni-J41M|+a(+G(6iqT%nhj%c};Bab)e9Js*3x6!Bc0+S>^Kd{a zTh^Pb`fJ!?4Lnq2j)p9ktpr{VYk**6ZPw_sQDo>tdsReBz3aeEXbHhJ@|cvB{2c?D zTu@-w*7#6D=ebF1Cm)DT7PaA*C~icg$bHo2YdAsmm-Y(@)!xUGYbL09xnV9)`*74B z&xnM90TnQF?6A#IfhUW8Sm6Kd>sRr%1AhCBu=B24UoC@I%5d$*Nm_i?XR3&#{+HD% z8&9K~;mYlCOSw;zsFgQ;%JFr@PR0qo8?76a^vgtN(tRQo+{lFqt@$_Dn%a|X#7PV( z2$gGh>|VDTW&Ar0d- zhT=MGJ&0}O2M>*P&k241eX_#T!C^I_G25)x@T-(otBg09mh_4KD5y6JH`cCVRqIlN z6oEX{{-VI#Dv^0xn@kbD6g0A~q#}^NBQ5_A5+C{1GQmmCy`0;y%8Fp|@a93IAx(k% z?-J_)^v~DH_yq-0NJn;yeSFXEGmsO}G~0wzX?HUV7+=m2;qYSRMliST6G(r#R!DqY zB9;UaAUuff=77;3x`SOI5 zX&ayE=2a#X>%oX0jzEvhrrM57`9-`9!X`?+$G$b3c9m<5k?IefGSO1|K z4{tiV;!n!~;M$)DdF!`ygl%*;61yj}ywLl-uapihcrlfBoM~zA94|856o!P(3QCavR^mKMOQG=)n0?MD9qF&qg3PLkh+=SBs! zdED}7X&&OvHw;I)r$&Wo1K@k$rWjA&+huywiJh}kVBMQ|P;^Y;c4m46;9B-W*pdoAI1&s%Ni7V; zryh*fC@CcuBxV9kDLEu`I8^3QhZB9GiQ||C4A3d4qv#H$PeH9ak)zHscgYoJY{M&l zFl;V*w~t_je1BD!=%mP^Q%ghN^cFLIr54TI9{0yN`9<|d4`Yt;tc-J04K_Np%&mKt zx2WRNvN{AFJa};UO-FEPvjX)ikFN8i*#=VefY@aTL{f6eBVM{;-9dRj%fOOn`-L zoLUOuy>#(~sx!nC?Nkj9DtUhIvPesZq^Wq|)fv!9d(0jFxA^J*L2dH?<5T@X$#vWA z++p`ryLk8Wb+(^Rvy7+*QorPC;Zm9(`s2yw|Kj^&8KzvJaZ=~&^X6vy>og)VW*M## zitZK8ZTT+$cH&2O@os`6lO~Om-5$lr?C0&W5Q2|t^oMZ@g&Qf)+new4`jfyoMrGd( z@&|qmA^m^w{Qswu)3Aj{06B}R#(5Vtpr`D~nfPY@$q%>I7}yi(adogskRiGW`D?#u zvpapS*v_RQv%o5%#0V~iN!JA8gTG@FO-$j^v}pf3V#v|KkP+pAeyd^}B4tCYEC`|aNiu!MW}BGuz^yeND@F#9WyP;} zKUy&)`_BH_)xTQ(U*%}@vEIqZqJ?}^*7_e7*bVKDjVEvOW9vHXMjXFtK!rtezlx;i zueg87)xiRl>zg^=*_Ps)9cRk#ZmpIVhr4oo=eITMO7I}eLYDB}(>slVKK9q{bPaXh zgg_)kH1Qlih9{qde8v(&sQmfxYA!#95N^wpf&X*5%m3fjhyK$yFg*-b13NKTm|w}> zbmDzWuxV^pq=v3lWhp`l-gD#MBhe3?yr676)~UQ0=@Xyqf;+MJ!D2>AFC!lL!)z2TBbxq_}dvl$rj z|6XsC3?^ij!RFh+hXhOuysg2`gb-7t!Uu)=7NEmd*O|Prx>&P$xYU57NK}@BP0;%74G^ zztl7Tb?V#2>Xh3mbXw3n9TBd4<>2=ERST%b*T*re(aJH3N@1c=_oYfV_1__w&-){K*VQiE&88$^tPj9RCWN=>R4jUUAJ;d|_M6NJyP+@K0 zX(iC72J2cB>BWJxDkq9eTT((+Klu+RadXE42>47XbsfV(75UUw^32|k=76{ zYqLE|wld|ps3n1jOuPips=-xSd?ebL{nmtqEF>n(Pi{AmXdC2)r`?!lk&iqQ!z$$9 z{_+1eE?{El{d>ZKSXx@z54V^iKYvlTcf%CmQ5cb!5Wd8tVAzY#1S%-^58Juchya>+ zUeiV(H=|d8u1QAwta-`Iyfr*mGdq%%oKajDxo5RzE&^D!eBGb3I}4rAX6C>E-WL#- zTeJ?pcrH76>e;n{4lLq(cGU3dii5u*jkDOGaju#F5aHcd-or zX5(@f1f(P-FCxV@hs*5a7Xhiq^uy3i4=BTcZu#kZj$A7P^`SV>KwzS4Wx2Vztl^)3 zNqaE+&-_@5l>D7ocUKc)yp(nEceK=2Kr^sZ$H>#d%xo4glsG^TIZRYBh`KI=D!muh zu~I&X1lV2!AaOvGN(1<-U0`$$RP0q0(9Dz*gty0Cda#XvKg?54Z@m(>kKuL3^}Zd0 zfE;8;AuyZb+(0N;1@*Zx0t=&il_ceNaYaS|Aw%&~j@%(24sB(O@r=kJk7)63PLY;{ z>Acc|tq2Smq??*hr;wU=X|?BhGYHrWVs(rqfPLUf(O&9KM19TE#*9vMUD!EgDn+|) z0}&Os2N+Bn96DEKqzYwF>CE9GkV+KQalo?L4aC{~Nv|!y0V4iR|LWKRx)Pw?(9R1T zOUZt9jYeG?pkj+Dd_hc*8VL!$MKoE->BOm(ld`HkSIwb;;V!xJ6HE(Ra>8-tB4BLm zju+#h@q+vAw`_Pgkplw*)CpiV{_J{5xh~0nVuWe6wYGBX@Bh)sH^`lNO(v6fi9Rzb zdL4qTCYO56OVLka;;~z)f9s8L!Jt;Xj(LgK1f7rrI@Or07gu2H*A~gJN^MKK{{cws z45#x;j3GuR9oe+>c)b%zv&MGk*gp@>$Ups}H;;KUMXDg*0Ga>%0HF9QpUxHQ3-NK~q|H8RIOFrqo?d zBZMYBfQ+}#t}3ywRg2u$x^Ek!H*yIWyZE^pg} zxY=^xzVHpl^IiBo*T`NB#4gj&aGevn!;k^i@a2Uc~sluOcV$44W(0%A0)61q?`MoTr_P8HugQX0B`%9Cy8GR_e)-i&>a7nR{^M; zW~#00eo4M3E8rLH8~pLW8a)APLG?`D7fAN2`vZzCs+@NyDT_hS1pWY_5Dw#Xt6Z&tTBsbLwvPWGf>bz-Xz0%$-k{n7_sZNi zwbSoz_#Vw%d-Q!(CP)*6?TG5Av*q+pTFef^g)^U|F4STxKu9^+Uz>7jW3cFmisiFZ zadjp4($ih!IlUjNURc-SKHg5E=sAmw#B ze(*Oz$4T@~xeXR|GQ=nf^VJ=oQ-#Uv;AO$}Xb(W#rgM+uu&8$5x|si_ny**<1_(pA zKh4duenXLr67cOaz*&OGZ3oEfmnXXoD0jd=V1b(hZt4v*mX*IU*C>GwQ*$z3>vf1z zUdSKqi}ToSp#ceM5YP=>PazL)Qu7uaNnKX{)lXDv*2q+PYz#ZT@*D*IYHx3s`~gf` zW`KneaKhLtoq+bkMp_ z-PUy_a*`^!vobPr{xV4UdPmR+m`(7zfM|*A78O1MQwCUrT_6D%yS%I19na)ik|9V9 zBfVGWd60Y~v0rOr7VtBwrXqe9XOLI$>?a{gxCG z2TqlaBYlU;OrTO#9Raq6 zEvg!*nxqe)gLyhvihk=vOX=5&LdG;8Py%UM=bpz1W$SLenOylDJ%tNuZhi;5LlP1>2(r>}5`!d^?Ejy;gq~ozK)Tbs8h!iV_AE zMOG>WN>*id!>Tmbg zjPjE1{TaM^NZHV~(P&_GaVIOwBrE@^?TsBS#pCJ253bHPpT2pmsOpzuk3wM~?!xvM zy<#DkG(E&Xx-_Q)A{E0IP1<)w=~W@tfCo)K9RqOM%8OeP8BThd{N&Z1=g^IbY90Hx z1&(9A9Vl|3h`N1t&zmET-paRYJ-6mQHSW3I87^gb&K6VXzGA(&zXtt9)nu%v_|}te zpd{{bj1Wz%!rvT9WNbPAMfo&$2(M619JgT zRkgDZfm@BIYA;$?s37*h(=@51=y_H_*OEw2!sX5P?D+R2sn8quDWmmHzf0R3PXeDE z>pDfPw8Gp!PhQX79OG>WBYA%p|K4-crA=WYeC9v@t3Z=u)-rrV!9z;HD17}!(4uZ= zY%QzHY~!0O<;MgN5`TzXDlPAb@+FH)ninTug=NYkSW`<|TU$%ZOL_TtW-8oDol2r0 zx^1G;#d7l&1JN$$dq^WSmlai9rk|JUQ3(ia03aR!HQo~_<*lEXlD~g{v$F#fZ`~;k z&xas-oPdxLmnH;6;hdZtVDF(nEVthSivdJ%04Q_xiWhH5otbd)S@&lE{8D1omj-4V zAZ-vdZc+1+cGVGXg^W`v00>_VOe9efii(P0S;vdHI{?K8Dh(nI`Pn0bU+kJ$e<)SO zO+$wP{s6mDKU0Z%Z5Bk*yFj;hUD3$g0*Pm{W>=*JgPH*`(|aGQvy|wbgoFV3t1pWe zgebglv*?(Zn6F>^E1b-sVCA2La^?>M_k_$E2$9;EIgRSa{BG;RADDb~JuCe#FRoO% z6W}7OJ(>+$8_eZ1YySA1OWzmRTETPHAB@_9r7z?-S+k1GI|P40*aId`^(25XmECg| z1murtfOqYa-&wl#Ko&KLR+I=(mI&-OueqV4+lE5cqzrtuxo4Tt)3Hw#n;R3HF|@!P-- zmaWqjSpy;Uc0elJyn&e2oa$5e&%yDx83D76(?hp$0in_2}N+J|K4&rE!PtuRoX@LH7 zi2jmBVedjfS7y@A;&lUsR0q-C9tD~b_K#7A@z#z84 zaw=L?iO!(AbpcAycmdn2ufXu#2Kmzi)Ua}R;-HG&syhY9&ij%Cm2_!zi*yjw zx66{)H$yQc&x9r7?{4;`w}H4jNT3rU4oXZ!4aWJtv@C$UXv6ER9iJ#uxBE^vUlvd; z{Tmlh?b!bH(P|xs*PHHyW3Z{3s+63n!Nvk5zYY8;di1ILW#zKf{1GVlFuFg}Z1f~D znd=`kYYN<|s+yNOs_$KY0jpt3Za1&tGF!tUKBA2`}xPmK)>Xu9-ImnpjD+Ukq z0A=vl$o4QU*A_Z#3!gBU9Hja)DDY-OQZqxmUgPMf#OvXyS+KyD8SV*DAqCrkl<-!~ z^NE=`%D{8hCnC=CADv$YSSkf$^K?|>1vhZ|jxYkf4@4XTu*$f!3@A!e_;AR4;d??t z0#X#wKmW9L>f7HHZpAV+#1#QqER92dSRusxsDs;j6Nw%XHK z;0d|${t?JhKlw}!g2UgZD{AY#QF~qDNl8grn!B-~e3Jlx7`d!z_f7e)hDr#r<$%YecOL(b|}So`KC)WUyn?))(+2hIVc{g zxUl0j68Z-{?dtb_C{+D$3HfcnK>lmj7cCt#o2X7|3%}N(HO+cf%e^~I(jOoCf8o*o zr+Sx}h3^xkronZ(Eb)Y-FJF$6+s|;3>jgW7+>2+SpU~~=%=zj#EskZcw=niI|IeL# z;kB~^k;Ckq1{10ABWi^*Bcv1eD{n9-P&9n$%F9nGK> zOEl;W8twFo`qyT_ zOwP@3NwkcyB6i~l1MQ^|3-MrIKF&F`VviTBSN0|K+nd6u4C2Cqj6VWy@#e}yC&(rC zZ&;7W4mvtFi_5h`2fX*Z`1k58epGUcJ;R9TU2>fF4@~G-E}Ft7@4$h%df}BPczcuSnIayN2H7?B)|OZt-u!JF3KN)RWOAqR6g!X(%6do}vah4|ZpD6ar3cV|o8 zZM!05|K`22*#~)a2TvBCt$$JbX8cIl$r~N1vllnFVjJXugN^9LGgNV}8ZsN)Zn)h= z{a4nihr6UUBbpF*4Ab^_-TGE5s`CU==q2*wl_1inl6 zvViuI$Z48DiG%p6;psZ(>AUOsm&$O02LX^^p316Tqg@HrP;Hafh>T)B;bNW*l`m+G z;rpLV&HYG(Iqg)K2$NO zD^14m6{FosI?n}k^@0+;>bAp8zp;cw$U|se-yDt-_NDA=Tk>}i%#^S(*2%v`y5xEJ z&r^y}l4%7R1Da9ulOu(Tx;_ ze>?R_`5r-P07Q=bq9^F!-t~iTzl?_B(7j!^n*_aNE2llxX9HV@suor`t|=SO`Hc(p z>?W(`T5PVqxvCY2Nz@5>cPLV1$)kR?9)+5AZmZ9)@A}<1XjcCCcR=m{;TGM#)|veH zZ9w63NK<`HsL32#V8qah4rA;LLu)=oN8h_$m9Ft@vt#8c<_=>>Y8WKgJtDq(em~}$ zJ8}H_R+ykswlVD%Z`o$|+#VX=m(Ak(7kT!@3F&Sz9~UXYUpKF6K|IfFbUSAt6uf

MMd)Gq)r0SR`L?5W++SwRMuY%?x*{iUhJJ?@?Hx$`|) zZI3c-vZ*#e$!PX234)Nfr~==cc^GkK_oTq6q#Z^YfB&hSa{g{IG!n`EhhX?c!;HSv zi$+$H_O-)F$a{SJd%nkZvh-54cFult(TD9ltvVz@29Ze=e%UYL#q|fCvpw}!dk&ea z@L!U;_SwYvsvyW%u-(hAJ}UtZKb8}|57Hd#OL z89~WYxj9AkH#e@AVsJ#a)p(DtpN2#eyr;#)U#*1UrgPEFdc`%H4{T2eo%siy*?K68 z!V4G?-CxX#?vgMO^41WEUmhP>eA{JFWNj0&o>wsIv2dQSpHFzd@aUrqZlS{*?;$OT z1tG6DiC|zvJ3~{e`yDUR^5;`EgdGY~*XazBWA}(;=m5`rW>L6(()~MuP2ZFIyM&ng zI5N^I82Lb-!Z(ml>M`iSyW)Y3FC=N#S%M?B{t?7;c{o^qCQ|54`1*q7`yNpv1TS3L z0M9S1_vog2j~&UqpI?Al@>9a62gj7J(O>JNW3B*?c<4kz*hr&SO1X(a5d1E|zt(WukY&U> z_+(G%L3V88gX|kZj}7&tB40zUvMUkQ>*omtUY$!&<%+aC9Fbm#J#98yrfhCx6kgQ^)0J;R(Qtf(T^;tTR^O?Zdow zR*wF$VA3+xq+wZ4GfJYxX;D#aymGX4qyC7-VhN?L{6v{ug$^(BR)Rt_?%*}$fy!%! zW6n-WaHm;tr294_cCo3k3{~M!`)HtKgC_mZ`$uF>A4h?uIAIpkW zHY-w85o)()O=y;l<*?||D}^ovFUo3h+1kK(KYV*8qzSuH6N%ziQGPm zCTca-OFH7@6a`X~8>p@@pt2!`K&XBI1;*w7RNMX!!s>fd2-~Aa09?~Uq?bE?lN3x9 z9Z;Az{sui~QlQ_f)OHBen1Z6BRjSF7z_BX$`v4T!fOWd64IorGP&Gl`N}r5Dc;fq%olXDH%hPfgzj5$YTb$$7~04o&voH z5NkO{183mbE&+!owvzFUAGCY+oGr#XYG`QWSFNIe9uh~Q24)64Ln$E7S|^6DW_CRg ziset2|8xN?u(ntf0?-JyekiV8&`nqlN*jGezkl4vojxpmv92h(xG)^yuLVUSXaXJg zJ>6*aAxwYa9Q`aViQoF`YUMMF4p#ugL7B-qj?Fg|}krUXt6Wb%!B9Z#6*I z;r|I-;31T3tH!l{B`x4tv&%<-YPgr52QNika6k!vpWiJ)1I~81(DbCZf9i*uaGcs- z-TmY$cOdO#g-TI+)|7n(JxDKtzFpw)>uGM6L_61B}G-wf$Z*xI*=8iv|QSnlw{-wRV zYD}iT3^@dS%O_*%ZKc2ww<_fWxJf`OAb|wnYLMn0^*uq-r|O;j-194A`-M1^P#<&> z5c>m@vxLnc`=k7ey1h0F!%S-dbFy(@SVy~EIq^zf9iFY-kTRui5H&yo6?DIwQQV_2 zSWv)-+QXCKJr2wjD4S8ofXOj^=B8k$YV;6CL}QS`l@3)0 zN(RZu4B?CF^wT1VzYPR9<#WAU$axYcX#(W2hnPubA)o9G!zXd1pTfAS6bzr+Gadjvjt`}Ei3(eF;AM8XaOm7Mo7gM96p;I*CYc{Q z%xq~9f0SQqV#O>vs9;qf5)A5A2xvaeEBhoExnHMq;;a$@-D2ARg|LVB-hf#iQ+m{y9TAvM#e{+}|amuXq1wAWgkxv&gsx}%!?7%S%aD8a~4Vw^HV z$`vdB3mxkS8cN@nq(qk@&8=E6tsiWz@kz&iWhO<%I0vO}Kqv9x_Sc48<-05n` zfQqInjIT5#n4ICH!0-H(dGe}Mxx>V$EHQ&8Xleh0@-N*yiSMUxJz0JZ#B#umc7KvQ zQ5aY)xN1EiU0=(ucKH4IL67)uIBBBW#;B){v|yvPt2YqDMxOx@L!FUc_TG=+*XU`Hp-mM zFSJHNeEX$ODep}a2t-Mki1%8?|7Y*bfA6yc|AH+azwYh1f?l-Hmq2oSa{??e93b6Z zVV%@r*wG!}pQFl~!vpLK_!fcm&)=le!^659V1%JiZHTVS_(2nyoBkG)e;QJJjwt8ew$=q~P(htMAmX~CTg zI|2o)fIsg{-9O8tFs?(AV9*_+Pt}lg*ytz-__LUOmK%aZh4qgvnIMqM%lliNK@bRp d_-ZE+K%DmHq_L)Fl;8+N@uiAvzKqGc{|l^qbX@=d literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-tooltip-label-formatter.png b/benchmarks/conformance/shadcn/reference/chart-tooltip-label-formatter.png new file mode 100644 index 0000000000000000000000000000000000000000..6582446eb19d6b8faf41a74af809d8e4bdc3978c GIT binary patch literal 16782 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/manifest.json b/benchmarks/conformance/shadcn/reference/manifest.json new file mode 100644 index 00000000..34e44086 --- /dev/null +++ b/benchmarks/conformance/shadcn/reference/manifest.json @@ -0,0 +1,82 @@ +{ + "schemaVersion": 1, + "viewport": { + "width": 640, + "deviceScaleFactor": 1, + "theme": "light" + }, + "source": "https://ui.shadcn.com/view/new-york-v4/{name}", + "capturedAt": "2026-08-12T19:29:26.607Z", + "cases": [ + "chart-area-axes", + "chart-area-default", + "chart-area-gradient", + "chart-area-icons", + "chart-area-interactive", + "chart-area-legend", + "chart-area-linear", + "chart-area-stacked-expand", + "chart-area-stacked", + "chart-area-step", + "chart-bar-active", + "chart-bar-default", + "chart-bar-horizontal", + "chart-bar-interactive", + "chart-bar-label-custom", + "chart-bar-label", + "chart-bar-mixed", + "chart-bar-multiple", + "chart-bar-negative", + "chart-bar-stacked", + "chart-line-default", + "chart-line-dots-colors", + "chart-line-dots-custom", + "chart-line-dots", + "chart-line-interactive", + "chart-line-label-custom", + "chart-line-label", + "chart-line-linear", + "chart-line-multiple", + "chart-line-step", + "chart-pie-donut-active", + "chart-pie-donut-text", + "chart-pie-donut", + "chart-pie-interactive", + "chart-pie-label-custom", + "chart-pie-label-list", + "chart-pie-label", + "chart-pie-legend", + "chart-pie-separator-none", + "chart-pie-simple", + "chart-pie-stacked", + "chart-radar-default", + "chart-radar-dots", + "chart-radar-grid-circle-fill", + "chart-radar-grid-circle-no-lines", + "chart-radar-grid-circle", + "chart-radar-grid-custom", + "chart-radar-grid-fill", + "chart-radar-grid-none", + "chart-radar-icons", + "chart-radar-label-custom", + "chart-radar-legend", + "chart-radar-lines-only", + "chart-radar-multiple", + "chart-radar-radius", + "chart-radial-grid", + "chart-radial-label", + "chart-radial-shape", + "chart-radial-simple", + "chart-radial-stacked", + "chart-radial-text", + "chart-tooltip-advanced", + "chart-tooltip-default", + "chart-tooltip-formatter", + "chart-tooltip-icons", + "chart-tooltip-indicator-line", + "chart-tooltip-indicator-none", + "chart-tooltip-label-custom", + "chart-tooltip-label-formatter", + "chart-tooltip-label-none" + ] +} diff --git a/benchmarks/conformance/shared/shadcn-catalog-data.ts b/benchmarks/conformance/shared/shadcn-catalog-data.ts new file mode 100644 index 00000000..5030c176 --- /dev/null +++ b/benchmarks/conformance/shared/shadcn-catalog-data.ts @@ -0,0 +1,216 @@ +export type ShadcnChartFamily = + 'area' | 'bar' | 'line' | 'pie' | 'radar' | 'radial' | 'tooltip' + +export interface ShadcnCatalogSpec { + name: string + family: ShadcnChartFamily + variant: string + title: string + description: string + footerNote: string + square: boolean + legend: boolean +} + +export interface ShadcnMonthDatum { + month: string + desktop: number + mobile: number + tablet: number +} + +export interface ShadcnSeriesDatum { + month: string + series: 'desktop' | 'mobile' | 'tablet' | 'other' + value: number +} + +export interface ShadcnBrowserDatum { + browser: string + visitors: number +} + +export interface ShadcnRadarDatum { + month: string + desktop: number + mobile?: number +} + +export interface ShadcnActivityDatum { + date: string + activity: 'running' | 'swimming' + value: number +} + +export const shadcnMonths: readonly ShadcnMonthDatum[] = [ + { month: 'January', desktop: 186, mobile: 80, tablet: 44 }, + { month: 'February', desktop: 305, mobile: 200, tablet: 72 }, + { month: 'March', desktop: 237, mobile: 120, tablet: 58 }, + { month: 'April', desktop: 73, mobile: 190, tablet: 91 }, + { month: 'May', desktop: 209, mobile: 130, tablet: 67 }, + { month: 'June', desktop: 214, mobile: 140, tablet: 82 }, +] + +export const shadcnSeriesRows: readonly ShadcnSeriesDatum[] = + shadcnMonths.flatMap((row) => [ + { month: row.month, series: 'desktop', value: row.desktop }, + { month: row.month, series: 'mobile', value: row.mobile }, + { month: row.month, series: 'tablet', value: row.tablet }, + ]) + +export const shadcnBrowsers: readonly ShadcnBrowserDatum[] = [ + { browser: 'chrome', visitors: 275 }, + { browser: 'safari', visitors: 200 }, + { browser: 'firefox', visitors: 187 }, + { browser: 'edge', visitors: 173 }, + { browser: 'other', visitors: 90 }, +] + +export const shadcnRadarDefault: readonly ShadcnRadarDatum[] = [ + { month: 'January', desktop: 186 }, + { month: 'February', desktop: 305 }, + { month: 'March', desktop: 237 }, + { month: 'April', desktop: 273 }, + { month: 'May', desktop: 209 }, + { month: 'June', desktop: 214 }, +] + +export const shadcnRadarFilled: readonly ShadcnRadarDatum[] = [ + { month: 'January', desktop: 186 }, + { month: 'February', desktop: 285 }, + { month: 'March', desktop: 237 }, + { month: 'April', desktop: 203 }, + { month: 'May', desktop: 209 }, + { month: 'June', desktop: 264 }, +] + +export const shadcnRadarMultiple: readonly ShadcnRadarDatum[] = + shadcnMonths.map(({ month, desktop, mobile }) => ({ + month, + desktop, + mobile, + })) + +export const shadcnRadarLines: readonly ShadcnRadarDatum[] = [ + { month: 'January', desktop: 186, mobile: 160 }, + { month: 'February', desktop: 185, mobile: 170 }, + { month: 'March', desktop: 207, mobile: 180 }, + { month: 'April', desktop: 173, mobile: 160 }, + { month: 'May', desktop: 160, mobile: 190 }, + { month: 'June', desktop: 174, mobile: 204 }, +] + +export const shadcnActivities: readonly ShadcnActivityDatum[] = [ + { date: '2024-07-15', activity: 'running', value: 450 }, + { date: '2024-07-15', activity: 'swimming', value: 300 }, + { date: '2024-07-16', activity: 'running', value: 380 }, + { date: '2024-07-16', activity: 'swimming', value: 420 }, + { date: '2024-07-17', activity: 'running', value: 520 }, + { date: '2024-07-17', activity: 'swimming', value: 120 }, + { date: '2024-07-18', activity: 'running', value: 140 }, + { date: '2024-07-18', activity: 'swimming', value: 550 }, + { date: '2024-07-19', activity: 'running', value: 600 }, + { date: '2024-07-19', activity: 'swimming', value: 350 }, + { date: '2024-07-20', activity: 'running', value: 480 }, + { date: '2024-07-20', activity: 'swimming', value: 400 }, +] + +export const shadcnColors = [ + 'var(--chart-1, var(--ts-chart-1))', + 'var(--chart-2, var(--ts-chart-2))', + 'var(--chart-3, var(--ts-chart-3))', + 'var(--chart-4, var(--ts-chart-4))', + 'var(--chart-5, var(--ts-chart-5))', +] as const + +const titleOverrides: Record = { + 'chart-area-default': 'Area Chart', + 'chart-area-stacked-expand': 'Area Chart - Stacked Expanded', + 'chart-bar-default': 'Bar Chart', + 'chart-bar-label-custom': 'Bar Chart - Custom Label', + 'chart-bar-stacked': 'Bar Chart - Stacked + Legend', + 'chart-line-default': 'Line Chart', + 'chart-line-dots-custom': 'Line Chart - Custom Dots', + 'chart-line-label-custom': 'Line Chart - Custom Label', + 'chart-pie-simple': 'Pie Chart', + 'chart-pie-donut-text': 'Pie Chart - Donut with Text', + 'chart-pie-label-custom': 'Pie Chart - Custom Label', + 'chart-radar-default': 'Radar Chart', + 'chart-radar-grid-circle-fill': 'Radar Chart - Grid Circle Filled', + 'chart-radar-grid-circle-no-lines': 'Radar Chart - Grid Circle - No lines', + 'chart-radar-grid-fill': 'Radar Chart - Grid Filled', + 'chart-radar-label-custom': 'Radar Chart - Custom Label', + 'chart-radar-radius': 'Radar Chart - Radius Axis', + 'chart-radial-simple': 'Radial Chart', + 'chart-tooltip-indicator-line': 'Tooltip - Line Indicator', + 'chart-tooltip-indicator-none': 'Tooltip - No Indicator', + 'chart-tooltip-label-custom': 'Tooltip - Custom label', + 'chart-tooltip-label-none': 'Tooltip - No Label', +} + +export function getShadcnCatalogSpec(name: string): ShadcnCatalogSpec { + const parts = name.split('-') + const family = parts[1] + if (!isShadcnFamily(family)) { + throw new TypeError(`Unknown shadcn chart family in ${name}`) + } + const variant = parts.slice(2).join('-') + const title = + titleOverrides[name] ?? + `${family === 'tooltip' ? 'Tooltip' : `${titleCase(family)} Chart`} - ${variant.split('-').map(titleCase).join(' ')}` + return { + name, + family, + variant, + title, + description: + (family === 'area' || family === 'bar' || family === 'line') && + variant === 'interactive' + ? 'Showing total visitors for the last 3 months' + : family === 'area' || family === 'radar' + ? 'Showing total visitors for the last 6 months' + : family === 'tooltip' + ? tooltipDescription(variant) + : 'January - June 2024', + footerNote: + family === 'area' || family === 'radar' + ? 'January - June 2024' + : 'Showing total visitors for the last 6 months', + square: family === 'pie' || family === 'radar' || family === 'radial', + legend: + variant.includes('legend') || + variant === 'icons' || + (variant === 'stacked' && family === 'bar') || + (family === 'area' && variant === 'interactive'), + } +} + +function tooltipDescription(variant: string): string { + if (variant === 'advanced') return 'Tooltip with custom formatter and total.' + if (variant === 'default') return 'Default tooltip with ChartTooltipContent.' + if (variant === 'formatter') return 'Tooltip with custom formatter.' + if (variant === 'icons') return 'Tooltip with icons.' + if (variant === 'indicator-line') return 'Tooltip with line indicator.' + if (variant === 'indicator-none') return 'Tooltip with no indicator.' + if (variant === 'label-custom') + return 'Tooltip with custom label from chartConfig.' + if (variant === 'label-formatter') return 'Tooltip with label formatter.' + if (variant === 'label-none') return 'Tooltip with no label.' + return 'A chart tooltip.' +} + +function titleCase(value: string): string { + return value.charAt(0).toUpperCase() + value.slice(1) +} + +function isShadcnFamily(value: string | undefined): value is ShadcnChartFamily { + return ( + value === 'area' || + value === 'bar' || + value === 'line' || + value === 'pie' || + value === 'radar' || + value === 'radial' || + value === 'tooltip' + ) +} diff --git a/benchmarks/conformance/shared/shadcn-catalog-recharts.tsx b/benchmarks/conformance/shared/shadcn-catalog-recharts.tsx new file mode 100644 index 00000000..fb3ad6cd --- /dev/null +++ b/benchmarks/conformance/shared/shadcn-catalog-recharts.tsx @@ -0,0 +1,570 @@ +import { + Area, + AreaChart, + Bar, + BarChart, + CartesianGrid, + Cell, + LabelList, + Legend, + Line, + LineChart, + Pie, + PieChart, + PolarAngleAxis, + PolarGrid, + Radar, + RadarChart, + RadialBar, + RadialBarChart, + Tooltip, + XAxis, + YAxis, +} from 'recharts' +import { + getShadcnCatalogSpec, + shadcnActivities, + shadcnBrowsers, + shadcnColors, + shadcnMonths, + type ShadcnCatalogSpec, +} from './shadcn-catalog-data' +import { + ShadcnChartCard, + ShadcnTrendFooter, + shadcnChartMount, +} from './shadcn-chart-card' +import type { ReactNode } from 'react' +import type { ConformanceInput } from '../types' + +export function createShadcnRechartsExample(name: string) { + const spec = getShadcnCatalogSpec(name) + + function RechartsView({ input }: { input: ConformanceInput }) { + return ( + : undefined} + footer={ + spec.family === 'tooltip' ? undefined : ( + + ) + } + > + {({ width, height }) => renderRechartsChart(spec, width, height)} + + ) + } + + return { mount: shadcnChartMount(RechartsView) } +} + +function renderRechartsChart( + spec: ShadcnCatalogSpec, + width: number, + height: number, +): ReactNode { + if (spec.family === 'area') return areaChart(spec, width, height) + if (spec.family === 'bar') return barChart(spec, width, height) + if (spec.family === 'line') return lineChart(spec, width, height) + if (spec.family === 'pie') return pieChart(spec, width, height) + if (spec.family === 'radar') return radarChart(spec, width, height) + if (spec.family === 'radial') return radialChart(spec, width, height) + return tooltipChart(spec, width, height) +} + +function areaChart(spec: ShadcnCatalogSpec, width: number, height: number) { + const multi = + spec.variant === 'axes' || + spec.variant === 'gradient' || + spec.variant === 'icons' || + spec.variant === 'interactive' || + spec.variant === 'legend' || + spec.variant.startsWith('stacked') + const type = + spec.variant === 'linear' + ? 'linear' + : spec.variant === 'step' + ? 'step' + : 'natural' + return ( + + {spec.variant === 'gradient' ? ( + + + + + + + + + + + ) : null} + + + {spec.variant === 'axes' ? ( + + ) : null} + + + {multi ? ( + + ) : null} + {spec.variant === 'stacked-expand' ? ( + + ) : null} + {spec.legend ? : null} + + ) +} + +function barChart(spec: ShadcnCatalogSpec, width: number, height: number) { + const horizontal = + spec.variant === 'horizontal' || + spec.variant === 'label-custom' || + spec.variant === 'mixed' + const negativeData = shadcnMonths.map((row, index) => ({ + ...row, + desktop: index === 2 || index === 4 ? -row.desktop : row.desktop, + })) + const data = spec.variant === 'negative' ? negativeData : shadcnMonths + if (horizontal) { + return ( + + + + + + {spec.variant === 'label-custom' ? ( + + ) : null} + + + ) + } + return ( + + + + + + {spec.variant === 'active' + ? data.map((row) => ( + + )) + : null} + {spec.variant === 'label' ? ( + + ) : null} + + {spec.variant === 'multiple' || spec.variant === 'stacked' ? ( + + ) : null} + {spec.legend ? : null} + + ) +} + +function lineChart(spec: ShadcnCatalogSpec, width: number, height: number) { + const type = + spec.variant === 'linear' + ? 'linear' + : spec.variant === 'step' + ? 'step' + : 'natural' + const dots = spec.variant.includes('dots') + const labels = spec.variant.includes('label') + const multiple = spec.variant === 'multiple' || spec.variant === 'interactive' + return ( + + + + + + {labels ? ( + + ) : null} + + {multiple ? ( + + ) : null} + + ) +} + +function pieChart(spec: ShadcnCatalogSpec, width: number, height: number) { + const donut = spec.variant.includes('donut') || spec.variant === 'stacked' + const labels = spec.variant.includes('label') + return ( + + + + {shadcnBrowsers.map((row, index) => ( + + ))} + + {spec.variant === 'donut-text' ? ( + <> + + 1,125 + + + Visitors + + + ) : null} + {spec.legend ? : null} + + ) +} + +function radarChart(spec: ShadcnCatalogSpec, width: number, height: number) { + const multiple = spec.variant === 'multiple' || spec.variant === 'legend' + return ( + + {spec.variant === 'grid-none' ? null : ( + + )} + + + + {multiple ? ( + + ) : null} + {spec.legend ? : null} + + ) +} + +function radialChart(spec: ShadcnCatalogSpec, width: number, height: number) { + const data = + spec.variant === 'simple' || spec.variant === 'text' + ? shadcnBrowsers.slice(1, 2) + : shadcnBrowsers + const startAngle = spec.variant === 'shape' ? 180 : 200 + const endAngle = spec.variant === 'shape' ? 0 : -50 + return ( + + + + {data.map((row, index) => ( + + ))} + {spec.variant === 'label' ? ( + + ) : null} + + {spec.variant === 'text' ? ( + <> + + 200 + + + Visitors + + + ) : null} + + ) +} + +function tooltipChart(spec: ShadcnCatalogSpec, width: number, height: number) { + return ( +

+ ) +} + +function tooltipRows() { + return [...new Set(shadcnActivities.map((row) => row.date))].map((date) => ({ + date, + running: + shadcnActivities.find( + (row) => row.date === date && row.activity === 'running', + )?.value ?? 0, + swimming: + shadcnActivities.find( + (row) => row.date === date && row.activity === 'swimming', + )?.value ?? 0, + })) +} + +function RechartsLegend({ spec }: { spec: ShadcnCatalogSpec }) { + const labels = + spec.family === 'pie' || spec.family === 'radial' + ? shadcnBrowsers.map((row) => row.browser) + : ['desktop', 'mobile'] + return ( + <> + {labels.map((label, index) => ( + + + {titleCase(label)} + + ))} + + ) +} + +function RechartsStaticTooltip({ variant }: { variant: string }) { + const noLabel = variant === 'label-none' + const noIndicator = variant === 'indicator-none' + const lineIndicator = variant === 'indicator-line' + const formatted = variant === 'formatter' || variant === 'advanced' + return ( +
+ {noLabel ? null : ( + + {variant === 'label-formatter' + ? 'Tuesday, July 16' + : variant === 'label-custom' + ? 'Running & Swimming' + : 'Jul 16'} + + )} + {['running', 'swimming'].map((activity, index) => ( +
+ {noIndicator ? null : ( + + )} + + {variant === 'icons' + ? `${index === 0 ? '●' : '◆'} ${titleCase(activity)}` + : titleCase(activity)} + + + {formatted + ? `${index === 0 ? 380 : 420} kcal` + : index === 0 + ? '380' + : '420'} + +
+ ))} + {variant === 'advanced' ? ( +
+ Total + 800 kcal +
+ ) : null} +
+ ) +} + +function shortMonth(value: string) { + return value.slice(0, 3) +} + +function shortDate(value: string) { + return new Intl.DateTimeFormat('en-US', { + month: 'short', + day: 'numeric', + timeZone: 'UTC', + }).format(new Date(value)) +} + +function titleCase(value: string) { + return value.charAt(0).toUpperCase() + value.slice(1) +} diff --git a/benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx b/benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx new file mode 100644 index 00000000..2080727d --- /dev/null +++ b/benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx @@ -0,0 +1,1931 @@ +import { useMemo, useRef } from 'react' +import { + areaY, + barX, + barY, + d3Curve, + defineChart, + dot, + group, + isResponsiveChartDefinition, + lineY, + stack, + text, +} from '@tanstack/charts' +import { + angleGrid, + pie, + polar, + radialArc, + radialArea, + radialBarAngle, + radialDot, + radialGrid, + radialRule, + radialText, + type PieDatum, +} from '@tanstack/charts/polar' +import { Chart } from '@tanstack/charts/react/core' +import { RendererChart as TooltipChart } from '@tanstack/charts/react/tooltip' +import { tooltip } from '@tanstack/charts/tooltip' +import { scaleBand, scaleLinear, scalePoint } from 'd3-scale' +import { + curveLinear, + curveLinearClosed, + curveMonotoneX, + curveNatural, + curveStep, +} from 'd3-shape' +import { + getShadcnCatalogSpec, + shadcnActivities, + shadcnBrowsers, + shadcnColors, + shadcnMonths, + shadcnRadarDefault, + shadcnRadarFilled, + shadcnRadarLines, + shadcnRadarMultiple, + shadcnSeriesRows, + type ShadcnActivityDatum, + type ShadcnBrowserDatum, + type ShadcnCatalogSpec, + type ShadcnMonthDatum, + type ShadcnSeriesDatum, +} from './shadcn-catalog-data' +import { + ShadcnChartCard, + ShadcnTrendFooter, + shadcnChartMount, +} from './shadcn-chart-card' +import { createShadcnSpringRenderer, shadcnSpringMotion } from './shadcn-motion' +import interactiveAreaData from '../shadcn/area-interactive-data.json' +import { tanstackCase } from './mount' +import type { ChartPoint, ChartTooltipOptions } from '@tanstack/charts' +import type { ChartDefinition, ChartValue } from '@tanstack/charts' +import type { ConformanceInput } from '../types' + +const monthSeries = ['desktop', 'mobile', 'tablet'] as const +const twoSeries = monthSeries.slice(0, 2) +const browserNames = shadcnBrowsers.map((row) => row.browser) +const activityNames = ['running', 'swimming'] as const +const horizontalVariants = new Set(['horizontal', 'label-custom', 'mixed']) +const interactiveAreaRows = interactiveAreaData as readonly { + date: string + desktop: number + mobile: number +}[] +const interactiveBarRows: readonly ShadcnMonthDatum[] = interactiveAreaRows.map( + (row) => ({ + month: row.date, + desktop: row.desktop, + mobile: row.mobile, + tablet: 0, + }), +) + +type ShadcnRadialCatalogDatum = + | ShadcnBrowserDatum + | PieDatum<{ id: string; value: number }> + | { id: string; angle: number; radius: number; text: string } + | { browser: string; visitors: number; ring: string } + | { + id: string + ring: string + start: number + end: number + fill: string + } + +export function createShadcnTanStackExample(name: string) { + const spec = getShadcnCatalogSpec(name) + if (spec.family === 'area') { + return createShadcnExample(spec, buildAreaDefinition(spec)) + } + if (spec.family === 'bar') { + return createShadcnExample< + ShadcnMonthDatum | ShadcnSeriesDatum | ShadcnBrowserDatum, + string | number, + string | number + >(spec, buildBarDefinition(spec)) + } + if (spec.family === 'line') { + return createShadcnExample(spec, buildLineDefinition(spec)) + } + if (spec.family === 'pie') { + return createShadcnExample(spec, buildPieDefinition(spec)) + } + if (spec.family === 'radar') { + return createShadcnExample(spec, buildRadarDefinition(spec)) + } + if (spec.family === 'radial') { + return createShadcnExample< + ShadcnRadialCatalogDatum, + number, + string | number + >(spec, buildRadialDefinition(spec)) + } + return createShadcnExample(spec, buildTooltipDefinition()) +} + +function createShadcnExample< + TDatum, + TXValue extends ChartValue, + TYValue extends ChartValue, +>( + spec: ShadcnCatalogSpec, + definition: ChartDefinition, +) { + const tooltipOptions: ChartTooltipOptions = { + className: 'sc-chart-tooltip', + anchor: + spec.family === 'tooltip' + ? (_points, context) => ({ + x: context.surface.width * 0.271, + y: context.surface.height * 0.554, + }) + : 'group-center', + placement: spec.family === 'tooltip' ? 'bottom-right' : 'auto', + offset: spec.family === 'tooltip' ? 0 : undefined, + sort: 'color-domain', + content: + spec.family === 'tooltip' + ? () => ({ rows: [] }) + : (points) => ({ + title: String(points[0]?.xValue ?? ''), + rows: points.map((point) => ({ + label: point.markId.replace( + /-?(bars|lines|areas|slices|values)$/u, + '', + ), + value: Number(point.yValue ?? point.xValue ?? 0).toLocaleString( + 'en-US', + ), + color: point.color, + })), + }), + } + const chartOptions = { + svgAnimation: false, + motion: shadcnSpringMotion, + focus: spec.family === 'radial' ? false : 'group-x', + focusRing: false, + keyboard: spec.family !== 'radial', + tooltip: { use: tooltip, ...tooltipOptions }, + } as const + const interactiveDefinition = isResponsiveChartDefinition(definition) + ? defineChart(definition, chartOptions) + : defineChart(definition, chartOptions) + const catalogCase = tanstackCase( + () => interactiveDefinition, + `${spec.title} implemented with TanStack Charts`, + true, + { guides: spec.family !== 'pie', margin: true }, + ) + + function TanStackView({ input }: { input: ConformanceInput }) { + const seededTooltip = useRef(false) + const chartDefinition = useMemo(() => interactiveDefinition, []) + const renderer = useMemo( + () => createShadcnSpringRenderer(), + [], + ) + const legend = spec.legend ? : undefined + const interactive = spec.variant === 'interactive' + const footer = + spec.family === 'tooltip' || + interactive || + (spec.family === 'pie' && spec.variant === 'legend') ? undefined : ( + + ) + const headerAction = + (spec.family === 'bar' || spec.family === 'line') && interactive ? ( + + ) : interactive ? ( + + ) : undefined + + return ( + + {({ width, height }) => + spec.family === 'tooltip' ? ( + { + if (seededTooltip.current) return + const point = scene.points.find( + (candidate) => + (candidate.datum as ShadcnActivityDatum).date === + '2024-07-16', + ) + if (!point) return + seededTooltip.current = true + interaction.setControlledFocus(point, { + source: 'programmatic', + }) + }} + renderTooltipBody={({ points }) => ( + []} + variant={spec.variant} + /> + )} + /> + ) : ( + + ) + } + + ) + } + + return { + definition: interactiveDefinition, + catalogCase, + mount: shadcnChartMount(TanStackView), + } +} + +function buildAreaDefinition(spec: ShadcnCatalogSpec) { + if (spec.variant === 'interactive') return buildInteractiveAreaDefinition() + const multi = + spec.variant === 'axes' || + spec.variant === 'gradient' || + spec.variant === 'icons' || + spec.variant === 'interactive' || + spec.variant === 'legend' || + spec.variant.startsWith('stacked') + const expanded = spec.variant === 'stacked-expand' + const expandedRows = shadcnMonths.flatMap((row, index) => [ + { + month: row.month, + series: 'other', + value: [45, 100, 150, 50, 100, 160][index]!, + }, + { month: row.month, series: 'mobile', value: row.mobile }, + { month: row.month, series: 'desktop', value: row.desktop }, + ]) + const rows = expanded + ? expandedRows + : multi + ? shadcnSeriesRows.filter((row) => row.series !== 'tablet') + : shadcnMonths + const curve = + spec.variant === 'linear' + ? curveLinear + : spec.variant === 'step' + ? curveStep + : curveNatural + const gradients = spec.variant === 'gradient' + + return defineChart({ + marks: [ + multi + ? areaY(rows as readonly ShadcnSeriesDatum[], { + id: 'visitor-areas', + x: 'month', + y: 'value', + z: 'series', + color: 'series', + key: (row) => `${row.month}:${row.series}`, + layout: stack({ + order: expanded + ? ['other', 'mobile', 'desktop'] + : ['mobile', 'desktop'], + ...(expanded ? { offset: 'normalize' } : {}), + }), + curve: d3Curve(curve), + fill: expanded + ? (row) => + row.series === 'other' + ? `color-mix(in oklch, ${shadcnColors[2]} 10%, transparent)` + : `color-mix(in oklch, ${row.series === 'mobile' ? shadcnColors[1] : shadcnColors[0]} 40%, transparent)` + : gradients + ? (row) => `url(#shadcn-area-${row.series})` + : undefined, + fillOpacity: expanded ? 1 : 0.4, + stroke: expanded + ? (row) => + row.series === 'other' + ? shadcnColors[2] + : row.series === 'mobile' + ? shadcnColors[1] + : shadcnColors[0] + : (row) => + row.series === 'mobile' ? shadcnColors[1] : shadcnColors[0], + strokeWidth: 1.5, + }) + : areaY(rows as readonly ShadcnMonthDatum[], { + id: 'visitor-area', + x: 'month', + y: 'desktop', + curve: d3Curve(curve), + fill: shadcnColors[0], + fillOpacity: 0.4, + stroke: shadcnColors[0], + strokeWidth: 1.5, + }), + ], + x: shadcnPointXAxis(), + y: { + scale: + spec.variant === 'axes' + ? scaleLinear().domain([0, 600]) + : expanded + ? scaleLinear().domain([0, 1]) + : scaleLinear, + grid: true, + axis: + spec.variant === 'axes' + ? { line: false, ticks: { size: 0, values: [0, 300, 600] } } + : { line: false, ticks: false, tickLabels: false }, + }, + color: { + domain: expanded ? ['other', 'mobile', 'desktop'] : monthSeries, + range: expanded + ? [shadcnColors[2], shadcnColors[1], shadcnColors[0]] + : shadcnColors.slice(0, 3), + }, + gradients: gradients + ? twoSeries.map((series, index) => ({ + id: `shadcn-area-${series}`, + x1: 0, + y1: 1, + x2: 0, + y2: 0, + stops: [ + { offset: 0.05, color: shadcnColors[index], opacity: 0.08 }, + { offset: 0.95, color: shadcnColors[index], opacity: 0.8 }, + ], + })) + : undefined, + margin: + spec.variant === 'axes' + ? { top: 12, right: 12, bottom: 28, left: 40 } + : { top: 5, right: 12, bottom: 35, left: 12 }, + theme: shadcnTheme(), + }) +} + +function buildInteractiveAreaDefinition() { + const rows: ShadcnSeriesDatum[] = interactiveAreaRows.flatMap((row) => [ + { month: row.date, series: 'mobile', value: row.mobile }, + { month: row.date, series: 'desktop', value: row.desktop }, + ]) + return defineChart(({ width }) => ({ + marks: [ + areaY(rows, { + id: 'visitor-areas', + x: 'month', + y: 'value', + z: 'series', + color: 'series', + key: (row) => `${row.month}:${row.series}`, + layout: stack({ order: ['mobile', 'desktop'] }), + curve: d3Curve(curveNatural), + fill: (row) => `url(#shadcn-interactive-${row.series})`, + fillOpacity: 1, + stroke: (row) => + row.series === 'mobile' ? shadcnColors[1] : shadcnColors[0], + strokeWidth: 1, + }), + ], + x: { + scale: scalePoint, + axis: { + line: false, + ticks: { + values: [ + '2024-04-10', + '2024-04-21', + '2024-05-02', + '2024-05-13', + '2024-05-25', + '2024-06-05', + '2024-06-16', + '2024-06-29', + ], + size: 0, + padding: 10, + format: formatMonthDay, + }, + }, + }, + y: { + scale: scaleLinear().domain([0, 1200]), + grid: true, + axis: { + line: false, + ticks: { values: [0, 300, 600, 900, 1200], size: 0 }, + tickLabels: false, + }, + }, + color: { domain: twoSeries, range: shadcnColors.slice(0, 2) }, + gradients: twoSeries.map((series, index) => ({ + id: `shadcn-interactive-${series}`, + x1: 0, + y1: 1, + x2: 0, + y2: 0, + stops: [ + { offset: 0.05, color: shadcnColors[index], opacity: 0.1 }, + { offset: 0.95, color: shadcnColors[index], opacity: 0.8 }, + ], + })), + margin: { + top: 32, + right: width < 400 ? 14 : 5, + bottom: 35, + left: 5, + }, + theme: shadcnTheme(), + })) +} + +function buildBarDefinition(spec: ShadcnCatalogSpec) { + if (spec.variant === 'interactive') { + return defineChart({ + marks: [ + barY(interactiveBarRows, { + id: 'daily-bars', + x: 'month', + y: 'desktop', + fill: shadcnColors[1], + }), + ], + x: { + scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: { + line: false, + ticks: { + values: [ + '2024-04-01', + '2024-04-11', + '2024-04-22', + '2024-05-03', + '2024-05-14', + '2024-05-26', + '2024-06-06', + '2024-06-17', + '2024-06-29', + ], + size: 0, + padding: 10, + format: formatMonthDay, + }, + }, + }, + y: { scale: scaleLinear, grid: true, axis: false }, + margin: { top: 5, right: 12, bottom: 25, left: 12 }, + theme: shadcnTheme(), + }) + } + if (spec.variant === 'active') { + const rows = shadcnBrowsers.map((row) => + row.browser === 'chrome' + ? { ...row, visitors: 187 } + : row.browser === 'firefox' + ? { ...row, visitors: 275 } + : row, + ) + return defineChart({ + marks: [ + barY(rows, { + id: 'visitor-bars', + x: 'browser', + y: 'visitors', + color: 'browser', + fill: (row) => + row.browser === 'firefox' + ? `color-mix(in srgb, ${shadcnColors[2]} 80%, transparent)` + : shadcnColors[browserNames.indexOf(row.browser)]!, + stroke: (row) => + row.browser === 'firefox' ? shadcnColors[2] : 'none', + strokeWidth: 2, + strokeDasharray: (row) => + row.browser === 'firefox' ? '4 4' : 'none', + radius: 8, + }), + ], + x: shadcnBrowserXAxis(), + y: { scale: scaleLinear, grid: true, axis: false }, + color: { domain: browserNames, range: shadcnColors }, + margin: { top: 5, right: 5, bottom: 35, left: 5 }, + theme: shadcnTheme(), + }) + } + if (spec.variant === 'mixed') { + return defineChart({ + marks: [ + barX(shadcnBrowsers, { + id: 'visitor-bars', + x: 'visitors', + y: 'browser', + color: 'browser', + radius: 5, + }), + ], + x: { scale: scaleLinear, axis: false }, + y: shadcnBrowserYAxis(), + color: { domain: browserNames, range: shadcnColors }, + margin: { top: 5, right: 5, bottom: 5, left: 60 }, + theme: shadcnTheme(), + }) + } + if (spec.variant === 'label-custom') { + return defineChart({ + marks: [ + barX(shadcnMonths, { + id: 'visitor-bars', + x: 'desktop', + y: 'month', + fill: shadcnColors[1], + radius: 4, + }), + text(shadcnMonths, { + id: 'month-labels', + x: () => 0, + y: 'month', + text: 'month', + dx: 8, + anchor: 'start', + fill: 'var(--background)', + fontSize: 12, + }), + text(shadcnMonths, { + id: 'visitor-labels', + x: 'desktop', + y: 'month', + text: (row) => row.desktop.toLocaleString('en-US'), + dx: 8, + anchor: 'start', + fill: 'var(--foreground)', + fontSize: 12, + }), + ], + x: { scale: scaleLinear, grid: true, axis: false }, + y: { + scale: () => scaleBand().paddingInner(0.18).paddingOuter(0.08), + axis: false, + }, + margin: { top: 5, right: 36, bottom: 5, left: 0 }, + theme: shadcnTheme(), + }) + } + if (spec.variant === 'multiple') { + return groupedBarDefinition() + } + if (spec.variant === 'stacked') { + const rows = shadcnSeriesRows.filter((row) => row.series !== 'tablet') + return defineChart({ + marks: [ + barY(rows, { + id: 'visitor-bars', + x: 'month', + y: 'value', + z: 'series', + color: 'series', + key: (row) => `${row.month}:${row.series}`, + layout: stack({ order: twoSeries }), + radius: 4, + }), + ], + x: shadcnXAxis(), + y: { scale: scaleLinear, grid: true, axis: false }, + color: { domain: twoSeries, range: shadcnColors.slice(0, 2) }, + margin: { top: 5, right: 5, bottom: 35, left: 5 }, + theme: shadcnTheme(), + }) + } + + const negativeRows = [ + { month: 'January', desktop: 186, mobile: 0, tablet: 0 }, + { month: 'February', desktop: 205, mobile: 0, tablet: 0 }, + { month: 'March', desktop: -207, mobile: 0, tablet: 0 }, + { month: 'April', desktop: 173, mobile: 0, tablet: 0 }, + { month: 'May', desktop: -209, mobile: 0, tablet: 0 }, + { month: 'June', desktop: 214, mobile: 0, tablet: 0 }, + ] + const rows = spec.variant === 'negative' ? negativeRows : shadcnMonths + const horizontal = horizontalVariants.has(spec.variant) + const labels = + spec.variant === 'label' || + spec.variant === 'label-custom' || + spec.variant === 'negative' + const marks = horizontal + ? [ + barX(rows, { + id: 'visitor-bars', + x: 'desktop', + y: 'month', + fill: shadcnColors[0], + radius: 5, + }), + ...(labels + ? [ + text(rows, { + id: 'visitor-labels', + x: 'desktop', + y: 'month', + text: (row) => row.desktop.toLocaleString('en-US'), + dx: -7, + anchor: 'end', + fill: 'var(--background)', + fontSize: 11, + fontWeight: 600, + }), + ] + : []), + ] + : [ + barY(rows, { + id: 'visitor-bars', + x: 'month', + y: 'desktop', + fill: (row) => + spec.variant === 'negative' && row.desktop < 0 + ? shadcnColors[1] + : shadcnColors[0], + radius: spec.variant === 'negative' ? 0 : 8, + }), + ...(labels + ? [ + text(rows, { + id: 'visitor-labels', + x: 'month', + y: 'desktop', + text: (row) => row.desktop.toLocaleString('en-US'), + ...(spec.variant === 'negative' + ? { + text: (row: ShadcnMonthDatum) => row.month, + dy: (row: ShadcnMonthDatum) => + row.desktop < 0 ? 14 : -10, + fill: shadcnColors[0], + fontSize: 12, + } + : { + dy: -12, + fill: 'var(--foreground)', + fontSize: 12, + }), + }), + ] + : []), + ] + + return defineChart({ + marks, + x: horizontal + ? { scale: scaleLinear, axis: false } + : spec.variant === 'negative' + ? { + scale: () => + scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: false, + } + : shadcnXAxis(), + y: horizontal + ? { + scale: () => + scaleBand().paddingInner(0.18).paddingOuter(0.08), + axis: { line: false, ticks: { size: 0 } }, + } + : { scale: scaleLinear, grid: true, axis: false }, + margin: horizontal + ? { top: 5, right: 5, bottom: 5, left: 72 } + : spec.variant === 'negative' + ? { top: 24, right: 5, bottom: 24, left: 5 } + : { top: labels ? 24 : 5, right: 5, bottom: 35, left: 5 }, + theme: shadcnTheme(), + }) +} + +function groupedBarDefinition() { + const rows = shadcnSeriesRows.filter( + (row) => row.series === 'desktop' || row.series === 'mobile', + ) + const groupScale = scaleBand() + .domain(twoSeries) + .paddingInner(0.08) + .paddingOuter(0) + return defineChart({ + marks: [ + barY(rows, { + id: 'visitor-bars', + x: 'month', + y: 'value', + z: 'series', + color: 'series', + key: (row) => `${row.month}:${row.series}`, + layout: group({ scale: groupScale }), + radius: 4, + }), + ], + x: shadcnXAxis(), + y: { scale: scaleLinear, grid: true, axis: false }, + color: { domain: twoSeries, range: shadcnColors.slice(0, 2) }, + margin: { top: 5, right: 5, bottom: 35, left: 5 }, + theme: shadcnTheme(), + }) +} + +function buildLineDefinition(spec: ShadcnCatalogSpec) { + if (spec.variant === 'interactive') return buildInteractiveLineDefinition() + const multiple = spec.variant === 'multiple' + const browserVariant = + spec.variant === 'dots-colors' || spec.variant === 'label-custom' + const rows = multiple + ? shadcnSeriesRows.filter((row) => row.series !== 'tablet') + : browserVariant + ? shadcnBrowsers + : shadcnMonths + const curve = + spec.variant === 'linear' + ? curveLinear + : spec.variant === 'step' + ? curveStep + : multiple + ? curveMonotoneX + : curveNatural + const dots = spec.variant.includes('dots') + const labels = spec.variant.includes('label') + const dotMarks = !dots + ? [] + : browserVariant + ? [ + dot(shadcnBrowsers, { + id: 'visitor-dots', + x: 'browser', + y: 'visitors', + color: 'browser', + r: 5, + }), + ] + : [ + ...(spec.variant === 'dots-custom' + ? [ + text(shadcnMonths, { + id: 'visitor-dot-stems', + x: 'month', + y: 'desktop', + text: () => '│', + fill: shadcnColors[0], + fontSize: 24, + }), + ] + : []), + dot(shadcnMonths, { + id: 'visitor-dots', + x: 'month', + y: 'desktop', + r: spec.variant === 'dots-custom' ? 5 : 4, + fill: + spec.variant === 'dots-custom' + ? 'var(--background)' + : shadcnColors[0], + stroke: shadcnColors[0], + strokeWidth: spec.variant === 'dots-custom' ? 2 : 1, + }), + ] + const labelMarks = !labels + ? [] + : browserVariant + ? [ + text(shadcnBrowsers, { + id: 'visitor-labels', + x: 'browser', + y: 'visitors', + text: (row) => titleCase(row.browser), + dy: -12, + fill: 'var(--foreground)', + fontSize: 12, + }), + ] + : [ + text(shadcnMonths, { + id: 'visitor-labels', + x: 'month', + y: 'desktop', + text: (row) => row.desktop.toLocaleString('en-US'), + dy: -12, + fill: 'var(--foreground)', + fontSize: 12, + }), + ] + return defineChart(({ width }) => ({ + marks: [ + multiple + ? lineY(rows as readonly ShadcnSeriesDatum[], { + id: 'visitor-lines', + x: 'month', + y: 'value', + z: 'series', + color: 'series', + key: (row) => `${row.month}:${row.series}`, + curve: d3Curve(curve), + strokeWidth: 2, + }) + : browserVariant + ? lineY(rows as readonly ShadcnBrowserDatum[], { + id: 'visitor-line', + x: 'browser', + y: 'visitors', + curve: d3Curve(curve), + stroke: shadcnColors[1], + strokeWidth: 2, + }) + : lineY(rows as readonly ShadcnMonthDatum[], { + id: 'visitor-line', + x: 'month', + y: 'desktop', + curve: d3Curve(curve), + stroke: shadcnColors[0], + strokeWidth: 2, + }), + ...dotMarks, + ...labelMarks, + ], + x: browserVariant ? { scale: scalePoint, axis: false } : shadcnPointXAxis(), + y: { + scale: scaleLinear().domain([0, browserVariant ? 300 : 320]), + grid: true, + axis: { + line: false, + ticks: { + values: browserVariant + ? [0, 75, 150, 225, 300] + : [0, 80, 160, 240, 320], + size: 0, + }, + tickLabels: false, + }, + }, + color: { + domain: browserVariant ? browserNames : twoSeries, + range: browserVariant ? shadcnColors : shadcnColors.slice(0, 2), + }, + margin: browserVariant + ? { top: 24, right: 24, bottom: 5, left: 24 } + : { + top: + spec.variant === 'dots-custom' && width < 400 + ? 16 + : labels + ? 24 + : 8, + right: 12, + bottom: 35, + left: 12, + }, + theme: shadcnTheme(), + })) +} + +function buildInteractiveLineDefinition() { + return defineChart(({ width }) => ({ + marks: [ + lineY(interactiveBarRows, { + id: 'daily-line', + x: 'month', + y: 'desktop', + curve: d3Curve(curveMonotoneX), + stroke: shadcnColors[0], + strokeWidth: 2, + }), + ], + x: { + scale: scalePoint, + axis: { + line: false, + ticks: { + values: [ + '2024-04-10', + '2024-04-21', + '2024-05-02', + '2024-05-13', + '2024-05-25', + '2024-06-05', + '2024-06-16', + '2024-06-29', + ], + size: 0, + padding: 10, + format: formatMonthDay, + }, + }, + }, + y: { + scale: scaleLinear().domain([0, 600]), + grid: true, + axis: { + line: false, + ticks: { values: [0, 150, 300, 450, 600], size: 0 }, + tickLabels: false, + }, + }, + margin: { + top: 5, + right: width < 400 ? 24 : 12, + bottom: 35, + left: 12, + }, + theme: shadcnTheme(), + })) +} + +function buildPieDefinition(spec: ShadcnCatalogSpec) { + if (spec.variant === 'interactive') return buildInteractivePieDefinition() + if (spec.variant === 'stacked') return buildStackedPieDefinition() + const arcs = pie(shadcnBrowsers, { + value: 'visitors', + startAngle: Math.PI / 2, + endAngle: (-Math.PI * 3) / 2, + }) + const donut = spec.variant.includes('donut') + const active = spec.variant === 'donut-active' + const centerText = spec.variant === 'donut-text' + const labels = spec.variant.includes('label') + const externalLabels = spec.variant === 'label' + const customLabels = spec.variant === 'label-custom' + const labelList = spec.variant === 'label-list' + const separator = spec.variant === 'separator-none' ? 0 : active ? 5 : 1 + const marks = [ + radialArc(arcs, { + id: 'browser-slices', + key: 'browser', + innerRadius: donut ? 60 : undefined, + color: 'browser', + stroke: 'var(--background)', + strokeWidth: separator, + }), + ...(active + ? [ + radialArc(arcs.slice(0, 1), { + id: 'active-browser-slice', + key: 'browser', + innerRadius: 60, + outerRadius: ({ radius }) => radius + 10, + color: 'browser', + stroke: 'var(--background)', + strokeWidth: 5, + }), + ] + : []), + ...(externalLabels + ? [ + radialRule(arcs, { + id: 'browser-leaders', + angle: 'angle', + radius1: 1, + radius2: 1, + radius2Offset: 14, + key: 'browser', + stroke: 'var(--border)', + }), + ] + : []), + ...(labels + ? [ + radialText(arcs, { + id: 'browser-labels', + angle: 'angle', + radius: externalLabels || customLabels ? 1 : 0.68, + radiusOffset: externalLabels || customLabels ? 17 : 0, + text: (row) => + labelList + ? titleCase(row.browser) + : row.visitors.toLocaleString('en-US'), + key: 'browser', + anchor: externalLabels || customLabels ? 'outside' : 'middle', + fill: + externalLabels || customLabels + ? 'var(--foreground)' + : 'var(--background)', + fontSize: 12, + fontWeight: labelList ? 400 : undefined, + }), + ] + : []), + ...(centerText + ? [ + radialText([{ id: 'total', angle: 0, radius: 0, text: '1,125' }], { + id: 'visitor-total', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: -5, + fill: 'var(--foreground)', + fontSize: 30, + fontWeight: 700, + }), + radialText([{ id: 'label', angle: 0, radius: 0, text: 'Visitors' }], { + id: 'visitor-label', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: 19, + fill: 'var(--muted-foreground)', + fontSize: 14, + }), + ] + : []), + ] + + return defineChart({ + marks: [ + polar({ + radiusRatio: 0.78, + angle: { scale: scaleLinear().domain([0, Math.PI * 2]) }, + radius: { scale: scaleLinear().domain([0, 1]) }, + marks, + }), + ], + color: { domain: browserNames, range: shadcnColors }, + margin: 0, + }) +} + +function buildStackedPieDefinition() { + const desktopRows = [186, 305, 237, 173, 209].map((visitors, index) => ({ + browser: ['january', 'february', 'march', 'april', 'may'][index]!, + visitors, + })) + const mobileRows = [80, 200, 120, 190, 130].map((visitors, index) => ({ + browser: ['january', 'february', 'march', 'april', 'may'][index]!, + visitors, + })) + const desktopArcs = pie(desktopRows, { + value: 'visitors', + startAngle: Math.PI / 2, + endAngle: (-Math.PI * 3) / 2, + }) + const mobileArcs = pie(mobileRows, { + value: 'visitors', + startAngle: Math.PI / 2, + endAngle: (-Math.PI * 3) / 2, + }) + const months = desktopRows.map((row) => row.browser) + return defineChart({ + marks: [ + polar({ + radiusRatio: 1, + angle: { scale: scaleLinear().domain([0, Math.PI * 2]) }, + radius: { scale: scaleLinear().domain([0, 1]) }, + marks: [ + radialArc(desktopArcs, { + id: 'desktop-slices', + key: 'browser', + outerRadius: 60, + color: 'browser', + stroke: 'var(--background)', + strokeWidth: 1, + }), + radialArc(mobileArcs, { + id: 'mobile-slices', + key: 'browser', + innerRadius: 70, + outerRadius: 90, + color: 'browser', + stroke: 'var(--background)', + strokeWidth: 1, + }), + ], + }), + ], + color: { domain: months, range: shadcnColors }, + margin: 0, + }) +} + +function buildInteractivePieDefinition() { + const rows: ShadcnBrowserDatum[] = [ + { browser: 'january', visitors: 186 }, + { browser: 'february', visitors: 305 }, + { browser: 'march', visitors: 237 }, + { browser: 'april', visitors: 173 }, + { browser: 'may', visitors: 209 }, + ] + const arcs = pie(rows, { + value: 'visitors', + startAngle: Math.PI / 2, + endAngle: (-Math.PI * 3) / 2, + }) + const active = arcs.filter((row) => row.browser === 'january') + return defineChart({ + marks: [ + polar({ + radiusRatio: 0.78, + angle: { scale: scaleLinear().domain([0, Math.PI * 2]) }, + radius: { scale: scaleLinear().domain([0, 1]) }, + marks: [ + radialArc(arcs, { + id: 'month-slices', + key: 'browser', + innerRadius: 60, + color: 'browser', + stroke: 'var(--background)', + strokeWidth: 1, + }), + radialArc(active, { + id: 'active-month', + key: 'browser', + innerRadius: 60, + outerRadius: ({ radius }) => radius + 10, + fill: shadcnColors[0], + stroke: 'var(--background)', + strokeWidth: 5, + }), + radialArc(active, { + id: 'active-month-ring', + key: 'browser', + innerRadius: ({ radius }) => radius + 12, + outerRadius: ({ radius }) => radius + 25, + fill: shadcnColors[0], + stroke: 'var(--background)', + strokeWidth: 3, + }), + radialText([{ id: 'total', angle: 0, radius: 0, text: '186' }], { + id: 'active-total', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: -5, + fill: 'var(--foreground)', + fontSize: 30, + fontWeight: 700, + }), + radialText([{ id: 'label', angle: 0, radius: 0, text: 'Visitors' }], { + id: 'active-label', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: 20, + fill: 'var(--muted-foreground)', + fontSize: 12, + }), + ], + }), + ], + color: { + domain: rows.map((row) => row.browser), + range: shadcnColors, + }, + margin: 0, + }) +} + +function buildRadarDefinition(spec: ShadcnCatalogSpec) { + const circle = spec.variant.includes('circle') + const noGrid = spec.variant === 'grid-none' + const noSpokes = + spec.variant === 'grid-circle-no-lines' || + spec.variant === 'grid-custom' || + spec.variant === 'lines-only' || + noGrid + const multiple = + spec.variant === 'multiple' || + spec.variant === 'legend' || + spec.variant === 'icons' || + spec.variant === 'label-custom' || + spec.variant === 'radius' || + spec.variant === 'lines-only' + const filledGrid = spec.variant.includes('fill') + const rows = + spec.variant === 'lines-only' + ? shadcnRadarLines + : filledGrid + ? shadcnRadarFilled + : spec.variant === 'grid-circle-no-lines' + ? shadcnRadarDefault.map((row) => + row.month === 'April' ? { ...row, desktop: 203 } : row, + ) + : multiple + ? shadcnRadarMultiple + : shadcnRadarDefault + const months = rows.map((row) => row.month) + const radiusMax = spec.variant === 'lines-only' ? 220 : filledGrid ? 300 : 320 + const gridValues = Array.from({ length: 4 }, (_, index) => + Math.round((radiusMax * (index + 1)) / 4), + ) + const customLabels = spec.variant === 'label-custom' + const radiusAxis = spec.variant === 'radius' + const dots = + spec.variant === 'dots' || + spec.variant === 'grid-circle' || + spec.variant === 'grid-circle-no-lines' || + noGrid + const guides = [ + ...(!noGrid + ? [ + radialGrid({ + values: + spec.variant === 'grid-custom' + ? [Math.round(radiusMax * 0.947)] + : radiusAxis + ? [0, 80, 160, 240, 320] + : gridValues, + shape: circle ? 'circle' : 'polygon', + stroke: filledGrid ? 'transparent' : 'var(--border)', + strokeOpacity: filledGrid ? 0 : 1, + ...(filledGrid ? { fill: shadcnColors[0], fillOpacity: 0.2 } : {}), + ...(radiusAxis + ? { + labels: true, + labelAngle: Math.PI / 6, + labelFill: 'var(--foreground)', + labelFontSize: 12, + labelRotate: 30, + labelOffset: 1, + } + : {}), + }), + ] + : []), + ...(!radiusAxis + ? [ + angleGrid({ + values: months, + labels: !customLabels, + labelOffset: 10, + labelFill: 'var(--muted-foreground)', + labelFontSize: 12, + stroke: noSpokes || filledGrid ? 'transparent' : 'var(--border)', + strokeOpacity: filledGrid ? 0 : 1, + }), + ] + : []), + ] + const chartSpec = (radiusRatio: number) => ({ + marks: [ + polar({ + radiusRatio, + angle: { scale: scalePoint().domain(months), wrap: true }, + radius: { scale: scaleLinear().domain([0, radiusMax]) }, + guides, + marks: [ + radialArea(rows, { + id: 'desktop-radar', + className: 'ts-chart__radar', + angle: 'month', + radius: 'desktop', + key: 'month', + curve: curveLinearClosed, + fill: shadcnColors[0], + fillOpacity: + spec.variant === 'lines-only' ? 0 : filledGrid ? 0.5 : 0.6, + stroke: shadcnColors[0], + strokeOpacity: filledGrid ? 0 : 1, + strokeWidth: spec.variant === 'lines-only' ? 2 : 1, + }), + ...(multiple + ? [ + radialArea(rows, { + id: 'mobile-radar', + className: 'ts-chart__radar', + angle: 'month', + radius: 'mobile', + key: 'month', + curve: curveLinearClosed, + fill: shadcnColors[1], + fillOpacity: spec.variant === 'lines-only' ? 0 : 1, + stroke: shadcnColors[1], + strokeWidth: spec.variant === 'lines-only' ? 2 : 1, + }), + ] + : []), + ...(dots + ? [ + radialDot(rows, { + id: 'radar-dots', + angle: 'month', + radius: 'desktop', + key: 'month', + r: 4, + fill: shadcnColors[0], + }), + ] + : []), + ...(customLabels + ? [ + radialText(rows, { + id: 'radar-values', + angle: 'month', + radius: () => radiusMax, + key: 'month', + text: (row) => `${row.desktop}/${row.mobile ?? 0}`, + anchor: 'outside', + radiusOffset: 15, + dy: -7, + fill: 'var(--foreground)', + fontSize: 12, + fontWeight: 500, + }), + radialText(rows, { + id: 'radar-months', + angle: 'month', + radius: () => radiusMax, + key: 'month', + text: 'month', + anchor: 'outside', + radiusOffset: 15, + dy: 10, + fill: 'var(--muted-foreground)', + fontSize: 12, + }), + ] + : []), + ], + }), + ], + color: { domain: twoSeries, range: shadcnColors.slice(0, 2) }, + margin: 0, + }) + return customLabels + ? defineChart(({ height }) => chartSpec(height < 220 ? 0.64 : 0.76)) + : defineChart(chartSpec(0.76)) +} + +function buildRadialDefinition(spec: ShadcnCatalogSpec) { + if (spec.variant === 'stacked') return buildStackedRadialDefinition() + if (spec.variant === 'shape') { + return buildSingleRadialDefinition({ + id: 'shape', + visitors: 1_260, + endDegrees: 100, + innerRadius: 65, + outerRadius: 95, + backgroundInnerRadius: 74, + backgroundOuterRadius: 86, + cornerRadius: 0, + total: '1,260', + }) + } + if (spec.variant === 'text') { + return buildSingleRadialDefinition({ + id: 'text', + visitors: 200, + endDegrees: 250, + innerRadius: 80, + outerRadius: 90, + backgroundInnerRadius: 80, + backgroundOuterRadius: 90, + cornerRadius: 10, + total: '200', + }) + } + + const label = spec.variant === 'label' + const grid = spec.variant === 'grid' + const startAngle = rechartsPolarAngle(label ? -90 : 0) + const endAngle = rechartsPolarAngle(label ? 380 : 360) + const backgroundRows = shadcnBrowsers.map((row) => ({ + ...row, + background: 300, + })) + const chartSpec = (radiusFactor: number) => ({ + marks: [ + polar({ + radiusRatio: grid ? 0.8 : 1, + startAngle, + endAngle, + angle: { scale: scaleLinear().domain([0, 300]) }, + radius: { + scale: scaleBand().domain(browserNames).paddingInner(0.2), + range: [ + 30 * radiusFactor, + (label ? 110 : grid ? 100 : 110) * radiusFactor, + ], + }, + guides: grid + ? [ + radialGrid({ + values: browserNames, + shape: 'circle', + stroke: 'var(--border)', + }), + angleGrid({ + values: Array.from({ length: 12 }, (_, index) => index * 25), + labels: false, + stroke: 'var(--border)', + }), + ] + : [], + marks: [ + ...(!grid + ? [ + radialBarAngle(backgroundRows, { + id: 'radial-backgrounds', + angle: 'background', + radius: 'browser', + key: 'browser', + fill: 'var(--muted)', + }), + ] + : []), + radialBarAngle(shadcnBrowsers, { + id: 'radial-values', + angle: 'visitors', + radius: 'browser', + key: 'browser', + fill: (row) => shadcnColors[browserNames.indexOf(row.browser)]!, + }), + ], + }), + ...(label + ? [ + polar({ + startAngle, + endAngle, + angle: { scale: scaleLinear().domain([0, 300]) }, + radius: { + scale: scaleLinear().domain([0, 110]), + range: [0, 110 * radiusFactor], + }, + marks: [ + radialText( + shadcnBrowsers.map((row, index) => ({ + ...row, + angle: 10, + labelRadius: 38 + index * 16, + })), + { + id: 'radial-labels', + angle: 'angle', + radius: 'labelRadius', + key: 'browser', + text: (row) => titleCase(row.browser), + fill: 'white', + fontSize: 11, + rotate: -25, + }, + ), + ], + }), + ] + : []), + ], + color: { domain: browserNames, range: shadcnColors }, + margin: 0, + }) + return label + ? defineChart(({ height }) => chartSpec(height < 220 ? 0.8 : 1)) + : defineChart(chartSpec(1)) +} + +function buildSingleRadialDefinition(options: { + id: string + visitors: number + endDegrees: number + innerRadius: number + outerRadius: number + backgroundInnerRadius: number + backgroundOuterRadius: number + cornerRadius: number + total: string +}) { + const rows = [ + { browser: 'safari', visitors: options.visitors, ring: 'visitors' }, + ] + const background = pie([{ id: 'background', value: 1 }], { value: 'value' }) + return defineChart({ + marks: [ + polar({ + marks: [ + radialArc(background, { + id: `${options.id}-background`, + key: 'id', + innerRadius: options.backgroundInnerRadius, + outerRadius: options.backgroundOuterRadius, + fill: 'var(--muted)', + }), + ], + }), + polar({ + startAngle: rechartsPolarAngle(0), + endAngle: rechartsPolarAngle(options.endDegrees), + angle: { scale: scaleLinear().domain([0, options.visitors]) }, + radius: { + scale: scaleBand().domain(['visitors']), + range: [options.innerRadius, options.outerRadius], + }, + marks: [ + radialBarAngle(rows, { + id: `${options.id}-value`, + angle: 'visitors', + radius: 'ring', + key: 'browser', + fill: shadcnColors[1], + cornerRadius: options.cornerRadius, + }), + ], + }), + radialCenterLabels(options.total, 36, 0, 24), + ], + margin: 0, + }) +} + +function buildStackedRadialDefinition() { + const rows = [ + { + id: 'mobile', + ring: 'visitors', + start: 0, + end: 570, + fill: shadcnColors[1], + }, + { + id: 'desktop', + ring: 'visitors', + start: 570, + end: 1_260, + fill: shadcnColors[0], + }, + ] + return defineChart({ + marks: [ + polar({ + startAngle: rechartsPolarAngle(0), + endAngle: rechartsPolarAngle(180), + angle: { scale: scaleLinear().domain([0, 1_260]) }, + radius: { + scale: scaleBand().domain(['visitors']), + range: [80, 110], + }, + marks: [ + radialBarAngle(rows, { + id: 'stacked-values', + angle1: 'start', + angle2: 'end', + angle: 'end', + radius: 'ring', + key: 'id', + fill: (row) => row.fill, + cornerRadius: 5, + stroke: 'transparent', + strokeWidth: 2, + }), + ], + }), + radialCenterLabels('1,830', 24, -16, 4), + ], + color: { domain: twoSeries, range: shadcnColors.slice(0, 2) }, + margin: 0, + }) +} + +function radialCenterLabels( + total: string, + fontSize: number, + totalDy: number, + labelDy: number, +) { + return polar({ + angle: { scale: scaleLinear().domain([0, 1]) }, + radius: { scale: scaleLinear().domain([0, 1]) }, + marks: [ + radialText([{ id: 'total', angle: 0, radius: 0, text: total }], { + id: `radial-total-${total}`, + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: totalDy, + fill: 'var(--foreground)', + fontSize, + fontWeight: 700, + }), + radialText([{ id: 'label', angle: 0, radius: 0, text: 'Visitors' }], { + id: `radial-label-${total}`, + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: labelDy, + fill: 'var(--muted-foreground)', + fontSize: 14, + }), + ], + }) +} + +function rechartsPolarAngle(degrees: number) { + return ((90 - degrees) * Math.PI) / 180 +} + +function buildTooltipDefinition() { + return defineChart({ + marks: [ + barY(shadcnActivities, { + id: 'activity-bars', + x: 'date', + y: 'value', + z: 'activity', + color: 'activity', + key: (row) => `${row.date}:${row.activity}`, + layout: stack({ order: activityNames }), + radius: 4, + }), + ], + x: { + scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: { + line: false, + ticks: { size: 0, padding: 10, format: formatWeekday }, + }, + }, + y: { scale: scaleLinear().domain([0, 1_000]), axis: false }, + color: { domain: activityNames, range: shadcnColors.slice(0, 2) }, + margin: { top: 0, right: 7, bottom: 32, left: 7 }, + theme: shadcnTheme(), + }) +} + +function ShadcnLegend({ spec }: { spec: ShadcnCatalogSpec }) { + const labels = + spec.family === 'pie' || spec.family === 'radial' ? browserNames : twoSeries + const items = labels.map((label, index) => ( + + {spec.variant === 'icons' ? ( + + + + ) : ( + + )} + {label.charAt(0).toUpperCase() + label.slice(1)} + + )) + return spec.family === 'pie' && spec.variant === 'legend' ? ( +
{items}
+ ) : ( + <>{items} + ) +} + +function ShadcnTooltipBody({ + variant, + points, +}: { + variant: string + points: readonly ChartPoint[] +}) { + const ordered = [...points].sort( + (left, right) => + activityNames.indexOf(left.datum.activity) - + activityNames.indexOf(right.datum.activity), + ) + const noLabel = + variant === 'label-none' || + variant === 'formatter' || + variant === 'icons' || + variant === 'advanced' + const noIndicator = + variant === 'indicator-none' || + variant === 'label-none' || + variant === 'formatter' || + variant === 'icons' + const lineIndicator = variant === 'indicator-line' + const formatted = variant === 'formatter' || variant === 'advanced' + const label = + variant === 'label-formatter' + ? 'July 15, 2024' + : variant === 'label-custom' + ? 'Activities' + : '2024-07-16' + return ( +
+ {noLabel ? null : {label}} + {ordered.map((point, index) => ( +
+ {variant === 'icons' ? ( + + ) : noIndicator ? null : ( + + )} + {titleCase(point.datum.activity)} + + {point.datum.value} + {formatted ? kcal : null} + +
+ ))} + {variant === 'advanced' ? ( +
+ Total + + {ordered.reduce((total, point) => total + point.datum.value, 0)} + kcal + +
+ ) : null} +
+ ) +} + +function ShadcnActivityIcon({ activity }: { activity: string }) { + return ( + + {activity === 'running' ? ( + <> + + + + ) : ( + <> + + + + )} + + ) +} + +function ShadcnSelectDisplay({ + label, + swatch, +}: { + label: string + swatch?: string +}) { + return ( +
+ {swatch ? ( + + ) : null} + {label} + +
+ ) +} + +function ShadcnBarMetrics() { + return ( + <> +
+ Desktop + 24,828 +
+
+ Mobile + 25,010 +
+ + ) +} + +function shadcnXAxis() { + return { + scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: { + line: false, + ticks: { + size: 0, + padding: 10, + format: (value: string) => value.slice(0, 3), + }, + }, + } +} + +function shadcnPointXAxis() { + return { + scale: scalePoint, + axis: { + line: false, + ticks: { + size: 0, + padding: 10, + format: (value: string) => value.slice(0, 3), + }, + }, + } +} + +function shadcnBrowserXAxis() { + return { + scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: { + line: false, + ticks: { + size: 0, + padding: 10, + format: titleCase, + }, + }, + } +} + +function shadcnBrowserYAxis() { + return { + scale: () => scaleBand().paddingInner(0.18).paddingOuter(0.08), + axis: { + line: false, + ticks: { size: 0, padding: 10, format: titleCase }, + }, + } +} + +function shadcnTheme() { + return { + foreground: 'var(--muted-foreground, var(--muted))', + grid: 'var(--border)', + background: 'transparent', + } +} + +function formatWeekday(value: string) { + return new Intl.DateTimeFormat('en-US', { weekday: 'short' }).format( + new Date(value), + ) +} + +function formatMonthDay(value: string) { + return new Intl.DateTimeFormat('en-US', { + month: 'short', + day: 'numeric', + timeZone: 'UTC', + }).format(new Date(value)) +} + +function titleCase(value: string) { + return value.charAt(0).toUpperCase() + value.slice(1) +} diff --git a/benchmarks/conformance/shared/shadcn-chart-card.tsx b/benchmarks/conformance/shared/shadcn-chart-card.tsx new file mode 100644 index 00000000..ff368861 --- /dev/null +++ b/benchmarks/conformance/shared/shadcn-chart-card.tsx @@ -0,0 +1,309 @@ +import { forwardRef, useImperativeHandle, useRef } from 'react' +import { reactMount } from './react-mount' +import type { ComponentType, ReactNode } from 'react' +import type { ConformanceInput, ConformanceTestDriver } from '../types' +import type { ReactConformanceProps } from './react-mount' + +export interface ShadcnChartSize { + width: number + height: number +} + +interface ShadcnChartCardProps { + input: ConformanceInput + title: string + description: string + chartShape?: 'wide' | 'square' + centered?: boolean + headerInsetBottom?: number + footer?: ReactNode + chartFooter?: ReactNode + headerAction?: ReactNode + variant?: + | 'default' + | 'interactive-area' + | 'interactive-bar' + | 'interactive-line' + | 'interactive-pie' + chartHeight?: number + chartClassName?: string + children: (size: ShadcnChartSize) => ReactNode +} + +export function ShadcnChartCard({ + input, + title, + description, + chartShape = 'wide', + centered = false, + headerInsetBottom = 0, + footer, + chartFooter, + headerAction, + variant = 'default', + chartHeight, + chartClassName, + children, +}: ShadcnChartCardProps) { + const cardWidth = Math.max(1, input.width) + const contentWidth = Math.max(1, cardWidth - 50) + const chartSize = + chartShape === 'square' + ? { + width: Math.min( + variant === 'interactive-pie' ? 300 : 250, + contentWidth, + ), + height: Math.min( + variant === 'interactive-pie' ? 300 : 250, + contentWidth, + ), + } + : { + width: contentWidth, + height: chartHeight ?? (contentWidth * 9) / 16, + } + + return ( +
+
+
0 + ? { paddingBottom: headerInsetBottom } + : undefined + } + > +
+

{title}

+

{description}

+
+ {headerAction ? ( +
{headerAction}
+ ) : null} +
+
+
+ {children(chartSize)} +
+ {chartFooter ? ( +
{chartFooter}
+ ) : null} +
+ {footer ? ( +
+ {footer} +
+ ) : null} +
+
+ ) +} + +export function ShadcnTrendFooter({ + note = 'Showing total visitors for the last 6 months', +}: { + centered?: boolean + note?: string +}) { + return ( + <> +
+ Trending up by 5.2% this month + +
+
{note}
+ + ) +} + +export function shadcnChartMount( + Component: ComponentType<{ input: ConformanceInput }>, +) { + const View = forwardRef( + function ShadcnChartView({ input }, ref) { + const rootRef = useRef(null) + useImperativeHandle( + ref, + () => ({ + resolveTarget: () => null, + readState: () => ({}), + viewBounds(view) { + if (view && view !== 'main') return null + const bounds = rootRef.current?.getBoundingClientRect() + return bounds + ? { + x: bounds.left, + y: bounds.top, + width: bounds.width, + height: bounds.height, + } + : null + }, + }), + [], + ) + return ( +
+ +
+ ) + }, + ) + const mount = reactMount(View) + return (container: HTMLElement, input: ConformanceInput) => { + ensureShadcnChartStyles(container.ownerDocument) + return mount(container, input) + } +} + +function ensureShadcnChartStyles(document: Document) { + const id = 'shadcn-chart-card-styles' + let style = document.getElementById(id) + if (!(style instanceof HTMLStyleElement)) { + style = document.createElement('style') + style.id = id + document.head.append(style) + } + if (style.textContent !== shadcnChartCardStyles) { + style.textContent = shadcnChartCardStyles + } +} + +export const shadcnChartCardStyles = ` + .sc-example { + --background: oklch(1 0 0); + --foreground: oklch(0 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --border: oklch(0.922 0 0); + --chart-1: oklch(0.809 0.105 251.813); + --chart-2: oklch(0.623 0.214 259.815); + --chart-3: oklch(0.546 0.245 262.881); + --chart-4: oklch(0.488 0.243 264.376); + --chart-5: oklch(0.424 0.199 265.638); + display: flex; + justify-content: center; + align-items: flex-start; + overflow: hidden; + color: var(--foreground); + background: var(--background); + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + text-rendering: geometricPrecision; + } + :root[data-theme='dark'] .sc-example { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --border: oklch(1 0 0 / 10%); + --chart-1: oklch(0.809 0.105 251.813); + --chart-2: oklch(0.623 0.214 259.815); + --chart-3: oklch(0.546 0.245 262.881); + --chart-4: oklch(0.488 0.243 264.376); + --chart-5: oklch(0.424 0.199 265.638); + } + .sc-example, .sc-example * { box-sizing: border-box; } + .sc-card { + display: flex; + flex-direction: column; + gap: 24px; + border: 1px solid var(--border); + border-radius: 14px; + background: var(--card); + color: var(--card-foreground); + padding: 24px 0; + } + .sc-card-header { display: grid; gap: 8px; padding: 0 24px; } + .sc-card-heading { display: grid; gap: 8px; } + .sc-card-header h2 { margin: 0; font-size: 16px; font-weight: 600; line-height: 1; letter-spacing: -0.01em; } + .sc-card-header p { margin: 0; color: var(--muted-foreground); font-size: 14px; line-height: 20px; } + .sc-card-content { display: flex; min-height: 0; flex-direction: column; padding: 0 24px; } + .sc-chart { position: relative; flex: none; } + .sc-chart > * { display: block; } + .sc-chart-clip .ts-chart { overflow: hidden !important; } + .sc-card-footer { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 0 24px; font-size: 14px; line-height: 1; } + .sc-chart-footer { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 12px; color: var(--muted-foreground); font-size: 12px; } + .sc-legend-item { display: inline-flex; align-items: center; gap: 6px; } + .sc-legend-dot { width: 8px; height: 8px; border-radius: 2px; } + .sc-legend-icon { width: 12px; height: 12px; fill: none; stroke: var(--muted-foreground); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; } + .sc-pie-legend { display: flex; width: 260px; flex-wrap: wrap; justify-content: center; gap: 10px 16px; } + .sc-pie-legend .sc-legend-item { flex: 0 0 70px; justify-content: center; } + .sc-centered { justify-content: center; align-items: center; text-align: center; } + .sc-trend { display: flex; align-items: center; gap: 8px; font-weight: 500; } + .sc-trend svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } + .sc-footer-note { color: var(--muted-foreground); } + .sc-example .ts-chart { color: var(--muted-foreground); } + .sc-example .recharts-surface { overflow: visible; } + .sc-example .ts-chart__grid line, .sc-example .ts-chart__polar-grid path, .sc-example .ts-chart__polar-grid line { stroke: var(--border); } + .sc-example .ts-chart__axes text, .sc-example .ts-chart__polar-grid text { fill: var(--muted-foreground); font-size: 12px; } + .sc-example .ts-chart-tooltip { + min-width: 128px; + padding: 7px 10px !important; + border: 1px solid var(--border) !important; + border-radius: 8px !important; + background: var(--card) !important; + color: var(--card-foreground) !important; + box-shadow: 0 2px 6px rgb(0 0 0 / 8%); + font-size: 12px; + } + .sc-advanced-tooltip { display: grid; width: 158px; gap: 6px; } + .sc-advanced-row { display: grid; grid-template-columns: 10px 1fr auto; align-items: center; gap: 6px; } + .sc-advanced-swatch { width: 10px; height: 10px; border-radius: 2px; } + .sc-advanced-value { display: flex; align-items: baseline; gap: 2px; color: var(--foreground); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-weight: 500; font-variant-numeric: tabular-nums; } + .sc-advanced-unit { color: var(--muted-foreground); font-family: inherit; font-weight: 400; } + .sc-advanced-total { display: flex; align-items: center; margin-top: 2px; padding-top: 7px; border-top: 1px solid var(--border); color: var(--foreground); font-weight: 500; } + .sc-advanced-total .sc-advanced-value { margin-left: auto; } + .sc-shadcn-tooltip { display: grid; gap: 5px; } + .sc-tooltip-label { color: var(--foreground); font-weight: 500; } + .sc-shadcn-tooltip-row { display: grid; grid-template-columns: 9px minmax(0, 1fr) auto; align-items: center; gap: 7px; color: var(--muted-foreground); } + .sc-tooltip-no-indicator .sc-shadcn-tooltip-row { grid-template-columns: minmax(0, 1fr) auto; } + .sc-tooltip-dot { width: 8px; height: 8px; border-radius: 2px; } + .sc-tooltip-line { width: 3px; height: 16px; border-radius: 2px; } + .sc-tooltip-icon { width: 11px; height: 11px; fill: none; stroke: var(--muted-foreground); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; } + .sc-tooltip-value { display: flex; align-items: baseline; gap: 2px; color: var(--foreground); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-weight: 500; font-variant-numeric: tabular-nums; } + .sc-tooltip-value span { color: var(--muted-foreground); font-family: inherit; font-weight: 400; } + .sc-tooltip-total { display: flex; justify-content: space-between; margin-top: 1px; padding-top: 7px; border-top: 1px solid var(--border); color: var(--foreground); font-weight: 500; } + .sc-interactive-area { gap: 0; padding-top: 0; } + .sc-interactive-area .sc-card-header { display: flex; align-items: center; gap: 16px; padding-top: 20px; padding-bottom: 20px; border-bottom: 1px solid var(--border); } + .sc-interactive-area .sc-card-heading { flex: 1; gap: 4px; } + .sc-interactive-area .sc-card-content { padding-top: 24px; } + .sc-interactive-area .sc-chart-footer { margin-top: 8px; } + .sc-interactive-bar { gap: 0; padding: 0 0 30px; } + .sc-interactive-bar .sc-card-header { display: flex; min-height: 99px; align-items: stretch; gap: 0; padding: 0; border-bottom: 1px solid var(--border); } + .sc-interactive-bar .sc-card-heading { flex: 1; align-content: center; gap: 4px; padding: 16px 24px; } + .sc-interactive-bar .sc-card-action { display: flex; margin: 0; } + .sc-interactive-bar .sc-card-content { padding: 43px 24px 0; } + .sc-interactive-line { gap: 0; padding: 0; } + .sc-interactive-line .sc-card-header { display: flex; min-height: 99px; align-items: stretch; gap: 0; padding: 0; border-bottom: 1px solid var(--border); } + .sc-interactive-line .sc-card-heading { flex: 1; align-content: center; gap: 4px; padding: 16px 24px; } + .sc-interactive-line .sc-card-action { display: flex; margin: 0; } + .sc-interactive-line .sc-card-content { padding: 43px 24px 0; } + .sc-interactive-pie .sc-card-header { display: flex; align-items: flex-start; gap: 16px; padding-bottom: 0; } + .sc-interactive-pie .sc-card-heading { flex: 1; gap: 4px; } + .sc-interactive-pie .sc-card-content { padding-bottom: 44px; } + .sc-interactive-pie .sc-chart { transform: translateY(55px); } + .sc-interactive-pie .sc-card-action { transform: translateY(48px); } + .sc-card-action { margin-left: auto; } + .sc-select-display { display: flex; min-width: 130px; height: 36px; align-items: center; gap: 8px; justify-content: space-between; padding: 0 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--background); color: var(--foreground); font-size: 14px; box-shadow: 0 1px 2px rgb(0 0 0 / 4%); } + .sc-select-display svg { width: 14px; height: 14px; color: var(--muted-foreground); } + .sc-select-swatch { width: 12px; height: 12px; border-radius: 3px; } + .sc-bar-metric { display: grid; width: 168px; align-content: center; gap: 6px; padding: 16px 32px; border-left: 1px solid var(--border); } + .sc-bar-metric span { color: var(--muted-foreground); font-size: 12px; } + .sc-bar-metric strong { font-size: 30px; line-height: 1; letter-spacing: -0.03em; } +` diff --git a/benchmarks/conformance/shared/shadcn-motion.test.ts b/benchmarks/conformance/shared/shadcn-motion.test.ts new file mode 100644 index 00000000..7e97233f --- /dev/null +++ b/benchmarks/conformance/shared/shadcn-motion.test.ts @@ -0,0 +1,52 @@ +import { describe, expect, it } from 'vitest' +import { shadcnDashboardChartDefinition } from '../cases/121-shadcn-dashboard/tanstack' +import { barMultipleDefinition } from '../cases/122-shadcn-bar-multiple/tanstack' +import { pieDonutTextDefinition } from '../cases/123-shadcn-pie-donut-text/tanstack' +import { radarMultipleDefinition } from '../cases/124-shadcn-radar-multiple/tanstack' +import { radialTextDefinition } from '../cases/125-shadcn-radial-text/tanstack' +import { advancedTooltipDefinition } from '../cases/126-shadcn-tooltip-advanced/tanstack' +import { createShadcnTanStackExample } from './shadcn-catalog-tanstack' +import { + createShadcnSpringRenderer, + shadcnSpringMotion, + shadcnSpringTransition, +} from './shadcn-motion' + +describe('shadcn chart motion', () => { + it('uses one physical spring preset for the collection', () => { + expect(shadcnSpringTransition).toEqual({ + type: 'spring', + stiffness: 170, + damping: 18, + mass: 1, + }) + expect(createShadcnSpringRenderer().id).toBe('svg:svg-motion') + }) + + it('applies the spring policy to dedicated and generated chart definitions', () => { + const dedicatedDefinitions = [ + shadcnDashboardChartDefinition([]), + barMultipleDefinition, + pieDonutTextDefinition, + radarMultipleDefinition, + radialTextDefinition, + advancedTooltipDefinition, + ] + const generatedDefinitions = [ + 'chart-area-default', + 'chart-bar-default', + 'chart-line-default', + 'chart-pie-simple', + 'chart-radar-default', + 'chart-radial-simple', + 'chart-tooltip-default', + ].map((name) => createShadcnTanStackExample(name).definition) + + for (const definition of [ + ...dedicatedDefinitions, + ...generatedDefinitions, + ]) { + expect(definition.motion).toEqual(shadcnSpringMotion) + } + }) +}) diff --git a/benchmarks/conformance/shared/shadcn-motion.ts b/benchmarks/conformance/shared/shadcn-motion.ts new file mode 100644 index 00000000..217badd9 --- /dev/null +++ b/benchmarks/conformance/shared/shadcn-motion.ts @@ -0,0 +1,24 @@ +import { motion } from '@tanstack/charts/motion' +import type { ChartValue } from '@tanstack/charts' +import type { ChartMotionSpringTransition } from '@tanstack/charts/motion' + +export const shadcnSpringTransition = { + type: 'spring', + stiffness: 170, + damping: 18, + mass: 1, +} as const satisfies ChartMotionSpringTransition + +export const shadcnSpringMotion = { + transition: shadcnSpringTransition, +} + +export function createShadcnSpringRenderer< + TDatum = unknown, + TXValue extends ChartValue = ChartValue, + TYValue extends ChartValue = ChartValue, +>() { + return motion({ + transition: shadcnSpringTransition, + }) +} diff --git a/benchmarks/conformance/types.ts b/benchmarks/conformance/types.ts index 85c30f8f..923d850b 100644 --- a/benchmarks/conformance/types.ts +++ b/benchmarks/conformance/types.ts @@ -348,6 +348,8 @@ export interface ConformanceInteractionScenario { export interface ConformanceCaseMeta { schemaVersion: 1 referenceRenderer?: ConformanceReferenceRenderer + collections?: readonly string[] + height?: number order: number id: string title: string diff --git a/docs/config.json b/docs/config.json index 6964efdf..406ec229 100644 --- a/docs/config.json +++ b/docs/config.json @@ -766,6 +766,290 @@ { "label": "Drillable Flare sunburst", "to": "/charts/catalog/charts/126-drillable-sunburst/" + }, + { + "label": "shadcn dashboard", + "to": "/charts/catalog/charts/127-shadcn-dashboard/" + }, + { + "label": "shadcn bar chart – multiple", + "to": "/charts/catalog/charts/128-shadcn-bar-multiple/" + }, + { + "label": "shadcn pie chart – donut with text", + "to": "/charts/catalog/charts/129-shadcn-pie-donut-text/" + }, + { + "label": "shadcn radar chart – multiple", + "to": "/charts/catalog/charts/130-shadcn-radar-multiple/" + }, + { + "label": "shadcn radial chart – text", + "to": "/charts/catalog/charts/131-shadcn-radial-text/" + }, + { + "label": "shadcn tooltip – advanced", + "to": "/charts/catalog/charts/132-shadcn-tooltip-advanced/" + }, + { + "label": "shadcn Area Chart - Axes", + "to": "/charts/catalog/charts/133-shadcn-area-axes/" + }, + { + "label": "shadcn Area Chart", + "to": "/charts/catalog/charts/134-shadcn-area-default/" + }, + { + "label": "shadcn Area Chart - Gradient", + "to": "/charts/catalog/charts/135-shadcn-area-gradient/" + }, + { + "label": "shadcn Area Chart - Icons", + "to": "/charts/catalog/charts/136-shadcn-area-icons/" + }, + { + "label": "shadcn Area Chart - Interactive", + "to": "/charts/catalog/charts/137-shadcn-area-interactive/" + }, + { + "label": "shadcn Area Chart - Legend", + "to": "/charts/catalog/charts/138-shadcn-area-legend/" + }, + { + "label": "shadcn Area Chart - Linear", + "to": "/charts/catalog/charts/139-shadcn-area-linear/" + }, + { + "label": "shadcn Area Chart - Stacked Expanded", + "to": "/charts/catalog/charts/140-shadcn-area-stacked-expand/" + }, + { + "label": "shadcn Area Chart - Stacked", + "to": "/charts/catalog/charts/141-shadcn-area-stacked/" + }, + { + "label": "shadcn Area Chart - Step", + "to": "/charts/catalog/charts/142-shadcn-area-step/" + }, + { + "label": "shadcn Bar Chart - Active", + "to": "/charts/catalog/charts/143-shadcn-bar-active/" + }, + { + "label": "shadcn Bar Chart", + "to": "/charts/catalog/charts/144-shadcn-bar-default/" + }, + { + "label": "shadcn Bar Chart - Horizontal", + "to": "/charts/catalog/charts/145-shadcn-bar-horizontal/" + }, + { + "label": "shadcn Bar Chart - Interactive", + "to": "/charts/catalog/charts/146-shadcn-bar-interactive/" + }, + { + "label": "shadcn Bar Chart - Custom Label", + "to": "/charts/catalog/charts/147-shadcn-bar-label-custom/" + }, + { + "label": "shadcn Bar Chart - Label", + "to": "/charts/catalog/charts/148-shadcn-bar-label/" + }, + { + "label": "shadcn Bar Chart - Mixed", + "to": "/charts/catalog/charts/149-shadcn-bar-mixed/" + }, + { + "label": "shadcn Bar Chart - Negative", + "to": "/charts/catalog/charts/150-shadcn-bar-negative/" + }, + { + "label": "shadcn Bar Chart - Stacked + Legend", + "to": "/charts/catalog/charts/151-shadcn-bar-stacked/" + }, + { + "label": "shadcn Line Chart", + "to": "/charts/catalog/charts/152-shadcn-line-default/" + }, + { + "label": "shadcn Line Chart - Dots Colors", + "to": "/charts/catalog/charts/153-shadcn-line-dots-colors/" + }, + { + "label": "shadcn Line Chart - Custom Dots", + "to": "/charts/catalog/charts/154-shadcn-line-dots-custom/" + }, + { + "label": "shadcn Line Chart - Dots", + "to": "/charts/catalog/charts/155-shadcn-line-dots/" + }, + { + "label": "shadcn Line Chart - Interactive", + "to": "/charts/catalog/charts/156-shadcn-line-interactive/" + }, + { + "label": "shadcn Line Chart - Custom Label", + "to": "/charts/catalog/charts/157-shadcn-line-label-custom/" + }, + { + "label": "shadcn Line Chart - Label", + "to": "/charts/catalog/charts/158-shadcn-line-label/" + }, + { + "label": "shadcn Line Chart - Linear", + "to": "/charts/catalog/charts/159-shadcn-line-linear/" + }, + { + "label": "shadcn Line Chart - Multiple", + "to": "/charts/catalog/charts/160-shadcn-line-multiple/" + }, + { + "label": "shadcn Line Chart - Step", + "to": "/charts/catalog/charts/161-shadcn-line-step/" + }, + { + "label": "shadcn Pie Chart - Donut Active", + "to": "/charts/catalog/charts/162-shadcn-pie-donut-active/" + }, + { + "label": "shadcn Pie Chart - Donut", + "to": "/charts/catalog/charts/163-shadcn-pie-donut/" + }, + { + "label": "shadcn Pie Chart - Interactive", + "to": "/charts/catalog/charts/164-shadcn-pie-interactive/" + }, + { + "label": "shadcn Pie Chart - Custom Label", + "to": "/charts/catalog/charts/165-shadcn-pie-label-custom/" + }, + { + "label": "shadcn Pie Chart - Label List", + "to": "/charts/catalog/charts/166-shadcn-pie-label-list/" + }, + { + "label": "shadcn Pie Chart - Label", + "to": "/charts/catalog/charts/167-shadcn-pie-label/" + }, + { + "label": "shadcn Pie Chart - Legend", + "to": "/charts/catalog/charts/168-shadcn-pie-legend/" + }, + { + "label": "shadcn Pie Chart - Separator None", + "to": "/charts/catalog/charts/169-shadcn-pie-separator-none/" + }, + { + "label": "shadcn Pie Chart", + "to": "/charts/catalog/charts/170-shadcn-pie-simple/" + }, + { + "label": "shadcn Pie Chart - Stacked", + "to": "/charts/catalog/charts/171-shadcn-pie-stacked/" + }, + { + "label": "shadcn Radar Chart", + "to": "/charts/catalog/charts/172-shadcn-radar-default/" + }, + { + "label": "shadcn Radar Chart - Dots", + "to": "/charts/catalog/charts/173-shadcn-radar-dots/" + }, + { + "label": "shadcn Radar Chart - Grid Circle Filled", + "to": "/charts/catalog/charts/174-shadcn-radar-grid-circle-fill/" + }, + { + "label": "shadcn Radar Chart - Grid Circle - No lines", + "to": "/charts/catalog/charts/175-shadcn-radar-grid-circle-no-lines/" + }, + { + "label": "shadcn Radar Chart - Grid Circle", + "to": "/charts/catalog/charts/176-shadcn-radar-grid-circle/" + }, + { + "label": "shadcn Radar Chart - Grid Custom", + "to": "/charts/catalog/charts/177-shadcn-radar-grid-custom/" + }, + { + "label": "shadcn Radar Chart - Grid Filled", + "to": "/charts/catalog/charts/178-shadcn-radar-grid-fill/" + }, + { + "label": "shadcn Radar Chart - Grid None", + "to": "/charts/catalog/charts/179-shadcn-radar-grid-none/" + }, + { + "label": "shadcn Radar Chart - Icons", + "to": "/charts/catalog/charts/180-shadcn-radar-icons/" + }, + { + "label": "shadcn Radar Chart - Custom Label", + "to": "/charts/catalog/charts/181-shadcn-radar-label-custom/" + }, + { + "label": "shadcn Radar Chart - Legend", + "to": "/charts/catalog/charts/182-shadcn-radar-legend/" + }, + { + "label": "shadcn Radar Chart - Lines Only", + "to": "/charts/catalog/charts/183-shadcn-radar-lines-only/" + }, + { + "label": "shadcn Radar Chart - Radius Axis", + "to": "/charts/catalog/charts/184-shadcn-radar-radius/" + }, + { + "label": "shadcn Radial Chart - Grid", + "to": "/charts/catalog/charts/185-shadcn-radial-grid/" + }, + { + "label": "shadcn Radial Chart - Label", + "to": "/charts/catalog/charts/186-shadcn-radial-label/" + }, + { + "label": "shadcn Radial Chart - Shape", + "to": "/charts/catalog/charts/187-shadcn-radial-shape/" + }, + { + "label": "shadcn Radial Chart", + "to": "/charts/catalog/charts/188-shadcn-radial-simple/" + }, + { + "label": "shadcn Radial Chart - Stacked", + "to": "/charts/catalog/charts/189-shadcn-radial-stacked/" + }, + { + "label": "shadcn Tooltip - Default", + "to": "/charts/catalog/charts/190-shadcn-tooltip-default/" + }, + { + "label": "shadcn Tooltip - Formatter", + "to": "/charts/catalog/charts/191-shadcn-tooltip-formatter/" + }, + { + "label": "shadcn Tooltip - Icons", + "to": "/charts/catalog/charts/192-shadcn-tooltip-icons/" + }, + { + "label": "shadcn Tooltip - Line Indicator", + "to": "/charts/catalog/charts/193-shadcn-tooltip-indicator-line/" + }, + { + "label": "shadcn Tooltip - No Indicator", + "to": "/charts/catalog/charts/194-shadcn-tooltip-indicator-none/" + }, + { + "label": "shadcn Tooltip - Custom label", + "to": "/charts/catalog/charts/195-shadcn-tooltip-label-custom/" + }, + { + "label": "shadcn Tooltip - Label Formatter", + "to": "/charts/catalog/charts/196-shadcn-tooltip-label-formatter/" + }, + { + "label": "shadcn Tooltip - No Label", + "to": "/charts/catalog/charts/197-shadcn-tooltip-label-none/" } ] }, diff --git a/docs/guides/tooltips-and-focus.md b/docs/guides/tooltips-and-focus.md index aa66960b..988f12bf 100644 --- a/docs/guides/tooltips-and-focus.md +++ b/docs/guides/tooltips-and-focus.md @@ -255,6 +255,25 @@ transient tooltip. Click, Enter, or Space can still pin the focused point; only the pinned surface and adapter body are mounted. The default is `visibility: 'focus'`. +## Tooltip motion + +A static chart motion transition also animates tooltip entry, movement between +points, and exit: + +```ts +const definition = defineChart({ + marks, + motion: { + transition: { type: 'spring', stiffness: 170, damping: 18, mass: 1 }, + }, + tooltip, +}) +``` + +Set `tooltip.motion` to another transition to override the chart transition, or +set it to `false` to keep the tooltip immediate. Reduced-motion preferences +disable these animations. + ## Application-owned pointer timing Set definition `pointer: false` when the application decides when inspection diff --git a/docs/reference/marks/bar-and-rect.md b/docs/reference/marks/bar-and-rect.md index b5d3d4a2..a5147b45 100644 --- a/docs/reference/marks/bar-and-rect.md +++ b/docs/reference/marks/bar-and-rect.md @@ -32,23 +32,27 @@ function barY( ### Options -| Option | Type | Default | Meaning | -| -------------- | ------------------------------------ | ------------------------------ | ------------------------------------------------ | -| `id` | `string` | Layer-derived | Stable mark ID | -| `x` | `Channel` | Row index | Bar category or center | -| `y` | `Channel` | Numeric datum | Length; implicitly stacked at each x | -| `y1` | `number \| Channel` | Implicit stack start | Explicit baseline endpoint | -| `y2` | `number \| Channel` | Implicit stack end | Explicit value endpoint; takes precedence over y | -| `z` | `Channel` | No group | Group identity; color fallback when omitted | -| `color` | `Channel` | `z` | Independent value sent to the chart color scale | -| `key` | `Channel` | Top/nested `id`, x, then index | Stable scene and interaction identity | -| `fill` | `VisualChannel` | Resolved `color` | Final bar paint override | -| `fillOpacity` | `number` | SVG default | Fill opacity | -| `layout` | `GroupLayout \| StackLayout` | Implicit diverging stack | Configures grouping or stack order/offset | -| `inset` | `number` | `0` | Pixels removed from both categorical edges | -| `maxThickness` | `number` | Unbounded | Maximum painted width after grouping and inset | -| `radius` | `number` | None | SVG rectangle corner radius | -| `states` | `readonly ChartMarkState[]` | None | Focus-driven presentation overrides | +| Option | Type | Default | Meaning | +| ----------------- | ------------------------------------ | ------------------------------ | ------------------------------------------------ | +| `id` | `string` | Layer-derived | Stable mark ID | +| `x` | `Channel` | Row index | Bar category or center | +| `y` | `Channel` | Numeric datum | Length; implicitly stacked at each x | +| `y1` | `number \| Channel` | Implicit stack start | Explicit baseline endpoint | +| `y2` | `number \| Channel` | Implicit stack end | Explicit value endpoint; takes precedence over y | +| `z` | `Channel` | No group | Group identity; color fallback when omitted | +| `color` | `Channel` | `z` | Independent value sent to the chart color scale | +| `key` | `Channel` | Top/nested `id`, x, then index | Stable scene and interaction identity | +| `fill` | `VisualChannel` | Resolved `color` | Final bar paint override | +| `fillOpacity` | `number` | SVG default | Fill opacity | +| `stroke` | `VisualChannel` | None | Bar outline color | +| `strokeOpacity` | `number` | SVG default | Bar outline opacity | +| `strokeWidth` | `number` | SVG default | Bar outline width | +| `strokeDasharray` | `VisualChannel` | None | SVG outline dash pattern | +| `layout` | `GroupLayout \| StackLayout` | Implicit diverging stack | Configures grouping or stack order/offset | +| `inset` | `number` | `0` | Pixels removed from both categorical edges | +| `maxThickness` | `number` | Unbounded | Maximum painted width after grouping and inset | +| `radius` | `number` | None | SVG rectangle corner radius | +| `states` | `readonly ChartMarkState[]` | None | Focus-driven presentation overrides | The interaction point is at the group-band center and the `y2`/`y` endpoint. Its semantic `xValue` is x and its `yValue` is the value endpoint. diff --git a/docs/reference/marks/polar.md b/docs/reference/marks/polar.md index 560234bf..53f09798 100644 --- a/docs/reference/marks/polar.md +++ b/docs/reference/marks/polar.md @@ -338,7 +338,8 @@ function angleGrid(options?: AngleGridOptions): PolarGuide `radialGrid` draws radius values as circles or polygons. Supply explicit `values`, or let `ticks` request values from the configured radius scale. Labels are off by default. Label angle, offset, rotation, format, fill, and -font size are configurable. +font size are configurable. Ring `fill` and `fillOpacity` can layer filled +circle or polygon grids behind the chart marks. `angleGrid` draws spokes for explicit `values` or the configured angle domain. It can show labels around the circumference with `format` and `labelOffset`. diff --git a/examples/conformance/src/main.tsx b/examples/conformance/src/main.tsx index 6355de43..c9b8e256 100644 --- a/examples/conformance/src/main.tsx +++ b/examples/conformance/src/main.tsx @@ -136,6 +136,18 @@ function CatalogApp() { ) } + if (route.view === 'collection') { + return route.collectionId === 'shadcn' ? ( + + ) : ( + + ) + } + if (route.view === 'case') { const entry = casesById.get(route.caseId) if (!entry) return @@ -162,6 +174,243 @@ function CatalogApp() { return } +function ShadcnCollectionPage({ + dark, + link, + setDark, +}: { + dark: boolean + link: RouteLinkFactory + setDark: (value: boolean) => void +}) { + const allEntries = useMemo(() => collectionCases('shadcn'), []) + const [search, setSearch] = useState('') + const [family, setFamily] = useState('all') + const [copied, setCopied] = useState(false) + const collectionFamilies = useMemo( + () => + [...new Set(allEntries.map((entry) => entry.family))].sort((left, right) => + left.localeCompare(right), + ), + [allEntries], + ) + const entries = useMemo( + () => + allEntries.filter((entry) => { + if (family !== 'all' && entry.family !== family) return false + if (!search) return true + return [entry.title, entry.family, entry.intent, ...entry.features] + .join(' ') + .toLowerCase() + .includes(search) + }), + [allEntries, family, search], + ) + useDocumentMeta( + 'shadcn charts · TanStack Charts', + 'TanStack Charts implementations of the official shadcn chart catalog.', + ) + + useEffect(() => { + document.body.classList.add('shadcn-catalog') + return () => document.body.classList.remove('shadcn-catalog') + }, []) + + return ( + <> + +
+
+
+

shadcn charts

+

{allEntries.length} examples, rebuilt with TanStack Charts.

+
+
+ npm install @tanstack/charts + +
+
+
+ + + +
+
+ {entries.length ? ( + <> +

+ {entries.length} chart{entries.length === 1 ? '' : 's'} +

+
+ {entries.map((entry) => ( + + ))} +
+ + ) : ( +

No charts match those filters.

+ )} +
+
+ + ) +} + +function ShadcnCollectionCard({ + entry, + link, +}: { + entry: ConformanceCaseMeta + link: RouteLinkFactory +}) { + return ( +
+ ) +} + +function ShadcnCollectionPreview({ entry }: { entry: ConformanceCaseMeta }) { + const containerRef = useRef(null) + const [visible, setVisible] = useState(false) + const [error, setError] = useState('') + + useEffect(() => { + const container = containerRef.current + if (!container || visible) return + const observer = new IntersectionObserver( + ([observation]) => { + if (!observation?.isIntersecting) return + setVisible(true) + observer.disconnect() + }, + { rootMargin: '500px 0px' }, + ) + observer.observe(container) + return () => observer.disconnect() + }, [visible]) + + useEffect(() => { + if (!visible) return + let active = true + let handle: ConformanceHandle | undefined + let resizeObserver: ResizeObserver | undefined + let cardResizeObserver: ResizeObserver | undefined + const mount = async () => { + try { + await document.fonts?.ready + const implementation = await loadTanStackImplementation(entry.id) + const container = containerRef.current + if (!active || !implementation || !container) return + container.replaceChildren() + let width = Math.max(1, container.clientWidth) + const height = caseChartHeight(entry) + handle = implementation.mount(container, { + width, + height, + revision: 0, + interactive: true, + }) + + const card = container.querySelector('.sc-card') + if (card) { + const fitPreviewToCard = () => { + const cardHeight = Math.ceil(card.getBoundingClientRect().height) + if (cardHeight > 0) container.style.height = `${cardHeight}px` + } + fitPreviewToCard() + cardResizeObserver = new ResizeObserver(fitPreviewToCard) + cardResizeObserver.observe(card) + } + + resizeObserver = new ResizeObserver(() => { + const nextWidth = Math.max(1, container.clientWidth) + if (nextWidth === width) return + width = nextWidth + handle?.update({ + width, + height, + revision: 0, + interactive: true, + }) + }) + resizeObserver.observe(container) + } catch (reason) { + if (!active) return + setError(reason instanceof Error ? reason.message : String(reason)) + } + } + void mount() + return () => { + active = false + cardResizeObserver?.disconnect() + resizeObserver?.disconnect() + handle?.destroy() + } + }, [entry, visible]) + + return ( +
+ {error ? `Renderer failed: ${error}` : 'Loading chart…'} +
+ ) +} + interface SharedControls { dark: boolean family: string @@ -315,9 +564,18 @@ function CasePage({ setDark: (value: boolean) => void update: () => void }) { - const index = conformanceCases.indexOf(entry) - const previous = conformanceCases[index - 1] - const next = conformanceCases[index + 1] + const siblings = entry.collections?.includes('shadcn') + ? collectionCases('shadcn') + : conformanceCases + const index = siblings.indexOf(entry) + const previous = siblings[index - 1] + const next = siblings[index + 1] + const backRoute = entry.collections?.includes('shadcn') + ? ({ view: 'collection', collectionId: 'shadcn' } as const) + : ({ view: 'index' } as const) + const backLabel = entry.collections?.includes('shadcn') + ? 'shadcn charts' + : 'Catalog' useDocumentMeta( `${entry.title} · TanStack Charts Catalog`, comparisonMode @@ -330,8 +588,8 @@ function CasePage({
- - ← Catalog + + ← {backLabel}

{String(entry.order).padStart(2, '0')} · {entry.family} @@ -489,7 +747,8 @@ function CaseCard({ }) { const referenceRenderer = getConformanceReferenceRenderer(entry) const renderers = catalogRenderers(referenceRenderer, comparisonMode) - const docsDirective = `` + const height = caseChartHeight(entry) + const docsDirective = `` return (

@@ -573,9 +832,10 @@ function RendererPanel({ }) { const containerRef = useRef(null) const handleRef = useRef(null) + const height = caseChartHeight(entry) const inputRef = useRef({ width: chartWidth, - height: chartHeight, + height, revision, }) const [metric, setMetric] = useState('pending') @@ -586,7 +846,7 @@ function RendererPanel({ 'pending', ) const [error, setError] = useState('') - inputRef.current = { width: chartWidth, height: chartHeight, revision } + inputRef.current = { width: chartWidth, height, revision } useEffect(() => { let active = true @@ -659,7 +919,7 @@ function RendererPanel({ {state === 'gap' ? (

Not implemented. This is a recorded capability gap. @@ -668,7 +928,7 @@ function RendererPanel({ ) : state === 'error' ? (

{error}

@@ -676,7 +936,7 @@ function RendererPanel({
)}
@@ -691,7 +951,11 @@ function RendererPanel({ function EmbedPage({ entry }: { entry: ConformanceCaseMeta }) { const params = new URLSearchParams(window.location.search) - const height = parseChartEmbedHeight(params.get('height')) + const requestedHeight = params.get('height') + const height = + requestedHeight === null + ? caseChartHeight(entry) + : parseChartEmbedHeight(requestedHeight) const revision = parseChartEmbedRevision(params.get('revision')) const preview = params.get('preview') === '1' const parentOrigin = resolveChartEmbedParentOrigin(document.referrer) @@ -820,7 +1084,7 @@ function SiteHeader({ active, link, }: { - active?: 'catalog' | 'all' + active?: 'catalog' | 'all' | 'shadcn' link: RouteLinkFactory }) { return ( @@ -854,6 +1118,12 @@ function SiteHeader({ > All charts + + shadcn +
) @@ -1039,6 +1309,39 @@ function filterCases(search: string, family: string): ConformanceCaseMeta[] { }) } +function collectionCases(collectionId: string): ConformanceCaseMeta[] { + const familyOrder = [ + 'dashboard', + 'area', + 'bar', + 'line', + 'pie', + 'radar', + 'radial', + 'tooltip', + ] + return conformanceCases + .filter((entry) => entry.collections?.includes(collectionId)) + .sort( + (left, right) => + familyOrder.indexOf(left.family) - familyOrder.indexOf(right.family) || + left.source.url.localeCompare(right.source.url), + ) +} + +function shadcnDisplayTitle(title: string): string { + const display = title.replace(/^shadcn\s+/iu, '') + return display.charAt(0).toUpperCase() + display.slice(1) +} + +function titleCase(value: string): string { + return value.charAt(0).toUpperCase() + value.slice(1) +} + +function caseChartHeight(entry: ConformanceCaseMeta): number { + return entry.height ?? chartHeight +} + function readCatalogLocation() { return { pathname: window.location.pathname, diff --git a/examples/conformance/src/routes.test.ts b/examples/conformance/src/routes.test.ts index 24c3499b..f7212c46 100644 --- a/examples/conformance/src/routes.test.ts +++ b/examples/conformance/src/routes.test.ts @@ -5,6 +5,7 @@ describe('catalog routes', () => { it.each([ ['/', { view: 'index' }], ['/all/', { view: 'all' }], + ['/collections/shadcn/', { view: 'collection', collectionId: 'shadcn' }], ['/charts/01-line/', { view: 'case', caseId: '01-line' }], ['/embed/01-line/', { view: 'embed', caseId: '01-line' }], ['/unknown/', { view: 'not-found' }], @@ -28,6 +29,12 @@ describe('catalog routes', () => { '/catalog', ), ).toBe('/catalog/charts/chart%20with%20spaces/') + expect( + catalogRouteHref( + { view: 'collection', collectionId: 'shadcn charts' }, + '/catalog', + ), + ).toBe('/catalog/collections/shadcn%20charts/') }) it('preserves the production catalog base for direct embed routes', () => { diff --git a/examples/conformance/src/routes.ts b/examples/conformance/src/routes.ts index c54f1260..765d04e5 100644 --- a/examples/conformance/src/routes.ts +++ b/examples/conformance/src/routes.ts @@ -1,6 +1,7 @@ export type CatalogRoute = | { view: 'index' } | { view: 'all' } + | { view: 'collection'; collectionId: string } | { view: 'case'; caseId: string } | { view: 'embed'; caseId: string } | { view: 'not-found' } @@ -24,6 +25,10 @@ export function parseCatalogRoute( if (segments.length === 0) return { view: 'index' } if (segments.length === 1 && segments[0] === 'all') return { view: 'all' } + if (segments.length === 2 && segments[0] === 'collections' && segments[1]) { + return { view: 'collection', collectionId: segments[1] } + } + if (segments.length === 2 && segments[0] === 'charts' && segments[1]) { return { view: 'case', caseId: segments[1] } } @@ -43,6 +48,9 @@ export function catalogRouteHref( if (route.view === 'index') return base if (route.view === 'all') return `${base}all/` + if (route.view === 'collection') { + return `${base}collections/${encodeURIComponent(route.collectionId)}/` + } if (route.view === 'case') { return `${base}charts/${encodeURIComponent(route.caseId)}/` } diff --git a/examples/conformance/src/styles.css b/examples/conformance/src/styles.css index 4a397426..a43ba5a1 100644 --- a/examples/conformance/src/styles.css +++ b/examples/conformance/src/styles.css @@ -55,6 +55,18 @@ body { margin: 0; } +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + a { color: var(--accent); } @@ -761,6 +773,188 @@ dd { padding-block: 18vh; } +body.shadcn-catalog { + color: oklch(0.145 0 0); + background: oklch(1 0 0); + --panel: oklch(1 0 0); + --panel-muted: oklch(0.97 0 0); + --border: oklch(0.922 0 0); + --muted: oklch(0.556 0 0); + --accent: oklch(0.205 0 0); + --accent-muted: oklch(0.97 0 0); +} + +:root[data-theme='dark'] body.shadcn-catalog { + color: oklch(0.985 0 0); + background: oklch(0.145 0 0); + --panel: oklch(0.205 0 0); + --panel-muted: oklch(0.269 0 0); + --border: oklch(1 0 0 / 10%); + --muted: oklch(0.708 0 0); + --accent: oklch(0.985 0 0); + --accent-muted: oklch(0.269 0 0); +} + +.shadcn-catalog .site-header, +.shadcn-gallery { + width: min(100% - 32px, 1440px); + margin-inline: auto; +} + +.shadcn-gallery { + padding: 64px 0 96px; +} + +.shadcn-gallery-header { + display: flex; + align-items: end; + justify-content: space-between; + gap: 32px; + margin-bottom: 44px; +} + +.shadcn-gallery-header h1 { + margin-bottom: 10px; + font-size: clamp(2.5rem, 5vw, 4.5rem); + line-height: 1; + letter-spacing: -0.055em; +} + +.shadcn-gallery-header p { + margin: 0; + color: var(--muted); + font-size: 1rem; +} + +.shadcn-install { + display: flex; + overflow: hidden; + border: 1px solid var(--border); + border-radius: 10px; + background: var(--panel-muted); +} + +.shadcn-install code { + display: flex; + align-items: center; + padding: 0 14px; + font-size: 0.8rem; +} + +.shadcn-install button { + min-height: 42px; + border: 0; + border-left: 1px solid var(--border); + border-radius: 0; + background: transparent; + font-size: 0.78rem; + font-weight: 600; +} + +.shadcn-gallery-controls { + position: sticky; + z-index: 20; + top: 12px; + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 32px; + padding: 10px; + border: 1px solid color-mix(in srgb, var(--border) 85%, transparent); + border-radius: 12px; + background: color-mix(in srgb, var(--panel) 92%, transparent); + box-shadow: 0 10px 30px rgb(0 0 0 / 6%); + backdrop-filter: blur(16px); +} + +.shadcn-gallery-controls > label { + width: min(240px, 25vw); + flex: none; +} + +.shadcn-gallery-controls input, +.shadcn-gallery-controls > button, +.shadcn-gallery-controls nav button { + min-height: 36px; + border-radius: 8px; + font-size: 0.8rem; +} + +.shadcn-gallery-controls nav { + display: flex; + min-width: 0; + flex: 1; + gap: 4px; + overflow-x: auto; +} + +.shadcn-gallery-controls nav button { + flex: none; + border-color: transparent; + background: transparent; +} + +.shadcn-gallery-controls nav button[aria-pressed='true'] { + border-color: var(--border); + color: var(--accent); + background: var(--panel-muted); +} + +.shadcn-result-count { + margin-bottom: 14px; + color: var(--muted); + font-size: 0.78rem; +} + +.shadcn-chart-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); + gap: 40px 24px; +} + +.shadcn-chart-card { + min-width: 0; +} + +.shadcn-chart-preview { + display: grid; + min-width: 0; + overflow: hidden; + place-items: start center; + border-radius: 14px; + color: var(--muted); + background: var(--panel); + font-size: 0.8rem; +} + +.shadcn-chart-preview > span { + align-self: center; +} + +.shadcn-chart-card > footer { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 16px; + padding: 14px 2px 0; +} + +.shadcn-chart-card nav { + display: flex; + gap: 12px; +} + +.shadcn-chart-card nav a { + color: var(--muted); + font-size: 0.76rem; + font-weight: 550; + text-decoration: none; +} + +.shadcn-chart-card nav a:hover { + color: var(--accent); +} + html.embed-mode, body.embed-mode { min-width: 0; @@ -809,6 +1003,40 @@ body.embed-mode { padding-top: 48px; } + .shadcn-gallery { + padding-top: 40px; + } + + .shadcn-gallery-header { + align-items: stretch; + flex-direction: column; + margin-bottom: 28px; + } + + .shadcn-install { + width: max-content; + max-width: 100%; + } + + .shadcn-gallery-controls { + position: static; + align-items: stretch; + flex-wrap: wrap; + } + + .shadcn-gallery-controls > label { + width: 100%; + } + + .shadcn-gallery-controls nav { + order: 3; + width: 100%; + } + + .shadcn-gallery-controls > button { + margin-left: auto; + } + .summary { width: 100%; min-width: 0; diff --git a/package.json b/package.json index c78543d7..888a1296 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,11 @@ "catalog:index:check": "nx run charts-workspace:catalog-index-check", "catalog:previews": "node scripts/catalog-preview.mjs --write", "catalog:previews:check": "nx run charts-workspace:catalog-preview-check", + "shadcn:catalog:check": "node scripts/shadcn-catalog.mjs", + "shadcn:catalog:generate": "node scripts/generate-shadcn-cases.mjs", + "shadcn:references": "node scripts/shadcn-reference-screenshots.mjs", + "shadcn:visual": "node scripts/shadcn-visual-parity.mjs", + "shadcn:catalog:upstream": "node scripts/shadcn-catalog.mjs --remote", "dev:charts-react": "pnpm --filter @charts-poc/react-example dev", "dev:charts-octane": "pnpm --filter @charts-poc/octane-example dev", "dev:conformance": "pnpm --filter @charts-poc/conformance-example dev", @@ -129,7 +134,9 @@ "jsdom": "^29.0.2", "nx": "22.7.5", "octane": "0.1.13", + "pixelmatch": "7.1.0", "playwright": "1.62.0", + "pngjs": "7.0.0", "prettier": "^3.8.4", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/packages/charts-core/docs/guides/tooltips-and-focus.md b/packages/charts-core/docs/guides/tooltips-and-focus.md index aa66960b..988f12bf 100644 --- a/packages/charts-core/docs/guides/tooltips-and-focus.md +++ b/packages/charts-core/docs/guides/tooltips-and-focus.md @@ -255,6 +255,25 @@ transient tooltip. Click, Enter, or Space can still pin the focused point; only the pinned surface and adapter body are mounted. The default is `visibility: 'focus'`. +## Tooltip motion + +A static chart motion transition also animates tooltip entry, movement between +points, and exit: + +```ts +const definition = defineChart({ + marks, + motion: { + transition: { type: 'spring', stiffness: 170, damping: 18, mass: 1 }, + }, + tooltip, +}) +``` + +Set `tooltip.motion` to another transition to override the chart transition, or +set it to `false` to keep the tooltip immediate. Reduced-motion preferences +disable these animations. + ## Application-owned pointer timing Set definition `pointer: false` when the application decides when inspection diff --git a/packages/charts-core/docs/reference/marks/bar-and-rect.md b/packages/charts-core/docs/reference/marks/bar-and-rect.md index b5d3d4a2..a5147b45 100644 --- a/packages/charts-core/docs/reference/marks/bar-and-rect.md +++ b/packages/charts-core/docs/reference/marks/bar-and-rect.md @@ -32,23 +32,27 @@ function barY( ### Options -| Option | Type | Default | Meaning | -| -------------- | ------------------------------------ | ------------------------------ | ------------------------------------------------ | -| `id` | `string` | Layer-derived | Stable mark ID | -| `x` | `Channel` | Row index | Bar category or center | -| `y` | `Channel` | Numeric datum | Length; implicitly stacked at each x | -| `y1` | `number \| Channel` | Implicit stack start | Explicit baseline endpoint | -| `y2` | `number \| Channel` | Implicit stack end | Explicit value endpoint; takes precedence over y | -| `z` | `Channel` | No group | Group identity; color fallback when omitted | -| `color` | `Channel` | `z` | Independent value sent to the chart color scale | -| `key` | `Channel` | Top/nested `id`, x, then index | Stable scene and interaction identity | -| `fill` | `VisualChannel` | Resolved `color` | Final bar paint override | -| `fillOpacity` | `number` | SVG default | Fill opacity | -| `layout` | `GroupLayout \| StackLayout` | Implicit diverging stack | Configures grouping or stack order/offset | -| `inset` | `number` | `0` | Pixels removed from both categorical edges | -| `maxThickness` | `number` | Unbounded | Maximum painted width after grouping and inset | -| `radius` | `number` | None | SVG rectangle corner radius | -| `states` | `readonly ChartMarkState[]` | None | Focus-driven presentation overrides | +| Option | Type | Default | Meaning | +| ----------------- | ------------------------------------ | ------------------------------ | ------------------------------------------------ | +| `id` | `string` | Layer-derived | Stable mark ID | +| `x` | `Channel` | Row index | Bar category or center | +| `y` | `Channel` | Numeric datum | Length; implicitly stacked at each x | +| `y1` | `number \| Channel` | Implicit stack start | Explicit baseline endpoint | +| `y2` | `number \| Channel` | Implicit stack end | Explicit value endpoint; takes precedence over y | +| `z` | `Channel` | No group | Group identity; color fallback when omitted | +| `color` | `Channel` | `z` | Independent value sent to the chart color scale | +| `key` | `Channel` | Top/nested `id`, x, then index | Stable scene and interaction identity | +| `fill` | `VisualChannel` | Resolved `color` | Final bar paint override | +| `fillOpacity` | `number` | SVG default | Fill opacity | +| `stroke` | `VisualChannel` | None | Bar outline color | +| `strokeOpacity` | `number` | SVG default | Bar outline opacity | +| `strokeWidth` | `number` | SVG default | Bar outline width | +| `strokeDasharray` | `VisualChannel` | None | SVG outline dash pattern | +| `layout` | `GroupLayout \| StackLayout` | Implicit diverging stack | Configures grouping or stack order/offset | +| `inset` | `number` | `0` | Pixels removed from both categorical edges | +| `maxThickness` | `number` | Unbounded | Maximum painted width after grouping and inset | +| `radius` | `number` | None | SVG rectangle corner radius | +| `states` | `readonly ChartMarkState[]` | None | Focus-driven presentation overrides | The interaction point is at the group-band center and the `y2`/`y` endpoint. Its semantic `xValue` is x and its `yValue` is the value endpoint. diff --git a/packages/charts-core/docs/reference/marks/polar.md b/packages/charts-core/docs/reference/marks/polar.md index 560234bf..53f09798 100644 --- a/packages/charts-core/docs/reference/marks/polar.md +++ b/packages/charts-core/docs/reference/marks/polar.md @@ -338,7 +338,8 @@ function angleGrid(options?: AngleGridOptions): PolarGuide `radialGrid` draws radius values as circles or polygons. Supply explicit `values`, or let `ticks` request values from the configured radius scale. Labels are off by default. Label angle, offset, rotation, format, fill, and -font size are configurable. +font size are configurable. Ring `fill` and `fillOpacity` can layer filled +circle or polygon grids behind the chart marks. `angleGrid` draws spokes for explicit `values` or the configured angle domain. It can show labels around the circumference with `format` and `labelOffset`. diff --git a/packages/charts-core/src/bar.ts b/packages/charts-core/src/bar.ts index f91fee1d..e9ca90c5 100644 --- a/packages/charts-core/src/bar.ts +++ b/packages/charts-core/src/bar.ts @@ -43,6 +43,10 @@ export interface BarYOptions extends ChartMarkMotionOptions { key?: Channel fill?: VisualChannel fillOpacity?: number + stroke?: VisualChannel + strokeOpacity?: number + strokeWidth?: number + strokeDasharray?: VisualChannel layout?: BarLayout /** Pixels removed from both categorical edges after band layout. */ inset?: number @@ -63,6 +67,10 @@ export interface BarXOptions extends ChartMarkMotionOptions { key?: Channel fill?: VisualChannel fillOpacity?: number + stroke?: VisualChannel + strokeOpacity?: number + strokeWidth?: number + strokeDasharray?: VisualChannel layout?: BarLayout /** Pixels removed from both categorical edges after band layout. */ inset?: number @@ -198,6 +206,20 @@ export function barY( data, resolvedColor, ) + const stroke = visualValue( + options.stroke, + datum, + datumIndex, + data, + 'none', + ) + const strokeDasharray = visualValue( + options.strokeDasharray, + datum, + datumIndex, + data, + 'none', + ) const center = scales.x.map(xValue) const baselinePosition = scales.y.map(y1Value) const valuePosition = scales.y.map(y2Value) @@ -239,6 +261,10 @@ export function barY( style: { fill, fillOpacity: options.fillOpacity, + stroke, + strokeOpacity: options.strokeOpacity, + strokeWidth: options.strokeWidth, + strokeDasharray, }, }) }) @@ -385,6 +411,20 @@ export function barX( data, resolvedColor, ) + const stroke = visualValue( + options.stroke, + datum, + datumIndex, + data, + 'none', + ) + const strokeDasharray = visualValue( + options.strokeDasharray, + datum, + datumIndex, + data, + 'none', + ) const baselinePosition = scales.x.map(x1Value) const valuePosition = scales.x.map(x2Value) const center = scales.y.map(yValue) @@ -426,6 +466,10 @@ export function barX( style: { fill, fillOpacity: options.fillOpacity, + stroke, + strokeOpacity: options.strokeOpacity, + strokeWidth: options.strokeWidth, + strokeDasharray, }, }) }) diff --git a/packages/charts-core/src/dom-types.ts b/packages/charts-core/src/dom-types.ts index e511e3c3..1a492009 100644 --- a/packages/charts-core/src/dom-types.ts +++ b/packages/charts-core/src/dom-types.ts @@ -5,6 +5,7 @@ import type { ChartFocusState, ChartHostControl, ChartHostControlExtensionToken, + ChartMotionTransition, ChartPoint, ChartScene, ChartSvgRenderer, @@ -171,6 +172,7 @@ export interface ChartTooltipExtensionContext< > { container: HTMLElement dismiss: () => void + motion: () => ChartMotionTransition | undefined bodyChange: () => | (( target: ChartTooltipBodyTarget | null, diff --git a/packages/charts-core/src/marks.test.ts b/packages/charts-core/src/marks.test.ts index 10cf9b46..7cf29605 100644 --- a/packages/charts-core/src/marks.test.ts +++ b/packages/charts-core/src/marks.test.ts @@ -58,6 +58,69 @@ describe('core marks and categorical scales', () => { expect(scene.points.map((point) => point.datum)).toEqual(data) }) + it('resolves authored bar outlines in both orientations', () => { + const data = [ + { id: 'a', category: 'Alpha', value: 12, stroke: 'red' }, + { id: 'b', category: 'Beta', value: 18, stroke: 'blue' }, + ] + const vertical = createChartScene( + defineChart({ + marks: [ + barY(data, { + x: 'category', + y: 'value', + stroke: (row) => row.stroke, + strokeOpacity: 0.75, + strokeWidth: 2, + strokeDasharray: (row) => (row.id === 'a' ? '4 2' : '2 1'), + }), + ], + ...bandXAxes(['Alpha', 'Beta'], [0, 18]), + }), + { width: 480, height: 260 }, + ) + const horizontal = createChartScene( + defineChart({ + marks: [ + barX(data, { + x: 'value', + y: 'category', + stroke: (row) => row.stroke, + strokeOpacity: 0.75, + strokeWidth: 2, + strokeDasharray: (row) => (row.id === 'a' ? '4 2' : '2 1'), + }), + ], + ...bandYAxes([0, 18], ['Alpha', 'Beta']), + }), + { width: 480, height: 260 }, + ) + const verticalBars = flatten(vertical.nodes).filter( + (node) => node.kind === 'rect', + ) + const horizontalBars = flatten(horizontal.nodes).filter( + (node) => node.kind === 'rect', + ) + + expect(verticalBars.map((node) => node.style)).toEqual([ + expect.objectContaining({ + stroke: 'red', + strokeOpacity: 0.75, + strokeWidth: 2, + strokeDasharray: '4 2', + }), + expect.objectContaining({ + stroke: 'blue', + strokeOpacity: 0.75, + strokeWidth: 2, + strokeDasharray: '2 1', + }), + ]) + expect(horizontalBars.map((node) => node.style)).toEqual( + verticalBars.map((node) => node.style), + ) + }) + it('caps resolved bar thickness without guessing final chart dimensions', () => { const data = [ { id: 'a', category: 'Alpha', value: 12 }, diff --git a/packages/charts-core/src/polar.test.ts b/packages/charts-core/src/polar.test.ts index bea063b8..42ece8dd 100644 --- a/packages/charts-core/src/polar.test.ts +++ b/packages/charts-core/src/polar.test.ts @@ -297,6 +297,8 @@ describe('polar marks', () => { values: [50, 100], shape: 'polygon', labels: true, + fill: '#dbeafe', + fillOpacity: 0.2, }), angleGrid(), ], @@ -382,6 +384,11 @@ describe('polar marks', () => { expect( nodes.filter((node) => node.kind === 'polyline').length, ).toBeGreaterThanOrEqual(3) + expect( + nodes.find( + (node) => node.kind === 'polyline' && node.style?.fill === '#dbeafe', + ), + ).toMatchObject({ style: { fillOpacity: 0.2 } }) expect(scene.points).toHaveLength(9) expect( Math.max(...scene.points.map((point) => point.x)), diff --git a/packages/charts-core/src/polar.ts b/packages/charts-core/src/polar.ts index e5dc3462..80ddb960 100644 --- a/packages/charts-core/src/polar.ts +++ b/packages/charts-core/src/polar.ts @@ -1726,6 +1726,8 @@ interface PolarGuideStyle { strokeOpacity?: number strokeWidth?: number strokeDasharray?: string + fill?: string + fillOpacity?: number labels?: boolean labelFill?: string labelFontSize?: number @@ -1778,7 +1780,8 @@ export function radialGrid(options: RadialGridOptions = {}): PolarGuide { points: [], path, style: { - fill: 'none', + fill: options.fill ?? 'none', + fillOpacity: options.fillOpacity, stroke, strokeOpacity: options.strokeOpacity, strokeWidth: options.strokeWidth ?? 1, diff --git a/packages/charts-core/src/renderer.test.ts b/packages/charts-core/src/renderer.test.ts index 6f57b2ee..6c7853d6 100644 --- a/packages/charts-core/src/renderer.test.ts +++ b/packages/charts-core/src/renderer.test.ts @@ -173,6 +173,74 @@ describe('renderer-neutral chart host', () => { expect(container.childElementCount).toBe(0) }) + it('inherits chart spring motion for tooltip entry and exit', () => { + const descriptor = Object.getOwnPropertyDescriptor( + window.HTMLElement.prototype, + 'animate', + ) + const animations: Array<{ + cancel: ReturnType + onfinish: (() => void) | null + }> = [] + const animate = vi.fn( + (frames: Keyframe[], options: KeyframeAnimationOptions) => { + const animation = { cancel: vi.fn(), onfinish: null } + animations.push(animation) + return animation as unknown as Animation + }, + ) + Object.defineProperty(window.HTMLElement.prototype, 'animate', { + configurable: true, + value: animate, + }) + const fake = createFakeRenderer() + const container = document.createElement('div') + const host = mountChartRenderer(container, { + definition: defineChart(definition, { + maxFocusDistance: 1_000, + motion: { + transition: { + type: 'spring', + stiffness: 170, + damping: 18, + mass: 1, + }, + }, + tooltip: tooltipExtension, + }), + renderer: fake.renderer, + width: 480, + height: 260, + ariaLabel: 'Spring tooltip', + }) + + try { + fake.element.dispatchEvent( + new MouseEvent('pointermove', { + bubbles: true, + clientX: 123, + clientY: 45, + }), + ) + const enterFrames = animate.mock.calls[0]?.[0] + const enterOptions = animate.mock.calls[0]?.[1] + expect(enterFrames?.length).toBeGreaterThan(2) + expect(enterOptions).toMatchObject({ easing: 'linear', fill: 'both' }) + + fake.element.dispatchEvent( + new MouseEvent('mouseleave', { bubbles: true }), + ) + const tooltip = container.querySelector('.ts-chart-tooltip') + expect(animate).toHaveBeenCalledTimes(2) + expect(tooltip?.hidden).toBe(false) + animations.at(-1)?.onfinish?.() + expect(tooltip?.hidden).toBe(true) + } finally { + host.destroy() + restoreProperty(window.HTMLElement.prototype, 'animate', descriptor) + } + }) + it('delegates controlled client coordinate conversion to the mounted surface', () => { const fake = createFakeRenderer() const container = document.createElement('div') diff --git a/packages/charts-core/src/renderer.ts b/packages/charts-core/src/renderer.ts index ef870dc4..d6af7907 100644 --- a/packages/charts-core/src/renderer.ts +++ b/packages/charts-core/src/renderer.ts @@ -42,6 +42,7 @@ import type { ChartTooltipInput, ChartTooltipOptions, ChartTooltipPosition, + ChartMotionTransition, ChartValue, } from './types' @@ -1023,6 +1024,7 @@ export function mountChartRenderer< tooltipInstance = input.extension.create({ container, dismiss: dismissTooltip, + motion: resolveTooltipMotion, bodyChange: () => options.onTooltipBodyChange, }) } @@ -1044,6 +1046,11 @@ export function mountChartRenderer< }) } + function resolveTooltipMotion(): ChartMotionTransition | undefined { + const definition = options.definition.motion + return typeof definition === 'function' ? undefined : definition?.transition + } + function syncTooltip() { const input = resolveTooltipInput(options.definition.tooltip) if (!input) { diff --git a/packages/charts-core/src/tooltip.ts b/packages/charts-core/src/tooltip.ts index c3c62ede..539ecbda 100644 --- a/packages/charts-core/src/tooltip.ts +++ b/packages/charts-core/src/tooltip.ts @@ -1,4 +1,5 @@ import { placeTooltip } from './tooltip-position' +import { createChartSpring } from './spring' import { createChartTooltipContent, orderChartTooltipPoints, @@ -22,6 +23,7 @@ import type { ChartTooltipItem, ChartTooltipOptions, ChartTooltipPortalOptions, + ChartMotionTransition, ChartValue, } from './types' @@ -79,6 +81,8 @@ function createTooltipExtension< let anchor: { x: number; y: number } | null = null let positionFrame: number | undefined let resizeObserver: ResizeObserver | undefined + let tooltipAnimation: Animation | undefined + let hideGeneration = 0 let portalExtension: ChartTooltipPortalExtension | undefined let portalInstance: ChartTooltipPortalExtensionInstance | undefined const { container } = extensionContext @@ -137,6 +141,12 @@ function createTooltipExtension< tooltipElement.style.pointerEvents = nextContext.pinned ? 'auto' : 'none' tooltipElement.style.userSelect = nextContext.pinned ? 'text' : 'none' tooltipElement.dataset.sticky = String(nextContext.pinned) + const entering = tooltipElement.hasAttribute('hidden') + const previousLeft = finiteStyleNumber(tooltipElement.style.left) + const previousTop = finiteStyleNumber(tooltipElement.style.top) + hideGeneration += 1 + tooltipAnimation?.cancel() + tooltipAnimation = undefined tooltipElement.style.visibility = 'hidden' tooltipElement.removeAttribute('hidden') anchor = resolveChartTooltipAnchor( @@ -149,6 +159,7 @@ function createTooltipExtension< ) position() tooltipElement.style.removeProperty('visibility') + animateVisibleTooltip(tooltipElement, entering, previousLeft, previousTop) } function ensureElement() { @@ -317,9 +328,42 @@ function createTooltipExtension< function hide() { paintContext = undefined anchor = null - portalInstance?.hide() - element?.setAttribute('hidden', '') - hideTooltipBody() + const currentElement = element + if (!currentElement || currentElement.hidden) { + portalInstance?.hide() + hideTooltipBody() + return + } + const transition = resolveMotion() + if (!transition || prefersReducedMotion()) { + portalInstance?.hide() + currentElement.setAttribute('hidden', '') + hideTooltipBody() + return + } + const generation = ++hideGeneration + tooltipAnimation?.cancel() + tooltipAnimation = animateTooltip( + currentElement, + transition, + { opacity: 1, scale: 1, x: 0, y: 0 }, + { opacity: 0, scale: 0.96, x: 0, y: 0 }, + ) + if (!tooltipAnimation) { + portalInstance?.hide() + currentElement.setAttribute('hidden', '') + hideTooltipBody() + return + } + tooltipAnimation.onfinish = () => { + if (generation !== hideGeneration) return + portalInstance?.hide() + currentElement.setAttribute('hidden', '') + currentElement.style.removeProperty('opacity') + currentElement.style.removeProperty('transform') + hideTooltipBody() + tooltipAnimation = undefined + } } function destroy() { @@ -332,6 +376,8 @@ function createTooltipExtension< view?.cancelAnimationFrame?.(positionFrame) positionFrame = undefined } + tooltipAnimation?.cancel() + tooltipAnimation = undefined resizeObserver?.disconnect() resizeObserver = undefined element?.remove() @@ -345,6 +391,143 @@ function createTooltipExtension< contains: (target) => Boolean(target && element?.contains(target as Node)), destroy, } + + function resolveMotion() { + return options.motion === false + ? undefined + : (options.motion ?? extensionContext.motion()) + } + + function prefersReducedMotion() { + return Boolean( + view?.matchMedia?.('(prefers-reduced-motion: reduce)').matches, + ) + } + + function animateVisibleTooltip( + tooltipElement: HTMLElement, + entering: boolean, + previousLeft: number | undefined, + previousTop: number | undefined, + ) { + const transition = resolveMotion() + if (!transition || prefersReducedMotion()) { + tooltipElement.style.removeProperty('opacity') + tooltipElement.style.removeProperty('transform') + return + } + const nextLeft = finiteStyleNumber(tooltipElement.style.left) + const nextTop = finiteStyleNumber(tooltipElement.style.top) + const x = + entering || previousLeft === undefined || nextLeft === undefined + ? 0 + : previousLeft - nextLeft + const y = + entering || previousTop === undefined || nextTop === undefined + ? 0 + : previousTop - nextTop + if (!entering && Math.abs(x) < 0.5 && Math.abs(y) < 0.5) return + tooltipAnimation = animateTooltip( + tooltipElement, + transition, + { + opacity: entering ? 0 : 1, + scale: entering ? 0.96 : 1, + x, + y, + }, + { opacity: 1, scale: 1, x: 0, y: 0 }, + ) + if (tooltipAnimation) { + tooltipAnimation.onfinish = () => { + tooltipElement.style.removeProperty('opacity') + tooltipElement.style.removeProperty('transform') + tooltipAnimation = undefined + } + } + } +} + +interface TooltipMotionState { + opacity: number + scale: number + x: number + y: number +} + +function animateTooltip( + element: HTMLElement, + transition: ChartMotionTransition, + from: TooltipMotionState, + to: TooltipMotionState, +) { + if (typeof element.animate !== 'function') return undefined + const sampled = tooltipMotionSamples(transition) + const keyframes = sampled.values.map((progress, index) => ({ + offset: sampled.offsets[index], + opacity: interpolate(from.opacity, to.opacity, progress), + transform: `translate(${interpolate(from.x, to.x, progress)}px, ${interpolate(from.y, to.y, progress)}px) scale(${interpolate(from.scale, to.scale, progress)})`, + })) + return element.animate(keyframes, { + duration: sampled.duration, + easing: sampled.easing, + fill: 'both', + }) +} + +function tooltipMotionSamples(transition: ChartMotionTransition) { + if (transition.type !== 'spring') { + if (typeof transition.easing === 'function') { + const offsets = Array.from({ length: 31 }, (_, index) => index / 30) + return { + duration: Math.max(0, transition.duration ?? 250), + easing: 'linear', + offsets, + values: offsets.map(transition.easing), + } + } + return { + duration: Math.max(0, transition.duration ?? 250), + easing: transition.easing ?? 'ease-out', + offsets: [0, 1], + values: [0, 1], + } + } + const spring = createChartSpring(transition) + const offsets: number[] = [] + const values: number[] = [] + let duration = 0 + for (let elapsed = 0; elapsed <= 2_000; elapsed += 16) { + const sample = spring.sample(elapsed) + duration = elapsed + offsets.push(elapsed) + values.push(sample.value) + if (sample.done && elapsed > 0) break + } + if (duration === 0) + return { + duration: 0, + easing: 'linear', + offsets: [0, 1], + values: [0, 1], + } + offsets[offsets.length - 1] = duration + values[values.length - 1] = 1 + return { + duration, + easing: 'linear', + offsets: offsets.map((elapsed) => elapsed / duration), + values, + } +} + +function interpolate(from: number, to: number, progress: number) { + return from + (to - from) * progress +} + +function finiteStyleNumber(value: string) { + const number = Number.parseFloat(value) + return Number.isFinite(number) ? number : undefined } function samePointList( diff --git a/packages/charts-core/src/types.ts b/packages/charts-core/src/types.ts index 8442e47a..6aedf093 100644 --- a/packages/charts-core/src/types.ts +++ b/packages/charts-core/src/types.ts @@ -1403,6 +1403,8 @@ export interface ChartTooltipOptions< TYValue extends ChartValue = ChartValue, > { className?: string + /** Animates tooltip entry, movement, and exit. Inherits a static chart-level transition when omitted. */ + motion?: false | ChartMotionTransition portal?: ChartTooltipPortalInput items?: readonly ChartTooltipItem[] sort?: ChartTooltipSort diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31744f11..5c220700 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,7 @@ settings: excludeLinksFromLockfile: false importers: + .: devDependencies: '@changesets/changelog-github': @@ -199,9 +200,15 @@ importers: octane: specifier: 0.1.13 version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)) + pixelmatch: + specifier: 7.1.0 + version: 7.1.0 playwright: specifier: 1.62.0 version: 1.62.0 + pngjs: + specifier: 7.0.0 + version: 7.0.0 prettier: specifier: ^3.8.4 version: 3.9.6 @@ -943,29 +950,21 @@ importers: version: 3.5.40(typescript@6.0.3) packages: + '@ampproject/remapping@2.3.0': - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} '@angular/common@22.0.8': - resolution: - { - integrity: sha512-FnwkXndUgAyWk1/p5flMfocIUtuuneJ01mxC1FxRc5/bdWTyNVeQDsM9Lw4PEAPc0AHu//EnblegRq8o6LGdUQ==, - } - engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } + resolution: {integrity: sha512-FnwkXndUgAyWk1/p5flMfocIUtuuneJ01mxC1FxRc5/bdWTyNVeQDsM9Lw4PEAPc0AHu//EnblegRq8o6LGdUQ==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: '@angular/core': 22.0.8 rxjs: ^6.5.3 || ^7.4.0 '@angular/compiler-cli@22.0.8': - resolution: - { - integrity: sha512-shBqaUxMtqriv4UG2MHmYT8GSvDizI40mUFkOfeQ1yRJ2C9dk0TnWKPwjSO7o6bs6UiU6V8Y3uSWdmfCGVVZAA==, - } - engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } + resolution: {integrity: sha512-shBqaUxMtqriv4UG2MHmYT8GSvDizI40mUFkOfeQ1yRJ2C9dk0TnWKPwjSO7o6bs6UiU6V8Y3uSWdmfCGVVZAA==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} hasBin: true peerDependencies: '@angular/compiler': 22.0.8 @@ -975,18 +974,12 @@ packages: optional: true '@angular/compiler@22.0.8': - resolution: - { - integrity: sha512-ot7rvntfkZsPHmp8yl6PWUj/yG4e50X0+YeR7QYy/rEYKBiIg91w8GwjxSzaF4g5+bzJGDv7l/XnachKm0IySg==, - } - engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } + resolution: {integrity: sha512-ot7rvntfkZsPHmp8yl6PWUj/yG4e50X0+YeR7QYy/rEYKBiIg91w8GwjxSzaF4g5+bzJGDv7l/XnachKm0IySg==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} '@angular/core@22.0.8': - resolution: - { - integrity: sha512-HagZZVzbtXd+ZhMb++k/HOtr/UTiBROHHH7xutgYgnSnPRXX0kCca5EQ02OZ/OCWfsMP5liSJDfwiePFULKA6Q==, - } - engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } + resolution: {integrity: sha512-HagZZVzbtXd+ZhMb++k/HOtr/UTiBROHHH7xutgYgnSnPRXX0kCca5EQ02OZ/OCWfsMP5liSJDfwiePFULKA6Q==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: '@angular/compiler': 22.0.8 rxjs: ^6.5.3 || ^7.4.0 @@ -998,11 +991,8 @@ packages: optional: true '@angular/platform-browser-dynamic@22.0.8': - resolution: - { - integrity: sha512-HQ5GeMoKqd2eMy9hHga1F0yumhrt4gVlhoP8YfmQnZWluVagdyinUpGdd3dNiuYjLcbHB+KXdW9c6LnqEmU+dg==, - } - engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } + resolution: {integrity: sha512-HQ5GeMoKqd2eMy9hHga1F0yumhrt4gVlhoP8YfmQnZWluVagdyinUpGdd3dNiuYjLcbHB+KXdW9c6LnqEmU+dg==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} deprecated: '@angular/platform-browser-dynamic is deprecated. Use `@angular/platform-browser` instead.' peerDependencies: '@angular/common': 22.0.8 @@ -1011,11 +1001,8 @@ packages: '@angular/platform-browser': 22.0.8 '@angular/platform-browser@22.0.8': - resolution: - { - integrity: sha512-FllGHCayu5Dv82HAA9ORL04Xf+In9JGMbQ1Vn4QnhrAVxBz182vm+ZwszLzRDSAwmfeIjZDeK49tKAcqHR9XNg==, - } - engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } + resolution: {integrity: sha512-FllGHCayu5Dv82HAA9ORL04Xf+In9JGMbQ1Vn4QnhrAVxBz182vm+ZwszLzRDSAwmfeIjZDeK49tKAcqHR9XNg==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: '@angular/animations': 22.0.8 '@angular/common': 22.0.8 @@ -1038,782 +1025,482 @@ packages: rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@5.1.11': - resolution: - { - integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} '@asamuzakjp/dom-selector@7.1.1': - resolution: - { - integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} '@asamuzakjp/generational-cache@1.0.1': - resolution: - { - integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} '@asamuzakjp/nwsapi@2.3.9': - resolution: - { - integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==, - } + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@babel/code-frame@7.29.7': - resolution: - { - integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} '@babel/compat-data@7.29.7': - resolution: - { - integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} '@babel/core@7.29.7': - resolution: - { - integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} '@babel/generator@7.29.7': - resolution: - { - integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.29.7': - resolution: - { - integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.29.7': - resolution: - { - integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.29.7': - resolution: - { - integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-create-regexp-features-plugin@7.29.7': - resolution: - { - integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-define-polyfill-provider@0.6.8': - resolution: - { - integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==, - } + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 '@babel/helper-globals@7.29.7': - resolution: - { - integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} '@babel/helper-member-expression-to-functions@7.29.7': - resolution: - { - integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.18.6': - resolution: - { - integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.29.7': - resolution: - { - integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} '@babel/helper-module-transforms@7.29.7': - resolution: - { - integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-optimise-call-expression@7.29.7': - resolution: - { - integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.29.7': - resolution: - { - integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.29.7': - resolution: - { - integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-replace-supers@7.29.7': - resolution: - { - integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-skip-transparent-expression-wrappers@7.29.7': - resolution: - { - integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.29.7': - resolution: - { - integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.29.7': - resolution: - { - integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.29.7': - resolution: - { - integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} '@babel/helper-wrap-function@7.29.7': - resolution: - { - integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} + engines: {node: '>=6.9.0'} '@babel/helpers@7.29.7': - resolution: - { - integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} '@babel/parser@7.29.7': - resolution: - { - integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} hasBin: true '@babel/plugin-proposal-decorators@7.29.7': - resolution: - { - integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-export-default-from@7.29.7': - resolution: - { - integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-decorators@7.29.7': - resolution: - { - integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: - { - integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, - } + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-export-default-from@7.29.7': - resolution: - { - integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-flow@7.29.7': - resolution: - { - integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-jsx@7.29.7': - resolution: - { - integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-typescript@7.29.7': - resolution: - { - integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-generator-functions@7.29.7': - resolution: - { - integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-to-generator@7.29.7': - resolution: - { - integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-block-scoping@7.29.7': - resolution: - { - integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-properties@7.29.7': - resolution: - { - integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-static-block@7.29.7': - resolution: - { - integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 '@babel/plugin-transform-classes@7.29.7': - resolution: - { - integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-destructuring@7.29.7': - resolution: - { - integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-export-namespace-from@7.29.7': - resolution: - { - integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-flow-strip-types@7.29.7': - resolution: - { - integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-for-of@7.29.7': - resolution: - { - integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-logical-assignment-operators@7.29.7': - resolution: - { - integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-commonjs@7.29.7': - resolution: - { - integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': - resolution: - { - integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': - resolution: - { - integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-object-rest-spread@7.29.7': - resolution: - { - integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-catch-binding@7.29.7': - resolution: - { - integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-chaining@7.29.7': - resolution: - { - integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-parameters@7.29.7': - resolution: - { - integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-methods@7.29.7': - resolution: - { - integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-property-in-object@7.29.7': - resolution: - { - integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-display-name@7.29.7': - resolution: - { - integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-development@7.29.7': - resolution: - { - integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-self@7.29.7': - resolution: - { - integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-source@7.29.7': - resolution: - { - integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx@7.29.7': - resolution: - { - integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-pure-annotations@7.29.7': - resolution: - { - integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-regenerator@7.29.7': - resolution: - { - integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-runtime@7.29.7': - resolution: - { - integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-typescript@7.29.7': - resolution: - { - integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-regex@7.29.7': - resolution: - { - integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/preset-typescript@7.29.7': - resolution: - { - integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/runtime@7.29.7': - resolution: - { - integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} '@babel/template@7.29.7': - resolution: - { - integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} '@babel/traverse@7.29.7': - resolution: - { - integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + engines: {node: '>=6.9.0'} '@babel/types@7.29.7': - resolution: - { - integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} '@bramus/specificity@2.4.2': - resolution: - { - integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==, - } + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true '@changesets/apply-release-plan@7.1.1': - resolution: - { - integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==, - } + resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} '@changesets/assemble-release-plan@6.0.10': - resolution: - { - integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==, - } + resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} '@changesets/changelog-git@0.2.1': - resolution: - { - integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==, - } + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} '@changesets/changelog-github@0.7.0': - resolution: - { - integrity: sha512-rBsbRvc4TVn+FvFnOVM3LxlFJfTXXCp8gfVJ+0BubxWNSVnLuAzowi5j+IEraLLP52w8AAs9QfKbPS3MMiXQJA==, - } + resolution: {integrity: sha512-rBsbRvc4TVn+FvFnOVM3LxlFJfTXXCp8gfVJ+0BubxWNSVnLuAzowi5j+IEraLLP52w8AAs9QfKbPS3MMiXQJA==} '@changesets/cli@2.31.1': - resolution: - { - integrity: sha512-uO05WTcRBwuVOJVSW8Cmpqw6q0WDL53ajGCMyszutvOe5toOnunbpM4jZzf+qxBOz7i0AzopZ8diBuewjmF40w==, - } + resolution: {integrity: sha512-uO05WTcRBwuVOJVSW8Cmpqw6q0WDL53ajGCMyszutvOe5toOnunbpM4jZzf+qxBOz7i0AzopZ8diBuewjmF40w==} hasBin: true '@changesets/config@3.1.4': - resolution: - { - integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==, - } + resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} '@changesets/errors@0.2.0': - resolution: - { - integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==, - } + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} '@changesets/get-dependents-graph@2.1.4': - resolution: - { - integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==, - } + resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} '@changesets/get-github-info@0.8.0': - resolution: - { - integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==, - } + resolution: {integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==} '@changesets/get-release-plan@4.0.16': - resolution: - { - integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==, - } + resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} '@changesets/get-version-range-type@0.4.0': - resolution: - { - integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==, - } + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} '@changesets/git@3.0.4': - resolution: - { - integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==, - } + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} '@changesets/logger@0.1.1': - resolution: - { - integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==, - } + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} '@changesets/parse@0.4.3': - resolution: - { - integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==, - } + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} '@changesets/pre@2.0.2': - resolution: - { - integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==, - } + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} '@changesets/read@0.6.7': - resolution: - { - integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==, - } + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} '@changesets/should-skip-package@0.1.2': - resolution: - { - integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==, - } + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} '@changesets/types@4.1.0': - resolution: - { - integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==, - } + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} '@changesets/types@6.1.0': - resolution: - { - integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==, - } + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} '@changesets/write@0.4.0': - resolution: - { - integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==, - } + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} '@csstools/color-helpers@6.1.0': - resolution: - { - integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==, - } - engines: { node: '>=20.19.0' } + resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==} + engines: {node: '>=20.19.0'} '@csstools/css-calc@3.3.0': - resolution: - { - integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==, - } - engines: { node: '>=20.19.0' } + resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} + engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-color-parser@4.1.10': - resolution: - { - integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==, - } - engines: { node: '>=20.19.0' } + resolution: {integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==} + engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-parser-algorithms@4.0.0': - resolution: - { - integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==, - } - engines: { node: '>=20.19.0' } + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-syntax-patches-for-csstree@1.1.7': - resolution: - { - integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==, - } + resolution: {integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -1821,522 +1508,342 @@ packages: optional: true '@csstools/css-tokenizer@4.0.0': - resolution: - { - integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==, - } - engines: { node: '>=20.19.0' } + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} '@emnapi/core@1.11.1': - resolution: - { - integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==, - } + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} '@emnapi/core@1.4.5': - resolution: - { - integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==, - } + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} '@emnapi/runtime@1.11.1': - resolution: - { - integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==, - } + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} '@emnapi/runtime@1.4.5': - resolution: - { - integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, - } + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} '@emnapi/wasi-threads@1.0.4': - resolution: - { - integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==, - } + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} '@emnapi/wasi-threads@1.2.2': - resolution: - { - integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==, - } + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} '@esbuild/aix-ppc64@0.27.7': - resolution: - { - integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.28.1': - resolution: - { - integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.27.7': - resolution: - { - integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.28.1': - resolution: - { - integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.27.7': - resolution: - { - integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-arm@0.28.1': - resolution: - { - integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-x64@0.27.7': - resolution: - { - integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/android-x64@0.28.1': - resolution: - { - integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.27.7': - resolution: - { - integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.28.1': - resolution: - { - integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.27.7': - resolution: - { - integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.28.1': - resolution: - { - integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.27.7': - resolution: - { - integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.28.1': - resolution: - { - integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.27.7': - resolution: - { - integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.28.1': - resolution: - { - integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.27.7': - resolution: - { - integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.28.1': - resolution: - { - integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.27.7': - resolution: - { - integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.28.1': - resolution: - { - integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.27.7': - resolution: - { - integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.28.1': - resolution: - { - integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.27.7': - resolution: - { - integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.28.1': - resolution: - { - integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.27.7': - resolution: - { - integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.28.1': - resolution: - { - integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.27.7': - resolution: - { - integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.28.1': - resolution: - { - integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.27.7': - resolution: - { - integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.28.1': - resolution: - { - integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.27.7': - resolution: - { - integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.28.1': - resolution: - { - integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.27.7': - resolution: - { - integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.28.1': - resolution: - { - integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.27.7': - resolution: - { - integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-arm64@0.28.1': - resolution: - { - integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.27.7': - resolution: - { - integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.28.1': - resolution: - { - integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.27.7': - resolution: - { - integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.28.1': - resolution: - { - integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.27.7': - resolution: - { - integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.28.1': - resolution: - { - integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openharmony-arm64@0.27.7': - resolution: - { - integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/openharmony-arm64@0.28.1': - resolution: - { - integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/sunos-x64@0.27.7': - resolution: - { - integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.28.1': - resolution: - { - integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.27.7': - resolution: - { - integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.28.1': - resolution: - { - integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.27.7': - resolution: - { - integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.28.1': - resolution: - { - integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.27.7': - resolution: - { - integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.28.1': - resolution: - { - integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} cpu: [x64] os: [win32] '@exodus/bytes@1.15.1': - resolution: - { - integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: '@noble/hashes': ^1.8.0 || ^2.0.0 peerDependenciesMeta: @@ -2344,10 +1851,7 @@ packages: optional: true '@expo/cli@57.0.11': - resolution: - { - integrity: sha512-ENXCwRyL8Q9qbabUmm0L6w9kXTmdGotW7eDEEWmUDXLPux+nEzNDqw0MzWQ5K3ZsXS51QmUJZg5yETB+6SnNRg==, - } + resolution: {integrity: sha512-ENXCwRyL8Q9qbabUmm0L6w9kXTmdGotW7eDEEWmUDXLPux+nEzNDqw0MzWQ5K3ZsXS51QmUJZg5yETB+6SnNRg==} hasBin: true peerDependencies: expo: '*' @@ -2360,40 +1864,22 @@ packages: optional: true '@expo/code-signing-certificates@0.0.6': - resolution: - { - integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==, - } + resolution: {integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==} '@expo/config-plugins@57.0.6': - resolution: - { - integrity: sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw==, - } + resolution: {integrity: sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw==} '@expo/config-types@57.0.2': - resolution: - { - integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==, - } + resolution: {integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==} '@expo/config@57.0.6': - resolution: - { - integrity: sha512-VpMJpB/De/fb9bBFVVBiK6Ntg9lt0kAleLH9hcZz85CYRUQ3jVFVA8rNC5f8y4cp2+FiiPNFp62+kEOFI6pDiw==, - } + resolution: {integrity: sha512-VpMJpB/De/fb9bBFVVBiK6Ntg9lt0kAleLH9hcZz85CYRUQ3jVFVA8rNC5f8y4cp2+FiiPNFp62+kEOFI6pDiw==} '@expo/devcert@1.2.1': - resolution: - { - integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==, - } + resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==} '@expo/devtools@57.0.1': - resolution: - { - integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==, - } + resolution: {integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==} peerDependencies: react: '*' react-native: '*' @@ -2404,64 +1890,37 @@ packages: optional: true '@expo/dom-webview@57.0.1': - resolution: - { - integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==, - } + resolution: {integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==} peerDependencies: expo: '*' react: '*' react-native: '*' '@expo/env@2.4.2': - resolution: - { - integrity: sha512-28pqaEqwnmLduZ00Pq9HkSzE5wbj1MTwp5/n8nm8rD8MCjR9eUnVOwmNksPI3Be2ReAPO/DbPn1puy0mvoocsQ==, - } - engines: { node: '>=20.12.0' } + resolution: {integrity: sha512-28pqaEqwnmLduZ00Pq9HkSzE5wbj1MTwp5/n8nm8rD8MCjR9eUnVOwmNksPI3Be2ReAPO/DbPn1puy0mvoocsQ==} + engines: {node: '>=20.12.0'} '@expo/expo-modules-macros-plugin@0.6.1': - resolution: - { - integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==, - } + resolution: {integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==} '@expo/fingerprint@0.20.6': - resolution: - { - integrity: sha512-cmC/6BOPRbdKr77Mgjwszb8aM0hY2RKBpMRCmjSdn9zIcn2FGor/ic4fHVr46cQFa1G6RDGg1GyAjRw3US4CCQ==, - } + resolution: {integrity: sha512-cmC/6BOPRbdKr77Mgjwszb8aM0hY2RKBpMRCmjSdn9zIcn2FGor/ic4fHVr46cQFa1G6RDGg1GyAjRw3US4CCQ==} hasBin: true '@expo/image-utils@0.11.4': - resolution: - { - integrity: sha512-pn/4770DIEOcYZr484uazuwg20FX/qaDkeMRF6J+oxejynDmEmO8wLsCudaNShFE0BhyKGQTYrs2rsRhqrqESw==, - } + resolution: {integrity: sha512-pn/4770DIEOcYZr484uazuwg20FX/qaDkeMRF6J+oxejynDmEmO8wLsCudaNShFE0BhyKGQTYrs2rsRhqrqESw==} '@expo/inline-modules@0.1.4': - resolution: - { - integrity: sha512-8bPSCm//dv8raYfrQ4x79rCX52vMw0QzmnYYl4eSOAvEbGvDPPRGGdbrhZZ7oihU+hI1sZNS5kYEgqODgFwfsw==, - } + resolution: {integrity: sha512-8bPSCm//dv8raYfrQ4x79rCX52vMw0QzmnYYl4eSOAvEbGvDPPRGGdbrhZZ7oihU+hI1sZNS5kYEgqODgFwfsw==} '@expo/json-file@11.0.1': - resolution: - { - integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==, - } + resolution: {integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==} '@expo/local-build-cache-provider@57.0.5': - resolution: - { - integrity: sha512-OwiNC0Uxu67TOH7TEQ94GLa4oNzNfbbItKGdy3QMfX+hCSZv2VvjcjRo5vttMHfXCnXa9KZIu3GBS9pvtDHWhA==, - } + resolution: {integrity: sha512-OwiNC0Uxu67TOH7TEQ94GLa4oNzNfbbItKGdy3QMfX+hCSZv2VvjcjRo5vttMHfXCnXa9KZIu3GBS9pvtDHWhA==} '@expo/log-box@57.0.2': - resolution: - { - integrity: sha512-ZsFyfIR7YCbQAdVLzuTUmMHofZC7ZS9ywYCJNPlLc78x59cI8GwXFEIVbRjjC0uJERpNtXx/tsNNnkhexXlzMw==, - } + resolution: {integrity: sha512-ZsFyfIR7YCbQAdVLzuTUmMHofZC7ZS9ywYCJNPlLc78x59cI8GwXFEIVbRjjC0uJERpNtXx/tsNNnkhexXlzMw==} peerDependencies: '@expo/dom-webview': ^57.0.1 expo: '*' @@ -2469,10 +1928,7 @@ packages: react-native: '*' '@expo/metro-config@57.0.7': - resolution: - { - integrity: sha512-bVfEkg4zF1cA62OqAdYXmFOooJ6TB/I+REi7Se6Ct+PbSC+89TwSqWXnYx34L08eIs4z+1ilgbATakTZpgefmQ==, - } + resolution: {integrity: sha512-bVfEkg4zF1cA62OqAdYXmFOooJ6TB/I+REi7Se6Ct+PbSC+89TwSqWXnYx34L08eIs4z+1ilgbATakTZpgefmQ==} peerDependencies: expo: '*' peerDependenciesMeta: @@ -2480,47 +1936,26 @@ packages: optional: true '@expo/metro-file-map@57.0.1': - resolution: - { - integrity: sha512-8JXfVstZN7QnP4NianZZnlTVboOWR0sG8trUDNajOjnbGlPln29vponXM84tY+3tAHapz5/TxE53L0ixUwqPtA==, - } + resolution: {integrity: sha512-8JXfVstZN7QnP4NianZZnlTVboOWR0sG8trUDNajOjnbGlPln29vponXM84tY+3tAHapz5/TxE53L0ixUwqPtA==} '@expo/metro@56.0.0': - resolution: - { - integrity: sha512-5gIgQHtEpjjvsjKfVtIv23a98LLRV0/y07PDShEwYSytAMlE3FSF8RHXqtHc1sUJL6dn7hnuIBpIbrLXXuVi0A==, - } + resolution: {integrity: sha512-5gIgQHtEpjjvsjKfVtIv23a98LLRV0/y07PDShEwYSytAMlE3FSF8RHXqtHc1sUJL6dn7hnuIBpIbrLXXuVi0A==} '@expo/osascript@2.7.1': - resolution: - { - integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==} + engines: {node: '>=12'} '@expo/package-manager@1.13.1': - resolution: - { - integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==, - } + resolution: {integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==} '@expo/plist@0.8.1': - resolution: - { - integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==, - } + resolution: {integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==} '@expo/prebuild-config@57.0.10': - resolution: - { - integrity: sha512-myrS5NolFAQWD8g7QuqkettnkyJx3GRl603N6rlmqAMxmO5EU7sZu4EX2EsIKkva8QtpX84B0E17PsM9xXMsTQ==, - } + resolution: {integrity: sha512-myrS5NolFAQWD8g7QuqkettnkyJx3GRl603N6rlmqAMxmO5EU7sZu4EX2EsIKkva8QtpX84B0E17PsM9xXMsTQ==} '@expo/require-utils@57.0.4': - resolution: - { - integrity: sha512-e7xbg/9BTQcsZE/oErafZXtI7kh5IgfasLJ97J5sFSzX2cA74pDvdlhW1KHVSaDkQyQv6h1LSLhsY7dEeOk7hw==, - } + resolution: {integrity: sha512-e7xbg/9BTQcsZE/oErafZXtI7kh5IgfasLJ97J5sFSzX2cA74pDvdlhW1KHVSaDkQyQv6h1LSLhsY7dEeOk7hw==} peerDependencies: typescript: ^5.0.0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: @@ -2528,10 +1963,7 @@ packages: optional: true '@expo/router-server@57.0.4': - resolution: - { - integrity: sha512-ucqCP0hK8nZb9+S8QJYdQxNCkfRClzkKdg2RpWYDKDYgRIHyoRyxEDRgDgvbhH+q78yfY83abU8OTx8MMOrf1g==, - } + resolution: {integrity: sha512-ucqCP0hK8nZb9+S8QJYdQxNCkfRClzkKdg2RpWYDKDYgRIHyoRyxEDRgDgvbhH+q78yfY83abU8OTx8MMOrf1g==} peerDependencies: '@expo/metro-runtime': ^57.0.7 expo: '*' @@ -2553,63 +1985,36 @@ packages: optional: true '@expo/schema-utils@57.0.2': - resolution: - { - integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==, - } + resolution: {integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==} '@expo/sdk-runtime-versions@1.0.0': - resolution: - { - integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==, - } + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} '@expo/spawn-async@1.8.0': - resolution: - { - integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==} + engines: {node: '>=12'} '@expo/sudo-prompt@9.3.2': - resolution: - { - integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==, - } + resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} '@expo/ws-tunnel@2.0.0': - resolution: - { - integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==, - } + resolution: {integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==} peerDependencies: ws: ^8.0.0 '@expo/xcpretty@4.4.4': - resolution: - { - integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==, - } + resolution: {integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==} hasBin: true '@hapi/hoek@9.3.0': - resolution: - { - integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==, - } + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} '@hapi/topo@5.1.0': - resolution: - { - integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==, - } + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} '@inquirer/external-editor@1.0.3': - resolution: - { - integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -2617,646 +2022,400 @@ packages: optional: true '@isaacs/ttlcache@1.4.1': - resolution: - { - integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} '@jest/diff-sequences@30.0.1': - resolution: - { - integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/schemas@29.6.3': - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/types@29.6.3': - resolution: - { - integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jridgewell/gen-mapping@0.3.13': - resolution: - { - integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, - } + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/remapping@2.3.5': - resolution: - { - integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, - } + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} '@jridgewell/source-map@0.3.11': - resolution: - { - integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, - } + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} '@jridgewell/sourcemap-codec@1.5.5': - resolution: - { - integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, - } + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} '@jridgewell/trace-mapping@0.3.31': - resolution: - { - integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, - } + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@kurkle/color@0.3.4': - resolution: - { - integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==, - } + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} '@lit-labs/ssr-dom-shim@1.6.0': - resolution: - { - integrity: sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ==, - } + resolution: {integrity: sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ==} '@lit/reactive-element@2.1.2': - resolution: - { - integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==, - } + resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} '@manypkg/find-root@1.1.0': - resolution: - { - integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==, - } + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} '@manypkg/get-packages@1.1.3': - resolution: - { - integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==, - } + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} '@napi-rs/nice-android-arm-eabi@1.1.1': - resolution: - { - integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==} + engines: {node: '>= 10'} cpu: [arm] os: [android] '@napi-rs/nice-android-arm64@1.1.1': - resolution: - { - integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==} + engines: {node: '>= 10'} cpu: [arm64] os: [android] '@napi-rs/nice-darwin-arm64@1.1.1': - resolution: - { - integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@napi-rs/nice-darwin-x64@1.1.1': - resolution: - { - integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@napi-rs/nice-freebsd-x64@1.1.1': - resolution: - { - integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==} + engines: {node: '>= 10'} cpu: [x64] os: [freebsd] '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': - resolution: - { - integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==} + engines: {node: '>= 10'} cpu: [arm] os: [linux] '@napi-rs/nice-linux-arm64-gnu@1.1.1': - resolution: - { - integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-arm64-musl@1.1.1': - resolution: - { - integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] '@napi-rs/nice-linux-ppc64-gnu@1.1.1': - resolution: - { - integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==} + engines: {node: '>= 10'} cpu: [ppc64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-riscv64-gnu@1.1.1': - resolution: - { - integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==} + engines: {node: '>= 10'} cpu: [riscv64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-s390x-gnu@1.1.1': - resolution: - { - integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==} + engines: {node: '>= 10'} cpu: [s390x] os: [linux] libc: [glibc] '@napi-rs/nice-linux-x64-gnu@1.1.1': - resolution: - { - integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-x64-musl@1.1.1': - resolution: - { - integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] '@napi-rs/nice-openharmony-arm64@1.1.1': - resolution: - { - integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [openharmony] '@napi-rs/nice-win32-arm64-msvc@1.1.1': - resolution: - { - integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] '@napi-rs/nice-win32-ia32-msvc@1.1.1': - resolution: - { - integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==} + engines: {node: '>= 10'} cpu: [ia32] os: [win32] '@napi-rs/nice-win32-x64-msvc@1.1.1': - resolution: - { - integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] '@napi-rs/nice@1.1.1': - resolution: - { - integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} + engines: {node: '>= 10'} '@napi-rs/wasm-runtime@0.2.4': - resolution: - { - integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==, - } + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} '@napi-rs/wasm-runtime@1.1.6': - resolution: - { - integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==, - } + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 '@noble/hashes@2.2.0': - resolution: - { - integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==, - } - engines: { node: '>= 20.19.0' } + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} '@nodelib/fs.scandir@2.1.5': - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} '@nodelib/fs.stat@2.0.5': - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} '@nodelib/fs.walk@1.2.8': - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} '@nx/nx-darwin-arm64@22.7.5': - resolution: - { - integrity: sha512-eoPtwx0qZqvRUD+VVOHm150AlSYwYoPxkDHBBGqKCn5nzPspb0lLWw8q83crM/L1M928YgK0WmGf3C++7eqsTA==, - } + resolution: {integrity: sha512-eoPtwx0qZqvRUD+VVOHm150AlSYwYoPxkDHBBGqKCn5nzPspb0lLWw8q83crM/L1M928YgK0WmGf3C++7eqsTA==} cpu: [arm64] os: [darwin] '@nx/nx-darwin-x64@22.7.5': - resolution: - { - integrity: sha512-VLOn/ZoEn3HfjSj+yIHLCM56/el79r+9I28CkZNHaSXJQWZ3edSkcgcfYjVxCurpN2VEwDQHLBeFCH8M+lQ7wQ==, - } + resolution: {integrity: sha512-VLOn/ZoEn3HfjSj+yIHLCM56/el79r+9I28CkZNHaSXJQWZ3edSkcgcfYjVxCurpN2VEwDQHLBeFCH8M+lQ7wQ==} cpu: [x64] os: [darwin] '@nx/nx-freebsd-x64@22.7.5': - resolution: - { - integrity: sha512-LEVer/E2xfGvK9Go+imMQoEninOoq/38Z2bhV1SD3AThXrp1xaLFVkW5jQ6juebeVkAeztEoMLFlr576egS0vw==, - } + resolution: {integrity: sha512-LEVer/E2xfGvK9Go+imMQoEninOoq/38Z2bhV1SD3AThXrp1xaLFVkW5jQ6juebeVkAeztEoMLFlr576egS0vw==} cpu: [x64] os: [freebsd] '@nx/nx-linux-arm-gnueabihf@22.7.5': - resolution: - { - integrity: sha512-NP27EFGpmFJM6RL1Ey/AFJ7gA2xuqtIHaw6jjSNGvfrnZRUNaway30GrVaGGeODf0DsvAty/unqoBMPy6kDHbw==, - } + resolution: {integrity: sha512-NP27EFGpmFJM6RL1Ey/AFJ7gA2xuqtIHaw6jjSNGvfrnZRUNaway30GrVaGGeODf0DsvAty/unqoBMPy6kDHbw==} cpu: [arm] os: [linux] '@nx/nx-linux-arm64-gnu@22.7.5': - resolution: - { - integrity: sha512-QLnkJl3HkHsPfpLiNiAiMfpfAeFpic0U1diAxF8RqChOkCpQ7ulvyBVgE1UrQxvhd+gFQ3ed5RNDxtCRw8nTiw==, - } + resolution: {integrity: sha512-QLnkJl3HkHsPfpLiNiAiMfpfAeFpic0U1diAxF8RqChOkCpQ7ulvyBVgE1UrQxvhd+gFQ3ed5RNDxtCRw8nTiw==} cpu: [arm64] os: [linux] libc: [glibc] '@nx/nx-linux-arm64-musl@22.7.5': - resolution: - { - integrity: sha512-cEP6KmwBgnb38+jTTaibWCjwXcHmigqhTfy0tN1be7WZr6bHxbqNLsXqKRN70PSNA3HouZcxw1cdRL8tqbPBBA==, - } + resolution: {integrity: sha512-cEP6KmwBgnb38+jTTaibWCjwXcHmigqhTfy0tN1be7WZr6bHxbqNLsXqKRN70PSNA3HouZcxw1cdRL8tqbPBBA==} cpu: [arm64] os: [linux] libc: [musl] '@nx/nx-linux-x64-gnu@22.7.5': - resolution: - { - integrity: sha512-tbaX1tZCSpGifDNBfDdEZAMxVF3Yg4bhFP/bm1needc0diqb+Zflc0u5tM5/6BWDMITQDwenJVsNiQ8ZdtJURA==, - } + resolution: {integrity: sha512-tbaX1tZCSpGifDNBfDdEZAMxVF3Yg4bhFP/bm1needc0diqb+Zflc0u5tM5/6BWDMITQDwenJVsNiQ8ZdtJURA==} cpu: [x64] os: [linux] libc: [glibc] '@nx/nx-linux-x64-musl@22.7.5': - resolution: - { - integrity: sha512-H0M7csOZIgPT822LqjxSXzf4MXRND15vIkAQe3F3Jlr3Si8LC3tzbL52aVcRfgb8MF/xOB5U47mSwxWt1M2bPQ==, - } + resolution: {integrity: sha512-H0M7csOZIgPT822LqjxSXzf4MXRND15vIkAQe3F3Jlr3Si8LC3tzbL52aVcRfgb8MF/xOB5U47mSwxWt1M2bPQ==} cpu: [x64] os: [linux] libc: [musl] '@nx/nx-win32-arm64-msvc@22.7.5': - resolution: - { - integrity: sha512-JTcZch9YAnDL1gbhqePz3DZ4x7iYemLn1yJzrjbbXAmXju2eiiJiZvJJHbV06+SP9HKXDT8RjTKuAWTdVxnHug==, - } + resolution: {integrity: sha512-JTcZch9YAnDL1gbhqePz3DZ4x7iYemLn1yJzrjbbXAmXju2eiiJiZvJJHbV06+SP9HKXDT8RjTKuAWTdVxnHug==} cpu: [arm64] os: [win32] '@nx/nx-win32-x64-msvc@22.7.5': - resolution: - { - integrity: sha512-ngcMyHdBJ9FSz2nHdbZ7gtJlFq0O2b05sPAsVMkZ18CKzdaA1qrBDJfsMO49hPCny505eiT766+CkKdaCDl5kA==, - } + resolution: {integrity: sha512-ngcMyHdBJ9FSz2nHdbZ7gtJlFq0O2b05sPAsVMkZ18CKzdaA1qrBDJfsMO49hPCny505eiT766+CkKdaCDl5kA==} cpu: [x64] os: [win32] '@observablehq/plot@0.6.17': - resolution: - { - integrity: sha512-/qaXP/7mc4MUS0s4cPPFASDRjtsWp85/TbfsciqDgU1HwYixbSbbytNuInD8AcTYC3xaxACgVX06agdfQy9W+g==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-/qaXP/7mc4MUS0s4cPPFASDRjtsWp85/TbfsciqDgU1HwYixbSbbytNuInD8AcTYC3xaxACgVX06agdfQy9W+g==} + engines: {node: '>=12'} '@observablehq/sample-datasets@1.0.1': - resolution: - { - integrity: sha512-2gc2wteMytPgDalqUPdLHEFInNb8J3vI17oniIYS89B1iwuO4EPXNWgzpfryyB4CH35CpXL0BgHfVeI+qICWwA==, - } + resolution: {integrity: sha512-2gc2wteMytPgDalqUPdLHEFInNb8J3vI17oniIYS89B1iwuO4EPXNWgzpfryyB4CH35CpXL0BgHfVeI+qICWwA==} '@oxc-project/types@0.139.0': - resolution: - { - integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==, - } + resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} '@parcel/watcher-android-arm64@2.6.0': - resolution: - { - integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} + engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] '@parcel/watcher-darwin-arm64@2.6.0': - resolution: - { - integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} + engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] '@parcel/watcher-darwin-x64@2.6.0': - resolution: - { - integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} + engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] '@parcel/watcher-freebsd-x64@2.6.0': - resolution: - { - integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} + engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] '@parcel/watcher-linux-arm-glibc@2.6.0': - resolution: - { - integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} + engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [glibc] '@parcel/watcher-linux-arm-musl@2.6.0': - resolution: - { - integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} + engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.6.0': - resolution: - { - integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} + engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.6.0': - resolution: - { - integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} + engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [musl] '@parcel/watcher-linux-x64-glibc@2.6.0': - resolution: - { - integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} + engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [glibc] '@parcel/watcher-linux-x64-musl@2.6.0': - resolution: - { - integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} + engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [musl] '@parcel/watcher-win32-arm64@2.6.0': - resolution: - { - integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} + engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] '@parcel/watcher-win32-x64@2.6.0': - resolution: - { - integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} + engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] '@parcel/watcher@2.6.0': - resolution: - { - integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==, - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} + engines: {node: '>= 10.0.0'} '@react-native-community/cli-clean@20.1.0': - resolution: - { - integrity: sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==, - } + resolution: {integrity: sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==} '@react-native-community/cli-config-android@20.1.0': - resolution: - { - integrity: sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==, - } + resolution: {integrity: sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==} '@react-native-community/cli-config-apple@20.1.0': - resolution: - { - integrity: sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==, - } + resolution: {integrity: sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==} '@react-native-community/cli-config@20.1.0': - resolution: - { - integrity: sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==, - } + resolution: {integrity: sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==} '@react-native-community/cli-doctor@20.1.0': - resolution: - { - integrity: sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==, - } + resolution: {integrity: sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==} '@react-native-community/cli-platform-android@20.1.0': - resolution: - { - integrity: sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==, - } + resolution: {integrity: sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==} '@react-native-community/cli-platform-apple@20.1.0': - resolution: - { - integrity: sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==, - } + resolution: {integrity: sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==} '@react-native-community/cli-platform-ios@20.1.0': - resolution: - { - integrity: sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==, - } + resolution: {integrity: sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==} '@react-native-community/cli-server-api@20.1.0': - resolution: - { - integrity: sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==, - } + resolution: {integrity: sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==} '@react-native-community/cli-tools@20.1.0': - resolution: - { - integrity: sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==, - } + resolution: {integrity: sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==} '@react-native-community/cli-types@20.1.0': - resolution: - { - integrity: sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==, - } + resolution: {integrity: sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==} '@react-native-community/cli@20.1.0': - resolution: - { - integrity: sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==, - } - engines: { node: '>=20.19.4' } + resolution: {integrity: sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==} + engines: {node: '>=20.19.4'} hasBin: true '@react-native/assets-registry@0.86.2': - resolution: - { - integrity: sha512-vcX/mBjWAVnWofu7KecotquI2unZ/tITwA7OGdq/mdY/zmGXIEvYhfEYyOQij/LRqi9WAL+iizInTBWnxDhK/Q==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-vcX/mBjWAVnWofu7KecotquI2unZ/tITwA7OGdq/mdY/zmGXIEvYhfEYyOQij/LRqi9WAL+iizInTBWnxDhK/Q==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/babel-plugin-codegen@0.86.2': - resolution: - { - integrity: sha512-NNDZqOlNbH5SzgPks1jFDYH3234Rpa5e/nhZymxhIiBH3NcE3uD+rGj/HWXhH7nHF2ToGK6XbUpqy7nmJPeh+g==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-NNDZqOlNbH5SzgPks1jFDYH3234Rpa5e/nhZymxhIiBH3NcE3uD+rGj/HWXhH7nHF2ToGK6XbUpqy7nmJPeh+g==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/babel-preset@0.86.2': - resolution: - { - integrity: sha512-4XKEJ6jKW9lXMB1O5o47gBoGgolde1fbX13gLW/erlcn+1ky+MHHo5UjuM3RWGdPJHIvIzekDDumSUHhB9x5iQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-4XKEJ6jKW9lXMB1O5o47gBoGgolde1fbX13gLW/erlcn+1ky+MHHo5UjuM3RWGdPJHIvIzekDDumSUHhB9x5iQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: '@babel/core': '*' '@react-native/codegen@0.86.2': - resolution: - { - integrity: sha512-xKkudsahUJ1n//55g4fXk5BStVqqmZlz8HQveL45ZxcfDnwvhuYe2GymksQANFsSN+slvrarjrfq8kIxJzbceA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-xKkudsahUJ1n//55g4fXk5BStVqqmZlz8HQveL45ZxcfDnwvhuYe2GymksQANFsSN+slvrarjrfq8kIxJzbceA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: '@babel/core': '*' '@react-native/community-cli-plugin@0.86.2': - resolution: - { - integrity: sha512-YHXNKoM6Y/HjREySZ5arET2xgiHgg67r1MdwJB//MPJAJ0Xc5g0u6UHxY9VzsHO3Y07dre6s0BinYwjt1SEWvQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-YHXNKoM6Y/HjREySZ5arET2xgiHgg67r1MdwJB//MPJAJ0Xc5g0u6UHxY9VzsHO3Y07dre6s0BinYwjt1SEWvQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: '@react-native-community/cli': '*' '@react-native/metro-config': 0.86.2 @@ -3267,74 +2426,44 @@ packages: optional: true '@react-native/debugger-frontend@0.86.2': - resolution: - { - integrity: sha512-KGS1aV5F6cIqpnoIUhLBXyVzy1oAj8jBFGau6vX4Vy0HXRJN7p+68RU7x6NuyraHvQcR14ccMGT5TkFuNjQ4gA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-KGS1aV5F6cIqpnoIUhLBXyVzy1oAj8jBFGau6vX4Vy0HXRJN7p+68RU7x6NuyraHvQcR14ccMGT5TkFuNjQ4gA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/debugger-shell@0.86.2': - resolution: - { - integrity: sha512-/TaVJ2+gGajZPJGrFaObUQmHmlaxAlfmOPZicl6pNKDUjzSgFMpcLkdTOExvb+USYTVdGX1XwxXyvjQdUO2bvg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-/TaVJ2+gGajZPJGrFaObUQmHmlaxAlfmOPZicl6pNKDUjzSgFMpcLkdTOExvb+USYTVdGX1XwxXyvjQdUO2bvg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/dev-middleware@0.86.2': - resolution: - { - integrity: sha512-B7L0vKvg+IcEElT7Vpqh1xj5yJAqWUegjbP+bQRaorJMAYnv11GkliTnZV2AdTDfZQJWgOEx8i8LGkHkUg7bnA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-B7L0vKvg+IcEElT7Vpqh1xj5yJAqWUegjbP+bQRaorJMAYnv11GkliTnZV2AdTDfZQJWgOEx8i8LGkHkUg7bnA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/gradle-plugin@0.86.2': - resolution: - { - integrity: sha512-2F6x14NcHMpVmfTTFKfMkpV5dZedZrLiv6PE+c3vgnesV2bjleUBydr4U+NI8VkI7OwW71L0A5qQ76I9LCrfoQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-2F6x14NcHMpVmfTTFKfMkpV5dZedZrLiv6PE+c3vgnesV2bjleUBydr4U+NI8VkI7OwW71L0A5qQ76I9LCrfoQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/js-polyfills@0.86.2': - resolution: - { - integrity: sha512-bIwNcGBaQ74shB5z1mRkxOpjikimuwsnOCEkZSzL67Z1FTyK1ObpENfyd2QvcvVW9Cjl+tHuw9ynpBnb2jPoJQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-bIwNcGBaQ74shB5z1mRkxOpjikimuwsnOCEkZSzL67Z1FTyK1ObpENfyd2QvcvVW9Cjl+tHuw9ynpBnb2jPoJQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/metro-babel-transformer@0.86.2': - resolution: - { - integrity: sha512-mX1wgLErdb2hDgXJr9zM9SWLe+ZteZTFTwRWGOQ53yEJwc9DVSnxdTlAtVdMeOj2ntycKh0R8jYdat2Am43cwQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-mX1wgLErdb2hDgXJr9zM9SWLe+ZteZTFTwRWGOQ53yEJwc9DVSnxdTlAtVdMeOj2ntycKh0R8jYdat2Am43cwQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: '@babel/core': '*' '@react-native/metro-config@0.86.2': - resolution: - { - integrity: sha512-hJno256j+MS0b3JD1aD3ouTGZVacKNVBuXL2atMQQ8BZ060vl1ptnZ83y569aDW+/rgFSOcqn6ydKeSz4uUKQQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-hJno256j+MS0b3JD1aD3ouTGZVacKNVBuXL2atMQQ8BZ060vl1ptnZ83y569aDW+/rgFSOcqn6ydKeSz4uUKQQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} '@react-native/normalize-colors@0.86.2': - resolution: - { - integrity: sha512-EzPFc9Y6lzYOWeso2almwXI7f8+qReHxWvT+algsOczb2UhWXIWXDoSvkdwoSfiwwmGt/ijJgKJoeHlzPkLwRg==, - } + resolution: {integrity: sha512-EzPFc9Y6lzYOWeso2almwXI7f8+qReHxWvT+algsOczb2UhWXIWXDoSvkdwoSfiwwmGt/ijJgKJoeHlzPkLwRg==} '@react-native/typescript-config@0.86.2': - resolution: - { - integrity: sha512-DcIsPc652AD10sSKWZPv2QjsEB63DEXW20XYwDzk3zdl94XbTlTSn1+VZbtx7MzHk0kkSQcaX30yTdVkNUAz8Q==, - } + resolution: {integrity: sha512-DcIsPc652AD10sSKWZPv2QjsEB63DEXW20XYwDzk3zdl94XbTlTSn1+VZbtx7MzHk0kkSQcaX30yTdVkNUAz8Q==} '@react-native/virtualized-lists@0.86.2': - resolution: - { - integrity: sha512-uO0J72gh3EvE+1/GHRk18QRyBDTRHRB0AraAfojsRjbT7VMuJwKrZYaKGshavoaEud6aw00ZB9/8mTMIKjjcAw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-uO0J72gh3EvE+1/GHRk18QRyBDTRHRB0AraAfojsRjbT7VMuJwKrZYaKGshavoaEud6aw00ZB9/8mTMIKjjcAw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: '@types/react': ^19.2.0 react: '*' @@ -3344,10 +2473,7 @@ packages: optional: true '@reduxjs/toolkit@2.12.0': - resolution: - { - integrity: sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==, - } + resolution: {integrity: sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18 || ^19 react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 @@ -3358,157 +2484,106 @@ packages: optional: true '@rolldown/binding-android-arm64@1.1.5': - resolution: - { - integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] '@rolldown/binding-darwin-arm64@1.1.5': - resolution: - { - integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] '@rolldown/binding-darwin-x64@1.1.5': - resolution: - { - integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] '@rolldown/binding-freebsd-x64@1.1.5': - resolution: - { - integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: - { - integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: - { - integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: - { - integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: - { - integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: - { - integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: - { - integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: - { - integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: - { - integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: - { - integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: - { - integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: - { - integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] '@rolldown/pluginutils@1.0.1': - resolution: - { - integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, - } + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} '@rollup/plugin-json@6.1.0': - resolution: - { - integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==, - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: @@ -3516,11 +2591,8 @@ packages: optional: true '@rollup/pluginutils@5.4.0': - resolution: - { - integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==, - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} + engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: @@ -3528,293 +2600,185 @@ packages: optional: true '@rollup/rollup-android-arm-eabi@4.62.3': - resolution: - { - integrity: sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==, - } + resolution: {integrity: sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==} cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.62.3': - resolution: - { - integrity: sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==, - } + resolution: {integrity: sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==} cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.62.3': - resolution: - { - integrity: sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==, - } + resolution: {integrity: sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==} cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.62.3': - resolution: - { - integrity: sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==, - } + resolution: {integrity: sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==} cpu: [x64] os: [darwin] '@rollup/rollup-freebsd-arm64@4.62.3': - resolution: - { - integrity: sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==, - } + resolution: {integrity: sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==} cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.62.3': - resolution: - { - integrity: sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==, - } + resolution: {integrity: sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==} cpu: [x64] os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.62.3': - resolution: - { - integrity: sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==, - } + resolution: {integrity: sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==} cpu: [arm] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.62.3': - resolution: - { - integrity: sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==, - } + resolution: {integrity: sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==} cpu: [arm] os: [linux] libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.62.3': - resolution: - { - integrity: sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==, - } + resolution: {integrity: sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==} cpu: [arm64] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.62.3': - resolution: - { - integrity: sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==, - } + resolution: {integrity: sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==} cpu: [arm64] os: [linux] libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.62.3': - resolution: - { - integrity: sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==, - } + resolution: {integrity: sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==} cpu: [loong64] os: [linux] libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.62.3': - resolution: - { - integrity: sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==, - } + resolution: {integrity: sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==} cpu: [loong64] os: [linux] libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.62.3': - resolution: - { - integrity: sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==, - } + resolution: {integrity: sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==} cpu: [ppc64] os: [linux] libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.62.3': - resolution: - { - integrity: sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==, - } + resolution: {integrity: sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==} cpu: [ppc64] os: [linux] libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.62.3': - resolution: - { - integrity: sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==, - } + resolution: {integrity: sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==} cpu: [riscv64] os: [linux] libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.62.3': - resolution: - { - integrity: sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==, - } + resolution: {integrity: sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==} cpu: [riscv64] os: [linux] libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.62.3': - resolution: - { - integrity: sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==, - } + resolution: {integrity: sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==} cpu: [s390x] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.62.3': - resolution: - { - integrity: sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==, - } + resolution: {integrity: sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==} cpu: [x64] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-musl@4.62.3': - resolution: - { - integrity: sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==, - } + resolution: {integrity: sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==} cpu: [x64] os: [linux] libc: [musl] '@rollup/rollup-openbsd-x64@4.62.3': - resolution: - { - integrity: sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==, - } + resolution: {integrity: sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==} cpu: [x64] os: [openbsd] '@rollup/rollup-openharmony-arm64@4.62.3': - resolution: - { - integrity: sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==, - } + resolution: {integrity: sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==} cpu: [arm64] os: [openharmony] '@rollup/rollup-win32-arm64-msvc@4.62.3': - resolution: - { - integrity: sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==, - } + resolution: {integrity: sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==} cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.62.3': - resolution: - { - integrity: sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==, - } + resolution: {integrity: sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==} cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-gnu@4.62.3': - resolution: - { - integrity: sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==, - } + resolution: {integrity: sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==} cpu: [x64] os: [win32] '@rollup/rollup-win32-x64-msvc@4.62.3': - resolution: - { - integrity: sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==, - } + resolution: {integrity: sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==} cpu: [x64] os: [win32] '@rollup/wasm-node@4.62.3': - resolution: - { - integrity: sha512-sEOQWamme1YgXeVcE1JkB1k44RwtPWcpYpGUW1Lso7bOj+Ay9lN2Pak/CcfNeC4xqIPNhYSabQNaWYkJJR7m8Q==, - } - engines: { node: '>=18.0.0', npm: '>=8.0.0' } + resolution: {integrity: sha512-sEOQWamme1YgXeVcE1JkB1k44RwtPWcpYpGUW1Lso7bOj+Ay9lN2Pak/CcfNeC4xqIPNhYSabQNaWYkJJR7m8Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true '@sideway/address@4.1.5': - resolution: - { - integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==, - } + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} '@sideway/formula@3.0.1': - resolution: - { - integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==, - } + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} '@sideway/pinpoint@2.0.0': - resolution: - { - integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==, - } + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} '@sinclair/typebox@0.27.12': - resolution: - { - integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==, - } + resolution: {integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==} '@standard-schema/spec@1.1.0': - resolution: - { - integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, - } + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@standard-schema/utils@0.3.0': - resolution: - { - integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==, - } + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} '@sveltejs/acorn-typescript@1.0.11': - resolution: - { - integrity: sha512-LFuZUkjJ9iF7JZye/aG5XM0SFcQ5VyL0oVX4WJ9dc0Va3R3s0OauX1BESVCb+YN/ol8TAfqGDDAQsTG627Y5kw==, - } + resolution: {integrity: sha512-LFuZUkjJ9iF7JZye/aG5XM0SFcQ5VyL0oVX4WJ9dc0Va3R3s0OauX1BESVCb+YN/ol8TAfqGDDAQsTG627Y5kw==} peerDependencies: acorn: ^8.9.0 '@sveltejs/load-config@0.2.1': - resolution: - { - integrity: sha512-5m3B2cbqQ4TbwW6Xkh66Ntw6dD7gNc77cCxABTTesWcq9jxIzMgTk97pZx5vEtvQx8iokgi7GIphqZe+PGwcZA==, - } - engines: { node: '>= 18.0.0' } + resolution: {integrity: sha512-5m3B2cbqQ4TbwW6Xkh66Ntw6dD7gNc77cCxABTTesWcq9jxIzMgTk97pZx5vEtvQx8iokgi7GIphqZe+PGwcZA==} + engines: {node: '>= 18.0.0'} '@sveltejs/package@2.5.8': - resolution: - { - integrity: sha512-zeBbsXYvHiBu56v4gJaGQoEHzg96w0E1j3dOMX8vo56s6vI5eQ57ZEZhudjwjnegnVitRRu5MrmhO0eNvaonIw==, - } - engines: { node: ^16.14 || >=18 } + resolution: {integrity: sha512-zeBbsXYvHiBu56v4gJaGQoEHzg96w0E1j3dOMX8vo56s6vI5eQ57ZEZhudjwjnegnVitRRu5MrmhO0eNvaonIw==} + engines: {node: ^16.14 || >=18} hasBin: true peerDependencies: svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 '@sveltejs/vite-plugin-svelte@7.2.0': - resolution: - { - integrity: sha512-1SpkuMSRLfugrVX+IrKfE1RUegzo8AQzKQ6qQPfVzbcWi5IhuTPaKb5ZrLpucleFznkc4/RTeSPoRnGWFxX+EQ==, - } - engines: { node: ^20.19 || ^22.12 || >=24 } + resolution: {integrity: sha512-1SpkuMSRLfugrVX+IrKfE1RUegzo8AQzKQ6qQPfVzbcWi5IhuTPaKb5ZrLpucleFznkc4/RTeSPoRnGWFxX+EQ==} + engines: {node: ^20.19 || ^22.12 || >=24} peerDependencies: svelte: ^5.46.4 vite: ^8.0.0-beta.7 || ^8.0.0 @@ -3827,325 +2791,166 @@ packages: hasBin: true '@tsrx/core@0.1.48': - resolution: - { - integrity: sha512-IgkkLjApPKCGvBvwcOtLT6bACFglB5RBKW9fYErYMXJC6bxk/GM1lVAnuV9FiadiZ5jXrTw9uTxbZULncycSQQ==, - } + resolution: {integrity: sha512-IgkkLjApPKCGvBvwcOtLT6bACFglB5RBKW9fYErYMXJC6bxk/GM1lVAnuV9FiadiZ5jXrTw9uTxbZULncycSQQ==} '@tybys/wasm-util@0.10.3': - resolution: - { - integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==, - } + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} '@tybys/wasm-util@0.9.0': - resolution: - { - integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==, - } + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} '@types/babel__core@7.20.5': - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} '@types/babel__generator@7.27.0': - resolution: - { - integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, - } + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} '@types/babel__traverse@7.28.0': - resolution: - { - integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, - } + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/chai@5.2.3': - resolution: - { - integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==, - } + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/d3-array@3.2.2': - resolution: - { - integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==, - } + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} '@types/d3-brush@3.0.6': - resolution: - { - integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==, - } + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} '@types/d3-color@3.1.3': - resolution: - { - integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==, - } + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} '@types/d3-contour@3.0.6': - resolution: - { - integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==, - } + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} '@types/d3-delaunay@6.0.4': - resolution: - { - integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==, - } + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} '@types/d3-ease@3.0.2': - resolution: - { - integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==, - } + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} '@types/d3-force@3.0.10': - resolution: - { - integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==, - } + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} '@types/d3-format@3.0.4': - resolution: - { - integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==, - } + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} '@types/d3-geo@3.1.0': - resolution: - { - integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==, - } + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} '@types/d3-hexbin@0.2.5': - resolution: - { - integrity: sha512-EF/1szlis0vN810Q3F//NYeiOjiRZHiRlHADQzc8GMMeaJx9J662LHsxJYBqwqlsTMZuvVk1qLULyvC7p1JNAg==, - } + resolution: {integrity: sha512-EF/1szlis0vN810Q3F//NYeiOjiRZHiRlHADQzc8GMMeaJx9J662LHsxJYBqwqlsTMZuvVk1qLULyvC7p1JNAg==} '@types/d3-hierarchy@3.1.7': - resolution: - { - integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==, - } + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} '@types/d3-interpolate@3.0.4': - resolution: - { - integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==, - } + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} '@types/d3-path@1.0.11': - resolution: - { - integrity: sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==, - } + resolution: {integrity: sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==} '@types/d3-path@3.1.1': - resolution: - { - integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==, - } + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} '@types/d3-polygon@3.0.2': - resolution: - { - integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==, - } + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} '@types/d3-quadtree@3.0.6': - resolution: - { - integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==, - } + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} '@types/d3-sankey@0.12.5': - resolution: - { - integrity: sha512-/3RZSew0cLAtzGQ+C89hq/Rp3H20QJuVRSqFy6RKLe7E0B8kd2iOS1oBsodrgds4PcNVpqWhdUEng/SHvBcJ6Q==, - } + resolution: {integrity: sha512-/3RZSew0cLAtzGQ+C89hq/Rp3H20QJuVRSqFy6RKLe7E0B8kd2iOS1oBsodrgds4PcNVpqWhdUEng/SHvBcJ6Q==} '@types/d3-scale@4.0.9': - resolution: - { - integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==, - } + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} '@types/d3-selection@3.0.11': - resolution: - { - integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==, - } + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} '@types/d3-shape@1.3.12': - resolution: - { - integrity: sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==, - } + resolution: {integrity: sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==} '@types/d3-shape@3.1.8': - resolution: - { - integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==, - } + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} '@types/d3-time@3.0.4': - resolution: - { - integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==, - } + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} '@types/d3-timer@3.0.2': - resolution: - { - integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==, - } + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} '@types/d3-zoom@3.0.8': - resolution: - { - integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==, - } + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} '@types/deep-eql@4.0.2': - resolution: - { - integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==, - } + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} '@types/estree-jsx@1.0.5': - resolution: - { - integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==, - } + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} '@types/estree@1.0.9': - resolution: - { - integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, - } + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} '@types/geojson@7946.0.16': - resolution: - { - integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==, - } + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} '@types/istanbul-lib-coverage@2.0.6': - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} '@types/istanbul-lib-report@3.0.3': - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} '@types/istanbul-reports@3.0.4': - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} '@types/jsdom@27.0.0': - resolution: - { - integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==, - } + resolution: {integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==} '@types/node@12.20.55': - resolution: - { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, - } + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} '@types/node@25.9.5': - resolution: - { - integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==, - } + resolution: {integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==} '@types/react-dom@19.2.3': - resolution: - { - integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==, - } + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 '@types/react@19.2.17': - resolution: - { - integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==, - } + resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} '@types/topojson-client@3.1.5': - resolution: - { - integrity: sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw==, - } + resolution: {integrity: sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw==} '@types/topojson-specification@1.0.5': - resolution: - { - integrity: sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ==, - } + resolution: {integrity: sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ==} '@types/tough-cookie@4.0.5': - resolution: - { - integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==, - } + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} '@types/trusted-types@2.0.7': - resolution: - { - integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, - } + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} '@types/use-sync-external-store@0.0.6': - resolution: - { - integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==, - } + resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} '@types/yargs-parser@21.0.3': - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} '@types/yargs@17.0.35': - resolution: - { - integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==, - } + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@ungap/structured-clone@1.3.3': - resolution: - { - integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==, - } + resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} '@vitejs/plugin-react@6.0.4': - resolution: - { - integrity: sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 babel-plugin-react-compiler: ^1.0.0 @@ -4157,16 +2962,10 @@ packages: optional: true '@vitest/expect@4.1.10': - resolution: - { - integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==, - } + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} '@vitest/mocker@4.1.10': - resolution: - { - integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==, - } + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4177,409 +2976,223 @@ packages: optional: true '@vitest/pretty-format@4.1.10': - resolution: - { - integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==, - } + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} '@vitest/runner@4.1.10': - resolution: - { - integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==, - } + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} '@vitest/snapshot@4.1.10': - resolution: - { - integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==, - } + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} '@vitest/spy@4.1.10': - resolution: - { - integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==, - } + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} '@vitest/utils@4.1.10': - resolution: - { - integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==, - } + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} '@vscode/sudo-prompt@9.3.2': - resolution: - { - integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==, - } + resolution: {integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==} '@vue/compiler-core@3.5.40': - resolution: - { - integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==, - } + resolution: {integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==} '@vue/compiler-dom@3.5.40': - resolution: - { - integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==, - } + resolution: {integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==} '@vue/compiler-sfc@3.5.40': - resolution: - { - integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==, - } + resolution: {integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==} '@vue/compiler-ssr@3.5.40': - resolution: - { - integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==, - } + resolution: {integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==} '@vue/reactivity@3.1.5': - resolution: - { - integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==, - } + resolution: {integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==} '@vue/reactivity@3.5.40': - resolution: - { - integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==, - } + resolution: {integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==} '@vue/runtime-core@3.5.40': - resolution: - { - integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==, - } + resolution: {integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==} '@vue/runtime-dom@3.5.40': - resolution: - { - integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==, - } + resolution: {integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==} '@vue/server-renderer@3.5.40': - resolution: - { - integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==, - } + resolution: {integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==} '@vue/shared@3.1.5': - resolution: - { - integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==, - } + resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} '@vue/shared@3.5.40': - resolution: - { - integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==, - } + resolution: {integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==} '@xmldom/xmldom@0.8.13': - resolution: - { - integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==, - } - engines: { node: '>=10.0.0' } + resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==} + engines: {node: '>=10.0.0'} '@xmldom/xmldom@0.9.10': - resolution: - { - integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==, - } - engines: { node: '>=14.6' } + resolution: {integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==} + engines: {node: '>=14.6'} '@yarnpkg/lockfile@1.1.0': - resolution: - { - integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, - } + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} '@zkochan/js-yaml@0.0.7': - resolution: - { - integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==, - } + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true abort-controller@3.0.0: - resolution: - { - integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, - } - engines: { node: '>=6.5' } + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} accepts@1.3.8: - resolution: - { - integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} accepts@2.0.0: - resolution: - { - integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} acorn@8.17.0: - resolution: - { - integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==, - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} hasBin: true agent-base@7.1.4: - resolution: - { - integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, - } - engines: { node: '>= 14' } + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} agent-cli-detector@0.1.4: - resolution: - { - integrity: sha512-qPgevFvpaQoBaRJVKzr8R7h1WPvV3DtbgRIQlne4le66KBzXx5hNBwo/+NTw67LgkKBlhCzksrdautpUdlls0Q==, - } - engines: { node: '>=18.18' } + resolution: {integrity: sha512-qPgevFvpaQoBaRJVKzr8R7h1WPvV3DtbgRIQlne4le66KBzXx5hNBwo/+NTw67LgkKBlhCzksrdautpUdlls0Q==} + engines: {node: '>=18.18'} hasBin: true ajv@8.20.0: - resolution: - { - integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, - } + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} alpinejs@3.15.12: - resolution: - { - integrity: sha512-nJvPAQVNPdZZ0NrExJ/kzQco3ijR8LwvCOadQecllESiqT4NyZ/57sN9V2XyvhlBGAbmlKYgeWZvYdKq99ij/Q==, - } + resolution: {integrity: sha512-nJvPAQVNPdZZ0NrExJ/kzQco3ijR8LwvCOadQecllESiqT4NyZ/57sN9V2XyvhlBGAbmlKYgeWZvYdKq99ij/Q==} anser@1.4.10: - resolution: - { - integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==, - } + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} ansi-colors@4.1.3: - resolution: - { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} ansi-fragments@0.2.1: - resolution: - { - integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==, - } + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} ansi-regex@4.1.1: - resolution: - { - integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansi-regex@6.2.2: - resolution: - { - integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} ansi-styles@6.2.3: - resolution: - { - integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} appdirsjs@1.2.8: - resolution: - { - integrity: sha512-8zl1xlxeS4a0/36CT6LOaVioPOL8TeLT1b9OHk0j9xSbzmPBuM7lUgWMSTh6SbuF8fbwjcP1rr30OCLpd1fl+A==, - } + resolution: {integrity: sha512-8zl1xlxeS4a0/36CT6LOaVioPOL8TeLT1b9OHk0j9xSbzmPBuM7lUgWMSTh6SbuF8fbwjcP1rr30OCLpd1fl+A==} arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} aria-query@5.3.1: - resolution: - { - integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} + engines: {node: '>= 0.4'} array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} asap@2.0.6: - resolution: - { - integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, - } + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} assertion-error@2.0.1: - resolution: - { - integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} astral-regex@1.0.0: - resolution: - { - integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} async-limiter@1.0.1: - resolution: - { - integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==, - } + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, - } + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} axios@1.16.0: - resolution: - { - integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==, - } + resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} axobject-query@4.1.0: - resolution: - { - integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} babel-plugin-jsx-dom-expressions@0.40.7: - resolution: - { - integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==, - } + resolution: {integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==} peerDependencies: '@babel/core': ^7.20.12 babel-plugin-polyfill-corejs2@0.4.17: - resolution: - { - integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==, - } + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.13.0: - resolution: - { - integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, - } + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.8: - resolution: - { - integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==, - } + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-react-compiler@1.0.0: - resolution: - { - integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==, - } + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} babel-plugin-react-native-web@0.21.2: - resolution: - { - integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==, - } + resolution: {integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==} babel-plugin-syntax-hermes-parser@0.36.0: - resolution: - { - integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==, - } + resolution: {integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==} babel-plugin-transform-flow-enums@0.0.2: - resolution: - { - integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==, - } + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} babel-preset-expo@57.0.5: - resolution: - { - integrity: sha512-sz9ZBTiUAlu5P9VORVNKoeAaY2qKFQRC6eQV5Y8aMkqcorvXKEv97UeCkFMLmMBEPKA+QeWImREKkX9/H21WQA==, - } + resolution: {integrity: sha512-sz9ZBTiUAlu5P9VORVNKoeAaY2qKFQRC6eQV5Y8aMkqcorvXKEv97UeCkFMLmMBEPKA+QeWImREKkX9/H21WQA==} peerDependencies: '@babel/runtime': ^7.20.0 expo: '*' @@ -4594,10 +3207,7 @@ packages: optional: true babel-preset-solid@1.9.12: - resolution: - { - integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==, - } + resolution: {integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==} peerDependencies: '@babel/core': ^7.0.0 solid-js: ^1.9.12 @@ -4606,144 +3216,81 @@ packages: optional: true balanced-match@4.0.3: - resolution: - { - integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} + engines: {node: 20 || >=22} base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} baseline-browser-mapping@2.11.5: - resolution: - { - integrity: sha512-xJo6a6YZnwZfnyGmQKWMbVOcii7XRibjOskRh+WJ9UHQoX16xrQrcIgAMQOzfvs8XiLMx6ih/fsLPF73iY2D1A==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-xJo6a6YZnwZfnyGmQKWMbVOcii7XRibjOskRh+WJ9UHQoX16xrQrcIgAMQOzfvs8XiLMx6ih/fsLPF73iY2D1A==} + engines: {node: '>=6.0.0'} hasBin: true better-path-resolve@1.0.0: - resolution: - { - integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} bidi-js@1.0.3: - resolution: - { - integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==, - } + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} big-integer@1.6.52: - resolution: - { - integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==, - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} binary-search-bounds@2.0.5: - resolution: - { - integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==, - } + resolution: {integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==} bl@4.1.0: - resolution: - { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, - } + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} body-parser@1.20.6: - resolution: - { - integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==, - } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + resolution: {integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} boolbase@1.0.0: - resolution: - { - integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, - } + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} bplist-creator@0.1.0: - resolution: - { - integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==, - } + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} bplist-parser@0.3.1: - resolution: - { - integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==, - } - engines: { node: '>= 5.10.0' } + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} bplist-parser@0.3.2: - resolution: - { - integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==, - } - engines: { node: '>= 5.10.0' } + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} brace-expansion@5.0.6: - resolution: - { - integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} brace-expansion@5.0.8: - resolution: - { - integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} + engines: {node: 20 || >=22} braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} browserslist@4.28.7: - resolution: - { - integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, - } + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} bytes@3.1.2: - resolution: - { - integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} cac@6.7.14: resolution: @@ -4753,340 +3300,190 @@ packages: engines: { node: '>=8' } call-bind-apply-helpers@1.0.2: - resolution: - { - integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} call-bound@1.0.4: - resolution: - { - integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} caniuse-lite@1.0.30001806: - resolution: - { - integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==, - } + resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} chai@6.2.2: - resolution: - { - integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} chalk@5.6.2: - resolution: - { - integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} chardet@2.2.0: - resolution: - { - integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==, - } + resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} chart.js@4.5.1: - resolution: - { - integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==, - } - engines: { pnpm: '>=8' } + resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} + engines: {pnpm: '>=8'} chokidar@4.0.3: - resolution: - { - integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, - } - engines: { node: '>= 14.16.0' } + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} chokidar@5.0.0: - resolution: - { - integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==, - } - engines: { node: '>= 20.19.0' } + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} chrome-launcher@0.15.2: - resolution: - { - integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==, - } - engines: { node: '>=12.13.0' } + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} hasBin: true chromium-edge-launcher@0.3.0: - resolution: - { - integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==, - } + resolution: {integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==} ci-info@2.0.0: - resolution: - { - integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, - } + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} cli-cursor@2.1.0: - resolution: - { - integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} cli-cursor@3.1.0: - resolution: - { - integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} cli-cursor@5.0.0: - resolution: - { - integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} cli-spinners@2.6.1: - resolution: - { - integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} cli-spinners@3.4.0: - resolution: - { - integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==, - } - engines: { node: '>=18.20' } + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} cliui@6.0.0: - resolution: - { - integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, - } + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} cliui@9.0.1: - resolution: - { - integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} clone@1.0.4: - resolution: - { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, - } - engines: { node: '>=0.8' } + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} clsx@2.1.1: - resolution: - { - integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: '>=7.0.0' } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} colorette@1.4.0: - resolution: - { - integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==, - } + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} command-exists@1.2.9: - resolution: - { - integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==, - } + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} commander@12.1.0: - resolution: - { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} commander@14.0.3: - resolution: - { - integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} commander@7.2.0: - resolution: - { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} commander@9.5.0: - resolution: - { - integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==, - } - engines: { node: ^12.20.0 || >=14 } + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} common-path-prefix@3.0.0: - resolution: - { - integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==, - } + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} compressible@2.0.18: - resolution: - { - integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} compression@1.8.1: - resolution: - { - integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} connect@3.7.0: - resolution: - { - integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==, - } - engines: { node: '>= 0.10.0' } + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} content-type@1.0.5: - resolution: - { - integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} convert-source-map@1.9.0: - resolution: - { - integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, - } + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} copy-anything@3.0.5: - resolution: - { - integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==, - } - engines: { node: '>=12.13' } + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} core-js-compat@3.49.0: - resolution: - { - integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==, - } + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} cosmiconfig@9.0.2: - resolution: - { - integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==, - } - engines: { node: '>=14' } + resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} + engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' peerDependenciesMeta: @@ -5094,319 +3491,181 @@ packages: optional: true cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} css-select@5.2.2: - resolution: - { - integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, - } + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} css-tree@1.1.3: - resolution: - { - integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, - } - engines: { node: '>=8.0.0' } + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} css-tree@3.2.1: - resolution: - { - integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==, - } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} css-what@6.2.2: - resolution: - { - integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} csstype@3.2.3: - resolution: - { - integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, - } + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} d3-array@2.12.1: - resolution: - { - integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==, - } + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} d3-array@3.2.4: - resolution: - { - integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} d3-axis@3.0.0: - resolution: - { - integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} d3-brush@3.0.0: - resolution: - { - integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} d3-chord@3.0.1: - resolution: - { - integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} d3-color@3.1.0: - resolution: - { - integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} d3-contour@4.0.2: - resolution: - { - integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} d3-delaunay@6.0.4: - resolution: - { - integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} d3-dispatch@3.0.1: - resolution: - { - integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} d3-drag@3.0.0: - resolution: - { - integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} d3-dsv@3.0.1: - resolution: - { - integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} hasBin: true d3-ease@3.0.1: - resolution: - { - integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} d3-fetch@3.0.1: - resolution: - { - integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} d3-force@3.0.0: - resolution: - { - integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} d3-format@3.1.2: - resolution: - { - integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} d3-geo@3.1.1: - resolution: - { - integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} d3-hexbin@0.2.2: - resolution: - { - integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==, - } + resolution: {integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==} d3-hierarchy@3.1.2: - resolution: - { - integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} d3-interpolate@3.0.1: - resolution: - { - integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} d3-path@1.0.9: - resolution: - { - integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==, - } + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} d3-path@3.1.0: - resolution: - { - integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} d3-polygon@3.0.1: - resolution: - { - integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} d3-quadtree@3.0.1: - resolution: - { - integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} d3-random@3.0.1: - resolution: - { - integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} d3-sankey@0.12.3: - resolution: - { - integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==, - } + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} d3-scale-chromatic@3.1.0: - resolution: - { - integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} d3-scale@4.0.2: - resolution: - { - integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} d3-selection@3.0.0: - resolution: - { - integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} d3-shape@1.3.7: - resolution: - { - integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==, - } + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} d3-shape@3.2.0: - resolution: - { - integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} d3-time-format@4.1.0: - resolution: - { - integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} d3-time@3.1.0: - resolution: - { - integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} d3-timer@3.0.1: - resolution: - { - integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} d3-transition@3.0.1: - resolution: - { - integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} peerDependencies: d3-selection: 2 - 3 d3-zoom@3.0.0: - resolution: - { - integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} d3@7.9.0: - resolution: - { - integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} data-urls@7.0.0: - resolution: - { - integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dataloader@1.4.0: - resolution: - { - integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==, - } + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dayjs@1.11.21: - resolution: - { - integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==, - } + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} debug@2.6.9: - resolution: - { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, - } + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -5414,10 +3673,7 @@ packages: optional: true debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -5425,11 +3681,8 @@ packages: optional: true debug@4.4.3: - resolution: - { - integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, - } - engines: { node: '>=6.0' } + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -5437,413 +3690,230 @@ packages: optional: true decamelize@1.2.0: - resolution: - { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} decimal.js-light@2.5.1: - resolution: - { - integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==, - } + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} decimal.js@10.6.0: - resolution: - { - integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==, - } + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} dedent-js@1.0.1: - resolution: - { - integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==, - } + resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} defaults@1.0.4: - resolution: - { - integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, - } + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} define-lazy-prop@2.0.0: - resolution: - { - integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} delaunator@5.1.0: - resolution: - { - integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==, - } + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} depd@2.0.0: - resolution: - { - integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} dependency-graph@1.0.0: - resolution: - { - integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} destroy@1.2.0: - resolution: - { - integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, - } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} detect-indent@6.1.0: - resolution: - { - integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} detect-libc@2.1.2: - resolution: - { - integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} devalue@5.8.2: - resolution: - { - integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==, - } + resolution: {integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==} dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dnssd-advertise@1.1.6: - resolution: - { - integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==, - } + resolution: {integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==} dom-serializer@2.0.0: - resolution: - { - integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, - } + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} domelementtype@2.3.0: - resolution: - { - integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, - } + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} domhandler@5.0.3: - resolution: - { - integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} domutils@3.2.2: - resolution: - { - integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, - } + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} dotenv-expand@12.0.3: - resolution: - { - integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} + engines: {node: '>=12'} dotenv@16.4.7: - resolution: - { - integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} dotenv@8.6.0: - resolution: - { - integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} dunder-proto@1.0.1: - resolution: - { - integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} echarts@6.1.0: - resolution: - { - integrity: sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA==, - } + resolution: {integrity: sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA==} ee-first@1.1.1: - resolution: - { - integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, - } + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} ejs@5.0.1: - resolution: - { - integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==, - } - engines: { node: '>=0.12.18' } + resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==} + engines: {node: '>=0.12.18'} hasBin: true electron-to-chromium@1.5.397: - resolution: - { - integrity: sha512-khGTy9U9x02KEtsKM8vx5A62BsRmcOsIgDpWr1ImE32Ax8GxHGPHZf+Eu9H8zOOyHJnB0jTbseyTHbq2XCT8yw==, - } + resolution: {integrity: sha512-khGTy9U9x02KEtsKM8vx5A62BsRmcOsIgDpWr1ImE32Ax8GxHGPHZf+Eu9H8zOOyHJnB0jTbseyTHbq2XCT8yw==} emoji-regex@10.6.0: - resolution: - { - integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, - } + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} encodeurl@1.0.2: - resolution: - { - integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} encodeurl@2.0.0: - resolution: - { - integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} end-of-stream@1.4.5: - resolution: - { - integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, - } + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} enquirer@2.3.6: - resolution: - { - integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} enquirer@2.4.1: - resolution: - { - integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==, - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} entities@4.5.0: - resolution: - { - integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, - } - engines: { node: '>=0.12' } + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} entities@6.0.1: - resolution: - { - integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, - } - engines: { node: '>=0.12' } + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} entities@7.0.1: - resolution: - { - integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==, - } - engines: { node: '>=0.12' } + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} entities@8.0.0: - resolution: - { - integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==, - } - engines: { node: '>=20.19.0' } + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} env-paths@2.2.1: - resolution: - { - integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} envinfo@7.21.0: - resolution: - { - integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} + engines: {node: '>=4'} hasBin: true errno@0.1.8: - resolution: - { - integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, - } + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true error-ex@1.3.4: - resolution: - { - integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==, - } + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} error-stack-parser@2.1.4: - resolution: - { - integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, - } + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} errorhandler@1.5.2: - resolution: - { - integrity: sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==} + engines: {node: '>= 0.8'} es-define-property@1.0.1: - resolution: - { - integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} es-module-lexer@2.3.1: - resolution: - { - integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==, - } + resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} es-object-atoms@1.1.1: - resolution: - { - integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: - resolution: - { - integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} es-toolkit@1.50.0: - resolution: - { - integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==, - } + resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} esbuild@0.27.7: - resolution: - { - integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} hasBin: true esbuild@0.28.1: - resolution: - { - integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} hasBin: true escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} escape-html@1.0.3: - resolution: - { - integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, - } + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: '>=0.8.0' } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} esm-env@1.2.2: - resolution: - { - integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==, - } + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true esrap@2.3.0: - resolution: - { - integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==, - } + resolution: {integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==} peerDependencies: '@typescript-eslint/types': ^8.2.0 peerDependenciesMeta: @@ -5851,110 +3921,68 @@ packages: optional: true estree-walker@2.0.2: - resolution: - { - integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, - } + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} estree-walker@3.0.3: - resolution: - { - integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, - } + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} etag@1.8.1: - resolution: - { - integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} event-target-shim@5.0.1: - resolution: - { - integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} eventemitter3@5.0.4: - resolution: - { - integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==, - } + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} expect-type@1.4.0: - resolution: - { - integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==, - } - engines: { node: '>=12.0.0' } + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + engines: {node: '>=12.0.0'} expo-asset@57.0.8: - resolution: - { - integrity: sha512-sGocG+Wd2WcZ1KjKyB2LfUZXzrBM0VHEATGcpJKF9T3HM56M/sMbH73vv+n85u5Zr0FkJjEbV1DWhGPimCR1QQ==, - } + resolution: {integrity: sha512-sGocG+Wd2WcZ1KjKyB2LfUZXzrBM0VHEATGcpJKF9T3HM56M/sMbH73vv+n85u5Zr0FkJjEbV1DWhGPimCR1QQ==} peerDependencies: expo: '*' react: '*' react-native: '*' expo-constants@57.0.8: - resolution: - { - integrity: sha512-ts+B7E5076BtkblrKGy7+Sm/R2obHfTwqhmYQVYbWRtilv3+C/xNwHZhyNEnAvzM/JjKqx7UdaITUBYaeFreZw==, - } + resolution: {integrity: sha512-ts+B7E5076BtkblrKGy7+Sm/R2obHfTwqhmYQVYbWRtilv3+C/xNwHZhyNEnAvzM/JjKqx7UdaITUBYaeFreZw==} peerDependencies: expo: '*' react-native: '*' expo-file-system@57.0.1: - resolution: - { - integrity: sha512-w7/ERvQFrGP2apTO9lDtZ+O6JQIhfakL7+Xqzh+rfMO9B4LB4qwrz+YvLgir8KFRVX64JHBnRuYBVLY1oQZcqw==, - } + resolution: {integrity: sha512-w7/ERvQFrGP2apTO9lDtZ+O6JQIhfakL7+Xqzh+rfMO9B4LB4qwrz+YvLgir8KFRVX64JHBnRuYBVLY1oQZcqw==} peerDependencies: expo: '*' react-native: '*' expo-font@57.0.1: - resolution: - { - integrity: sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ==, - } + resolution: {integrity: sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ==} peerDependencies: expo: '*' react: '*' react-native: '*' expo-keep-awake@57.0.1: - resolution: - { - integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==, - } + resolution: {integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==} peerDependencies: expo: '*' react: '*' expo-modules-autolinking@57.0.9: - resolution: - { - integrity: sha512-lj2nsAKMMRLXSFnGgaaQrWJ2fdSpLPc/bca6Rkiw4g8zYPn7qX4MRUJgavvzm/hBrzvMnlhXVgJtidOGuwBh+w==, - } + resolution: {integrity: sha512-lj2nsAKMMRLXSFnGgaaQrWJ2fdSpLPc/bca6Rkiw4g8zYPn7qX4MRUJgavvzm/hBrzvMnlhXVgJtidOGuwBh+w==} hasBin: true expo-modules-core@57.0.8: - resolution: - { - integrity: sha512-ZUU943Oso3B8jFggC+2+LOk8oa+im66IQlleYay6WP5iexbdF2fqpgC4BcYsN4xhCkDKh7KDINSt1FlcxyRRjQ==, - } + resolution: {integrity: sha512-ZUU943Oso3B8jFggC+2+LOk8oa+im66IQlleYay6WP5iexbdF2fqpgC4BcYsN4xhCkDKh7KDINSt1FlcxyRRjQ==} peerDependencies: react: '*' react-native: '*' @@ -5964,25 +3992,16 @@ packages: optional: true expo-modules-jsi@57.0.4: - resolution: - { - integrity: sha512-vt7FyqUqqFXiRVnBqYD7y+GSPTgeua5Ocoy0+SYt+RSHkZEA2Fyop7If3g1TYDzQObYybPRo7TG2Rle1XLaWFw==, - } + resolution: {integrity: sha512-vt7FyqUqqFXiRVnBqYD7y+GSPTgeua5Ocoy0+SYt+RSHkZEA2Fyop7If3g1TYDzQObYybPRo7TG2Rle1XLaWFw==} peerDependencies: react-native: '*' expo-server@57.0.1: - resolution: - { - integrity: sha512-sBfVDH6dmKVHZxqUxbfkzS00PZELMZt1IpnHKxcOTMZtR/t7CtRAFrbXcisG+EyzeqHSVDacZT+1tbYfZt5D8w==, - } - engines: { node: '>=20.16.0' } + resolution: {integrity: sha512-sBfVDH6dmKVHZxqUxbfkzS00PZELMZt1IpnHKxcOTMZtR/t7CtRAFrbXcisG+EyzeqHSVDacZT+1tbYfZt5D8w==} + engines: {node: '>=20.16.0'} expo@57.0.9: - resolution: - { - integrity: sha512-NDEvnU+vjRdMbtOyDC25OSok9/E97al97pyx+bMphQgNRGAED0D7oF8ha7oGYsLE+7jFzpPADVM9S60dGbpHIA==, - } + resolution: {integrity: sha512-NDEvnU+vjRdMbtOyDC25OSok9/E97al97pyx+bMphQgNRGAED0D7oF8ha7oGYsLE+7jFzpPADVM9S60dGbpHIA==} hasBin: true peerDependencies: '@expo/dom-webview': '*' @@ -6005,69 +4024,39 @@ packages: optional: true exponential-backoff@3.1.3: - resolution: - { - integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==, - } + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} extendable-error@0.1.7: - resolution: - { - integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==, - } + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-glob@3.3.3: - resolution: - { - integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, - } - engines: { node: '>=8.6.0' } + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} fast-uri@3.1.4: - resolution: - { - integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==, - } + resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} fast-xml-parser@4.5.7: - resolution: - { - integrity: sha512-a6Qh1RMCNbSrU1+sAyAAZH3rTe+OaWJbNZIq0S+ifZciUUOQtlVxBJwoTUE2bYhysmG/RYyI5WJFIKdBahJdrQ==, - } + resolution: {integrity: sha512-a6Qh1RMCNbSrU1+sAyAAZH3rTe+OaWJbNZIq0S+ifZciUUOQtlVxBJwoTUE2bYhysmG/RYyI5WJFIKdBahJdrQ==} hasBin: true fastq@1.20.1: - resolution: - { - integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, - } + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fb-dotslash@0.5.8: - resolution: - { - integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==} + engines: {node: '>=20'} hasBin: true fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} fdir@6.5.0: - resolution: - { - integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, - } - engines: { node: '>=12.0.0' } + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -6075,79 +4064,46 @@ packages: optional: true fetch-nodeshim@0.4.10: - resolution: - { - integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==, - } + resolution: {integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==} figures@3.2.0: - resolution: - { - integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} finalhandler@1.1.2: - resolution: - { - integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} find-cache-directory@6.0.0: - resolution: - { - integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} + engines: {node: '>=20'} find-up-simple@1.0.1: - resolution: - { - integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} flat@5.0.2: - resolution: - { - integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, - } + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true flow-enums-runtime@0.0.6: - resolution: - { - integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==, - } + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} follow-redirects@1.16.0: - resolution: - { - integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==, - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} peerDependencies: debug: '*' peerDependenciesMeta: @@ -6155,604 +4111,337 @@ packages: optional: true fontfaceobserver@2.3.0: - resolution: - { - integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==, - } + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} form-data@4.0.5: - resolution: - { - integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} form-data@4.0.6: - resolution: - { - integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} + engines: {node: '>= 6'} fresh@0.5.2: - resolution: - { - integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} fs-constants@1.0.0: - resolution: - { - integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, - } + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} fs-extra@7.0.1: - resolution: - { - integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, - } - engines: { node: '>=6 <7 || >=8' } + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} fs-extra@8.1.0: - resolution: - { - integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, - } - engines: { node: '>=6 <7 || >=8' } + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} fsevents@2.3.2: - resolution: - { - integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} get-east-asian-width@1.6.0: - resolution: - { - integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} get-intrinsic@1.3.0: - resolution: - { - integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} get-proto@1.0.1: - resolution: - { - integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} getenv@2.0.0: - resolution: - { - integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} + engines: {node: '>=6'} glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} glob@13.0.6: - resolution: - { - integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} gopd@1.2.0: - resolution: - { - integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} has-symbols@1.1.0: - resolution: - { - integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} hasown@2.0.4: - resolution: - { - integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} hermes-compiler@250829098.0.16: - resolution: - { - integrity: sha512-xsgzk+mUyvt9t1nUbF8USBlYxajTUtPJhVZ86q85s/SEoMKCF+52YZcudb0ENSnV3T3lV9mgB3s6R7+pH90zgw==, - } + resolution: {integrity: sha512-xsgzk+mUyvt9t1nUbF8USBlYxajTUtPJhVZ86q85s/SEoMKCF+52YZcudb0ENSnV3T3lV9mgB3s6R7+pH90zgw==} hermes-estree@0.35.0: - resolution: - { - integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==, - } + resolution: {integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==} hermes-estree@0.36.0: - resolution: - { - integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==, - } + resolution: {integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==} hermes-parser@0.35.0: - resolution: - { - integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==, - } + resolution: {integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==} hermes-parser@0.36.0: - resolution: - { - integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==, - } + resolution: {integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==} hosted-git-info@7.0.2: - resolution: - { - integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} html-encoding-sniffer@6.0.0: - resolution: - { - integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-entities@2.3.3: - resolution: - { - integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==, - } + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} http-errors@2.0.1: - resolution: - { - integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} https-proxy-agent@7.0.6: - resolution: - { - integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, - } - engines: { node: '>= 14' } + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} human-id@4.2.0: - resolution: - { - integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==, - } + resolution: {integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==} hasBin: true human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: '>=10.17.0' } + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} iconv-lite@0.4.24: - resolution: - { - integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} iconv-lite@0.6.3: - resolution: - { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} iconv-lite@0.7.3: - resolution: - { - integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} ignore@7.0.5: - resolution: - { - integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} image-size@1.2.1: - resolution: - { - integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==, - } - engines: { node: '>=16.x' } + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} hasBin: true immer@11.1.15: - resolution: - { - integrity: sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ==, - } + resolution: {integrity: sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ==} immutable@5.1.9: - resolution: - { - integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==, - } + resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==} import-fresh@3.3.1: - resolution: - { - integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} injection-js@2.6.1: - resolution: - { - integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==, - } + resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} internmap@1.0.1: - resolution: - { - integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==, - } + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} internmap@2.0.3: - resolution: - { - integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} interval-tree-1d@1.0.4: - resolution: - { - integrity: sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==, - } + resolution: {integrity: sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==} invariant@2.2.4: - resolution: - { - integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, - } + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-core-module@2.16.2: - resolution: - { - integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} is-docker@2.2.1: - resolution: - { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} hasBin: true is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} is-fullwidth-code-point@2.0.0: - resolution: - { - integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} is-interactive@1.0.0: - resolution: - { - integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} is-interactive@2.0.0: - resolution: - { - integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: '>=0.12.0' } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} is-potential-custom-element-name@1.0.1: - resolution: - { - integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, - } + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} is-reference@3.0.3: - resolution: - { - integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==, - } + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} is-subdir@1.2.0: - resolution: - { - integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} is-unicode-supported@0.1.0: - resolution: - { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} is-unicode-supported@2.1.0: - resolution: - { - integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} is-what@4.1.16: - resolution: - { - integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==, - } - engines: { node: '>=12.13' } + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} is-windows@1.0.2: - resolution: - { - integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} is-wsl@1.1.0: - resolution: - { - integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} is-wsl@2.2.0: - resolution: - { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} isoformat@0.2.1: - resolution: - { - integrity: sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==, - } + resolution: {integrity: sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==} jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-util@29.7.0: - resolution: - { - integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-validate@29.7.0: - resolution: - { - integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-worker@29.7.0: - resolution: - { - integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jimp-compact@0.16.1: - resolution: - { - integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==, - } + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} joi@17.13.4: - resolution: - { - integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==, - } + resolution: {integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==} js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@3.15.0: - resolution: - { - integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==, - } + resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} hasBin: true js-yaml@4.3.0: - resolution: - { - integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==, - } + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true jsc-safe-url@0.2.4: - resolution: - { - integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==, - } + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} jsdom@29.1.1: - resolution: - { - integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24.0.0 } + resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -6760,691 +4449,400 @@ packages: optional: true jsesc@3.1.0: - resolution: - { - integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} json-schema-traverse@1.0.0: - resolution: - { - integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, - } + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true jsonc-parser@3.2.0: - resolution: - { - integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, - } + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} jsonc-parser@3.3.1: - resolution: - { - integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, - } + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} jsonfile@4.0.0: - resolution: - { - integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, - } + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} kleur@4.1.5: - resolution: - { - integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} lan-network@0.2.1: - resolution: - { - integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==, - } + resolution: {integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==} hasBin: true launch-editor@2.14.1: - resolution: - { - integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==, - } + resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} less@4.8.1: - resolution: - { - integrity: sha512-jQ3lRIo1aUtiWVYXZ7mk4+V4BjCGswF3IxTLJ+4RUta8ZiHh8lhkig2G8dya2eCcyR1dYUvzuV46EkJN8PSwww==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-jQ3lRIo1aUtiWVYXZ7mk4+V4BjCGswF3IxTLJ+4RUta8ZiHh8lhkig2G8dya2eCcyR1dYUvzuV46EkJN8PSwww==} + engines: {node: '>=18'} hasBin: true leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} lighthouse-logger@1.4.2: - resolution: - { - integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==, - } + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} lightningcss-android-arm64@1.33.0: - resolution: - { - integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] lightningcss-darwin-arm64@1.33.0: - resolution: - { - integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.33.0: - resolution: - { - integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.33.0: - resolution: - { - integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.33.0: - resolution: - { - integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.33.0: - resolution: - { - integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] lightningcss-linux-arm64-musl@1.33.0: - resolution: - { - integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] lightningcss-linux-x64-gnu@1.33.0: - resolution: - { - integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] lightningcss-linux-x64-musl@1.33.0: - resolution: - { - integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] lightningcss-win32-arm64-msvc@1.33.0: - resolution: - { - integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.33.0: - resolution: - { - integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] lightningcss@1.33.0: - resolution: - { - integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==, - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} lines-and-columns@2.0.3: - resolution: - { - integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} lit-element@4.2.2: - resolution: - { - integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==, - } + resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} lit-html@3.3.3: - resolution: - { - integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==, - } + resolution: {integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==} lit@3.3.3: - resolution: - { - integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==, - } + resolution: {integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==} locate-character@3.0.0: - resolution: - { - integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==, - } + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} lodash.debounce@4.0.8: - resolution: - { - integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, - } + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash.startcase@4.4.0: - resolution: - { - integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, - } + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} lodash.throttle@4.1.1: - resolution: - { - integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, - } + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} log-symbols@2.2.0: - resolution: - { - integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} log-symbols@4.1.0: - resolution: - { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} log-symbols@7.0.1: - resolution: - { - integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} logkitty@0.7.1: - resolution: - { - integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==, - } + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} hasBin: true loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, - } + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true lru-cache@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@11.5.2: - resolution: - { - integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} magic-string@0.30.21: - resolution: - { - integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, - } + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} make-dir@5.1.0: - resolution: - { - integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==} + engines: {node: '>=18'} makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} marky@1.3.0: - resolution: - { - integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==, - } + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} math-intrinsics@1.1.0: - resolution: - { - integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} mdn-data@2.0.14: - resolution: - { - integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, - } + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} mdn-data@2.27.1: - resolution: - { - integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==, - } + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} media-typer@0.3.0: - resolution: - { - integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} memoize-one@5.2.1: - resolution: - { - integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==, - } + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} merge-anything@5.1.7: - resolution: - { - integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==, - } - engines: { node: '>=12.13' } + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} metro-babel-transformer@0.84.4: - resolution: - { - integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-cache-key@0.84.4: - resolution: - { - integrity: sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-cache@0.84.4: - resolution: - { - integrity: sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-config@0.84.4: - resolution: - { - integrity: sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - metro-core@0.84.4: - resolution: - { - integrity: sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + metro-core@0.84.4: + resolution: {integrity: sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-file-map@0.84.4: - resolution: - { - integrity: sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-minify-terser@0.84.4: - resolution: - { - integrity: sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-resolver@0.84.4: - resolution: - { - integrity: sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-runtime@0.84.4: - resolution: - { - integrity: sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-source-map@0.84.4: - resolution: - { - integrity: sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-symbolicate@0.84.4: - resolution: - { - integrity: sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true metro-transform-plugins@0.84.4: - resolution: - { - integrity: sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-transform-worker@0.84.4: - resolution: - { - integrity: sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro@0.84.4: - resolution: - { - integrity: sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} mime-db@1.54.0: - resolution: - { - integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} mime-types@3.0.2: - resolution: - { - integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mime@1.6.0: - resolution: - { - integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} hasBin: true mime@2.6.0: - resolution: - { - integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==, - } - engines: { node: '>=4.0.0' } + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} hasBin: true mimic-fn@1.2.0: - resolution: - { - integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} mimic-function@5.0.1: - resolution: - { - integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} minimatch@10.2.5: - resolution: - { - integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} minipass@7.1.3: - resolution: - { - integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==, - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} hasBin: true mri@1.2.0: - resolution: - { - integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} ms@2.0.0: - resolution: - { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, - } + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} multitars@1.0.0: - resolution: - { - integrity: sha512-H/J4fMLedtudftaYMOg7ajzLYgT3/rwbWVJbqr/iUgB8DQztn38ys5HOqI1CzSxx8QhXXwOOnnBvd4v3jG5+Mg==, - } + resolution: {integrity: sha512-H/J4fMLedtudftaYMOg7ajzLYgT3/rwbWVJbqr/iUgB8DQztn38ys5HOqI1CzSxx8QhXXwOOnnBvd4v3jG5+Mg==} nanoid@3.3.16: - resolution: - { - integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true needle@2.9.1: - resolution: - { - integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==, - } - engines: { node: '>= 4.4.x' } + resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} + engines: {node: '>= 4.4.x'} hasBin: true needle@3.5.0: - resolution: - { - integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==, - } - engines: { node: '>= 4.4.x' } + resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} + engines: {node: '>= 4.4.x'} hasBin: true negotiator@0.6.3: - resolution: - { - integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} negotiator@0.6.4: - resolution: - { - integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} negotiator@1.0.0: - resolution: - { - integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} ng-packagr@22.0.2: - resolution: - { - integrity: sha512-8qQ+RWm0W3gK8Sch1kmo3EzIUiCTXIOP2gS7b+vtqCMBf4KBjBP0wFBikW5qRau9lGOzRTML0GPFGoARPR4+fw==, - } - engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } + resolution: {integrity: sha512-8qQ+RWm0W3gK8Sch1kmo3EzIUiCTXIOP2gS7b+vtqCMBf4KBjBP0wFBikW5qRau9lGOzRTML0GPFGoARPR4+fw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} hasBin: true peerDependencies: '@angular/compiler-cli': ^22.0.0 || ^22.1.0-next.0 @@ -7456,24 +4854,15 @@ packages: optional: true nocache@3.0.4: - resolution: - { - integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==, - } - engines: { node: '>=12.0.0' } + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} node-addon-api@7.1.1: - resolution: - { - integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==, - } + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} node-fetch@2.7.0: - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: @@ -7481,63 +4870,36 @@ packages: optional: true node-forge@1.4.0: - resolution: - { - integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==, - } - engines: { node: '>= 6.13.0' } + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} + engines: {node: '>= 6.13.0'} node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} node-releases@2.0.51: - resolution: - { - integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} + engines: {node: '>=18'} node-stream-zip@1.16.0: - resolution: - { - integrity: sha512-ObaRrRoR8T68wF6suxHd7R4XQNamij6ZQHrwG7Dx1D2zeHcDNLsIOBcWrIwtDm7AsCXBguaPHgXhcjxDa2szrg==, - } - engines: { node: '>=0.12.0' } + resolution: {integrity: sha512-ObaRrRoR8T68wF6suxHd7R4XQNamij6ZQHrwG7Dx1D2zeHcDNLsIOBcWrIwtDm7AsCXBguaPHgXhcjxDa2szrg==} + engines: {node: '>=0.12.0'} npm-package-arg@11.0.3: - resolution: - { - integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} nth-check@2.1.1: - resolution: - { - integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, - } + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} nullthrows@1.1.1: - resolution: - { - integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, - } + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} nx@22.7.5: - resolution: - { - integrity: sha512-zoxsJabb33jl1QYnalDn0bicryrEBgSzdKp90d7VGGv/jDgzKrcLg/hw2ZxeYiOjWPIT/o8QNT9G9vTs4dv3AQ==, - } + resolution: {integrity: sha512-zoxsJabb33jl1QYnalDn0bicryrEBgSzdKp90d7VGGv/jDgzKrcLg/hw2ZxeYiOjWPIT/o8QNT9G9vTs4dv3AQ==} hasBin: true peerDependencies: '@swc-node/register': ^1.11.1 @@ -7549,32 +4911,20 @@ packages: optional: true ob1@0.84.4: - resolution: - { - integrity: sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} object-inspect@1.13.4: - resolution: - { - integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} obug@2.1.4: - resolution: - { - integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==, - } - engines: { node: '>=12.20.0' } + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} octane@0.1.13: - resolution: - { - integrity: sha512-bjmuF0hjLnBPOqOLTWyOtq6U5tklKw/JKF/qbAlZ2gfAZsoL9NiK7tQSWibuIUSerXELvLfmPmpbyt0fItemsg==, - } - engines: { node: '>=22' } + resolution: {integrity: sha512-bjmuF0hjLnBPOqOLTWyOtq6U5tklKw/JKF/qbAlZ2gfAZsoL9NiK7tQSWibuIUSerXELvLfmPmpbyt0fItemsg==} + engines: {node: '>=22'} peerDependencies: react: ^19.0.0 react-dom: ^19.0.0 @@ -7588,341 +4938,202 @@ packages: optional: true on-finished@2.3.0: - resolution: - { - integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} on-finished@2.4.1: - resolution: - { - integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} on-headers@1.1.0: - resolution: - { - integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} onetime@2.0.1: - resolution: - { - integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} onetime@7.0.0: - resolution: - { - integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} open@6.4.0: - resolution: - { - integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} open@7.4.2: - resolution: - { - integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} open@8.4.2: - resolution: - { - integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} ora@3.4.0: - resolution: - { - integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} ora@5.3.0: - resolution: - { - integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} ora@5.4.1: - resolution: - { - integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} ora@9.4.1: - resolution: - { - integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==} + engines: {node: '>=20'} outdent@0.5.0: - resolution: - { - integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==, - } + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} p-filter@2.1.0: - resolution: - { - integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} p-map@2.1.0: - resolution: - { - integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} package-manager-detector@0.2.11: - resolution: - { - integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==, - } + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} parse-node-version@1.0.1: - resolution: - { - integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==, - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} parse-png@2.1.0: - resolution: - { - integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} parse5@7.3.0: - resolution: - { - integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, - } + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parse5@8.0.1: - resolution: - { - integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==, - } + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} parseurl@1.3.3: - resolution: - { - integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} path-scurry@2.0.2: - resolution: - { - integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} pathe@2.0.3: - resolution: - { - integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, - } + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} picocolors@1.1.1: - resolution: - { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, - } + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.2: - resolution: - { - integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==, - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} picomatch@4.0.5: - resolution: - { - integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} piscina@5.3.0: - resolution: - { - integrity: sha512-9D3tPBayfoal6l9l4Y8NrMn1jkV718qJoYrla6P51+hh9h0Q+9/1c8KgEnoBQqhguyfgjay4biADI8HJG3pkoA==, - } - engines: { node: '>=20.x' } + resolution: {integrity: sha512-9D3tPBayfoal6l9l4Y8NrMn1jkV718qJoYrla6P51+hh9h0Q+9/1c8KgEnoBQqhguyfgjay4biADI8HJG3pkoA==} + engines: {node: '>=20.x'} + + pixelmatch@7.1.0: + resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} + hasBin: true pkg-dir@8.0.0: - resolution: - { - integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} + engines: {node: '>=18'} playwright-core@1.62.0: - resolution: - { - integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==} + engines: {node: '>=20'} hasBin: true playwright@1.62.0: - resolution: - { - integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==} + engines: {node: '>=20'} hasBin: true plist@3.1.1: - resolution: - { - integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==, - } - engines: { node: '>=10.4.0' } + resolution: {integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==} + engines: {node: '>=10.4.0'} pngjs@3.4.0: - resolution: - { - integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==, - } - engines: { node: '>=4.0.0' } + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} postcss@8.5.23: - resolution: - { - integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} + engines: {node: ^10 || ^12 || >=14} preact-render-to-string@6.7.0: - resolution: - { - integrity: sha512-Z4WR8fmLMRpdYqJ9i7vrlXSsSrxVJydwrkEXHapexfARbWfGb7vGcnvNQnIzN0cXciMVOlz/XLoiMCi9gUsy9Q==, - } + resolution: {integrity: sha512-Z4WR8fmLMRpdYqJ9i7vrlXSsSrxVJydwrkEXHapexfARbWfGb7vGcnvNQnIzN0cXciMVOlz/XLoiMCi9gUsy9Q==} peerDependencies: preact: '>=10 || >= 11.0.0-0' preact@10.29.7: - resolution: - { - integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==, - } + resolution: {integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==} peerDependencies: preact-render-to-string: '>=5' peerDependenciesMeta: @@ -7930,170 +5141,98 @@ packages: optional: true prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} hasBin: true prettier@3.9.6: - resolution: - { - integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==, - } - engines: { node: '>=14' } + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} hasBin: true pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} probe-image-size@7.3.0: - resolution: - { - integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==, - } + resolution: {integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==} proc-log@4.2.0: - resolution: - { - integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} progress@2.0.3: - resolution: - { - integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} promise@8.3.0: - resolution: - { - integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==, - } + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} proxy-from-env@2.1.0: - resolution: - { - integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} prr@1.0.1: - resolution: - { - integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, - } + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} qs@6.15.3: - resolution: - { - integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==, - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} + engines: {node: '>=0.6'} quansync@0.2.11: - resolution: - { - integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==, - } + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} queue@6.0.2: - resolution: - { - integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==, - } + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} range-parser@1.2.1: - resolution: - { - integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} raw-body@2.5.3: - resolution: - { - integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} react-devtools-core@6.1.5: - resolution: - { - integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==, - } + resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} react-dom@19.2.3: - resolution: - { - integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==, - } + resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: react: ^19.2.3 react-is@18.3.1: - resolution: - { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, - } + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} react-is@19.2.8: - resolution: - { - integrity: sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==, - } + resolution: {integrity: sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==} react-native-svg@15.15.4: - resolution: - { - integrity: sha512-boT/vIRgj6zZKBpfTPJJiYWMbZE9duBMOwPK6kCSTgxsS947IFMOq9OgIFkpWZTB7t229H24pDRkh3W9ZK/J1A==, - } + resolution: {integrity: sha512-boT/vIRgj6zZKBpfTPJJiYWMbZE9duBMOwPK6kCSTgxsS947IFMOq9OgIFkpWZTB7t229H24pDRkh3W9ZK/J1A==} peerDependencies: react: '*' react-native: '*' react-native-svg@15.15.5: - resolution: - { - integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==, - } + resolution: {integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==} peerDependencies: react: '*' react-native: '*' react-native@0.86.2: - resolution: - { - integrity: sha512-zbJXGZpwfZGA79Z9ob6Atvfx4nAQL8yJBa35s58E4Oo+khPykfQP2sTeumkKbjwajFYfVayg8pj7Il9nIfTk7A==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-zbJXGZpwfZGA79Z9ob6Atvfx4nAQL8yJBa35s58E4Oo+khPykfQP2sTeumkKbjwajFYfVayg8pj7Il9nIfTk7A==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true peerDependencies: '@react-native/jest-preset': 0.86.2 @@ -8106,10 +5245,7 @@ packages: optional: true react-redux@9.3.0: - resolution: - { - integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==, - } + resolution: {integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==} peerDependencies: '@types/react': ^18.2.25 || ^19 react: ^18.0 || ^19 @@ -8121,1070 +5257,605 @@ packages: optional: true react-refresh@0.14.2: - resolution: - { - integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} react@19.2.3: - resolution: - { - integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + engines: {node: '>=0.10.0'} read-yaml-file@1.1.0: - resolution: - { - integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} readable-stream@3.6.2: - resolution: - { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} readdirp@4.1.2: - resolution: - { - integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, - } - engines: { node: '>= 14.18.0' } + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} readdirp@5.0.0: - resolution: - { - integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==, - } - engines: { node: '>= 20.19.0' } + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} recharts@3.10.1: - resolution: - { - integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==} + engines: {node: '>=18'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 redux-thunk@3.1.0: - resolution: - { - integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==, - } + resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} peerDependencies: redux: ^5.0.0 redux@5.0.1: - resolution: - { - integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==, - } + resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} reflect-metadata@0.2.2: - resolution: - { - integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==, - } + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} regenerate-unicode-properties@10.2.2: - resolution: - { - integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} regenerate@1.4.2: - resolution: - { - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, - } + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} regenerator-runtime@0.13.11: - resolution: - { - integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, - } + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} regexpu-core@6.4.0: - resolution: - { - integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} regjsgen@0.8.0: - resolution: - { - integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, - } + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} regjsparser@0.13.2: - resolution: - { - integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==, - } + resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} hasBin: true require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} require-from-string@2.0.2: - resolution: - { - integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} require-main-filename@2.0.0: - resolution: - { - integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, - } + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} reselect@5.2.0: - resolution: - { - integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==, - } + resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==} resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} resolve-workspace-root@2.0.1: - resolution: - { - integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==, - } + resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==} resolve.exports@2.0.3: - resolution: - { - integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} resolve@1.22.12: - resolution: - { - integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} hasBin: true restore-cursor@2.0.0: - resolution: - { - integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} restore-cursor@3.1.0: - resolution: - { - integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} restore-cursor@5.1.0: - resolution: - { - integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} reusify@1.1.0: - resolution: - { - integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, - } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} robust-predicates@3.0.3: - resolution: - { - integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==, - } + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} rolldown@1.1.5: - resolution: - { - integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true rollup-plugin-dts@6.4.1: - resolution: - { - integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} + engines: {node: '>=20'} peerDependencies: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 || ^6.0 rollup@4.62.3: - resolution: - { - integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==, - } - engines: { node: '>=18.0.0', npm: '>=8.0.0' } + resolution: {integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rw@1.3.3: - resolution: - { - integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==, - } + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} rxjs@7.8.2: - resolution: - { - integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, - } + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} sade@1.8.1: - resolution: - { - integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - - sass@1.102.0: - resolution: - { - integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==, - } - engines: { node: '>=20.19.0' } + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.102.0: + resolution: {integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==} + engines: {node: '>=20.19.0'} hasBin: true sax@1.6.1: - resolution: - { - integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==, - } - engines: { node: '>=11.0.0' } + resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} + engines: {node: '>=11.0.0'} saxes@6.0.0: - resolution: - { - integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, - } - engines: { node: '>=v12.22.7' } + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} scheduler@0.27.0: - resolution: - { - integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==, - } + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} scule@1.3.0: - resolution: - { - integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==, - } + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.7.4: - resolution: - { - integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} hasBin: true semver@7.8.5: - resolution: - { - integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} hasBin: true send@0.19.2: - resolution: - { - integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} serialize-error@2.1.0: - resolution: - { - integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} seroval-plugins@1.5.6: - resolution: - { - integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==} + engines: {node: '>=10'} peerDependencies: seroval: ^1.0 seroval@1.5.6: - resolution: - { - integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==} + engines: {node: '>=10'} serve-static@1.16.3: - resolution: - { - integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} set-blocking@2.0.0: - resolution: - { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, - } + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} setprototypeof@1.2.0: - resolution: - { - integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, - } + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} shell-quote@1.10.0: - resolution: - { - integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} + engines: {node: '>= 0.4'} side-channel-list@1.0.1: - resolution: - { - integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} side-channel-map@1.0.1: - resolution: - { - integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} side-channel-weakmap@1.0.2: - resolution: - { - integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} side-channel@1.1.1: - resolution: - { - integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} siginfo@2.0.0: - resolution: - { - integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, - } + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: '>=14' } + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} simple-plist@1.3.1: - resolution: - { - integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==, - } + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} slice-ansi@2.1.0: - resolution: - { - integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} slugify@1.6.9: - resolution: - { - integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==, - } - engines: { node: '>=8.0.0' } + resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==} + engines: {node: '>=8.0.0'} smol-toml@1.6.1: - resolution: - { - integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==, - } - engines: { node: '>= 18' } + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + engines: {node: '>= 18'} solid-js@1.9.14: - resolution: - { - integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==, - } + resolution: {integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==} solid-refresh@0.6.3: - resolution: - { - integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==, - } + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} peerDependencies: solid-js: ^1.3 source-map-js@1.2.1: - resolution: - { - integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} source-map@0.5.7: - resolution: - { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} spawndamnit@3.0.1: - resolution: - { - integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==, - } + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} stackback@0.0.2: - resolution: - { - integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, - } + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} stackframe@1.3.4: - resolution: - { - integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, - } + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} stacktrace-parser@0.1.11: - resolution: - { - integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} statuses@1.5.0: - resolution: - { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} statuses@2.0.2: - resolution: - { - integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} std-env@4.2.0: - resolution: - { - integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==, - } + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} stdin-discarder@0.3.2: - resolution: - { - integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} + engines: {node: '>=18'} stream-buffers@2.2.0: - resolution: - { - integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==, - } - engines: { node: '>= 0.10.0' } + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} stream-parser@0.3.1: - resolution: - { - integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==, - } + resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} string-width@7.2.0: - resolution: - { - integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} string-width@8.2.2: - resolution: - { - integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + engines: {node: '>=20'} string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} strip-ansi@5.2.0: - resolution: - { - integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} strip-ansi@7.2.0: - resolution: - { - integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} strnum@1.1.2: - resolution: - { - integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==, - } + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} structured-headers@0.4.1: - resolution: - { - integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==, - } + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} supports-color@10.2.2: - resolution: - { - integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} supports-hyperlinks@2.3.0: - resolution: - { - integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} svelte-check@4.7.4: - resolution: - { - integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==, - } - engines: { node: '>= 18.0.0' } + resolution: {integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==} + engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: ^5.0.0 || ^6.0.0 svelte2tsx@0.7.59: - resolution: - { - integrity: sha512-Itj7Wz9WIiGFl/uJa58+rf43ajezaljKK/KTOHq5abUjto56xe+o5SOzLwSoeJ5hma9NZEstpZiazFW2q1nZPQ==, - } + resolution: {integrity: sha512-Itj7Wz9WIiGFl/uJa58+rf43ajezaljKK/KTOHq5abUjto56xe+o5SOzLwSoeJ5hma9NZEstpZiazFW2q1nZPQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 || ^6.0.0 svelte@5.56.8: - resolution: - { - integrity: sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==} + engines: {node: '>=18'} symbol-tree@3.2.4: - resolution: - { - integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, - } + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} tar-stream@2.2.0: - resolution: - { - integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} term-size@2.2.1: - resolution: - { - integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} terminal-link@2.1.1: - resolution: - { - integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} terser@5.49.0: - resolution: - { - integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==} + engines: {node: '>=10'} hasBin: true throat@5.0.0: - resolution: - { - integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==, - } + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} tiny-invariant@1.3.3: - resolution: - { - integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==, - } + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} tinybench@2.9.0: - resolution: - { - integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, - } + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinyexec@1.2.4: - resolution: - { - integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} tinyglobby@0.2.17: - resolution: - { - integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==, - } - engines: { node: '>=12.0.0' } + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} tinyrainbow@3.1.0: - resolution: - { - integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==, - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} tldts-core@7.4.9: - resolution: - { - integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==, - } + resolution: {integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==} tldts@7.4.9: - resolution: - { - integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==, - } + resolution: {integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==} hasBin: true - tmp@0.2.6: - resolution: - { - integrity: sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==, - } - engines: { node: '>=14.14' } - + tmp@0.2.6: + resolution: {integrity: sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==} + engines: {node: '>=14.14'} + tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: '>=8.0' } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} toidentifier@1.0.1: - resolution: - { - integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} topojson-client@3.1.0: - resolution: - { - integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==, - } + resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} hasBin: true toqr@0.1.1: - resolution: - { - integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==, - } + resolution: {integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==} tough-cookie@6.0.2: - resolution: - { - integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==, - } - engines: { node: '>=16' } + resolution: {integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==} + engines: {node: '>=16'} tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} tr46@6.0.0: - resolution: - { - integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} tree-kill@1.2.2: - resolution: - { - integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, - } + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true tsconfig-paths@4.2.0: - resolution: - { - integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} tslib@2.3.0: - resolution: - { - integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==, - } + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} tslib@2.8.1: - resolution: - { - integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, - } + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} type-fest@0.7.1: - resolution: - { - integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} type-is@1.6.18: - resolution: - { - integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} typescript@6.0.3: - resolution: - { - integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==, - } - engines: { node: '>=14.17' } + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} hasBin: true undici-types@7.24.6: - resolution: - { - integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==, - } + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} undici@7.29.0: - resolution: - { - integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==, - } - engines: { node: '>=20.18.1' } + resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} + engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: - resolution: - { - integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} unicode-match-property-ecmascript@2.0.0: - resolution: - { - integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} unicode-match-property-value-ecmascript@2.2.1: - resolution: - { - integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.2.0: - resolution: - { - integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} universalify@0.1.2: - resolution: - { - integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, - } - engines: { node: '>= 4.0.0' } + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} unpipe@1.0.0: - resolution: - { - integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} update-browserslist-db@1.2.3: - resolution: - { - integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==, - } + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' us-atlas@3.0.1: - resolution: - { - integrity: sha512-wEIZCq0ImPvGblTd8gZMqNNCPkQshugMUG/8nkSWXb02+XqNFREg9atHOKP9w6prLZTpqcLhSvdBW81MkV3/0Q==, - } + resolution: {integrity: sha512-wEIZCq0ImPvGblTd8gZMqNNCPkQshugMUG/8nkSWXb02+XqNFREg9atHOKP9w6prLZTpqcLhSvdBW81MkV3/0Q==} use-sync-external-store@1.6.0: - resolution: - { - integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==, - } + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} utils-merge@1.0.1: - resolution: - { - integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, - } - engines: { node: '>= 0.4.0' } + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} uuid@7.0.3: - resolution: - { - integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==, - } + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true validate-npm-package-name@5.0.1: - resolution: - { - integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} vary@1.1.2: - resolution: - { - integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} victory-vendor@37.3.6: - resolution: - { - integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==, - } + resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==} vite-plugin-solid@2.11.14: - resolution: - { - integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==, - } + resolution: {integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==} peerDependencies: '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.0.0 || ^7.0.0 solid-js: ^1.7.2 @@ -9194,11 +5865,8 @@ packages: optional: true vite@8.1.5: - resolution: - { - integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 @@ -9240,10 +5908,7 @@ packages: optional: true vitefu@1.1.3: - resolution: - { - integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==, - } + resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: @@ -9251,11 +5916,8 @@ packages: optional: true vitest@4.1.10: - resolution: - { - integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==, - } - engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' @@ -9295,16 +5957,10 @@ packages: optional: true vlq@1.0.1: - resolution: - { - integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==, - } + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} vue@3.5.40: - resolution: - { - integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==, - } + resolution: {integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -9312,135 +5968,75 @@ packages: optional: true w3c-xmlserializer@5.0.0: - resolution: - { - integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} warn-once@0.1.1: - resolution: - { - integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==, - } + resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, - } + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} webidl-conversions@8.0.1: - resolution: - { - integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} whatwg-fetch@3.6.20: - resolution: - { - integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, - } + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} whatwg-mimetype@5.0.0: - resolution: - { - integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==, - } - engines: { node: '>=20' } + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} whatwg-url-minimum@0.1.2: - resolution: - { - integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==, - } + resolution: {integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==} whatwg-url@16.0.1: - resolution: - { - integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} which-module@2.0.1: - resolution: - { - integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, - } + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true why-is-node-running@2.3.0: - resolution: - { - integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} hasBin: true world-atlas@2.0.2: - resolution: - { - integrity: sha512-IXfV0qwlKXpckz1FhwXVwKRjiIhOnWttOskm5CtxMsjgE/MXAYRHWJqgXOpM8IkcPBoXnyTU5lFHcYa5ChG0LQ==, - } + resolution: {integrity: sha512-IXfV0qwlKXpckz1FhwXVwKRjiIhOnWttOskm5CtxMsjgE/MXAYRHWJqgXOpM8IkcPBoXnyTU5lFHcYa5ChG0LQ==} wrap-ansi@6.2.0: - resolution: - { - integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} wrap-ansi@9.0.2: - resolution: - { - integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} ws@6.2.6: - resolution: - { - integrity: sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==, - } + resolution: {integrity: sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -9451,11 +6047,8 @@ packages: optional: true ws@7.5.13: - resolution: - { - integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==, - } - engines: { node: '>=8.3.0' } + resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} + engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -9466,11 +6059,8 @@ packages: optional: true ws@8.21.0: - resolution: - { - integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==, - } - engines: { node: '>=10.0.0' } + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: '>=5.0.2' @@ -9481,11 +6071,8 @@ packages: optional: true xcode@3.0.1: - resolution: - { - integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==, - } - engines: { node: '>=10.0.0' } + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} xhr2@0.2.1: resolution: @@ -9495,141 +6082,82 @@ packages: engines: { node: '>= 6' } xml-name-validator@5.0.0: - resolution: - { - integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} xml2js@0.6.0: - resolution: - { - integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==, - } - engines: { node: '>=4.0.0' } + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} xmlbuilder@11.0.1: - resolution: - { - integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} xmlbuilder@15.1.1: - resolution: - { - integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==, - } - engines: { node: '>=8.0' } + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} xmlchars@2.2.0: - resolution: - { - integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, - } + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} y18n@4.0.3: - resolution: - { - integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, - } + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yaml@2.9.0: - resolution: - { - integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==, - } - engines: { node: '>= 14.6' } + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} hasBin: true yargs-parser@18.1.3: - resolution: - { - integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} yargs-parser@22.0.0: - resolution: - { - integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=23 } + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} yargs@15.4.1: - resolution: - { - integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} yargs@18.1.0: - resolution: - { - integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=23 } + resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} yoctocolors@2.2.0: - resolution: - { - integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} + engines: {node: '>=18'} zimmerframe@1.1.4: - resolution: - { - integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==, - } + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} zod@3.25.76: - resolution: - { - integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==, - } + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} zrender@6.1.0: - resolution: - { - integrity: sha512-oEGMDB6pOP2S6OwRR4PdVv610zrjnA3Bh+JnSG12fYJlBKjtNAoEb5fSUoCOOINlH96I2fU38/A2UpRKs67xYQ==, - } + resolution: {integrity: sha512-oEGMDB6pOP2S6OwRR4PdVv610zrjnA3Bh+JnSG12fYJlBKjtNAoEb5fSUoCOOINlH96I2fU38/A2UpRKs67xYQ==} snapshots: + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -14280,6 +10808,10 @@ snapshots: optionalDependencies: '@napi-rs/nice': 1.1.1 + pixelmatch@7.1.0: + dependencies: + pngjs: 7.0.0 + pkg-dir@8.0.0: dependencies: find-up-simple: 1.0.1 @@ -14300,6 +10832,8 @@ snapshots: pngjs@3.4.0: {} + pngjs@7.0.0: {} + postcss@8.5.23: dependencies: nanoid: 3.3.16 diff --git a/scripts/catalog-definition-shapes.test.mjs b/scripts/catalog-definition-shapes.test.mjs index 3ee3123e..55456308 100644 --- a/scripts/catalog-definition-shapes.test.mjs +++ b/scripts/catalog-definition-shapes.test.mjs @@ -31,6 +31,7 @@ describe('catalog definition shapes', () => { (entry) => entry.isFile() && (entry.name === 'tanstack.ts' || + entry.name === 'tanstack-view.tsx' || entry.name === 'view.tsx' || entry.name === 'chart.ts'), ) diff --git a/scripts/catalog-preview.mjs b/scripts/catalog-preview.mjs index 28494304..8e4fd1b7 100644 --- a/scripts/catalog-preview.mjs +++ b/scripts/catalog-preview.mjs @@ -81,6 +81,7 @@ export const catalogGuidePreviewCaseIds = [ '118-token-usage-calendar', '120-themed-interactive-area', '121-active-bar-dashboard', + '130-shadcn-radar-multiple', '80-echarts-axis-pointer', 'bar-horizontal-ranking', ] @@ -88,6 +89,8 @@ export const catalogLegendPreviewCaseIds = ['81-recharts-interactive-legend'] export const catalogMarginPreviewCaseIds = [ '115-definition-motion', '118-token-usage-calendar', + '128-shadcn-bar-multiple', + '132-shadcn-tooltip-advanced', '80-echarts-axis-pointer', '81-recharts-interactive-legend', '88-echarts-free-cursor', @@ -118,6 +121,9 @@ export const catalogTextPreviewCaseIds = [ '123-active-donut-metric', '125-sales-funnel', '126-drillable-sunburst', + '129-shadcn-pie-donut-text', + '130-shadcn-radar-multiple', + '131-shadcn-radial-text', 'bar-horizontal-ranking', 'heatmap-labeled', ] @@ -177,6 +183,7 @@ export async function writeCatalogPreviews() { darkSvg, entry.id, JSDOM, + catalogPreviewPresentation(entry), ) validateCatalogPreviewXml(portableSvg, entry.id, JSDOM) const assetPath = path.join(previewsDirectory, `${entry.id}.svg`) @@ -248,6 +255,7 @@ export function isTransientCatalogPreviewBrowserError(error) { export async function checkCatalogPreviews() { const cases = await orderedCatalogCases() + const casesById = new Map(cases.map((entry) => [entry.id, entry])) const { JSDOM } = await import('jsdom') const expectedIds = cases.map((entry) => entry.id) const manifest = JSON.parse(await fs.readFile(manifestPath, 'utf8')) @@ -275,7 +283,11 @@ export async function checkCatalogPreviews() { ) validateCatalogPreviewSvg(source, asset.id) validateCatalogPreviewXml(source, asset.id, JSDOM) - validateCatalogPreviewPresentation(source, asset.id) + validateCatalogPreviewPresentation( + source, + asset.id, + catalogPreviewPresentation(casesById.get(asset.id)), + ) const actual = assetRecord(asset.id, source) assert( actual.sha256 === asset.sha256 && actual.bytes === asset.bytes, @@ -291,6 +303,7 @@ export function createPortableCatalogPreviewSvg( darkSvg, caseId, JSDOM, + presentation = {}, ) { validateCatalogPreviewSvg(lightSvg, caseId, false) validateCatalogPreviewSvg(darkSvg, caseId, false) @@ -304,7 +317,7 @@ export function createPortableCatalogPreviewSvg( lightRoot.insertAdjacentHTML('afterbegin', portableThemeStyle(paints)) const result = `${lightRoot.outerHTML}\n` validateCatalogPreviewSvg(result, caseId) - validateCatalogPreviewPresentation(result, caseId) + validateCatalogPreviewPresentation(result, caseId, presentation) return result } finally { lightDocument.window.close() @@ -340,26 +353,32 @@ export function validateCatalogPreviewSvg( `catalog preview ${caseId} is missing its portable catalog theme`, ) assert( - !trimmed.includes('background:'), + !/[{;]background\s*:/u.test(trimmed), `catalog preview ${caseId} must keep a transparent background`, ) } } -export function validateCatalogPreviewPresentation(svg, caseId) { - if (!guidePreviewCaseIdSet.has(caseId)) { +export function validateCatalogPreviewPresentation( + svg, + caseId, + presentation = {}, +) { + if (!presentation.guides && !guidePreviewCaseIdSet.has(caseId)) { assert( !svg.includes('ts-chart__axes') && !svg.includes('ts-chart__grid'), `catalog preview ${caseId} must omit axes and grids`, ) } - if (!legendPreviewCaseIdSet.has(caseId)) { + if (!presentation.legend && !legendPreviewCaseIdSet.has(caseId)) { assert( !svg.includes('ts-chart__legend'), `catalog preview ${caseId} must omit its legend`, ) } - if (textPreviewCaseIdSet.has(caseId)) { + if (presentation.text === 'retain') { + // Collection previews retain whichever labels define each upstream variant. + } else if (textPreviewCaseIdSet.has(caseId)) { assert( svg.includes(' { - const elements = allElements.filter((element) => { - const bounds = element.getBoundingClientRect() - const style = getComputedStyle(element) - return ( - bounds.width > 0 && - bounds.height > 0 && - style.display !== 'none' && - style.visibility !== 'hidden' + return await page + .locator('svg.ts-chart') + .evaluateAll((allElements) => { + const elements = allElements.filter((element) => { + const bounds = element.getBoundingClientRect() + const style = getComputedStyle(element) + return ( + bounds.width > 0 && + bounds.height > 0 && + style.display !== 'none' && + style.visibility !== 'hidden' + ) + }) + const container = elements[0]?.closest('.embed-chart') + if (!container) + throw new Error('Catalog preview has no chart container') + const containerBounds = container.getBoundingClientRect() + const overflow = elements.flatMap((element) => + [...element.querySelectorAll('text')].flatMap((label) => { + if (!label.textContent?.trim()) return [] + const style = getComputedStyle(label) + if (style.display === 'none' || style.visibility === 'hidden') + return [] + const bounds = label.getBoundingClientRect() + const tolerance = 1 + return bounds.left < containerBounds.left - tolerance || + bounds.top < containerBounds.top - tolerance || + bounds.right > containerBounds.right + tolerance || + bounds.bottom > containerBounds.bottom + tolerance + ? [ + `${label.textContent.trim()} (${Math.round(bounds.left - containerBounds.left)},${Math.round(bounds.top - containerBounds.top)} ${Math.round(bounds.width)}×${Math.round(bounds.height)})`, + ] + : [] + }), ) - }) - const container = elements[0]?.closest('.embed-chart') - if (!container) throw new Error('Catalog preview has no chart container') - const containerBounds = container.getBoundingClientRect() - const overflow = elements.flatMap((element) => - [...element.querySelectorAll('text')].flatMap((label) => { - if (!label.textContent?.trim()) return [] - const style = getComputedStyle(label) - if (style.display === 'none' || style.visibility === 'hidden') - return [] - const bounds = label.getBoundingClientRect() - const tolerance = 1 - return bounds.left < containerBounds.left - tolerance || - bounds.top < containerBounds.top - tolerance || - bounds.right > containerBounds.right + tolerance || - bounds.bottom > containerBounds.bottom + tolerance - ? [ - `${label.textContent.trim()} (${Math.round(bounds.left - containerBounds.left)},${Math.round(bounds.top - containerBounds.top)} ${Math.round(bounds.width)}×${Math.round(bounds.height)})`, - ] - : [] - }), - ) - if (overflow.length > 0) { - throw new Error( - `Catalog preview has clipped SVG labels:\n${overflow.join('\n')}`, - ) - } + if (overflow.length > 0) { + throw new Error( + `Catalog preview has clipped SVG labels:\n${overflow.join('\n')}`, + ) + } - function cloneSurface(element) { - const source = element.cloneNode(true) - const controls = document.createElementNS( - 'http://www.w3.org/2000/svg', - 'g', - ) - controls.setAttribute('data-tanstack-catalog-preview-controls', '') - controls.setAttribute('aria-hidden', 'true') - for (const overlay of element.parentElement?.querySelectorAll( - ':scope > svg:not(.ts-chart)', - ) ?? []) { - const clone = overlay.cloneNode(true) - clone - .querySelectorAll( - '.overlay, [data-chart-handle-surface], [style*="display: none"]', - ) - .forEach((node) => node.remove()) - controls.append(...clone.childNodes) + function cloneSurface(element) { + const source = element.cloneNode(true) + const controls = document.createElementNS( + 'http://www.w3.org/2000/svg', + 'g', + ) + controls.setAttribute('data-tanstack-catalog-preview-controls', '') + controls.setAttribute('aria-hidden', 'true') + for (const overlay of element.parentElement?.querySelectorAll( + ':scope > svg:not(.ts-chart)', + ) ?? []) { + const clone = overlay.cloneNode(true) + clone + .querySelectorAll( + '.overlay, [data-chart-handle-surface], [style*="display: none"]', + ) + .forEach((node) => node.remove()) + controls.append(...clone.childNodes) + } + if (controls.childNodes.length > 0) source.append(controls) + return source } - if (controls.childNodes.length > 0) source.append(controls) - return source - } - if (elements.length === 1) { - return cloneSurface(elements[0]).outerHTML - } + if (elements.length === 1) { + return cloneSurface(elements[0]).outerHTML + } - const composed = document.createElementNS( - 'http://www.w3.org/2000/svg', - 'svg', - ) - composed.setAttribute('class', 'ts-chart') - composed.setAttribute('width', '100%') - composed.setAttribute('height', '100%') - composed.setAttribute('viewBox', '0 0 288 192') - composed.setAttribute('role', 'img') - composed.setAttribute( - 'aria-label', - container.closest('[aria-label]')?.getAttribute('aria-label') ?? - 'Chart preview', - ) - composed.setAttribute('data-tanstack-catalog-preview-surfaces', '') - - for (const element of elements) { - const bounds = element.getBoundingClientRect() - const source = cloneSurface(element) - source.setAttribute('x', String(bounds.left - containerBounds.left)) - source.setAttribute('y', String(bounds.top - containerBounds.top)) - source.setAttribute('width', String(bounds.width)) - source.setAttribute('height', String(bounds.height)) - source.setAttribute('aria-hidden', 'true') - composed.append(source) - } - return composed.outerHTML - }) + const composed = document.createElementNS( + 'http://www.w3.org/2000/svg', + 'svg', + ) + composed.setAttribute('class', 'ts-chart') + composed.setAttribute('width', '100%') + composed.setAttribute('height', '100%') + composed.setAttribute('viewBox', '0 0 288 192') + composed.setAttribute('role', 'img') + composed.setAttribute( + 'aria-label', + container.closest('[aria-label]')?.getAttribute('aria-label') ?? + 'Chart preview', + ) + composed.setAttribute('data-tanstack-catalog-preview-surfaces', '') + + for (const element of elements) { + const bounds = element.getBoundingClientRect() + const source = cloneSurface(element) + source.setAttribute('x', String(bounds.left - containerBounds.left)) + source.setAttribute('y', String(bounds.top - containerBounds.top)) + source.setAttribute('width', String(bounds.width)) + source.setAttribute('height', String(bounds.height)) + source.setAttribute('aria-hidden', 'true') + composed.append(source) + } + return composed.outerHTML + }) + .catch((error) => { + throw new Error( + `catalog preview ${entry.id} (${theme}) failed presentation validation`, + { cause: error }, + ) + }) } finally { await page.close() } diff --git a/scripts/catalog-preview.test.mjs b/scripts/catalog-preview.test.mjs index afe9d814..45be5fd0 100644 --- a/scripts/catalog-preview.test.mjs +++ b/scripts/catalog-preview.test.mjs @@ -79,6 +79,18 @@ describe('catalog previews', () => { ) }) + it('does not treat semantic background IDs as CSS background paint', () => { + expect(() => + validateCatalogPreviewSvg( + portable().replace( + ' { expect(() => validateCatalogPreviewXml( @@ -102,6 +114,7 @@ describe('catalog previews', () => { '118-token-usage-calendar', '120-themed-interactive-area', '121-active-bar-dashboard', + '130-shadcn-radar-multiple', '80-echarts-axis-pointer', 'bar-horizontal-ranking', ]) @@ -111,6 +124,8 @@ describe('catalog previews', () => { expect(catalogMarginPreviewCaseIds).toEqual([ '115-definition-motion', '118-token-usage-calendar', + '128-shadcn-bar-multiple', + '132-shadcn-tooltip-advanced', '80-echarts-axis-pointer', '81-recharts-interactive-legend', '88-echarts-free-cursor', @@ -141,6 +156,9 @@ describe('catalog previews', () => { '123-active-donut-metric', '125-sales-funnel', '126-drillable-sunburst', + '129-shadcn-pie-donut-text', + '130-shadcn-radar-multiple', + '131-shadcn-radial-text', 'bar-horizontal-ranking', 'heatmap-labeled', ]) @@ -162,6 +180,13 @@ describe('catalog previews', () => { '115-definition-motion', ), ).not.toThrow() + expect(() => + validateCatalogPreviewPresentation( + 'label', + 'shadcn-collection-case', + { guides: true, legend: true, text: 'retain' }, + ), + ).not.toThrow() expect(() => validateCatalogPreviewPresentation( 'label', diff --git a/scripts/generate-shadcn-cases.mjs b/scripts/generate-shadcn-cases.mjs new file mode 100644 index 00000000..78b5b9d7 --- /dev/null +++ b/scripts/generate-shadcn-cases.mjs @@ -0,0 +1,334 @@ +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import path from 'node:path' +import { format } from 'prettier' + +const root = path.resolve(import.meta.dirname, '..') +const catalogPath = path.join( + root, + 'benchmarks/conformance/shadcn/catalog.json', +) +const casesRoot = path.join(root, 'benchmarks/conformance/cases') +const coverageRoot = path.join(root, 'benchmarks/conformance') +const catalog = JSON.parse(await readFile(catalogPath, 'utf8')) +let nextCaseNumber = + Math.max( + 126, + ...catalog.cases.map((entry) => + Number(entry.localCaseId?.match(/^(\d+)-/u)?.[1] ?? 0), + ), + ) + 1 +let generatedCount = 0 + +for (const entry of catalog.cases) { + if (!entry.localCaseId) { + entry.localCaseId = `${nextCaseNumber}-shadcn-${entry.name.replace(/^chart-/u, '')}` + nextCaseNumber += 1 + } + const caseNumber = Number(entry.localCaseId.match(/^(\d+)-/u)?.[1] ?? 0) + if (caseNumber < 127) continue + const id = entry.localCaseId + const directory = path.join(casesRoot, id) + generatedCount += 1 + await mkdir(directory, { recursive: true }) + await writeFile( + path.join(directory, 'case.json'), + `${JSON.stringify(metadata(entry, id, caseNumber), null, 2)}\n`, + ) + await writeFile( + path.join(directory, 'tanstack.ts'), + `import { createShadcnTanStackExample } from '../../shared/shadcn-catalog-tanstack'\n\nconst example = createShadcnTanStackExample('${entry.name}')\n\nexport const shadcnDefinition = example.definition\nexport const catalogCase = example.catalogCase\nexport const mount = example.mount\n`, + ) + await writeFile( + path.join(directory, 'recharts.ts'), + `import { createShadcnRechartsExample } from '../../shared/shadcn-catalog-recharts'\n\nconst example = createShadcnRechartsExample('${entry.name}')\n\nexport const mount = example.mount\n`, + ) +} + +await writeFile(catalogPath, `${JSON.stringify(catalog, null, 2)}\n`) +await syncDefinitionCoverage() +console.log(`Synchronized ${generatedCount} generated shadcn chart cases.`) + +async function syncDefinitionCoverage() { + const roadmapPath = path.join( + coverageRoot, + 'definition-coverage-roadmap.json', + ) + const roadmap = JSON.parse(await readFile(roadmapPath, 'utf8')) + const generatedEntries = catalog.cases + .filter((entry) => Number(entry.localCaseId?.match(/^(\d+)-/u)?.[1]) >= 127) + .map(coverageEntry) + const generatedIds = new Set(generatedEntries.map((entry) => entry.id)) + const retainedCases = roadmap.cases.filter( + (entry) => !generatedIds.has(entry.id), + ) + const insertionIndex = retainedCases.findIndex((entry) => + entry.id.startsWith('bar-'), + ) + retainedCases.splice(insertionIndex, 0, ...generatedEntries) + roadmap.cases = retainedCases + await writeFile(roadmapPath, `${JSON.stringify(roadmap, null, 2)}\n`) + + const counts = countCoverage(roadmap.cases) + const auditPath = path.join(coverageRoot, roadmap.audit) + let audit = await readFile(auditPath, 'utf8') + audit = replaceGeneratedRows( + audit, + generatedIds, + generatedEntries.map(auditRow).join('\n'), + '126-shadcn-tooltip-advanced', + ) + audit = audit + .replace( + /Scope: all \d+ catalog directories\./u, + `Scope: all ${counts.total} catalog directories.`, + ) + .replace( + /Cases 119 through 126 were added afterward/u, + 'Cases 119 through 126 and the pinned shadcn collection were added afterward', + ) + .replace( + /(?:One hundred fourteen|\d+) of the \d+ cases present their visualization as a normal chart/u, + `${counts.normal} of the ${counts.total} cases present their visualization as a normal chart`, + ) + .replace( + /definition\. (?:Sixty-five|\d+) use the definition API/u, + `definition. ${counts.definitionNow} use the definition API`, + ) + .replace( + /\| Definition now\s+\|\s+\d+\s+\|/u, + `| Definition now | ${String(counts.definitionNow).padStart(3)} |`, + ) + .replace( + /\| \*\*Total\*\*\s+\| \*\*\d+\*\* \|/u, + `| **Total** | **${counts.total}** |`, + ) + .replace( + /All \d+ catalog directories now have one roadmap record and case-local/u, + `All ${counts.total} catalog directories now have one roadmap record and case-local`, + ) + .replace( + /All \d+ normal-definition cases are verified/u, + `All ${counts.normal} normal-definition cases are verified`, + ) + await writeFile(auditPath, await format(audit, { parser: 'markdown' })) + + const overviewPath = path.join(coverageRoot, roadmap.overview) + let overview = await readFile(overviewPath, 'utf8') + overview = replaceGeneratedRows( + overview, + generatedIds, + generatedEntries.map(overviewRow).join('\n'), + '126-shadcn-tooltip-advanced', + ) + overview = overview + .replace( + /The catalog has \d+ case directories\. (?:One hundred fourteen|\d+) visualizations now use/u, + `The catalog has ${counts.total} case directories. ${counts.normal} visualizations now use`, + ) + .replace( + /\| Definition now\s+\|\s+\d+\s+\|/u, + `| Definition now | ${String(counts.definitionNow).padStart(3)} |`, + ) + .replace( + /\| \*\*Total\*\*\s+\| \*\*\d+\*\* \| \*\*\d+ normal definitions; 3 accepted boundaries\*\* \|/u, + `| **Total** | **${counts.total}** | **${counts.normal} normal definitions; 3 accepted boundaries** |`, + ) + .replace( + /compares all \d+ roadmap and audit IDs/u, + `compares all ${counts.total} roadmap and audit IDs`, + ) + await writeFile(overviewPath, await format(overview, { parser: 'markdown' })) +} + +function coverageEntry(entry) { + const id = entry.localCaseId + return { + id, + coverage: 'app-composed', + disposition: 'definition-now', + phase: 'phase-0', + status: 'verified', + capabilities: ['current-definition-api'], + evidence: [`cases/${id}/tanstack.ts`, `cases/${id}/case.json`], + work: [ + { + kind: 'definition-composition', + stage: 'definition-builder', + owner: 'charts', + coordinateSpace: 'none', + sources: ['benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx'], + summary: `Compose the pinned shadcn ${entry.name} variant through the shared native ${entry.family} chart definition.`, + }, + { + kind: 'application-shell', + stage: 'post-render', + owner: 'application', + coordinateSpace: 'dom', + sources: ['benchmarks/conformance/shared/shadcn-chart-card.tsx'], + summary: + 'Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations.', + }, + ], + } +} + +function auditRow(entry) { + const label = entry.id.replace('-shadcn-', ' — shadcn ') + return `| [${label}](./cases/${entry.id}/tanstack.ts) | Definition now | Shared native TanStack Charts ${entry.id.split('-')[2]} definitions reproduce the pinned shadcn variant; the card remains application presentation. |` +} + +function overviewRow(entry) { + const metadata = catalog.cases.find( + (candidate) => candidate.localCaseId === entry.id, + ) + return `| [${entry.id} — ${officialTitle(metadata.name)}](./cases/${entry.id}/tanstack.ts) | Definition now | \`current-definition-api\` | \`tanstack.ts\`, \`case.json\` |` +} + +function replaceGeneratedRows(source, generatedIds, rows, afterId) { + const retained = source + .split('\n') + .filter( + (line) => + ![...generatedIds].some((id) => line.includes(`./cases/${id}/`)), + ) + const index = retained.findIndex((line) => + line.includes(`./cases/${afterId}/`), + ) + retained.splice(index + 1, 0, rows) + return retained.join('\n') +} + +function countCoverage(cases) { + const definitionNow = cases.filter( + (entry) => entry.disposition === 'definition-now', + ).length + const accepted = cases.filter( + (entry) => entry.status === 'accepted-boundary', + ).length + return { + total: cases.length, + normal: cases.length - accepted, + definitionNow, + } +} + +function metadata(entry, id, caseNumber) { + const title = officialTitle(entry.name) + return { + schemaVersion: 1, + referenceRenderer: 'recharts', + collections: ['shadcn'], + height: 600, + order: (caseNumber + 1) * 10, + id, + title: `shadcn ${title}`, + family: entry.family, + intent: `Reproduce shadcn/ui's ${entry.name} example with TanStack Charts.`, + support: 'native', + features: featureList(entry.name), + geometry: [geometry(entry.name, entry.family)], + source: { + title: `shadcn/ui ${entry.name}`, + url: `https://ui.shadcn.com/view/new-york-v4/${entry.name}`, + }, + ai: { + create: `Reproduce the official shadcn/ui ${entry.name} card and data with TanStack Charts.`, + maintain: `Preserve the pinned upstream data, ${entry.name.replace(/^chart-/u, '').replaceAll('-', ' ')} treatment, card dimensions, and light and dark tokens.`, + }, + } +} + +function featureList(name) { + const words = name.replace(/^chart-/u, '').split('-') + const family = words.shift() + const variant = words.join(' ') + return [ + `${family} chart`, + ...(variant === 'default' || variant === 'simple' ? [] : [variant]), + 'shadcn card shell', + ] +} + +function geometry(name, family) { + const variant = name.replace(`chart-${family}-`, '') + if (family === 'area') { + return { + role: 'area', + count: variant === 'stacked-expand' ? 3 : isAreaMultiple(variant) ? 2 : 1, + } + } + if (family === 'bar') { + return { + role: 'bar', + count: variant === 'multiple' || variant === 'stacked' ? 12 : 6, + } + } + if (family === 'line') { + return { + role: 'line', + count: variant === 'multiple' || variant === 'interactive' ? 2 : 1, + } + } + if (family === 'pie') return { role: 'arc', count: 5 } + if (family === 'radar') { + return { + role: 'radar', + count: variant === 'multiple' || variant === 'legend' ? 2 : 1, + } + } + if (family === 'radial') { + return { + role: 'bar', + count: variant === 'simple' || variant === 'text' ? 1 : 5, + rendererRoles: { recharts: 'arc', tanstack: 'arc' }, + } + } + return { role: 'bar', count: 10 } +} + +function isAreaMultiple(variant) { + return ( + variant === 'axes' || + variant === 'gradient' || + variant === 'icons' || + variant === 'interactive' || + variant === 'legend' || + variant === 'stacked' + ) +} + +function officialTitle(name) { + const overrides = { + 'chart-area-default': 'Area Chart', + 'chart-area-stacked-expand': 'Area Chart - Stacked Expanded', + 'chart-bar-default': 'Bar Chart', + 'chart-bar-label-custom': 'Bar Chart - Custom Label', + 'chart-bar-stacked': 'Bar Chart - Stacked + Legend', + 'chart-line-default': 'Line Chart', + 'chart-line-dots-custom': 'Line Chart - Custom Dots', + 'chart-line-label-custom': 'Line Chart - Custom Label', + 'chart-pie-simple': 'Pie Chart', + 'chart-pie-donut-text': 'Pie Chart - Donut with Text', + 'chart-pie-label-custom': 'Pie Chart - Custom Label', + 'chart-radar-default': 'Radar Chart', + 'chart-radar-grid-circle-fill': 'Radar Chart - Grid Circle Filled', + 'chart-radar-grid-circle-no-lines': 'Radar Chart - Grid Circle - No lines', + 'chart-radar-grid-fill': 'Radar Chart - Grid Filled', + 'chart-radar-label-custom': 'Radar Chart - Custom Label', + 'chart-radar-radius': 'Radar Chart - Radius Axis', + 'chart-radial-simple': 'Radial Chart', + 'chart-tooltip-indicator-line': 'Tooltip - Line Indicator', + 'chart-tooltip-indicator-none': 'Tooltip - No Indicator', + 'chart-tooltip-label-custom': 'Tooltip - Custom label', + 'chart-tooltip-label-none': 'Tooltip - No Label', + } + if (overrides[name]) return overrides[name] + const [, family, ...variant] = name.split('-') + const chartType = + family === 'tooltip' ? 'Tooltip' : `${titleCase(family)} Chart` + return `${chartType} - ${variant.map(titleCase).join(' ')}` +} + +function titleCase(value) { + return value.charAt(0).toUpperCase() + value.slice(1) +} diff --git a/scripts/public-callback-contract.mjs b/scripts/public-callback-contract.mjs index d099f264..da5fa45f 100644 --- a/scripts/public-callback-contract.mjs +++ b/scripts/public-callback-contract.mjs @@ -42,8 +42,14 @@ const callbackInventory = { ], ['@tanstack/charts:src/band.ts:BandXOptions', 'color fill key x z'], ['@tanstack/charts:src/band.ts:BandYOptions', 'color fill key y z'], - ['@tanstack/charts:src/bar.ts:BarXOptions', 'color fill key x x1 x2 y z'], - ['@tanstack/charts:src/bar.ts:BarYOptions', 'color fill key x y y1 y2 z'], + [ + '@tanstack/charts:src/bar.ts:BarXOptions', + 'color fill key stroke strokeDasharray x x1 x2 y z', + ], + [ + '@tanstack/charts:src/bar.ts:BarYOptions', + 'color fill key stroke strokeDasharray x y y1 y2 z', + ], ['@tanstack/charts:src/box.ts:BoxOptions', 'key'], ['@tanstack/charts:src/box.ts:BoxXCallOptions', 'motion'], ['@tanstack/charts:src/box.ts:BoxXOptions', 'x y'], @@ -614,7 +620,7 @@ const callbackInventory = { ['@tanstack/charts:src/dom-types.ts:ChartTooltipExtension', 'create'], [ '@tanstack/charts:src/dom-types.ts:ChartTooltipExtensionContext', - 'bodyChange dismiss', + 'bodyChange dismiss motion', ], [ '@tanstack/charts:src/dom-types.ts:ChartTooltipExtensionInstance', diff --git a/scripts/shadcn-catalog.mjs b/scripts/shadcn-catalog.mjs new file mode 100644 index 00000000..abb95c5b --- /dev/null +++ b/scripts/shadcn-catalog.mjs @@ -0,0 +1,238 @@ +import { promises as fs } from 'node:fs' +import path from 'node:path' +import { fileURLToPath, pathToFileURL } from 'node:url' + +export const shadcnFamilyCounts = { + area: 10, + bar: 10, + line: 10, + pie: 11, + radar: 14, + radial: 6, + tooltip: 9, +} + +const rootDirectory = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + '..', +) +const catalogPath = path.join( + rootDirectory, + 'benchmarks', + 'conformance', + 'shadcn', + 'catalog.json', +) +const casesDirectory = path.join( + rootDirectory, + 'benchmarks', + 'conformance', + 'cases', +) +const referenceDirectory = path.join( + rootDirectory, + 'benchmarks', + 'conformance', + 'shadcn', + 'reference', +) +const gitShaPattern = /^[a-f0-9]{40}$/u + +export function validateShadcnCatalog(catalog) { + assert(isRecord(catalog), 'shadcn catalog must be an object') + assert(catalog.schemaVersion === 1, 'shadcn catalog schemaVersion must be 1') + assert( + isRecord(catalog.upstream), + 'shadcn catalog upstream must be an object', + ) + assert( + catalog.upstream.repository === 'shadcn-ui/ui', + 'unexpected shadcn repository', + ) + assert( + gitShaPattern.test(catalog.upstream.commit), + 'shadcn commit must be pinned', + ) + assert( + typeof catalog.upstream.pathRoot === 'string', + 'shadcn pathRoot is required', + ) + assert( + typeof catalog.upstream.registryPath === 'string', + 'shadcn registryPath is required', + ) + assert( + gitShaPattern.test(catalog.upstream.registryBlobSha), + 'registry blob SHA is invalid', + ) + assert(Array.isArray(catalog.cases), 'shadcn cases must be an array') + assert( + catalog.cases.length === 70, + 'shadcn catalog must contain all 70 chart examples', + ) + + const names = new Set() + const paths = new Set() + const localCaseIds = new Set() + const familyCounts = {} + for (const entry of catalog.cases) { + assert(isRecord(entry), 'shadcn case must be an object') + assert( + /^chart-[a-z0-9]+(?:-[a-z0-9]+)*$/u.test(entry.name), + 'invalid shadcn case name', + ) + assert( + entry.family === entry.name.split('-')[1], + `invalid family for ${entry.name}`, + ) + assert( + entry.path === `${catalog.upstream.pathRoot}/${entry.name}.tsx`, + `invalid path for ${entry.name}`, + ) + assert( + gitShaPattern.test(entry.blobSha), + `invalid blob SHA for ${entry.name}`, + ) + assert(!names.has(entry.name), `duplicate shadcn name ${entry.name}`) + assert(!paths.has(entry.path), `duplicate shadcn path ${entry.path}`) + names.add(entry.name) + paths.add(entry.path) + familyCounts[entry.family] = (familyCounts[entry.family] ?? 0) + 1 + if (entry.localCaseId !== undefined) { + assert( + typeof entry.localCaseId === 'string', + `invalid local case for ${entry.name}`, + ) + assert( + !localCaseIds.has(entry.localCaseId), + `duplicate local case ${entry.localCaseId}`, + ) + localCaseIds.add(entry.localCaseId) + } + } + + assert( + JSON.stringify(familyCounts) === JSON.stringify(shadcnFamilyCounts), + `unexpected shadcn family counts: ${JSON.stringify(familyCounts)}`, + ) + return { + caseCount: catalog.cases.length, + implementedCount: localCaseIds.size, + } +} + +export function compareShadcnCatalog(catalog, remoteTree, remoteCommit) { + validateShadcnCatalog(catalog) + const expected = new Map([ + [catalog.upstream.registryPath, catalog.upstream.registryBlobSha], + ...catalog.cases.map((entry) => [entry.path, entry.blobSha]), + ]) + const actual = new Map( + remoteTree + .filter((entry) => entry.type === 'blob' && expected.has(entry.path)) + .map((entry) => [entry.path, entry.sha]), + ) + const remoteCharts = remoteTree.filter( + (entry) => + entry.type === 'blob' && + entry.path.startsWith(`${catalog.upstream.pathRoot}/chart-`) && + entry.path.endsWith('.tsx'), + ) + const knownPaths = new Set(catalog.cases.map((entry) => entry.path)) + return { + pinnedCommit: catalog.upstream.commit, + remoteCommit, + changed: [...expected] + .filter(([entryPath, sha]) => actual.get(entryPath) !== sha) + .map(([entryPath]) => entryPath), + added: remoteCharts + .map((entry) => entry.path) + .filter((entryPath) => !knownPaths.has(entryPath)), + removed: catalog.cases + .map((entry) => entry.path) + .filter( + (entryPath) => + !remoteCharts.some((remote) => remote.path === entryPath), + ), + } +} + +export async function checkShadcnCatalog({ + remote = false, + fetchImpl = fetch, +} = {}) { + const catalog = JSON.parse(await fs.readFile(catalogPath, 'utf8')) + const summary = validateShadcnCatalog(catalog) + for (const entry of catalog.cases) { + if (!entry.localCaseId) continue + const metadataPath = path.join( + casesDirectory, + entry.localCaseId, + 'case.json', + ) + const metadata = JSON.parse(await fs.readFile(metadataPath, 'utf8')) + assert( + metadata.id === entry.localCaseId, + `missing local shadcn case ${entry.localCaseId}`, + ) + assert( + metadata.source?.url.endsWith(`/${entry.name}`), + `source URL mismatch for ${entry.localCaseId}`, + ) + await fs.access(path.join(referenceDirectory, `${entry.name}.png`)) + } + const referenceManifest = JSON.parse( + await fs.readFile(path.join(referenceDirectory, 'manifest.json'), 'utf8'), + ) + assert( + JSON.stringify(referenceManifest.cases) === + JSON.stringify(catalog.cases.map((entry) => entry.name)), + 'shadcn reference manifest must cover the pinned catalog in order', + ) + + if (!remote) { + console.log( + `Validated pinned shadcn inventory: ${summary.implementedCount}/${summary.caseCount} implemented.`, + ) + return summary + } + + const headers = { + Accept: 'application/vnd.github+json', + 'X-GitHub-Api-Version': '2022-11-28', + } + if (process.env.GITHUB_TOKEN) + headers.Authorization = `Bearer ${process.env.GITHUB_TOKEN}` + const response = await fetchImpl( + `https://api.github.com/repos/${catalog.upstream.repository}/git/trees/main?recursive=1`, + { headers }, + ) + if (!response.ok) + throw new Error(`GitHub tree request failed: ${response.status}`) + const payload = await response.json() + assert(Array.isArray(payload.tree), 'GitHub tree response is invalid') + const drift = compareShadcnCatalog(catalog, payload.tree, payload.sha) + const driftCount = + drift.changed.length + drift.added.length + drift.removed.length + if (driftCount > 0) { + console.log(JSON.stringify(drift, null, 2)) + throw new Error(`shadcn chart catalog drifted in ${driftCount} path(s)`) + } + console.log(`No shadcn chart drift at ${payload.sha}.`) + return drift +} + +function isRecord(value) { + return typeof value === 'object' && value !== null && !Array.isArray(value) +} + +function assert(condition, message) { + if (!condition) throw new TypeError(message) +} + +if ( + process.argv[1] && + import.meta.url === pathToFileURL(process.argv[1]).href +) { + await checkShadcnCatalog({ remote: process.argv.includes('--remote') }) +} diff --git a/scripts/shadcn-catalog.test.mjs b/scripts/shadcn-catalog.test.mjs new file mode 100644 index 00000000..95402f2e --- /dev/null +++ b/scripts/shadcn-catalog.test.mjs @@ -0,0 +1,61 @@ +import { readFile } from 'node:fs/promises' +import path from 'node:path' +import { describe, expect, it } from 'vitest' +import { + compareShadcnCatalog, + shadcnFamilyCounts, + validateShadcnCatalog, +} from './shadcn-catalog.mjs' + +const catalogPath = path.resolve( + import.meta.dirname, + '../benchmarks/conformance/shadcn/catalog.json', +) + +describe('shadcn catalog inventory', () => { + it('pins and maps every upstream example', async () => { + const catalog = JSON.parse(await readFile(catalogPath, 'utf8')) + expect(validateShadcnCatalog(catalog)).toEqual({ + caseCount: 70, + implementedCount: 70, + }) + expect( + Object.fromEntries( + Object.keys(shadcnFamilyCounts).map((family) => [ + family, + catalog.cases.filter((entry) => entry.family === family).length, + ]), + ), + ).toEqual(shadcnFamilyCounts) + }) + + it('reports source changes, additions, and removals by Git blob SHA', async () => { + const catalog = JSON.parse(await readFile(catalogPath, 'utf8')) + const tree = [ + { + path: catalog.upstream.registryPath, + sha: catalog.upstream.registryBlobSha, + type: 'blob', + }, + ...catalog.cases.slice(0, -1).map((entry, index) => ({ + path: entry.path, + sha: index === 0 ? '0'.repeat(40) : entry.blobSha, + type: 'blob', + })), + { + path: `${catalog.upstream.pathRoot}/chart-line-new.tsx`, + sha: '1'.repeat(40), + type: 'blob', + }, + ] + const drift = compareShadcnCatalog(catalog, tree, '2'.repeat(40)) + expect(drift.changed).toEqual([ + catalog.cases[0].path, + catalog.cases.at(-1).path, + ]) + expect(drift.added).toEqual([ + `${catalog.upstream.pathRoot}/chart-line-new.tsx`, + ]) + expect(drift.removed).toEqual([catalog.cases.at(-1).path]) + }) +}) diff --git a/scripts/shadcn-reference-screenshots.mjs b/scripts/shadcn-reference-screenshots.mjs new file mode 100644 index 00000000..8fcc481b --- /dev/null +++ b/scripts/shadcn-reference-screenshots.mjs @@ -0,0 +1,73 @@ +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import path from 'node:path' +import { chromium } from 'playwright' + +const root = path.resolve(import.meta.dirname, '..') +const catalogPath = path.join( + root, + 'benchmarks/conformance/shadcn/catalog.json', +) +const outputDirectory = path.join( + root, + 'benchmarks/conformance/shadcn/reference', +) +const catalog = JSON.parse(await readFile(catalogPath, 'utf8')) +const requestedNames = optionValue('--case')?.split(',').filter(Boolean) +const entries = requestedNames + ? catalog.cases.filter((entry) => requestedNames.includes(entry.name)) + : catalog.cases + +await mkdir(outputDirectory, { recursive: true }) +const browser = await chromium.launch({ headless: true }) +const page = await browser.newPage({ + viewport: { width: 640, height: 900 }, + deviceScaleFactor: 1, + reducedMotion: 'reduce', +}) + +try { + for (const [index, entry] of entries.entries()) { + const url = `https://ui.shadcn.com/view/new-york-v4/${entry.name}` + await page.goto(url, { waitUntil: 'networkidle', timeout: 60_000 }) + await page.waitForTimeout(1_800) + await page.evaluate(async () => { + await document.fonts.ready + document.getAnimations().forEach((animation) => animation.finish()) + }) + const card = page.locator('[data-slot="card"]').first() + await card.waitFor({ state: 'visible' }) + await card.screenshot({ + path: path.join(outputDirectory, `${entry.name}.png`), + animations: 'disabled', + }) + process.stdout.write( + `\rCaptured ${String(index + 1).padStart(2)}/${entries.length}: ${entry.name}`, + ) + } + process.stdout.write('\n') + await writeFile( + path.join(outputDirectory, 'manifest.json'), + `${JSON.stringify( + { + schemaVersion: 1, + viewport: { width: 640, deviceScaleFactor: 1, theme: 'light' }, + source: 'https://ui.shadcn.com/view/new-york-v4/{name}', + capturedAt: new Date().toISOString(), + cases: entries.map((entry) => entry.name), + }, + null, + 2, + )}\n`, + ) +} finally { + await browser.close() +} + +function optionValue(name) { + const inline = process.argv.find((argument) => + argument.startsWith(`${name}=`), + ) + if (inline) return inline.slice(name.length + 1) + const index = process.argv.indexOf(name) + return index === -1 ? undefined : process.argv[index + 1] +} diff --git a/scripts/shadcn-visual-parity.mjs b/scripts/shadcn-visual-parity.mjs new file mode 100644 index 00000000..7d1abce0 --- /dev/null +++ b/scripts/shadcn-visual-parity.mjs @@ -0,0 +1,305 @@ +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import { spawn } from 'node:child_process' +import { createServer } from 'node:net' +import path from 'node:path' +import pixelmatch from 'pixelmatch' +import { PNG } from 'pngjs' +import { chromium } from 'playwright' + +const root = path.resolve(import.meta.dirname, '..') +const catalog = JSON.parse( + await readFile( + path.join(root, 'benchmarks/conformance/shadcn/catalog.json'), + 'utf8', + ), +) +const explicitBaseUrl = optionValue('--url') +const requestedNames = optionValue('--case')?.split(',').filter(Boolean) +const minimumSimilarity = Number(optionValue('--minimum') ?? 0.9) +const minimumChartSimilarity = Number(optionValue('--minimum-chart') ?? 0.7) +const reportOnly = process.argv.includes('--report-only') +const entries = requestedNames + ? catalog.cases.filter((entry) => requestedNames.includes(entry.name)) + : catalog.cases +const referenceDirectory = path.join( + root, + 'benchmarks/conformance/shadcn/reference', +) +const outputDirectory = path.join(root, '.benchmark-output/shadcn') +const localDirectory = path.join(outputDirectory, 'local') +const diffDirectory = path.join(outputDirectory, 'diff') +await Promise.all([ + mkdir(localDirectory, { recursive: true }), + mkdir(diffDirectory, { recursive: true }), +]) + +const managedServer = explicitBaseUrl ? null : await startConformanceServer() +const baseUrl = explicitBaseUrl ?? managedServer.url +const browser = await chromium.launch({ headless: true }) +const results = [] + +try { + for (const [index, entry] of entries.entries()) { + const page = await browser.newPage({ + viewport: { width: 640, height: 900 }, + deviceScaleFactor: 1, + reducedMotion: 'reduce', + }) + try { + await page.goto(`${baseUrl}/embed/${entry.localCaseId}/`, { + waitUntil: 'domcontentloaded', + timeout: 60_000, + }) + await page.waitForTimeout(250) + await page.evaluate(async () => { + await document.fonts.ready + document.getAnimations().forEach((animation) => animation.finish()) + }) + const card = page.locator('.sc-card').first() + await card.waitFor({ state: 'visible' }) + const localPath = path.join(localDirectory, `${entry.name}.png`) + await card.screenshot({ path: localPath, animations: 'disabled' }) + const referencePath = path.join(referenceDirectory, `${entry.name}.png`) + const comparison = await comparePng(referencePath, localPath, entry) + const result = { + name: entry.name, + id: entry.localCaseId, + ...comparison, + pass: + comparison.similarity >= minimumSimilarity && + (comparison.chartSimilarity === null || + comparison.chartSimilarity >= minimumChartSimilarity), + } + results.push(result) + if (!result.pass) { + await writeFile( + path.join(diffDirectory, `${entry.name}.png`), + PNG.sync.write(comparison.diff), + ) + } + process.stdout.write( + `\rCompared ${String(index + 1).padStart(2)}/${entries.length}: ${entry.name} ${formatPercent(result.similarity)}${result.chartSimilarity === null ? '' : ` / chart ${formatPercent(result.chartSimilarity)}`}`, + ) + } finally { + await page.close() + } + } +} finally { + await browser.close() + await managedServer?.stop() + process.stdout.write('\n') +} + +const report = { + schemaVersion: 3, + minimumSimilarity, + minimumChartSimilarity, + source: baseUrl, + cases: results.map(({ diff: _diff, ...result }) => result), +} +await writeFile( + path.join(outputDirectory, 'report.json'), + `${JSON.stringify(report, null, 2)}\n`, +) +await writeFile( + path.join(outputDirectory, 'report.md'), + `${[ + '# shadcn visual parity', + '', + `Minimum: ${formatPercent(minimumSimilarity)}`, + `Chart-region foreground minimum: ${formatPercent(minimumChartSimilarity)}`, + '', + '| Case | Similarity | Chart foreground | Size | Result |', + '| --- | ---: | ---: | --- | --- |', + ...results + .sort((left, right) => left.similarity - right.similarity) + .map( + (result) => + `| ${result.name} | ${formatPercent(result.similarity)} | ${result.chartSimilarity === null ? '—' : formatPercent(result.chartSimilarity)} | ${result.referenceWidth}×${result.referenceHeight} / ${result.localWidth}×${result.localHeight} | ${result.pass ? 'pass' : 'fail'} |`, + ), + '', + ].join('\n')}\n`, +) + +const failed = results.filter((result) => !result.pass) +console.log( + `${results.length - failed.length}/${results.length} meet ${formatPercent(minimumSimilarity)}; mean ${formatPercent(results.reduce((total, result) => total + result.similarity, 0) / results.length)}.`, +) +if (failed.length && !reportOnly) process.exitCode = 1 + +async function comparePng(referencePath, localPath, entry) { + const reference = PNG.sync.read(await readFile(referencePath)) + const local = PNG.sync.read(await readFile(localPath)) + const width = Math.max(reference.width, local.width) + const height = Math.max(reference.height, local.height) + const paddedReference = padPng(reference, width, height) + const paddedLocal = padPng(local, width, height) + const diff = new PNG({ width, height }) + const differentPixels = pixelmatch( + paddedReference.data, + paddedLocal.data, + diff.data, + width, + height, + { threshold: 0.1, includeAA: false }, + ) + const chartSimilarity = compareChartForeground( + paddedReference, + paddedLocal, + entry.family, + ) + return { + similarity: 1 - differentPixels / (width * height), + chartSimilarity, + differentPixels, + referenceWidth: reference.width, + referenceHeight: reference.height, + localWidth: local.width, + localHeight: local.height, + diff, + } +} + +function compareChartForeground(reference, local, family) { + const square = family === 'pie' || family === 'radar' || family === 'radial' + const requestedSize = family === 'pie' ? 300 : square ? 250 : undefined + const width = Math.min( + requestedSize ?? 592, + reference.width - (square ? 0 : 48), + local.width - (square ? 0 : 48), + ) + const height = Math.min( + requestedSize ?? 340, + reference.height - 88, + local.height - 88, + ) + const x = Math.max(0, Math.floor((reference.width - width) / 2)) + const y = 88 + const referenceCrop = cropPng(reference, x, y, width, height) + const localCrop = cropPng(local, x, y, width, height) + const diff = new PNG({ width, height }) + const differentPixels = pixelmatch( + referenceCrop.data, + localCrop.data, + diff.data, + width, + height, + { threshold: 0.1, includeAA: false }, + ) + let foregroundPixels = 0 + for (let index = 0; index < referenceCrop.data.length; index += 4) { + const referenceDistance = + 765 - + referenceCrop.data[index] - + referenceCrop.data[index + 1] - + referenceCrop.data[index + 2] + const localDistance = + 765 - + localCrop.data[index] - + localCrop.data[index + 1] - + localCrop.data[index + 2] + if (referenceDistance > 15 || localDistance > 15) foregroundPixels += 1 + } + return foregroundPixels === 0 ? 1 : 1 - differentPixels / foregroundPixels +} + +function cropPng(source, x, y, width, height) { + const output = new PNG({ width, height }) + PNG.bitblt(source, output, x, y, width, height, 0, 0) + return output +} + +function padPng(source, width, height) { + if (source.width === width && source.height === height) return source + const output = new PNG({ width, height, fill: true }) + output.data.fill(255) + PNG.bitblt(source, output, 0, 0, source.width, source.height, 0, 0) + return output +} + +function formatPercent(value) { + return `${(value * 100).toFixed(1)}%` +} + +function optionValue(name) { + const inline = process.argv.find((argument) => + argument.startsWith(`${name}=`), + ) + if (inline) return inline.slice(name.length + 1) + const index = process.argv.indexOf(name) + return index === -1 ? undefined : process.argv[index + 1] +} + +async function startConformanceServer() { + const port = await availablePort() + const child = spawn( + 'pnpm', + [ + 'exec', + 'vite', + '--host', + '127.0.0.1', + '--port', + String(port), + '--strictPort', + ], + { + cwd: path.join(root, 'examples/conformance'), + stdio: ['ignore', 'pipe', 'pipe'], + }, + ) + let output = '' + child.stdout.on('data', (chunk) => { + output += chunk + }) + child.stderr.on('data', (chunk) => { + output += chunk + }) + const url = `http://127.0.0.1:${port}` + for (let attempt = 0; attempt < 100; attempt += 1) { + if (child.exitCode !== null) { + throw new Error(`Conformance server exited early:\n${output}`) + } + try { + const response = await fetch(url) + if (response.ok) { + return { + url, + stop: () => stopProcess(child), + } + } + } catch { + // Wait for Vite to bind the selected local port. + } + await new Promise((resolvePromise) => setTimeout(resolvePromise, 100)) + } + child.kill('SIGTERM') + throw new Error(`Timed out starting conformance server:\n${output}`) +} + +function availablePort() { + return new Promise((resolvePromise, reject) => { + const server = createServer() + server.once('error', reject) + server.listen(0, '127.0.0.1', () => { + const address = server.address() + if (!address || typeof address === 'string') { + server.close() + reject(new TypeError('Unable to allocate a local conformance port.')) + return + } + server.close((error) => { + if (error) reject(error) + else resolvePromise(address.port) + }) + }) + }) +} + +function stopProcess(child) { + if (child.exitCode !== null) return Promise.resolve() + return new Promise((resolvePromise) => { + child.once('exit', resolvePromise) + child.kill('SIGTERM') + }) +} From 56567ec51902d8af0d0d730f3a31206999cc8438 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 13 Aug 2026 23:36:50 -0600 Subject: [PATCH 2/3] Prepare ShadCN catalog motion release --- .changeset/smooth-shadcn-charts.md | 7 + API-FRICTION.md | 226 +++++ .../bundle-size/universal-baseline.json | 20 +- .../cases/113-motion-updates/tanstack.test.ts | 2 +- .../114-spring-line-motion/tanstack.test.ts | 2 +- .../115-definition-motion/tanstack.test.ts | 2 +- .../cases/116-geometry-morph/tanstack.test.ts | 2 +- .../121-shadcn-dashboard/tanstack-view.tsx | 6 +- .../122-shadcn-bar-multiple/tanstack-view.tsx | 6 +- .../tanstack-view.tsx | 6 +- .../tanstack-view.tsx | 11 +- .../125-shadcn-radial-text/tanstack-view.tsx | 11 +- .../tanstack-view.tsx | 7 +- .../shared/shadcn-catalog-tanstack.tsx | 471 ++++++++--- .../conformance/shared/shadcn-chart-card.tsx | 12 +- .../shared/shadcn-interaction.test.ts | 132 +++ .../conformance/shared/shadcn-motion.test.ts | 51 +- .../conformance/shared/shadcn-motion.ts | 5 +- .../entries/charts-motion-definition.ts | 1 + docs/guides/dynamic-data-and-animation.md | 27 +- docs/guides/tooltips-and-focus.md | 36 +- docs/reference/index.md | 3 +- docs/reference/motion.md | 101 ++- .../docs/guides/dynamic-data-and-animation.md | 27 +- .../docs/guides/tooltips-and-focus.md | 36 +- packages/charts-core/docs/reference/index.md | 3 +- packages/charts-core/docs/reference/motion.md | 101 ++- packages/charts-core/package.json | 5 + .../src/composite-motion-internal.ts | 19 +- packages/charts-core/src/dom-types.ts | 2 - packages/charts-core/src/exports.test.ts | 18 + .../charts-core/src/mark-composite.test.ts | 51 ++ .../charts-core/src/motion-definition.test.ts | 75 ++ packages/charts-core/src/motion-definition.ts | 50 ++ packages/charts-core/src/motion.test.ts | 361 +++++++- packages/charts-core/src/motion.ts | 780 +++++++++++++++++- .../charts-core/src/network-sankey.test.ts | 2 +- packages/charts-core/src/polar.test.ts | 2 +- .../src/renderer-motion-internal.ts | 82 ++ packages/charts-core/src/renderer.test.ts | 198 ++++- packages/charts-core/src/renderer.ts | 21 +- packages/charts-core/src/tooltip.ts | 190 +---- packages/charts-core/src/types.ts | 13 +- scripts/measure-bundles.mjs | 31 +- scripts/public-callback-contract.mjs | 3 +- 45 files changed, 2672 insertions(+), 545 deletions(-) create mode 100644 .changeset/smooth-shadcn-charts.md create mode 100644 benchmarks/conformance/shared/shadcn-interaction.test.ts create mode 100644 benchmarks/entries/charts-motion-definition.ts create mode 100644 packages/charts-core/src/motion-definition.test.ts create mode 100644 packages/charts-core/src/motion-definition.ts create mode 100644 packages/charts-core/src/renderer-motion-internal.ts diff --git a/.changeset/smooth-shadcn-charts.md b/.changeset/smooth-shadcn-charts.md new file mode 100644 index 00000000..87801a13 --- /dev/null +++ b/.changeset/smooth-shadcn-charts.md @@ -0,0 +1,7 @@ +--- +'@tanstack/charts': minor +--- + +Add ShadCN-compatible chart catalog support with renderer-owned tooltip and +entrance motion, composable stagger timing, motion cascade opt-outs, and +expanded polar presentation controls. diff --git a/API-FRICTION.md b/API-FRICTION.md index 65b3bfcc..fd4bb435 100644 --- a/API-FRICTION.md +++ b/API-FRICTION.md @@ -321,6 +321,18 @@ Each entry records: | F-282 | Collection actions followed the viewport instead of the card | Application | resolved | | F-283 | Interactive chart shells rendered inert controls | Application | resolved | | F-284 | Stagger timing required repeated callback arithmetic | API | resolved | +| F-273 | Catalog cases could not declare an application viewport height | Tooling | resolved | +| F-274 | Upstream example clones had no drift boundary | Tooling | resolved | +| F-275 | Preview transparency validation rejected semantic IDs | Tooling | resolved | +| F-276 | Definition coverage assumed a combined renderer module | Tooling | resolved | +| F-277 | Preview errors omitted the failing catalog case | Tooling | resolved | +| F-278 | Renderer checks could validate matching approximations | Tooling | resolved | +| F-279 | Radial grids could not render authored fills | API | resolved | +| F-280 | Chart motion did not reach HTML tooltips | API | resolved | +| F-281 | Bars could not express an authored outline | API | resolved | +| F-282 | Collection actions followed the viewport instead of the card | Application | resolved | +| F-283 | Interactive chart shells rendered inert controls | Application | resolved | +| F-284 | Stagger timing required repeated callback arithmetic | API | resolved | ## Findings @@ -8231,3 +8243,217 @@ Each entry records: filters, offsets, invalid inputs, native spread, and field precedence. The isolated entry is 0.26 KiB gzip and retains neither the SVG motion renderer nor spring physics. + +### F-273 — Catalog cases could not declare an application viewport height + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: reproducing shadcn/ui's dashboard as a renderer-comparison case +- Friction: the catalog fixed every case at 480 pixels tall, which clipped a + full application shell and made its Recharts and TanStack renderers impossible + to inspect as one shared viewport. +- Decision: allow validated case metadata to declare an optional height and use + it for catalog cards, mounts, updates, and embeds while retaining 480 pixels + as the default. +- Verification: metadata tests accept the dashboard's 860-pixel height, the + conformance example build passes, and Chromium renders both comparison panels + at 960 by 860 pixels without root overflow. + +### F-274 — Upstream example clones had no drift boundary + +- Status: resolved +- Severity: medium +- Owner: Tooling +- Observed in: spiking a maintained TanStack clone of the shadcn chart catalog +- Friction: an example's source URL recorded where it came from, but did not + identify the exact upstream revision or detect changed, added, and removed + examples. Visual clones could silently diverge from shadcn's 70-file catalog. +- Decision: pin the upstream commit, registry blob, and each example's Git blob + SHA in one manifest. Keep normal validation offline and add an explicit remote + drift command that compares the manifest with shadcn's current Git tree. +- Verification: the inventory test requires all 70 files, exact family counts, + unique local mappings, and reports synthetic source changes, additions, and + removals. The offline command verifies all five spike mappings. + +### F-275 — Preview transparency validation rejected semantic IDs + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: generating the shadcn radial-text catalog preview +- Friction: the preview validator searched the complete SVG string for + `background:`. A valid semantic key such as `radial-background:object` + therefore failed the transparent-background gate. +- Decision: detect an actual CSS `background` declaration after a rule or + declaration boundary, without reserving ordinary chart IDs. +- Verification: the preview regression accepts the semantic background key and + continues to reject an authored CSS background declaration. + +### F-276 — Definition-shape coverage assumed a combined renderer module + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: isolating TanStack and Recharts bundle graphs for the shadcn + catalog spike +- Friction: the definition-shape gate scanned `tanstack.ts`, `view.tsx`, and + `chart.ts`, but ignored a renderer-specific `tanstack-view.tsx`. Splitting the + two implementations for honest bundle measurement made five valid static + definitions disappear from coverage. +- Decision: include renderer-specific TanStack view modules in the definition + scanner while retaining the existing entry and shared-view conventions. +- Verification: the shape gate finds all 122 definitions again: 117 static and + five responsive. + +### F-277 — Preview errors omitted the failing catalog case + +- Status: resolved +- Severity: low +- Owner: Tooling +- Observed in: generating static previews for the 70-case shadcn collection +- Friction: the renderer's clipped-label diagnostic described the labels and + bounds but omitted the case ID and theme. A full-catalog run therefore could + not identify which new example needed a margin correction. +- Decision: wrap presentation-validation failures with the current case ID and + theme while retaining the original error as the cause. +- Verification: the next full preview run reports any failed case directly. + +### F-278 — Renderer conformance could validate two matching approximations + +- Status: resolved +- Severity: high +- Owner: Tooling +- Observed in: expanding the shadcn chart collection from five measured cases + to all 70 upstream examples +- Friction: geometry and paint checks compared TanStack Charts with a local + Recharts implementation built from the same simplified family spec. Both + renderers could agree while their card, data, layout, and variant behavior + visibly differed from the official shadcn output. The later whole-card gate + still allowed a wrong chart type to pass because white card pixels dominated + the score. +- Decision: capture every official shadcn card at a fixed 640-pixel viewport + and compare the complete TanStack card screenshot against that committed + baseline. Require at least 90% pixel similarity and 70% similarity over the + union of non-white pixels in a fixed chart region for every case; retain + failed local and diff images for review. +- Verification: the full gate passes all 70 whole-card and chart-region checks. + Whole-card similarity averages above 97%, and every chart-region score is + above 75%. The earlier wrong radial-stacked implementation would fail at + 20.9%. The pinned inventory check also requires one baseline image per + catalog entry and an ordered 70-case reference manifest. + +### F-279 — Radial grids could not render authored fills + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: reproducing shadcn's filled polygon and circle radar grids +- Friction: `RadialGridOptions` exposed only stroke styling and the renderer + hard-coded every ring to `fill: none`. Shadcn's filled-grid variants therefore + required a separate approximation instead of expressing their source grid. +- Decision: expose `fill` and `fillOpacity` on `RadialGridOptions` and forward + both values to every generated ring. +- Verification: the polar scene test asserts an authored radial-grid fill and + opacity, and the two filled shadcn radar variants pass the chart-foreground + visual gate above 97%. + +### F-280 — Chart motion did not reach HTML tooltips + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: applying the shadcn spring preset to the complete chart catalog +- Friction: chart and mark motion animated renderer geometry, but the HTML + tooltip was owned by a separate extension and appeared, moved, and vanished + immediately. The first tooltip motion pass also restarted every move from the + prior target instead of the spring's live position and velocity, so crossing + points quickly produced visible jumps. Applying one motion policy therefore + produced a visibly split interaction. +- Decision: let the optional `motion()` renderer attach an internal tooltip + motion controller to the host. The tooltip inherits that renderer's fallback + or a static chart-level transition, while `tooltip.motion` can override or + disable it. Keep translation independent from presence motion, and retarget + springs from their current sampled position and velocity. The public tooltip + extension contract stays renderer-neutral. +- Verification: the renderer test asserts that a chart spring produces sampled + tooltip keyframes, keeps the tooltip mounted until its exit completes, and + preserves both visual position and travel direction across a mid-flight + retarget. The tooltip-only bundle retains neither `motion.ts` nor `spring.ts` + and measures 4.37 KiB gzip. + +### F-281 — Bars could not express an authored outline + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: reproducing shadcn's active-bar example +- Friction: `barX` and `barY` exposed fill paint but not base stroke paint. The + selected Firefox bar therefore could not reproduce the upstream dashed + outline without replacing the mark or abusing focus-state styling. +- Decision: expose visual `stroke` and `strokeDasharray` channels plus + `strokeOpacity` and `strokeWidth` on both bar orientations. +- Verification: the bar scene test resolves per-datum outlines for horizontal + and vertical bars, and the active-bar screenshot passes at 98% whole-card and + 97% chart-region similarity. + +### F-282 — Collection actions followed the viewport instead of the card + +- Status: resolved +- Severity: medium +- Owner: Application +- Observed in: browsing the two-column ShadCN collection +- Friction: every collection preview reserved the case's fixed conformance + viewport height, while the rendered ShadCN card was often much shorter. The + Code, Preview, and Original actions followed the reserved viewport rather + than the visible card, leaving roughly 280 pixels of empty space and making + the actions appear to belong to the next row. +- Decision: retain the full height as the chart's rendering input, then size + the collection preview shell to the rendered card. Observe the card so the + shell follows responsive height changes without coupling the gallery to + per-case dimensions. +- Verification: the live Radar collection now measures each preview shell to + its visible card and places the action row 14 pixels below it at both columns; + resizing continues to refit through the card observer. + +### F-283 — Interactive chart shells rendered inert controls + +- Status: resolved +- Severity: high +- Owner: Application +- Observed in: the generated ShadCN area, bar, line, and pie interactive cases +- Friction: the catalog reproduced the controls visually with static `div` + elements, but they had no input semantics or state. The pie month picker, + area range picker, and desktop/mobile metric panels could not change their + charts even though each case was explicitly named interactive. +- Decision: keep interaction state in the shared React example shell and + rebuild the selected chart definition from that state. Use native select and + button semantics, preserve the official labels and active treatment, and + keep the four behaviors centralized rather than adding state code to every + generated case. +- Verification: DOM regressions change the area range, both metric-series + charts, and the active pie month and assert the plotted geometry or paint + changes. Browser checks confirm the 7-day area path and ticks, mobile bar and + line geometry and colors, and May pie slice, swatch, and center value. + +### F-284 — Stagger timing required repeated callback arithmetic + +- Status: resolved +- Severity: medium +- Owner: API +- Observed in: evaluating optional entrance staggering for stacked radial and + pie compositions +- Friction: every definition had to repeat phase filters, role filters, index + selection, and delay arithmetic. Combining that callback with an existing + transition or rolling-path definition required another handwritten merge. + An initial `composeMotion()` helper recovered composition but made ordinary + timing objects unnecessarily indirect. +- Decision: allow `ChartMotionTiming.delay` to resolve from motion context and + make `stagger()` return that single partial timing field. It composes through + native object spread, whose order also defines conflict precedence. Export it + from `/motion` for convenience and `/motion/definition` as an isolated + policy-only entry. +- Verification: unit tests cover datum and series staggering, phase and role + filters, offsets, invalid inputs, native spread, and field precedence. The + isolated entry is 0.26 KiB gzip and retains neither the SVG motion renderer + nor spring physics. diff --git a/benchmarks/bundle-size/universal-baseline.json b/benchmarks/bundle-size/universal-baseline.json index fd9f6438..8472048f 100644 --- a/benchmarks/bundle-size/universal-baseline.json +++ b/benchmarks/bundle-size/universal-baseline.json @@ -11,28 +11,28 @@ "gzip": 19616 }, "Representative marks": { - "bytes": 71389, - "gzip": 26201 + "bytes": 71536, + "gzip": 26220 }, "TanStack DOM host": { - "bytes": 70570, - "gzip": 24758 + "bytes": 70628, + "gzip": 24727 }, "React adapter": { - "bytes": 72729, - "gzip": 25524 + "bytes": 72787, + "gzip": 25475 }, "React line consumer": { - "bytes": 95923, - "gzip": 34754 + "bytes": 95981, + "gzip": 34727 }, "Compact-scale line scene": { "bytes": 29572, "gzip": 10769 }, "React compact-scale line consumer": { - "bytes": 78424, - "gzip": 27684 + "bytes": 78482, + "gzip": 27667 }, "Custom-scale line scene": { "bytes": 27756, diff --git a/benchmarks/conformance/cases/113-motion-updates/tanstack.test.ts b/benchmarks/conformance/cases/113-motion-updates/tanstack.test.ts index 91f26567..af7022ee 100644 --- a/benchmarks/conformance/cases/113-motion-updates/tanstack.test.ts +++ b/benchmarks/conformance/cases/113-motion-updates/tanstack.test.ts @@ -275,6 +275,6 @@ function motionContext( function resolveMotion( definition: ChartMotionDefinition | undefined, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): false | ChartMotionTiming | undefined { return typeof definition === 'function' ? definition(context) : definition } diff --git a/benchmarks/conformance/cases/114-spring-line-motion/tanstack.test.ts b/benchmarks/conformance/cases/114-spring-line-motion/tanstack.test.ts index bbd968ae..ed6fdb87 100644 --- a/benchmarks/conformance/cases/114-spring-line-motion/tanstack.test.ts +++ b/benchmarks/conformance/cases/114-spring-line-motion/tanstack.test.ts @@ -246,7 +246,7 @@ function motionContext( function resolveMotion( definition: ChartMotionDefinition | undefined, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): false | ChartMotionTiming | undefined { return typeof definition === 'function' ? definition(context) : definition } diff --git a/benchmarks/conformance/cases/115-definition-motion/tanstack.test.ts b/benchmarks/conformance/cases/115-definition-motion/tanstack.test.ts index f2a38436..9f6c451c 100644 --- a/benchmarks/conformance/cases/115-definition-motion/tanstack.test.ts +++ b/benchmarks/conformance/cases/115-definition-motion/tanstack.test.ts @@ -283,7 +283,7 @@ function guideMotionContext( function resolveMotion( definition: ChartMotionDefinition | undefined, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): false | ChartMotionTiming | undefined { return typeof definition === 'function' ? definition(context) : definition } diff --git a/benchmarks/conformance/cases/116-geometry-morph/tanstack.test.ts b/benchmarks/conformance/cases/116-geometry-morph/tanstack.test.ts index 3b3162af..7f40ce6d 100644 --- a/benchmarks/conformance/cases/116-geometry-morph/tanstack.test.ts +++ b/benchmarks/conformance/cases/116-geometry-morph/tanstack.test.ts @@ -258,7 +258,7 @@ function motionContext( function resolveMotion( definition: ChartMotionDefinition | undefined, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): false | ChartMotionTiming | undefined { return typeof definition === 'function' ? definition(context) : definition } diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx index 72ca5b6a..d094de21 100644 --- a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx +++ b/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx @@ -20,10 +20,7 @@ import { } from './data' import { reactMount } from '../../shared/react-mount' import { tanstackCase } from '../../shared/mount' -import { - createShadcnSpringRenderer, - shadcnSpringMotion, -} from '../../shared/shadcn-motion' +import { createShadcnSpringRenderer } from '../../shared/shadcn-motion' import type { ChartTooltipContent, ChartTooltipOptions } from '@tanstack/charts' import type { ConformanceTestDriver } from '../../types' import type { ReactConformanceProps } from '../../shared/react-mount' @@ -41,7 +38,6 @@ export function shadcnDashboardChartDefinition( const tickValues = dashboardTickValues(data, width) return defineChart({ - motion: shadcnSpringMotion, marks: [ areaY(rows, { id: 'visitor-areas', diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx b/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx index 8ff2ea33..58ea93a0 100644 --- a/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx +++ b/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx @@ -7,10 +7,7 @@ import { visitorMonths, type VisitorMonth } from './data' import { BarMultipleCard } from './view' import { shadcnChartMount } from '../../shared/shadcn-chart-card' import { tanstackCase } from '../../shared/mount' -import { - createShadcnSpringRenderer, - shadcnSpringMotion, -} from '../../shared/shadcn-motion' +import { createShadcnSpringRenderer } from '../../shared/shadcn-motion' import type { ChartTooltipOptions } from '@tanstack/charts' import type { ConformanceInput } from '../../types' @@ -25,7 +22,6 @@ const groupScale = scaleBand() .paddingOuter(0) export const barMultipleDefinition = defineChart({ - motion: shadcnSpringMotion, marks: [ barY(visitorMonths, { id: 'desktop-bars', diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx index d0d7dc35..c4f8c350 100644 --- a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx +++ b/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx @@ -14,10 +14,7 @@ import { import { PieDonutTextCard } from './view' import { shadcnChartMount } from '../../shared/shadcn-chart-card' import { tanstackCase } from '../../shared/mount' -import { - createShadcnSpringRenderer, - shadcnSpringMotion, -} from '../../shared/shadcn-motion' +import { createShadcnSpringRenderer } from '../../shared/shadcn-motion' import type { ChartTooltipOptions } from '@tanstack/charts' import type { PieDatum } from '@tanstack/charts/polar' import type { ConformanceInput } from '../../types' @@ -30,7 +27,6 @@ const arcs = pie(browserData, { }) export const pieDonutTextDefinition = defineChart({ - motion: shadcnSpringMotion, marks: [ polar({ radiusRatio: 0.768, diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx b/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx index 59a4850f..8c492aab 100644 --- a/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx +++ b/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx @@ -2,6 +2,7 @@ import { useMemo } from 'react' import { defineChart } from '@tanstack/charts' import { angleGrid, + focusGroupAngle, polar, radialArea, radialGrid, @@ -20,15 +21,11 @@ import { import { RadarMultipleCard } from './view' import { shadcnChartMount } from '../../shared/shadcn-chart-card' import { tanstackCase } from '../../shared/mount' -import { - createShadcnSpringRenderer, - shadcnSpringMotion, -} from '../../shared/shadcn-motion' +import { createShadcnSpringRenderer } from '../../shared/shadcn-motion' import type { ChartTooltipOptions } from '@tanstack/charts' import type { ConformanceInput } from '../../types' export const radarMultipleDefinition = defineChart({ - motion: shadcnSpringMotion, marks: [ polar({ radiusRatio: 0.76, @@ -58,6 +55,7 @@ export const radarMultipleDefinition = defineChart({ angle: 'month', radius: 'visitors', key: 'month', + z: 'series', curve: curveLinearClosed, fill: radarColors[0], fillOpacity: 0.6, @@ -73,6 +71,7 @@ export const radarMultipleDefinition = defineChart({ angle: 'month', radius: 'visitors', key: 'month', + z: 'series', curve: curveLinearClosed, fill: radarColors[1], fillOpacity: 1, @@ -109,7 +108,7 @@ function TanStackView({ input }: { input: ConformanceInput }) { () => defineChart(radarMultipleDefinition, { svgAnimation: false, - focus: 'group-x', + focus: focusGroupAngle, keyboard: true, tooltip: { use: tooltip, ...radarTooltip }, }), diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx b/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx index 8471bb8e..02448aea 100644 --- a/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx +++ b/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx @@ -13,10 +13,7 @@ import { radialCenterLabels, radialData, type RadialDatum } from './data' import { RadialTextCard } from './view' import { shadcnChartMount } from '../../shared/shadcn-chart-card' import { tanstackCase } from '../../shared/mount' -import { - createShadcnSpringRenderer, - shadcnSpringMotion, -} from '../../shared/shadcn-motion' +import { createShadcnSpringRenderer } from '../../shared/shadcn-motion' import type { ConformanceInput } from '../../types' import type { PieDatum } from '@tanstack/charts/polar' @@ -30,7 +27,6 @@ type RadialTextDatum = | (typeof radialCenterLabels)[number] export const radialTextDefinition = defineChart({ - motion: shadcnSpringMotion, marks: [ polar({ angle: { scale: scaleLinear().domain([0, Math.PI * 2]) }, @@ -104,7 +100,10 @@ function TanStackView({ input }: { input: ConformanceInput }) { ) const definition = useMemo( () => - defineChart(radialTextDefinition, { svgAnimation: false, focus: false }), + defineChart(radialTextDefinition, { + svgAnimation: false, + focus: 'nearest', + }), [], ) return ( diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx index 627603b0..7b8fc400 100644 --- a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx +++ b/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx @@ -13,15 +13,11 @@ import { import { AdvancedTooltipCard } from './view' import { shadcnChartMount } from '../../shared/shadcn-chart-card' import { tanstackCase } from '../../shared/mount' -import { - createShadcnSpringRenderer, - shadcnSpringMotion, -} from '../../shared/shadcn-motion' +import { createShadcnSpringRenderer } from '../../shared/shadcn-motion' import type { ChartPoint, ChartTooltipOptions } from '@tanstack/charts' import type { ConformanceInput } from '../../types' export const advancedTooltipDefinition = defineChart({ - motion: shadcnSpringMotion, marks: [ barY(activityPoints, { id: 'activity-bars', @@ -118,7 +114,6 @@ function TanStackView({ input }: { input: ConformanceInput }) { defineChart(advancedTooltipDefinition, { svgAnimation: false, focus: 'group-x', - focusRing: false, keyboard: true, tooltip: { use: tooltip, ...activityTooltip }, }), diff --git a/benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx b/benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx index 2080727d..2c843e2a 100644 --- a/benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx +++ b/benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx @@ -1,4 +1,4 @@ -import { useMemo, useRef } from 'react' +import { useMemo, useRef, useState } from 'react' import { areaY, barX, @@ -14,6 +14,7 @@ import { } from '@tanstack/charts' import { angleGrid, + focusGroupAngle, pie, polar, radialArc, @@ -58,7 +59,7 @@ import { ShadcnTrendFooter, shadcnChartMount, } from './shadcn-chart-card' -import { createShadcnSpringRenderer, shadcnSpringMotion } from './shadcn-motion' +import { createShadcnSpringRenderer } from './shadcn-motion' import interactiveAreaData from '../shadcn/area-interactive-data.json' import { tanstackCase } from './mount' import type { ChartPoint, ChartTooltipOptions } from '@tanstack/charts' @@ -66,7 +67,7 @@ import type { ChartDefinition, ChartValue } from '@tanstack/charts' import type { ConformanceInput } from '../types' const monthSeries = ['desktop', 'mobile', 'tablet'] as const -const twoSeries = monthSeries.slice(0, 2) +const twoSeries = ['desktop', 'mobile'] as const const browserNames = shadcnBrowsers.map((row) => row.browser) const activityNames = ['running', 'swimming'] as const const horizontalVariants = new Set(['horizontal', 'label-custom', 'mixed']) @@ -83,6 +84,33 @@ const interactiveBarRows: readonly ShadcnMonthDatum[] = interactiveAreaRows.map( tablet: 0, }), ) +const interactivePieRows: readonly ShadcnBrowserDatum[] = [ + { browser: 'january', visitors: 186 }, + { browser: 'february', visitors: 305 }, + { browser: 'march', visitors: 237 }, + { browser: 'april', visitors: 173 }, + { browser: 'may', visitors: 209 }, +] +const interactiveTimeRangeOptions = [ + { value: '90d', label: 'Last 3 months' }, + { value: '30d', label: 'Last 30 days' }, + { value: '7d', label: 'Last 7 days' }, +] as const + +type InteractiveTimeRange = '90d' | '30d' | '7d' +type InteractiveSeries = (typeof twoSeries)[number] + +interface ShadcnInteractiveState { + timeRange: InteractiveTimeRange + series: InteractiveSeries + month: string +} + +type ShadcnInteractiveDefinitionFactory< + TDatum, + TXValue extends ChartValue, + TYValue extends ChartValue, +> = (state: ShadcnInteractiveState) => ChartDefinition type ShadcnRadialCatalogDatum = | ShadcnBrowserDatum @@ -100,20 +128,44 @@ type ShadcnRadialCatalogDatum = export function createShadcnTanStackExample(name: string) { const spec = getShadcnCatalogSpec(name) if (spec.family === 'area') { - return createShadcnExample(spec, buildAreaDefinition(spec)) + return createShadcnExample( + spec, + buildAreaDefinition(spec), + spec.variant === 'interactive' + ? ({ timeRange }) => buildInteractiveAreaDefinition(timeRange) + : undefined, + ) } if (spec.family === 'bar') { return createShadcnExample< ShadcnMonthDatum | ShadcnSeriesDatum | ShadcnBrowserDatum, string | number, string | number - >(spec, buildBarDefinition(spec)) + >( + spec, + buildBarDefinition(spec), + spec.variant === 'interactive' + ? ({ series }) => buildInteractiveBarDefinition(series) + : undefined, + ) } if (spec.family === 'line') { - return createShadcnExample(spec, buildLineDefinition(spec)) + return createShadcnExample( + spec, + buildLineDefinition(spec), + spec.variant === 'interactive' + ? ({ series }) => buildInteractiveLineDefinition(series) + : undefined, + ) } if (spec.family === 'pie') { - return createShadcnExample(spec, buildPieDefinition(spec)) + return createShadcnExample( + spec, + buildPieDefinition(spec), + spec.variant === 'interactive' + ? ({ month }) => buildInteractivePieDefinition(month) + : undefined, + ) } if (spec.family === 'radar') { return createShadcnExample(spec, buildRadarDefinition(spec)) @@ -135,6 +187,11 @@ function createShadcnExample< >( spec: ShadcnCatalogSpec, definition: ChartDefinition, + interactiveDefinitionFactory?: ShadcnInteractiveDefinitionFactory< + TDatum, + TXValue, + TYValue + >, ) { const tooltipOptions: ChartTooltipOptions = { className: 'sc-chart-tooltip', @@ -151,31 +208,26 @@ function createShadcnExample< content: spec.family === 'tooltip' ? () => ({ rows: [] }) - : (points) => ({ - title: String(points[0]?.xValue ?? ''), - rows: points.map((point) => ({ - label: point.markId.replace( - /-?(bars|lines|areas|slices|values)$/u, - '', - ), - value: Number(point.yValue ?? point.xValue ?? 0).toLocaleString( - 'en-US', - ), - color: point.color, - })), - }), + : (points) => shadcnTooltipContent(spec, points), } const chartOptions = { svgAnimation: false, - motion: shadcnSpringMotion, - focus: spec.family === 'radial' ? false : 'group-x', - focusRing: false, + focus: + spec.family === 'radar' + ? focusGroupAngle + : spec.family === 'pie' || spec.family === 'radial' + ? 'nearest' + : 'group-x', keyboard: spec.family !== 'radial', tooltip: { use: tooltip, ...tooltipOptions }, } as const - const interactiveDefinition = isResponsiveChartDefinition(definition) - ? defineChart(definition, chartOptions) - : defineChart(definition, chartOptions) + const applyChartOptions = ( + source: ChartDefinition, + ) => + isResponsiveChartDefinition(source) + ? defineChart(source, chartOptions) + : defineChart(source, chartOptions) + const interactiveDefinition = applyChartOptions(definition) const catalogCase = tanstackCase( () => interactiveDefinition, `${spec.title} implemented with TanStack Charts`, @@ -185,7 +237,23 @@ function createShadcnExample< function TanStackView({ input }: { input: ConformanceInput }) { const seededTooltip = useRef(false) - const chartDefinition = useMemo(() => interactiveDefinition, []) + const [timeRange, setTimeRange] = useState('90d') + const [activeSeries, setActiveSeries] = + useState('desktop') + const [activeMonth, setActiveMonth] = useState('january') + const chartDefinition = useMemo( + () => + interactiveDefinitionFactory + ? applyChartOptions( + interactiveDefinitionFactory({ + timeRange, + series: activeSeries, + month: activeMonth, + }), + ) + : interactiveDefinition, + [timeRange, activeSeries, activeMonth], + ) const renderer = useMemo( () => createShadcnSpringRenderer(), [], @@ -200,12 +268,27 @@ function createShadcnExample< ) const headerAction = (spec.family === 'bar' || spec.family === 'line') && interactive ? ( - + ) : interactive ? ( - + spec.family === 'area' ? ( + setTimeRange(value as InteractiveTimeRange)} + /> + ) : ( + ({ + value: row.browser, + label: titleCase(row.browser), + swatch: shadcnColors[index], + }))} + onChange={setActiveMonth} + /> + ) ) : undefined return ( @@ -299,6 +382,56 @@ function createShadcnExample< } } +function shadcnTooltipContent( + spec: ShadcnCatalogSpec, + points: readonly ChartPoint[], +) { + if (spec.family === 'pie' || spec.family === 'radial') { + const point = points.find((candidate) => browserMetric(candidate.datum)) + const metric = point && browserMetric(point.datum) + return metric + ? { + title: titleCase(metric.browser), + rows: [ + { + label: 'Visitors', + value: metric.visitors.toLocaleString('en-US'), + color: point.color, + }, + ], + } + : { rows: [] } + } + + return { + title: String(points[0]?.xValue ?? ''), + rows: points.map((point) => ({ + label: titleCase( + String( + point.group ?? + point.markId.replace( + /-?(bars|lines|areas|slices|values|radar)$/u, + '', + ), + ), + ), + value: Number(point.yValue ?? point.xValue ?? 0).toLocaleString('en-US'), + color: point.color, + })), + } +} + +function browserMetric(datum: unknown) { + if (!datum || typeof datum !== 'object') return undefined + const browser = Reflect.get(datum, 'browser') + const visitors = Reflect.get(datum, 'visitors') + return typeof browser === 'string' && + typeof visitors === 'number' && + Number.isFinite(visitors) + ? { browser, visitors } + : undefined +} + function buildAreaDefinition(spec: ShadcnCatalogSpec) { if (spec.variant === 'interactive') return buildInteractiveAreaDefinition() const multi = @@ -420,8 +553,11 @@ function buildAreaDefinition(spec: ShadcnCatalogSpec) { }) } -function buildInteractiveAreaDefinition() { - const rows: ShadcnSeriesDatum[] = interactiveAreaRows.flatMap((row) => [ +function buildInteractiveAreaDefinition( + timeRange: InteractiveTimeRange = '90d', +) { + const filteredRows = filterInteractiveAreaRows(timeRange) + const rows: ShadcnSeriesDatum[] = filteredRows.flatMap((row) => [ { month: row.date, series: 'mobile', value: row.mobile }, { month: row.date, series: 'desktop', value: row.desktop }, ]) @@ -448,16 +584,7 @@ function buildInteractiveAreaDefinition() { axis: { line: false, ticks: { - values: [ - '2024-04-10', - '2024-04-21', - '2024-05-02', - '2024-05-13', - '2024-05-25', - '2024-06-05', - '2024-06-16', - '2024-06-29', - ], + values: interactiveDateTicks(timeRange), size: 0, padding: 10, format: formatMonthDay, @@ -497,41 +624,7 @@ function buildInteractiveAreaDefinition() { function buildBarDefinition(spec: ShadcnCatalogSpec) { if (spec.variant === 'interactive') { - return defineChart({ - marks: [ - barY(interactiveBarRows, { - id: 'daily-bars', - x: 'month', - y: 'desktop', - fill: shadcnColors[1], - }), - ], - x: { - scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), - axis: { - line: false, - ticks: { - values: [ - '2024-04-01', - '2024-04-11', - '2024-04-22', - '2024-05-03', - '2024-05-14', - '2024-05-26', - '2024-06-06', - '2024-06-17', - '2024-06-29', - ], - size: 0, - padding: 10, - format: formatMonthDay, - }, - }, - }, - y: { scale: scaleLinear, grid: true, axis: false }, - margin: { top: 5, right: 12, bottom: 25, left: 12 }, - theme: shadcnTheme(), - }) + return buildInteractiveBarDefinition() } if (spec.variant === 'active') { const rows = shadcnBrowsers.map((row) => @@ -753,6 +846,49 @@ function buildBarDefinition(spec: ShadcnCatalogSpec) { }) } +function buildInteractiveBarDefinition( + activeSeries: InteractiveSeries = 'desktop', +) { + return defineChart({ + marks: [ + barY(interactiveBarRows, { + id: 'daily-bars', + x: 'month', + y: (row) => row[activeSeries], + z: () => activeSeries, + key: 'month', + fill: activeSeries === 'desktop' ? shadcnColors[1] : shadcnColors[0], + }), + ], + x: { + scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), + axis: { + line: false, + ticks: { + values: [ + '2024-04-01', + '2024-04-11', + '2024-04-22', + '2024-05-03', + '2024-05-14', + '2024-05-26', + '2024-06-06', + '2024-06-17', + '2024-06-29', + ], + size: 0, + padding: 10, + format: formatMonthDay, + }, + }, + }, + y: { scale: scaleLinear, grid: true, axis: false }, + color: { domain: twoSeries, range: shadcnColors.slice(0, 2) }, + margin: { top: 5, right: 12, bottom: 25, left: 12 }, + theme: shadcnTheme(), + }) +} + function groupedBarDefinition() { const rows = shadcnSeriesRows.filter( (row) => row.series === 'desktop' || row.series === 'mobile', @@ -934,15 +1070,19 @@ function buildLineDefinition(spec: ShadcnCatalogSpec) { })) } -function buildInteractiveLineDefinition() { +function buildInteractiveLineDefinition( + activeSeries: InteractiveSeries = 'desktop', +) { return defineChart(({ width }) => ({ marks: [ lineY(interactiveBarRows, { id: 'daily-line', x: 'month', - y: 'desktop', + y: (row) => row[activeSeries], + z: () => activeSeries, + key: 'month', curve: d3Curve(curveMonotoneX), - stroke: shadcnColors[0], + stroke: activeSeries === 'desktop' ? shadcnColors[0] : shadcnColors[1], strokeWidth: 2, }), ], @@ -976,6 +1116,7 @@ function buildInteractiveLineDefinition() { tickLabels: false, }, }, + color: { domain: twoSeries, range: shadcnColors.slice(0, 2) }, margin: { top: 5, right: width < 400 ? 24 : 12, @@ -1152,20 +1293,19 @@ function buildStackedPieDefinition() { }) } -function buildInteractivePieDefinition() { - const rows: ShadcnBrowserDatum[] = [ - { browser: 'january', visitors: 186 }, - { browser: 'february', visitors: 305 }, - { browser: 'march', visitors: 237 }, - { browser: 'april', visitors: 173 }, - { browser: 'may', visitors: 209 }, - ] - const arcs = pie(rows, { +function buildInteractivePieDefinition(activeMonth = 'january') { + const arcs = pie(interactivePieRows, { value: 'visitors', startAngle: Math.PI / 2, endAngle: (-Math.PI * 3) / 2, }) - const active = arcs.filter((row) => row.browser === 'january') + const activeIndex = Math.max( + 0, + interactivePieRows.findIndex((row) => row.browser === activeMonth), + ) + const activeRow = interactivePieRows[activeIndex]! + const active = arcs.filter((row) => row.browser === activeRow.browser) + const activeColor = shadcnColors[activeIndex]! return defineChart({ marks: [ polar({ @@ -1186,7 +1326,7 @@ function buildInteractivePieDefinition() { key: 'browser', innerRadius: 60, outerRadius: ({ radius }) => radius + 10, - fill: shadcnColors[0], + fill: activeColor, stroke: 'var(--background)', strokeWidth: 5, }), @@ -1195,21 +1335,31 @@ function buildInteractivePieDefinition() { key: 'browser', innerRadius: ({ radius }) => radius + 12, outerRadius: ({ radius }) => radius + 25, - fill: shadcnColors[0], + fill: activeColor, stroke: 'var(--background)', strokeWidth: 3, }), - radialText([{ id: 'total', angle: 0, radius: 0, text: '186' }], { - id: 'active-total', - angle: 'angle', - radius: 'radius', - key: 'id', - text: 'text', - dy: -5, - fill: 'var(--foreground)', - fontSize: 30, - fontWeight: 700, - }), + radialText( + [ + { + id: 'total', + angle: 0, + radius: 0, + text: String(activeRow.visitors), + }, + ], + { + id: 'active-total', + angle: 'angle', + radius: 'radius', + key: 'id', + text: 'text', + dy: -5, + fill: 'var(--foreground)', + fontSize: 30, + fontWeight: 700, + }, + ), radialText([{ id: 'label', angle: 0, radius: 0, text: 'Visitors' }], { id: 'active-label', angle: 'angle', @@ -1224,7 +1374,7 @@ function buildInteractivePieDefinition() { }), ], color: { - domain: rows.map((row) => row.browser), + domain: interactivePieRows.map((row) => row.browser), range: shadcnColors, }, margin: 0, @@ -1326,6 +1476,7 @@ function buildRadarDefinition(spec: ShadcnCatalogSpec) { angle: 'month', radius: 'desktop', key: 'month', + z: () => 'desktop', curve: curveLinearClosed, fill: shadcnColors[0], fillOpacity: @@ -1342,6 +1493,7 @@ function buildRadarDefinition(spec: ShadcnCatalogSpec) { angle: 'month', radius: 'mobile', key: 'month', + z: () => 'mobile', curve: curveLinearClosed, fill: shadcnColors[1], fillOpacity: spec.variant === 'lines-only' ? 0 : 1, @@ -1357,6 +1509,7 @@ function buildRadarDefinition(spec: ShadcnCatalogSpec) { angle: 'month', radius: 'desktop', key: 'month', + z: () => 'desktop', r: 4, fill: shadcnColors[0], }), @@ -1369,6 +1522,7 @@ function buildRadarDefinition(spec: ShadcnCatalogSpec) { angle: 'month', radius: () => radiusMax, key: 'month', + z: () => 'desktop', text: (row) => `${row.desktop}/${row.mobile ?? 0}`, anchor: 'outside', radiusOffset: 15, @@ -1382,6 +1536,7 @@ function buildRadarDefinition(spec: ShadcnCatalogSpec) { angle: 'month', radius: () => radiusMax, key: 'month', + z: () => 'desktop', text: 'month', anchor: 'outside', radiusOffset: 15, @@ -1812,19 +1967,37 @@ function ShadcnActivityIcon({ activity }: { activity: string }) { ) } -function ShadcnSelectDisplay({ - label, - swatch, +function ShadcnSelectControl({ + ariaLabel, + value, + options, + onChange, }: { - label: string - swatch?: string + ariaLabel: string + value: string + options: readonly { value: string; label: string; swatch?: string }[] + onChange: (value: string) => void }) { + const selected = options.find((option) => option.value === value) return ( -
- {swatch ? ( - +
+ ) } -function ShadcnBarMetrics() { +function ShadcnBarMetrics({ + active, + onChange, +}: { + active: InteractiveSeries + onChange: (series: InteractiveSeries) => void +}) { + const totals = { + desktop: interactiveBarRows.reduce((sum, row) => sum + row.desktop, 0), + mobile: interactiveBarRows.reduce((sum, row) => sum + row.mobile, 0), + } return ( <> -
- Desktop - 24,828 -
-
- Mobile - 25,010 -
+ {twoSeries.map((series) => ( + + ))} ) } +function filterInteractiveAreaRows(timeRange: InteractiveTimeRange) { + const days = timeRange === '30d' ? 30 : timeRange === '7d' ? 7 : 90 + const start = new Date('2024-06-30T00:00:00Z') + start.setUTCDate(start.getUTCDate() - days) + const firstDate = start.toISOString().slice(0, 10) + return interactiveAreaRows.filter((row) => row.date >= firstDate) +} + +function interactiveDateTicks(timeRange: InteractiveTimeRange) { + if (timeRange === '7d') { + return ['2024-06-23', '2024-06-25', '2024-06-27', '2024-06-29'] + } + if (timeRange === '30d') { + return [ + '2024-06-01', + '2024-06-08', + '2024-06-15', + '2024-06-22', + '2024-06-29', + ] + } + return [ + '2024-04-10', + '2024-04-21', + '2024-05-02', + '2024-05-13', + '2024-05-25', + '2024-06-05', + '2024-06-16', + '2024-06-29', + ] +} + function shadcnXAxis() { return { scale: () => scaleBand().paddingInner(0.2).paddingOuter(0.1), diff --git a/benchmarks/conformance/shared/shadcn-chart-card.tsx b/benchmarks/conformance/shared/shadcn-chart-card.tsx index ff368861..6be50035 100644 --- a/benchmarks/conformance/shared/shadcn-chart-card.tsx +++ b/benchmarks/conformance/shared/shadcn-chart-card.tsx @@ -300,10 +300,14 @@ export const shadcnChartCardStyles = ` .sc-interactive-pie .sc-chart { transform: translateY(55px); } .sc-interactive-pie .sc-card-action { transform: translateY(48px); } .sc-card-action { margin-left: auto; } - .sc-select-display { display: flex; min-width: 130px; height: 36px; align-items: center; gap: 8px; justify-content: space-between; padding: 0 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--background); color: var(--foreground); font-size: 14px; box-shadow: 0 1px 2px rgb(0 0 0 / 4%); } - .sc-select-display svg { width: 14px; height: 14px; color: var(--muted-foreground); } - .sc-select-swatch { width: 12px; height: 12px; border-radius: 3px; } - .sc-bar-metric { display: grid; width: 168px; align-content: center; gap: 6px; padding: 16px 32px; border-left: 1px solid var(--border); } + .sc-select-display { position: relative; display: flex; min-width: 130px; height: 36px; align-items: center; gap: 8px; padding: 0 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--background); color: var(--foreground); font-size: 14px; box-shadow: 0 1px 2px rgb(0 0 0 / 4%); } + .sc-select-display:focus-within { outline: 2px solid var(--foreground); outline-offset: 2px; } + .sc-select-display select { min-width: 0; flex: 1; appearance: none; border: 0; outline: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; } + .sc-select-display svg { width: 14px; height: 14px; flex: none; color: var(--muted-foreground); pointer-events: none; } + .sc-select-swatch { width: 12px; height: 12px; flex: none; border-radius: 3px; } + .sc-bar-metric { display: grid; width: 168px; align-content: center; gap: 6px; padding: 16px 32px; border: 0; border-left: 1px solid var(--border); background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; } + .sc-bar-metric[data-active='true'] { background: var(--muted); } + .sc-bar-metric:focus-visible { outline: 2px solid var(--foreground); outline-offset: -3px; } .sc-bar-metric span { color: var(--muted-foreground); font-size: 12px; } .sc-bar-metric strong { font-size: 30px; line-height: 1; letter-spacing: -0.03em; } ` diff --git a/benchmarks/conformance/shared/shadcn-interaction.test.ts b/benchmarks/conformance/shared/shadcn-interaction.test.ts new file mode 100644 index 00000000..d98d19ee --- /dev/null +++ b/benchmarks/conformance/shared/shadcn-interaction.test.ts @@ -0,0 +1,132 @@ +import { act } from 'react' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { createShadcnTanStackExample } from './shadcn-catalog-tanstack' + +const input = { + width: 600, + height: 500, + revision: 0, + interactive: true, +} as const + +let matchMediaDescriptor: PropertyDescriptor | undefined + +beforeEach(() => { + matchMediaDescriptor = Object.getOwnPropertyDescriptor(window, 'matchMedia') + Object.defineProperty(window, 'matchMedia', { + configurable: true, + value: vi.fn(() => ({ matches: true })), + }) +}) + +afterEach(() => { + if (matchMediaDescriptor) { + Object.defineProperty(window, 'matchMedia', matchMediaDescriptor) + } else { + Reflect.deleteProperty(window, 'matchMedia') + } +}) + +describe('shadcn interactive chart shells', () => { + it('filters the interactive area chart from its range control', () => { + const container = document.createElement('div') + const handle = createShadcnTanStackExample('chart-area-interactive').mount( + container, + input, + ) + const select = container.querySelector('select') + const path = () => + container + .querySelector('g.ts-chart__area path') + ?.getAttribute('d') + const initialPath = path() + + expect(select?.value).toBe('90d') + act(() => { + if (!select) return + select.value = '7d' + select.dispatchEvent(new Event('change', { bubbles: true })) + }) + + expect(select?.value).toBe('7d') + expect(path()).not.toBe(initialPath) + expect( + [...container.querySelectorAll('g.ts-chart__axes text')].map( + (label) => label.textContent, + ), + ).toEqual(['Jun 23', 'Jun 25', 'Jun 27', 'Jun 29']) + + handle.destroy() + }) + + it.each(['bar', 'line'] as const)( + 'switches the interactive %s chart between desktop and mobile', + (family) => { + const container = document.createElement('div') + const handle = createShadcnTanStackExample( + `chart-${family}-interactive`, + ).mount(container, input) + const mobile = [...container.querySelectorAll('button')].find((button) => + button.textContent?.includes('Mobile'), + ) + const geometry = () => + family === 'bar' + ? container + .querySelector('g.ts-chart__bar-y rect') + ?.getAttribute('height') + : container.querySelector('g.ts-chart__line path')?.getAttribute('d') + const paint = () => + family === 'bar' + ? container + .querySelector('g.ts-chart__bar-y rect') + ?.getAttribute('fill') + : container + .querySelector('g.ts-chart__line path') + ?.getAttribute('stroke') + const initialGeometry = geometry() + const initialPaint = paint() + + act(() => mobile?.click()) + + expect(mobile?.getAttribute('aria-pressed')).toBe('true') + expect(geometry()).not.toBe(initialGeometry) + expect(paint()).not.toBe(initialPaint) + + handle.destroy() + }, + ) + + it('changes the active pie slice, swatch, and center value', () => { + const container = document.createElement('div') + const handle = createShadcnTanStackExample('chart-pie-interactive').mount( + container, + input, + ) + const select = container.querySelector('select') + + expect(select?.options).toHaveLength(5) + expect(container.querySelector('svg.ts-chart')?.textContent).toContain( + '186Visitors', + ) + act(() => { + if (!select) return + select.value = 'may' + select.dispatchEvent(new Event('change', { bubbles: true })) + }) + + expect(container.querySelector('svg.ts-chart')?.textContent).toContain( + '209Visitors', + ) + expect( + container + .querySelector('g.ts-chart__arc[data-ts-key="active-month"] path') + ?.getAttribute('fill'), + ).toContain('--chart-5') + expect( + container.querySelector('.sc-select-swatch')?.style + .background, + ).toContain('--chart-5') + + handle.destroy() + }) +}) diff --git a/benchmarks/conformance/shared/shadcn-motion.test.ts b/benchmarks/conformance/shared/shadcn-motion.test.ts index 7e97233f..928c29be 100644 --- a/benchmarks/conformance/shared/shadcn-motion.test.ts +++ b/benchmarks/conformance/shared/shadcn-motion.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from 'vitest' +import { createChartScene, type StaticChartDefinition } from '@tanstack/charts' import { shadcnDashboardChartDefinition } from '../cases/121-shadcn-dashboard/tanstack' import { barMultipleDefinition } from '../cases/122-shadcn-bar-multiple/tanstack' import { pieDonutTextDefinition } from '../cases/123-shadcn-pie-donut-text/tanstack' @@ -6,9 +7,10 @@ import { radarMultipleDefinition } from '../cases/124-shadcn-radar-multiple/tans import { radialTextDefinition } from '../cases/125-shadcn-radial-text/tanstack' import { advancedTooltipDefinition } from '../cases/126-shadcn-tooltip-advanced/tanstack' import { createShadcnTanStackExample } from './shadcn-catalog-tanstack' +import type { ShadcnMonthDatum } from './shadcn-catalog-data' +import { focusGroupAngle } from '@tanstack/charts/polar' import { createShadcnSpringRenderer, - shadcnSpringMotion, shadcnSpringTransition, } from './shadcn-motion' @@ -23,7 +25,7 @@ describe('shadcn chart motion', () => { expect(createShadcnSpringRenderer().id).toBe('svg:svg-motion') }) - it('applies the spring policy to dedicated and generated chart definitions', () => { + it('keeps dedicated and generated definitions free of duplicate spring policy', () => { const dedicatedDefinitions = [ shadcnDashboardChartDefinition([]), barMultipleDefinition, @@ -46,7 +48,50 @@ describe('shadcn chart motion', () => { ...dedicatedDefinitions, ...generatedDefinitions, ]) { - expect(definition.motion).toEqual(shadcnSpringMotion) + expect( + 'motion' in definition ? definition.motion : undefined, + ).toBeUndefined() } }) + + it('keeps the native focus marker enabled across generated families', () => { + const definitions = [ + 'chart-area-default', + 'chart-bar-default', + 'chart-line-default', + 'chart-pie-simple', + 'chart-radar-default', + 'chart-radial-simple', + 'chart-tooltip-default', + ].map((name) => createShadcnTanStackExample(name).definition) + + for (const definition of definitions) { + expect(definition.focus).not.toBe(false) + expect(definition.focusRing).not.toBe(false) + } + expect(definitions[4]?.focus).toBe(focusGroupAngle) + expect(definitions[3]?.focus).toBe('nearest') + expect(definitions[5]?.focus).toBe('nearest') + }) + + it('groups generated radar points by semantic angle and series', () => { + const definition = + createShadcnTanStackExample('chart-radar-legend').definition + expect('chart' in definition).toBe(false) + if ('chart' in definition) return + const scene = createChartScene( + definition as unknown as StaticChartDefinition< + ShadcnMonthDatum, + string, + number + >, + { width: 300, height: 250 }, + ) + const january = scene.points.filter((point) => point.xValue === 'January') + + expect(january.map((point) => point.group)).toEqual(['desktop', 'mobile']) + expect(focusGroupAngle.group(scene.points, { point: january[0]! })).toEqual( + january, + ) + }) }) diff --git a/benchmarks/conformance/shared/shadcn-motion.ts b/benchmarks/conformance/shared/shadcn-motion.ts index 217badd9..34331961 100644 --- a/benchmarks/conformance/shared/shadcn-motion.ts +++ b/benchmarks/conformance/shared/shadcn-motion.ts @@ -9,16 +9,13 @@ export const shadcnSpringTransition = { mass: 1, } as const satisfies ChartMotionSpringTransition -export const shadcnSpringMotion = { - transition: shadcnSpringTransition, -} - export function createShadcnSpringRenderer< TDatum = unknown, TXValue extends ChartValue = ChartValue, TYValue extends ChartValue = ChartValue, >() { return motion({ + initial: 'always', transition: shadcnSpringTransition, }) } diff --git a/benchmarks/entries/charts-motion-definition.ts b/benchmarks/entries/charts-motion-definition.ts new file mode 100644 index 00000000..ee59f8c1 --- /dev/null +++ b/benchmarks/entries/charts-motion-definition.ts @@ -0,0 +1 @@ +export { stagger } from '@tanstack/charts/motion/definition' diff --git a/docs/guides/dynamic-data-and-animation.md b/docs/guides/dynamic-data-and-animation.md index 2bf081de..6d84776c 100644 --- a/docs/guides/dynamic-data-and-animation.md +++ b/docs/guides/dynamic-data-and-animation.md @@ -109,12 +109,14 @@ Use `motion()` when animation quality is part of the chart contract: ```ts import { scaleUtc } from 'd3-scale' import { motion } from '@tanstack/charts/motion' +import { stagger } from '@tanstack/charts/motion/definition' import { mountChartRenderer } from '@tanstack/charts/renderer' import { scaleLinear } from '@tanstack/charts/scales/linear' const definition = defineChart({ motion: { - transition: { type: 'spring', stiffness: 170, damping: 18, mass: 1 }, + path: 'morph', + ...stagger({ each: 35, roles: 'line', by: 'series' }), }, marks: [ lineY(rows, { @@ -135,7 +137,9 @@ const definition = defineChart({ const host = mountChartRenderer(container, { definition, - renderer: motion(), + renderer: motion({ + transition: { type: 'spring', stiffness: 170, damping: 18, mass: 1 }, + }), width: 640, height: 360, ariaLabel: 'Actual and forecast revenue', @@ -178,17 +182,20 @@ rules, bands, labels, and marker retain DOM identity and spring velocity while focus retargets. Default SVG, Canvas, and native surfaces paint the same guide at its current target without importing the browser motion runtime. -Spring updates always retarget immediately; a returned update delay is ignored -so incoming momentum cannot freeze. Use delays for spring enter/exit -choreography or any tween phase. +`stagger()` contributes only a context-aware delay, so it composes with +transition and path fields through normal object spread. Spring updates always +retarget immediately; an update delay is ignored so incoming momentum cannot +freeze. Use delays for spring enter/exit choreography or any tween phase. -The renderer grows entering bars from their semantic baseline, reveals entering -line groups, staggers bar entrances, morphs compatible numeric SVG geometry, -and fades incompatible keyed topology. Authored delay replaces automatic -staggering for that target. +The renderer grows entering Cartesian bars, lines, and areas from their +semantic baseline; grows radial paths from the polar center; sweeps arcs +through their authored angle; staggers bar entrances; morphs compatible +numeric SVG geometry; and keeps removed keys painted through their exit +transition. Authored delay replaces automatic staggering for that target. `motion()` respects reduced motion and does not animate resize-only updates by -default. It adopts server-rendered SVG without replaying entrance motion. +default. It adopts server-rendered SVG without replaying entrance motion by +default; pass `initial: 'always'` to replay entrance motion after hydration. Static SVG and Canvas accept the same definitions but paint the final state. See the [Motion reference](../reference/motion.md) for the complete cascade, diff --git a/docs/guides/tooltips-and-focus.md b/docs/guides/tooltips-and-focus.md index 988f12bf..15f9ef4c 100644 --- a/docs/guides/tooltips-and-focus.md +++ b/docs/guides/tooltips-and-focus.md @@ -257,8 +257,33 @@ the pinned surface and adapter body are mounted. The default is ## Tooltip motion -A static chart motion transition also animates tooltip entry, movement between -points, and exit: +The built-in tooltip uses the active motion renderer's transition for entry, +movement between points, retargeting, and exit: + +```ts +import { motion } from '@tanstack/charts/motion' + +const renderer = motion({ + transition: { + type: 'spring', + stiffness: 170, + damping: 18, + mass: 1, + }, +}) + +const definition = defineChart({ marks, tooltip }) + +mountChartRenderer(container, { + definition, + renderer, + width: 640, + height: 360, + ariaLabel: 'Monthly visitors', +}) +``` + +A static chart-level transition can refine the renderer fallback: ```ts const definition = defineChart({ @@ -270,9 +295,10 @@ const definition = defineChart({ }) ``` -Set `tooltip.motion` to another transition to override the chart transition, or -set it to `false` to keep the tooltip immediate. Reduced-motion preferences -disable these animations. +Set `tooltip.motion` to another transition to override both, or set it to +`false` to keep the tooltip immediate. These options customize the active +motion renderer; a static renderer stays immediate and does not import spring +physics. The renderer's reduced-motion policy also applies to the tooltip. ## Application-owned pointer timing diff --git a/docs/reference/index.md b/docs/reference/index.md index 42259a6f..af31ef73 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -156,7 +156,8 @@ aggregate `/scales` export. | `@tanstack/charts/mark/composite` | `compositeMark` and `CompositeMarkOptions` | | `@tanstack/charts/mark/decorative` | `decorative` | | `@tanstack/charts/mark/scale-values` | `createMarkWithScaleValues` | -| `@tanstack/charts/motion` | `motion`, `ChartMotionOptions`, and renderer-neutral motion types | +| `@tanstack/charts/motion` | `motion`, `stagger`, `ChartMotionOptions`, and renderer-neutral motion types | +| `@tanstack/charts/motion/definition` | Isolated `stagger` and `ChartMotionStaggerOptions` without the renderer or spring solver | | `@tanstack/charts/network/force` | `forceLayout`, built-in descriptors, named D3-compatible force factories, private working-clone context, settled node/link result, and lineage types | | `@tanstack/charts/network/sankey` | `sankeyDiagram`, shorthand and callable alignment types, responsive layout options, immutable node/link values, comparator contexts, and lineage types | | `@tanstack/charts/polar` | `pie`, `polar`, `focusGroupAngle`, `radialArc`, `radialBarRadius`, `radialBarAngle`, other radial marks, and radial/angle guides | diff --git a/docs/reference/motion.md b/docs/reference/motion.md index 0d83ddca..9316efea 100644 --- a/docs/reference/motion.md +++ b/docs/reference/motion.md @@ -24,29 +24,41 @@ function motion< >(options?: ChartMotionOptions): ChartRenderer interface ChartMotionOptions { - initial?: boolean + initial?: boolean | 'always' transition?: ChartMotionTransition respectReducedMotion?: boolean resize?: boolean } ``` -| Option | Default | Meaning | -| ---------------------- | --------------------------------------------- | -------------------------------------------------- | -| `initial` | `true` | Animate the first client render | -| `transition` | 1,100 ms tween with the default entrance ease | Renderer-wide fallback | -| `respectReducedMotion` | `true` | Snap when `prefers-reduced-motion: reduce` matches | -| `resize` | `false` | Animate updates caused only by a chart size change | - -Server-rendered SVG is adopted without replaying entrance motion. Keyed updates -start from painted geometry. An interrupted spring carries its sampled value and -velocity into the new target. A spring has no duration; it finishes when both -`restSpeed` and `restDelta` are satisfied, with a 10-second safety limit. +| Option | Default | Meaning | +| ---------------------- | --------------------------------------------- | ------------------------------------------------------------- | +| `initial` | `true` | Animate first client paint; `always` also replays adopted SVG | +| `transition` | 1,100 ms tween with the default entrance ease | Renderer-wide fallback | +| `respectReducedMotion` | `true` | Snap when `prefers-reduced-motion: reduce` matches | +| `resize` | `false` | Animate updates caused only by a chart size change | + +Server-rendered SVG is adopted without replaying entrance motion by default. +Set `initial: 'always'` when a hydrated chart should replay the same entrance +as a client-only mount. Keyed updates start from painted geometry. An +interrupted spring carries its sampled value and velocity into the new target. +A spring has no duration; it finishes when both `restSpeed` and `restDelta` are +satisfied, with a 10-second safety limit. + +Initial choreography follows geometry: Cartesian bars and paths grow from +their semantic baseline, radial lines and areas grow from the polar center, +and arcs sweep through their authored angle. Keyed removals stay painted +through their exit transition. Data-less `crosshair` marks use the same keyed focus-motion path. Rapid pointer or keyboard retargeting preserves the guide elements and incoming spring velocity; labels remain aligned to their moving rules. +The built-in HTML tooltip also consumes this renderer's transition. Entry, +movement, retargeting, and exit therefore use the same spring without copying +the transition into the chart definition. A static renderer keeps the tooltip +immediate and does not import the motion runtime. + Use the renderer-neutral host in vanilla applications: ```ts @@ -111,6 +123,8 @@ const definition = defineChart({ The cascade is renderer default, chart, mark, axis, specific guide, then the active focus-state transition. Same-type transitions inherit omitted fields. +Set `motion: false` at any definition scope to suppress inherited motion for +that scope. A more specific child can re-enable motion with its own definition. An authored `delay` replaces automatic entrance staggering for that target. Spring updates begin immediately even when a definition returns a delay, so a retarget cannot freeze incoming momentum. Spring enter and exit delays, and @@ -119,6 +133,58 @@ tween delays in every phase, are honored. All built-in marks accept `ChartMarkMotionOptions`. Nested polar marks also accept `motion`; their timing is merged below the parent `polar` mark. +| Scope | Motion input | +| ------------------------------ | ---------------------------------------------------- | +| Renderer fallback | `motion({ transition })` | +| Whole chart | `defineChart({ motion })` | +| Any built-in mark | The mark's `motion` option | +| Axis, including its grid lines | `x.axis.motion` or `y.axis.motion` | +| Tick rules | `axis.ticks.motion` | +| Tick labels | `axis.tickLabels.motion` | +| Axis label | `axis.label.motion` when `label` is an object | +| Crosshair or focus guide | The guide mark's `motion` option | +| HTML tooltip | Inherits chart motion; `tooltip.motion` overrides it | + +Grid lines use their axis policy because they are part of that axis's guide +system. `tooltip.motion: false` keeps the tooltip immediate even when chart +geometry animates. Legends and application-owned controls are not marks and do +not currently participate in the motion cascade. + +## Spreading timing utilities + +Use the isolated timing entry when the definition only needs motion policy: + +```ts +import { stagger } from '@tanstack/charts/motion/definition' + +const definition = defineChart({ + motion: { + path: 'morph', + ...stagger({ each: 35, by: 'series', roles: ['arc', 'bar'] }), + }, + marks, +}) +``` + +`stagger()` returns one context-aware `delay` field for direct object spread. +It uses `datumIndex` by default, can use `seriesIndex`, defaults to the `enter` +phase, and can filter by phase and semantic role. `offset` delays the first +target. Normal object-spread order controls precedence, so an explicit `delay` +written after `...stagger()` replaces it. + +```ts +interface ChartMotionStaggerOptions { + each: number + offset?: number + by?: 'datum' | 'series' + phase?: ChartMotionPhase | readonly ChartMotionPhase[] + roles?: ChartMotionRole | readonly ChartMotionRole[] +} +``` + +`stagger()` is also exported from `@tanstack/charts/motion`. The dedicated +`/motion/definition` entry excludes the SVG renderer and spring solver. + ## Timing types ```ts @@ -152,15 +218,18 @@ interface ChartRollingPathMotion { type ChartMotionPath = 'morph' | ChartRollingPathMotion -interface ChartMotionTiming { - delay?: number +interface ChartMotionTiming { + delay?: number | ((context: ChartMotionContext) => number | undefined) transition?: ChartMotionTransition path?: ChartMotionPath } type ChartMotionDefinition = - | ChartMotionTiming - | ((context: ChartMotionContext) => ChartMotionTiming | undefined) + | false + | ChartMotionTiming + | (( + context: ChartMotionContext, + ) => false | ChartMotionTiming | undefined) interface ChartMarkMotionOptions { motion?: ChartMotionDefinition diff --git a/packages/charts-core/docs/guides/dynamic-data-and-animation.md b/packages/charts-core/docs/guides/dynamic-data-and-animation.md index 2bf081de..6d84776c 100644 --- a/packages/charts-core/docs/guides/dynamic-data-and-animation.md +++ b/packages/charts-core/docs/guides/dynamic-data-and-animation.md @@ -109,12 +109,14 @@ Use `motion()` when animation quality is part of the chart contract: ```ts import { scaleUtc } from 'd3-scale' import { motion } from '@tanstack/charts/motion' +import { stagger } from '@tanstack/charts/motion/definition' import { mountChartRenderer } from '@tanstack/charts/renderer' import { scaleLinear } from '@tanstack/charts/scales/linear' const definition = defineChart({ motion: { - transition: { type: 'spring', stiffness: 170, damping: 18, mass: 1 }, + path: 'morph', + ...stagger({ each: 35, roles: 'line', by: 'series' }), }, marks: [ lineY(rows, { @@ -135,7 +137,9 @@ const definition = defineChart({ const host = mountChartRenderer(container, { definition, - renderer: motion(), + renderer: motion({ + transition: { type: 'spring', stiffness: 170, damping: 18, mass: 1 }, + }), width: 640, height: 360, ariaLabel: 'Actual and forecast revenue', @@ -178,17 +182,20 @@ rules, bands, labels, and marker retain DOM identity and spring velocity while focus retargets. Default SVG, Canvas, and native surfaces paint the same guide at its current target without importing the browser motion runtime. -Spring updates always retarget immediately; a returned update delay is ignored -so incoming momentum cannot freeze. Use delays for spring enter/exit -choreography or any tween phase. +`stagger()` contributes only a context-aware delay, so it composes with +transition and path fields through normal object spread. Spring updates always +retarget immediately; an update delay is ignored so incoming momentum cannot +freeze. Use delays for spring enter/exit choreography or any tween phase. -The renderer grows entering bars from their semantic baseline, reveals entering -line groups, staggers bar entrances, morphs compatible numeric SVG geometry, -and fades incompatible keyed topology. Authored delay replaces automatic -staggering for that target. +The renderer grows entering Cartesian bars, lines, and areas from their +semantic baseline; grows radial paths from the polar center; sweeps arcs +through their authored angle; staggers bar entrances; morphs compatible +numeric SVG geometry; and keeps removed keys painted through their exit +transition. Authored delay replaces automatic staggering for that target. `motion()` respects reduced motion and does not animate resize-only updates by -default. It adopts server-rendered SVG without replaying entrance motion. +default. It adopts server-rendered SVG without replaying entrance motion by +default; pass `initial: 'always'` to replay entrance motion after hydration. Static SVG and Canvas accept the same definitions but paint the final state. See the [Motion reference](../reference/motion.md) for the complete cascade, diff --git a/packages/charts-core/docs/guides/tooltips-and-focus.md b/packages/charts-core/docs/guides/tooltips-and-focus.md index 988f12bf..15f9ef4c 100644 --- a/packages/charts-core/docs/guides/tooltips-and-focus.md +++ b/packages/charts-core/docs/guides/tooltips-and-focus.md @@ -257,8 +257,33 @@ the pinned surface and adapter body are mounted. The default is ## Tooltip motion -A static chart motion transition also animates tooltip entry, movement between -points, and exit: +The built-in tooltip uses the active motion renderer's transition for entry, +movement between points, retargeting, and exit: + +```ts +import { motion } from '@tanstack/charts/motion' + +const renderer = motion({ + transition: { + type: 'spring', + stiffness: 170, + damping: 18, + mass: 1, + }, +}) + +const definition = defineChart({ marks, tooltip }) + +mountChartRenderer(container, { + definition, + renderer, + width: 640, + height: 360, + ariaLabel: 'Monthly visitors', +}) +``` + +A static chart-level transition can refine the renderer fallback: ```ts const definition = defineChart({ @@ -270,9 +295,10 @@ const definition = defineChart({ }) ``` -Set `tooltip.motion` to another transition to override the chart transition, or -set it to `false` to keep the tooltip immediate. Reduced-motion preferences -disable these animations. +Set `tooltip.motion` to another transition to override both, or set it to +`false` to keep the tooltip immediate. These options customize the active +motion renderer; a static renderer stays immediate and does not import spring +physics. The renderer's reduced-motion policy also applies to the tooltip. ## Application-owned pointer timing diff --git a/packages/charts-core/docs/reference/index.md b/packages/charts-core/docs/reference/index.md index 42259a6f..af31ef73 100644 --- a/packages/charts-core/docs/reference/index.md +++ b/packages/charts-core/docs/reference/index.md @@ -156,7 +156,8 @@ aggregate `/scales` export. | `@tanstack/charts/mark/composite` | `compositeMark` and `CompositeMarkOptions` | | `@tanstack/charts/mark/decorative` | `decorative` | | `@tanstack/charts/mark/scale-values` | `createMarkWithScaleValues` | -| `@tanstack/charts/motion` | `motion`, `ChartMotionOptions`, and renderer-neutral motion types | +| `@tanstack/charts/motion` | `motion`, `stagger`, `ChartMotionOptions`, and renderer-neutral motion types | +| `@tanstack/charts/motion/definition` | Isolated `stagger` and `ChartMotionStaggerOptions` without the renderer or spring solver | | `@tanstack/charts/network/force` | `forceLayout`, built-in descriptors, named D3-compatible force factories, private working-clone context, settled node/link result, and lineage types | | `@tanstack/charts/network/sankey` | `sankeyDiagram`, shorthand and callable alignment types, responsive layout options, immutable node/link values, comparator contexts, and lineage types | | `@tanstack/charts/polar` | `pie`, `polar`, `focusGroupAngle`, `radialArc`, `radialBarRadius`, `radialBarAngle`, other radial marks, and radial/angle guides | diff --git a/packages/charts-core/docs/reference/motion.md b/packages/charts-core/docs/reference/motion.md index 0d83ddca..9316efea 100644 --- a/packages/charts-core/docs/reference/motion.md +++ b/packages/charts-core/docs/reference/motion.md @@ -24,29 +24,41 @@ function motion< >(options?: ChartMotionOptions): ChartRenderer interface ChartMotionOptions { - initial?: boolean + initial?: boolean | 'always' transition?: ChartMotionTransition respectReducedMotion?: boolean resize?: boolean } ``` -| Option | Default | Meaning | -| ---------------------- | --------------------------------------------- | -------------------------------------------------- | -| `initial` | `true` | Animate the first client render | -| `transition` | 1,100 ms tween with the default entrance ease | Renderer-wide fallback | -| `respectReducedMotion` | `true` | Snap when `prefers-reduced-motion: reduce` matches | -| `resize` | `false` | Animate updates caused only by a chart size change | - -Server-rendered SVG is adopted without replaying entrance motion. Keyed updates -start from painted geometry. An interrupted spring carries its sampled value and -velocity into the new target. A spring has no duration; it finishes when both -`restSpeed` and `restDelta` are satisfied, with a 10-second safety limit. +| Option | Default | Meaning | +| ---------------------- | --------------------------------------------- | ------------------------------------------------------------- | +| `initial` | `true` | Animate first client paint; `always` also replays adopted SVG | +| `transition` | 1,100 ms tween with the default entrance ease | Renderer-wide fallback | +| `respectReducedMotion` | `true` | Snap when `prefers-reduced-motion: reduce` matches | +| `resize` | `false` | Animate updates caused only by a chart size change | + +Server-rendered SVG is adopted without replaying entrance motion by default. +Set `initial: 'always'` when a hydrated chart should replay the same entrance +as a client-only mount. Keyed updates start from painted geometry. An +interrupted spring carries its sampled value and velocity into the new target. +A spring has no duration; it finishes when both `restSpeed` and `restDelta` are +satisfied, with a 10-second safety limit. + +Initial choreography follows geometry: Cartesian bars and paths grow from +their semantic baseline, radial lines and areas grow from the polar center, +and arcs sweep through their authored angle. Keyed removals stay painted +through their exit transition. Data-less `crosshair` marks use the same keyed focus-motion path. Rapid pointer or keyboard retargeting preserves the guide elements and incoming spring velocity; labels remain aligned to their moving rules. +The built-in HTML tooltip also consumes this renderer's transition. Entry, +movement, retargeting, and exit therefore use the same spring without copying +the transition into the chart definition. A static renderer keeps the tooltip +immediate and does not import the motion runtime. + Use the renderer-neutral host in vanilla applications: ```ts @@ -111,6 +123,8 @@ const definition = defineChart({ The cascade is renderer default, chart, mark, axis, specific guide, then the active focus-state transition. Same-type transitions inherit omitted fields. +Set `motion: false` at any definition scope to suppress inherited motion for +that scope. A more specific child can re-enable motion with its own definition. An authored `delay` replaces automatic entrance staggering for that target. Spring updates begin immediately even when a definition returns a delay, so a retarget cannot freeze incoming momentum. Spring enter and exit delays, and @@ -119,6 +133,58 @@ tween delays in every phase, are honored. All built-in marks accept `ChartMarkMotionOptions`. Nested polar marks also accept `motion`; their timing is merged below the parent `polar` mark. +| Scope | Motion input | +| ------------------------------ | ---------------------------------------------------- | +| Renderer fallback | `motion({ transition })` | +| Whole chart | `defineChart({ motion })` | +| Any built-in mark | The mark's `motion` option | +| Axis, including its grid lines | `x.axis.motion` or `y.axis.motion` | +| Tick rules | `axis.ticks.motion` | +| Tick labels | `axis.tickLabels.motion` | +| Axis label | `axis.label.motion` when `label` is an object | +| Crosshair or focus guide | The guide mark's `motion` option | +| HTML tooltip | Inherits chart motion; `tooltip.motion` overrides it | + +Grid lines use their axis policy because they are part of that axis's guide +system. `tooltip.motion: false` keeps the tooltip immediate even when chart +geometry animates. Legends and application-owned controls are not marks and do +not currently participate in the motion cascade. + +## Spreading timing utilities + +Use the isolated timing entry when the definition only needs motion policy: + +```ts +import { stagger } from '@tanstack/charts/motion/definition' + +const definition = defineChart({ + motion: { + path: 'morph', + ...stagger({ each: 35, by: 'series', roles: ['arc', 'bar'] }), + }, + marks, +}) +``` + +`stagger()` returns one context-aware `delay` field for direct object spread. +It uses `datumIndex` by default, can use `seriesIndex`, defaults to the `enter` +phase, and can filter by phase and semantic role. `offset` delays the first +target. Normal object-spread order controls precedence, so an explicit `delay` +written after `...stagger()` replaces it. + +```ts +interface ChartMotionStaggerOptions { + each: number + offset?: number + by?: 'datum' | 'series' + phase?: ChartMotionPhase | readonly ChartMotionPhase[] + roles?: ChartMotionRole | readonly ChartMotionRole[] +} +``` + +`stagger()` is also exported from `@tanstack/charts/motion`. The dedicated +`/motion/definition` entry excludes the SVG renderer and spring solver. + ## Timing types ```ts @@ -152,15 +218,18 @@ interface ChartRollingPathMotion { type ChartMotionPath = 'morph' | ChartRollingPathMotion -interface ChartMotionTiming { - delay?: number +interface ChartMotionTiming { + delay?: number | ((context: ChartMotionContext) => number | undefined) transition?: ChartMotionTransition path?: ChartMotionPath } type ChartMotionDefinition = - | ChartMotionTiming - | ((context: ChartMotionContext) => ChartMotionTiming | undefined) + | false + | ChartMotionTiming + | (( + context: ChartMotionContext, + ) => false | ChartMotionTiming | undefined) interface ChartMarkMotionOptions { motion?: ChartMotionDefinition diff --git a/packages/charts-core/package.json b/packages/charts-core/package.json index 725c6d46..c8110b76 100644 --- a/packages/charts-core/package.json +++ b/packages/charts-core/package.json @@ -154,6 +154,7 @@ "./link": "./src/link.ts", "./lit": "./src/lit.ts", "./motion": "./src/motion.ts", + "./motion/definition": "./src/motion-definition.ts", "./network/force": "./src/network-force.ts", "./network/sankey": "./src/network-sankey.ts", "./octane": "./src/octane.ts", @@ -404,6 +405,10 @@ "types": "./dist/motion.d.ts", "import": "./dist/motion.js" }, + "./motion/definition": { + "types": "./dist/motion-definition.d.ts", + "import": "./dist/motion-definition.js" + }, "./network/force": { "types": "./dist/network-force.d.ts", "import": "./dist/network-force.js" diff --git a/packages/charts-core/src/composite-motion-internal.ts b/packages/charts-core/src/composite-motion-internal.ts index fc223a3a..10b96e54 100644 --- a/packages/charts-core/src/composite-motion-internal.ts +++ b/packages/charts-core/src/composite-motion-internal.ts @@ -5,10 +5,12 @@ import type { ChartMotionTransition, } from './types' +type ResolvedCompositeMotion = false | ChartMotionTiming + export function resolveCompositeMotion( definition: ChartMotionDefinition | undefined, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): ResolvedCompositeMotion | undefined { return typeof definition === 'function' ? definition(context) : definition } @@ -16,7 +18,7 @@ export function resolveCompositeChildMotion( parent: ChartMotionDefinition | undefined, children: ReadonlyMap>, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): ResolvedCompositeMotion | undefined { let childId: string | undefined for (const candidate of children.keys()) { if ( @@ -35,12 +37,13 @@ export function resolveCompositeChildMotion( ) } -export function mergeCompositeMotion( - parent: ChartMotionTiming | undefined, - child: ChartMotionTiming | undefined, -): ChartMotionTiming | undefined { - if (!parent) return child - if (!child) return parent +export function mergeCompositeMotion( + parent: ResolvedCompositeMotion | undefined, + child: ResolvedCompositeMotion | undefined, +): ResolvedCompositeMotion | undefined { + if (child === false) return false + if (child === undefined) return parent + if (parent === false || parent === undefined) return child const path = child.path ?? parent.path return { delay: child.delay ?? parent.delay, diff --git a/packages/charts-core/src/dom-types.ts b/packages/charts-core/src/dom-types.ts index 1a492009..e511e3c3 100644 --- a/packages/charts-core/src/dom-types.ts +++ b/packages/charts-core/src/dom-types.ts @@ -5,7 +5,6 @@ import type { ChartFocusState, ChartHostControl, ChartHostControlExtensionToken, - ChartMotionTransition, ChartPoint, ChartScene, ChartSvgRenderer, @@ -172,7 +171,6 @@ export interface ChartTooltipExtensionContext< > { container: HTMLElement dismiss: () => void - motion: () => ChartMotionTransition | undefined bodyChange: () => | (( target: ChartTooltipBodyTarget | null, diff --git a/packages/charts-core/src/exports.test.ts b/packages/charts-core/src/exports.test.ts index 25ed4202..6fbdbb2c 100644 --- a/packages/charts-core/src/exports.test.ts +++ b/packages/charts-core/src/exports.test.ts @@ -90,6 +90,24 @@ describe('public package exports', () => { expect(portalModule.portal.id).toBe('portal') }) + it('keeps motion and timing utilities on the optional motion subpath', async () => { + const [root, universal, motionModule, definitionModule] = await Promise.all( + [ + import('@tanstack/charts'), + import('@tanstack/charts/universal'), + import('@tanstack/charts/motion'), + import('@tanstack/charts/motion/definition'), + ], + ) + + for (const name of ['motion', 'stagger']) { + expect(root).not.toHaveProperty(name) + expect(universal).not.toHaveProperty(name) + expect(motionModule).toHaveProperty(name) + } + expect(Object.keys(definitionModule)).toEqual(['stagger']) + }) + it('keeps focus guide marks on their exact subpath', async () => { const [root, universal, guide] = await Promise.all([ import('@tanstack/charts'), diff --git a/packages/charts-core/src/mark-composite.test.ts b/packages/charts-core/src/mark-composite.test.ts index ee8167e7..801474a0 100644 --- a/packages/charts-core/src/mark-composite.test.ts +++ b/packages/charts-core/src/mark-composite.test.ts @@ -163,6 +163,57 @@ describe('compositeMark', () => { }) }) + it('lets child motion disable or re-enable its composite parent', () => { + const context: ChartMotionContext = { + phase: 'enter', + role: 'dot', + key: 'compound:dots:a', + markId: 'compound:dots', + seriesKey: 'compound:dots', + seriesIndex: 0, + datumIndex: 0, + datumCount: 2, + datum: rows[0], + point: undefined, + } + const disabledChild = compositeMark( + [ + dot(rows, { + id: 'dots', + x: 'category', + y: 'value', + motion: false, + }), + ], + { + id: 'compound', + motion: { transition: { type: 'spring', damping: 18 } }, + }, + ).initialize({ markIndex: 0 }) + const enabledChild = compositeMark( + [ + dot(rows, { + id: 'dots', + x: 'category', + y: 'value', + motion: { delay: 20 }, + }), + ], + { id: 'compound', motion: false }, + ).initialize({ markIndex: 0 }) + + expect( + typeof disabledChild.motion === 'function' + ? disabledChild.motion(context) + : disabledChild.motion, + ).toBe(false) + expect( + typeof enabledChild.motion === 'function' + ? enabledChild.motion(context) + : enabledChild.motion, + ).toEqual({ delay: 20 }) + }) + it('rejects duplicate ids and nested resolved layouts', () => { const duplicate = compositeMark([ dot(rows, { id: 'same', x: 'category', y: 'value' }), diff --git a/packages/charts-core/src/motion-definition.test.ts b/packages/charts-core/src/motion-definition.test.ts new file mode 100644 index 00000000..990a9030 --- /dev/null +++ b/packages/charts-core/src/motion-definition.test.ts @@ -0,0 +1,75 @@ +import { describe, expect, it } from 'vitest' +import { stagger } from './motion-definition' +import type { ChartMotionContext, ChartMotionTiming } from './types' + +const context: ChartMotionContext<{ id: string }> = { + phase: 'enter', + role: 'bar', + key: 'bar:2', + markId: 'bars', + seriesKey: 'desktop', + seriesIndex: 1, + datumIndex: 2, + datumCount: 4, + datum: { id: 'c' }, + point: undefined, +} + +describe('motion definition utilities', () => { + it('staggers enter timing by datum index by default', () => { + const timing = stagger({ each: 24 }) + + expect(resolveDelay(timing, context)).toBe(48) + expect( + resolveDelay(timing, { ...context, phase: 'update' }), + ).toBeUndefined() + }) + + it('can stagger selected phases and roles by series index', () => { + const timing = stagger({ + each: 30, + offset: 10, + by: 'series', + phase: ['enter', 'exit'], + roles: ['bar', 'arc'], + }) + + expect(resolveDelay(timing, context)).toBe(40) + expect(resolveDelay(timing, { ...context, phase: 'exit' })).toBe(40) + expect(resolveDelay(timing, { ...context, role: 'line' })).toBeUndefined() + }) + + it('clamps invalid delays instead of producing negative timing', () => { + const timing = stagger({ each: -20, offset: Number.NaN }) + + expect(resolveDelay(timing, context)).toBe(0) + }) + + it('composes with timing fields through ordinary object spread', () => { + const timing = { + transition: { type: 'spring' as const, stiffness: 170 }, + path: 'morph' as const, + delay: 5, + ...stagger<{ id: string }>({ each: 20 }), + } + + expect(timing).toMatchObject({ + transition: { type: 'spring', stiffness: 170 }, + path: 'morph', + }) + expect(resolveDelay(timing, context)).toBe(40) + + const explicitDelay = { + ...stagger({ each: 20 }), + delay: 60, + } + expect(explicitDelay.delay).toBe(60) + }) +}) + +function resolveDelay( + timing: Pick, 'delay'>, + value: ChartMotionContext, +) { + return typeof timing.delay === 'function' ? timing.delay(value) : timing.delay +} diff --git a/packages/charts-core/src/motion-definition.ts b/packages/charts-core/src/motion-definition.ts new file mode 100644 index 00000000..87c5d84b --- /dev/null +++ b/packages/charts-core/src/motion-definition.ts @@ -0,0 +1,50 @@ +import type { + ChartMotionContext, + ChartMotionPhase, + ChartMotionRole, + ChartMotionTiming, +} from './types' + +export interface ChartMotionStaggerOptions { + /** Index used to calculate the delay. Defaults to `datum`. */ + by?: 'datum' | 'series' + /** Milliseconds between adjacent entries. */ + each: number + /** Fixed milliseconds before the first entry. Defaults to zero. */ + offset?: number + /** Restricts staggering to one or more lifecycle phases. Defaults to `enter`. */ + phase?: ChartMotionPhase | readonly ChartMotionPhase[] + /** Restricts staggering to one or more semantic roles. */ + roles?: ChartMotionRole | readonly ChartMotionRole[] +} + +/** Creates a delay timing field that composes through object spread. */ +export function stagger( + options: ChartMotionStaggerOptions, +): Pick, 'delay'> { + const phases = values(options.phase ?? 'enter') + const roles = options.roles === undefined ? undefined : values(options.roles) + const each = nonNegative(options.each) + const offset = nonNegative(options.offset ?? 0) + return { + delay(context: ChartMotionContext) { + if ( + !phases.includes(context.phase) || + (roles !== undefined && !roles.includes(context.role)) + ) { + return undefined + } + const index = + options.by === 'series' ? context.seriesIndex : context.datumIndex + return offset + each * Math.max(0, index) + }, + } +} + +function values(value: TValue | readonly TValue[]): readonly TValue[] { + return Array.isArray(value) ? value : [value as TValue] +} + +function nonNegative(value: number) { + return Number.isFinite(value) ? Math.max(0, value) : 0 +} diff --git a/packages/charts-core/src/motion.test.ts b/packages/charts-core/src/motion.test.ts index 863fed40..dbc2af25 100644 --- a/packages/charts-core/src/motion.test.ts +++ b/packages/charts-core/src/motion.test.ts @@ -8,8 +8,8 @@ import { dot } from './dot' import { whenFocused } from './focus-mark' import { lineY } from './line' import { createMark } from './mark' -import { motion } from './motion' -import { polar, radialBarRadius } from './polar' +import { motion, stagger } from './motion' +import { polar, radialArea, radialBarRadius } from './polar' import { mountChartRenderer } from './renderer' import { createChartScene, defineChart } from './scene' import { chartSceneSource } from './scene-source' @@ -164,6 +164,44 @@ describe('SVG motion', () => { request.mockRestore() }) + it('replays initial motion on adopted SVG only when explicitly requested', () => { + const scene = createChartScene( + defineChart({ + marks: [barY(rows, { x: 'category', y: 'value', key: 'id' })], + x: { scale: scaleBand().domain(['A', 'B']) }, + y: { scale: scaleLinear().domain([0, 100]) }, + guides: false, + }), + { width: 300, height: 200 }, + ) + const container = document.createElement('div') + container.innerHTML = renderChartSvg(scene, { ariaLabel: 'Adopted chart' }) + const frames = installFrames() + const surface = motion({ + initial: 'always', + transition: { type: 'tween', duration: 100, easing: 'linear' }, + }).mount(container, () => {}) + + surface.render(scene, { ariaLabel: 'Adopted chart' }) + + expect(frames.request).toHaveBeenCalledOnce() + expect(container.querySelector('svg')?.dataset.tsMotionState).toBe( + 'running', + ) + expect( + Number( + container + .querySelector('g.ts-chart__bar-y rect') + ?.getAttribute('height'), + ), + ).toBe(0) + + frames.run(0) + frames.run(100) + surface.destroy() + frames.restore() + }) + it('is the sole animation owner when the definition also enables animate', () => { const makeDefinition = (value: number) => defineChart({ @@ -1010,17 +1048,11 @@ describe('SVG motion', () => { }) it('grows bars from their semantic baseline with bounded datum timing', () => { - const timing = vi.fn((context) => - context.datum?.id === 'b' - ? { - delay: 40, - transition: { type: 'tween' as const, duration: 50 }, - } - : undefined, - ) const scene = createChartScene( defineChart({ - motion: timing, + motion: { + ...stagger<(typeof rows)[number]>({ each: 40, roles: 'bar' }), + }, marks: [ barY(rows, { x: 'category', @@ -1049,21 +1081,16 @@ describe('SVG motion', () => { expect(rectangles).toHaveLength(2) expect(Number(rectangles[0]?.getAttribute('y'))).toBeCloseTo(baseline) expect(rectangles[0]?.getAttribute('height')).toBe('0') - expect(timing.mock.calls.map(([context]) => context.datum?.id)).toEqual([ - 'a', - 'b', - ]) - frames.run(0) frames.run(50) expect(Number(rectangles[0]?.getAttribute('height'))).toBeCloseTo( scene.chart.height * 0.4 * 0.5, ) expect(Number(rectangles[1]?.getAttribute('height'))).toBeCloseTo( - scene.chart.height * 0.8 * 0.2, + scene.chart.height * 0.8 * 0.1, ) - frames.run(120) + frames.run(140) expect(rectangles[0]?.hasAttribute('data-ts-motion-role')).toBe(false) expect( container.querySelector('svg')?.getAttribute('data-ts-motion-state'), @@ -1073,6 +1100,123 @@ describe('SVG motion', () => { frames.restore() }) + it('lets a mark opt out of inherited chart motion', () => { + const animated = [{ id: 'animated', category: 'A', value: 40 }] + const immediate = [{ id: 'immediate', category: 'B', value: 80 }] + const scene = createChartScene( + defineChart({ + motion: { + transition: { type: 'tween', duration: 100, easing: 'linear' }, + }, + marks: [ + barY(animated, { + id: 'animated-bars', + x: 'category', + y: 'value', + key: 'id', + }), + barY(immediate, { + id: 'immediate-bars', + x: 'category', + y: 'value', + key: 'id', + motion: false, + }), + ], + x: { scale: scaleBand().domain(['A', 'B']) }, + y: { scale: scaleLinear().domain([0, 100]) }, + guides: false, + }), + { width: 300, height: 200 }, + ) + const container = document.createElement('div') + const frames = installFrames() + const surface = motion().mount(container, () => {}) + surface.render(scene, { ariaLabel: 'Mixed motion bars' }) + const animatedPoint = scene.points.find( + (point) => point.datum.id === 'animated', + ) + const immediatePoint = scene.points.find( + (point) => point.datum.id === 'immediate', + ) + const animatedRectangle = container.querySelector( + `[data-ts-key="${animatedPoint?.key}"]`, + ) + const immediateRectangle = container.querySelector( + `[data-ts-key="${immediatePoint?.key}"]`, + ) + + expect(animatedRectangle?.getAttribute('height')).toBe('0') + expect(animatedRectangle?.dataset.tsMotionRole).toBe('bar') + expect(Number(immediateRectangle?.getAttribute('y'))).toBeCloseTo( + immediatePoint?.y ?? Number.NaN, + ) + expect(immediateRectangle?.hasAttribute('data-ts-motion-role')).toBe(false) + expect(frames.request).toHaveBeenCalledOnce() + + frames.run(0) + frames.run(100) + surface.destroy() + frames.restore() + }) + + it('lets guide children re-enable motion below an axis opt-out', () => { + const definition = defineChart({ + motion: { + transition: { type: 'tween', duration: 100, easing: 'linear' }, + }, + marks: [lineY([0, 1])], + margin: 0, + x: { + scale: scaleLinear().domain([0, 1]), + grid: true, + axis: { + motion: false, + ticks: { + values: [0, 1], + motion: { + transition: { type: 'tween', duration: 100, easing: 'linear' }, + }, + }, + tickLabels: { motion: false }, + label: { text: 'Period' }, + }, + }, + y: { scale: scaleLinear().domain([0, 1]), axis: false }, + }) + const first = createChartScene(definition, { width: 300, height: 200 }) + const next = createChartScene(definition, { width: 400, height: 200 }) + const container = document.createElement('div') + const surface = motion({ initial: false, resize: true }).mount( + container, + () => {}, + ) + surface.render(first, { ariaLabel: 'Guide motion scopes' }) + const frames = installManagedFrames() + surface.render(next, { ariaLabel: 'Guide motion scopes' }) + + expect( + [...container.querySelectorAll('[data-ts-key^="x-tick-rule:"]')].some( + (element) => element.getAttribute('data-ts-motion-role') === 'tick', + ), + ).toBe(true) + for (const selector of [ + '[data-ts-key="x-axis"]', + '[data-ts-key^="x-grid:"]', + '[data-ts-key^="x-tick-label:"]', + '[data-ts-key="x-label"]', + ]) { + expect( + container.querySelector(selector)?.hasAttribute('data-ts-motion-role'), + ).toBe(false) + } + + frames.run(0) + frames.run(100) + surface.destroy() + frames.restore() + }) + it('cascades definition motion through marks, axes, ticks, and labels', () => { const chartRoles: string[] = [] const markRoles: string[] = [] @@ -2230,6 +2374,17 @@ describe('SVG motion', () => { marks: [ barY(rows, { x: 'category', y: 'value', key: 'id' }), lineY(rows, { x: 'category', y: 'value', key: 'id' }), + polar({ + angle: { scale: scaleBand().domain(['A']) }, + radius: { scale: scaleLinear().domain([0, 100]) }, + marks: [ + radialBarRadius(rows, { + angle: 'category', + radius: 'value', + key: 'id', + }), + ], + }), ], x: { scale: scaleBand().domain(['A', 'B']) }, y: { scale: scaleLinear().domain([0, 100]) }, @@ -2245,7 +2400,7 @@ describe('SVG motion', () => { const surface = renderer.mount(container, () => {}) surface.render(scene, { ariaLabel: 'Composed chart' }) - expect(container.querySelectorAll('[data-ts-motion-role]').length).toBe(3) + expect(container.querySelectorAll('[data-ts-motion-role]').length).toBe(4) expect( container.querySelector('clipPath[id^="ts-chart-motion-clip"]'), ).not.toBeNull() @@ -2722,10 +2877,15 @@ describe('SVG motion', () => { frames.restore() }) - it('reveals a complete line group through a chart-space clip', () => { + it('grows Cartesian line and area groups from the semantic baseline', () => { const scene = createChartScene( defineChart({ marks: [ + areaY(rows, { + x: 'category', + y: 'value', + key: 'id', + }), lineY(rows, { x: 'category', y: 'value', @@ -2747,21 +2907,65 @@ describe('SVG motion', () => { const surface = renderer.mount(container, () => {}) surface.render(scene, { ariaLabel: 'Line' }) const line = container.querySelector('g.ts-chart__line') - const clipRectangle = container.querySelector( - 'clipPath[id^="ts-chart-motion-clip"] rect', + const area = container.querySelector('g.ts-chart__area') + const baseline = scene.scales.y?.map(0) ?? Number.NaN + + expect(matrixTransform(line)).toEqual([1, 0, 0, 0, 0, baseline]) + expect(matrixTransform(area)).toEqual([1, 0, 0, 0, 0, baseline]) + frames.run(0) + frames.run(50) + expect(matrixTransform(line)).toEqual([1, 0, 0, 0.5, 0, baseline / 2]) + expect(matrixTransform(area)).toEqual([1, 0, 0, 0.5, 0, baseline / 2]) + frames.run(100) + expect(line?.hasAttribute('transform')).toBe(false) + expect(area?.hasAttribute('transform')).toBe(false) + + surface.destroy() + frames.restore() + }) + + it('sweeps arcs around their polar angle on initial render', () => { + const scene = createChartScene( + defineChart({ + marks: [ + polar({ + angle: { scale: scaleBand().domain(['A']) }, + radius: { scale: scaleLinear().domain([0, 100]) }, + marks: [ + radialBarRadius(rows, { + angle: 'category', + radius: 'value', + key: 'id', + }), + ], + }), + ], + guides: false, + margin: 0, + }), + { width: 200, height: 200 }, + ) + const container = document.createElement('div') + const renderer = motion({ + transition: { type: 'tween', duration: 100, easing: 'linear' }, + }) + const frames = installFrames() + const surface = renderer.mount(container, () => {}) + surface.render(scene, { ariaLabel: 'Radial bars' }) + const arcs = container.querySelector('g.ts-chart__arc') + const clipPath = container.querySelector( + 'clipPath[id^="ts-chart-motion-clip"] path', ) - expect(line?.getAttribute('clip-path')).toMatch( + expect(arcs?.getAttribute('clip-path')).toMatch( /^url\(#ts-chart-motion-clip-/, ) - expect(clipRectangle?.getAttribute('width')).toBe('0') + expect(clipPath?.getAttribute('d')).toBe('M0 0Z') frames.run(0) frames.run(50) - expect(Number(clipRectangle?.getAttribute('width'))).toBeCloseTo( - scene.chart.width / 2, - ) + expect(clipPath?.getAttribute('d')).not.toBe('M0 0Z') frames.run(100) - expect(line?.hasAttribute('clip-path')).toBe(false) + expect(arcs?.hasAttribute('clip-path')).toBe(false) expect( container.querySelector('clipPath[id^="ts-chart-motion-clip"]'), ).toBeNull() @@ -2769,6 +2973,107 @@ describe('SVG motion', () => { surface.destroy() frames.restore() }) + + it('keeps removed arcs painted through their exit transition', () => { + const radialRows = [ + { id: 'a', category: 'A', value: 40 }, + { id: 'b', category: 'B', value: 80 }, + ] + const makeScene = (data: typeof radialRows) => + createChartScene( + defineChart({ + marks: [ + polar({ + angle: { scale: scaleBand().domain(['A', 'B']) }, + radius: { scale: scaleLinear().domain([0, 100]) }, + marks: [ + radialBarRadius(data, { + angle: 'category', + radius: 'value', + key: 'id', + }), + ], + }), + ], + guides: false, + margin: 0, + }), + { width: 200, height: 200 }, + ) + const container = document.createElement('div') + const surface = motion({ + initial: false, + transition: { type: 'tween', duration: 100, easing: 'linear' }, + }).mount(container, () => {}) + surface.render(makeScene(radialRows), { ariaLabel: 'Radial bars' }) + const frames = installFrames() + + surface.render(makeScene(radialRows.slice(0, 1)), { + ariaLabel: 'Radial bars', + }) + + const arcs = () => [ + ...container.querySelectorAll('g.ts-chart__arc > path'), + ] + expect(arcs()).toHaveLength(2) + frames.run(0) + frames.run(50) + expect(arcs()).toHaveLength(2) + expect(arcs().some((arc) => arc.getAttribute('opacity') === '0.5')).toBe( + true, + ) + frames.run(100) + expect(arcs()).toHaveLength(1) + + surface.destroy() + frames.restore() + }) + + it('grows radial path groups out from the polar center', () => { + const radialRows = [ + { angle: 0, value: 40 }, + { angle: 1, value: 80 }, + { angle: 2, value: 60 }, + { angle: 3, value: 70 }, + ] + const scene = createChartScene( + defineChart({ + marks: [ + polar({ + angle: { scale: scaleLinear().domain([0, 3]) }, + radius: { scale: scaleLinear().domain([0, 100]) }, + marks: [ + radialArea(radialRows, { + angle: 'angle', + radius: 'value', + }), + ], + }), + ], + guides: false, + margin: 0, + }), + { width: 200, height: 200 }, + ) + const container = document.createElement('div') + const renderer = motion({ + transition: { type: 'tween', duration: 100, easing: 'linear' }, + }) + const frames = installFrames() + const surface = renderer.mount(container, () => {}) + surface.render(scene, { ariaLabel: 'Radar area' }) + const area = container.querySelector('g.ts-chart__radial-area') + + expect(area?.getAttribute('transform')).toBe('scale(0)') + frames.run(0) + frames.run(50) + expect(area?.getAttribute('transform')).toBe('scale(0.5)') + frames.run(100) + expect(area?.hasAttribute('transform')).toBe(false) + + surface.destroy() + frames.restore() + }) }) function installFrames() { diff --git a/packages/charts-core/src/motion.ts b/packages/charts-core/src/motion.ts index 6c28e0bd..c55c2eaa 100644 --- a/packages/charts-core/src/motion.ts +++ b/packages/charts-core/src/motion.ts @@ -15,6 +15,12 @@ import { renderChartSvgWithResources } from './svg-resources' import { svgClientToScene } from './svg-coordinates' import { valueKey } from './scales' import { resolveRollingPathPlan } from './motion-path' +import { + chartRendererMotion, + type ChartRendererMotionCapability, + type ChartTooltipMotionController, + type ChartTooltipMotionSnapshot, +} from './renderer-motion-internal' import type { RollingPathPlan, RollingPathSnapshot, @@ -70,10 +76,12 @@ export type { ChartMotionTransition, ChartMotionTweenTransition, } from './types' +export { stagger } from './motion-definition' +export type { ChartMotionStaggerOptions } from './motion-definition' export interface ChartMotionOptions { - /** Animate the first client render. Server-rendered SVG is always adopted. */ - initial?: boolean + /** Animate the first client render. Use `always` to replay adopted server-rendered SVG. */ + initial?: boolean | 'always' /** Default transition. Definition-local motion can refine or replace it. */ transition?: ChartMotionTransition /** Snap when the user requests reduced motion. Defaults to true. */ @@ -105,13 +113,14 @@ interface ChartSvgMotionFragmentContext { interface ChartSvgMotionDriver { readonly id: string - readonly initial: boolean + readonly initial: boolean | 'always' readonly resize: boolean readonly respectReducedMotion: boolean animateSvg: (context: ChartSvgMotionContext) => () => void animateSvgFragment: ( context: ChartSvgMotionFragmentContext, ) => () => void + createTooltip: ChartRendererMotionCapability['createTooltip'] } interface MotionValueState { @@ -127,6 +136,7 @@ interface MotionValueBinding { } interface MotionTrack { + disabled: boolean delay: number transition: ResolvedTransition values: MotionValueBinding[] @@ -177,6 +187,7 @@ type SceneMotionSource = readonly [ ] type ResolvedTiming = Pick & { + disabled: boolean path: ChartMotionPath } type TimingResolver = (context: ChartMotionContext) => ResolvedTiming @@ -226,6 +237,8 @@ function createSvgMotionRuntime( return { id: 'svg-motion', ...policy, + createTooltip: (context) => + createTooltipMotionController(options, policy, context), animateSvg(context) { let runtime = runtimes.get(context.container) if (!runtime) { @@ -266,7 +279,9 @@ function createSvgMotionRuntime( ) const tracks = [ ...createBarTracks(root, context.scene, points, timing, runtime), - ...createLineTracks(root, context.scene, timing), + ...createCartesianPathTracks(root, context.scene, timing), + ...createRadialPathTracks(root, context.scene, timing), + ...createArcTracks(root, context.scene, timing), ] const presentation = createPresentationTracks( root, @@ -323,6 +338,414 @@ function createSvgMotionRuntime( } } +function createTooltipMotionController( + options: ResolvedMotionOptions, + policy: Pick, + context: { + container: HTMLElement + transition: () => false | ChartMotionTransition | undefined + }, +): ChartTooltipMotionController { + const view = context.container.ownerDocument.defaultView + let presenceAnimation: Animation | undefined + let presencePhase: 'enter' | 'exit' | undefined + let movementAnimation: Animation | undefined + let movementFrame: number | undefined + let springMovement: TooltipSpringMovement | undefined + let hideGeneration = 0 + + const prefersReducedMotion = () => + policy.respectReducedMotion && + Boolean(view?.matchMedia?.('(prefers-reduced-motion: reduce)').matches) + + const transition = (override: false | ChartMotionTransition | undefined) => { + if (override === false || prefersReducedMotion()) return undefined + const inherited = override ?? context.transition() + if (inherited === false) return undefined + return resolveTransition( + inherited, + defaultDuration, + undefined, + options.transition, + ) + } + + const now = () => view?.performance.now() ?? Date.now() + + const stopMovement = (element: HTMLElement | undefined) => { + if (movementFrame !== undefined) { + view?.cancelAnimationFrame?.(movementFrame) + movementFrame = undefined + } + movementAnimation?.cancel() + movementAnimation = undefined + springMovement = undefined + element?.style.removeProperty('translate') + } + + const sampleSpringMovement = ( + timestamp: number, + element: HTMLElement, + ): TooltipMovementSnapshot => { + const movement = springMovement + if (!movement) return emptyTooltipMovement + const elapsed = Math.max(0, timestamp - movement.startedAt) + const x = movement.spring.sample(elapsed, { + from: movement.fromX, + to: 0, + velocity: movement.velocityX, + }) + const y = movement.spring.sample(elapsed, { + from: movement.fromY, + to: 0, + velocity: movement.velocityY, + }) + const snapshot = { + x: x.value, + y: y.value, + velocityX: x.velocity, + velocityY: y.velocity, + } + element.style.translate = `${snapshot.x}px ${snapshot.y}px` + if (x.done && y.done) { + springMovement = undefined + element.style.removeProperty('translate') + return emptyTooltipMovement + } + return snapshot + } + + const sampleSpringFrame = (timestamp: number, element: HTMLElement) => { + movementFrame = undefined + sampleSpringMovement(timestamp, element) + if (!springMovement) return + movementFrame = view?.requestAnimationFrame((nextTimestamp) => { + sampleSpringFrame(nextTimestamp, element) + }) + } + + const captureMovement = (element: HTMLElement) => { + let snapshot: TooltipMovementSnapshot + if (springMovement) { + snapshot = sampleSpringMovement(now(), element) + } else if (movementAnimation) { + snapshot = { + ...readTooltipTranslate(element), + velocityX: 0, + velocityY: 0, + } + } else { + snapshot = emptyTooltipMovement + } + stopMovement(element) + return snapshot + } + + const animateMovement = ( + element: HTMLElement, + resolved: ResolvedTransition, + movement: TooltipMovementSnapshot, + ) => { + const { x, y, velocityX, velocityY } = movement + if (Math.abs(x) < 0.5 && Math.abs(y) < 0.5) { + element.style.removeProperty('translate') + return + } + if (resolved.type === 'tween') { + element.style.translate = `${x}px ${y}px` + if (typeof element.animate !== 'function') { + element.style.removeProperty('translate') + return + } + const sampled = tooltipMotionSamples(resolved) + const animation = element.animate( + sampled.values.map((progress, index) => ({ + offset: sampled.offsets[index], + translate: `${interpolate(x, 0, progress)}px ${interpolate(y, 0, progress)}px`, + })), + { + duration: sampled.duration, + easing: 'linear', + fill: 'both', + }, + ) + movementAnimation = animation + animation.onfinish = () => { + if (movementAnimation !== animation) return + element.style.removeProperty('translate') + movementAnimation = undefined + } + return + } + if (!view?.requestAnimationFrame) { + element.style.removeProperty('translate') + return + } + springMovement = { + spring: resolved.spring, + startedAt: now(), + fromX: x, + fromY: y, + velocityX, + velocityY, + } + element.style.translate = `${x}px ${y}px` + movementFrame = view.requestAnimationFrame((timestamp) => { + sampleSpringFrame(timestamp, element) + }) + } + + const animatePresence = ( + element: HTMLElement, + resolved: ResolvedTransition, + from: TooltipPresenceState, + to: TooltipPresenceState, + ) => { + if (typeof element.animate !== 'function') return undefined + const sampled = tooltipMotionSamples(resolved) + return element.animate( + sampled.values.map((progress, index) => ({ + offset: sampled.offsets[index], + opacity: interpolate(from.opacity, to.opacity, progress), + transform: `scale(${interpolate(from.scale, to.scale, progress)})`, + })), + { + duration: sampled.duration, + easing: 'linear', + fill: 'both', + }, + ) + } + + return { + beforePaint(element) { + const wasHidden = element.hasAttribute('hidden') + const resumingExit = presencePhase === 'exit' + const previousLeft = finiteStyleNumber(element.style.left) + const previousTop = finiteStyleNumber(element.style.top) + const movement = captureMovement(element) + const presence = resumingExit + ? readTooltipPresenceState(element) + : undefined + if (resumingExit) { + presenceAnimation?.cancel() + presenceAnimation = undefined + presencePhase = undefined + } + hideGeneration += 1 + return { + wasHidden, + showPresence: wasHidden || resumingExit, + previousLeft, + previousTop, + movementX: movement.x, + movementY: movement.y, + velocityX: movement.velocityX, + velocityY: movement.velocityY, + presence, + } + }, + afterPaint(element, snapshot, override) { + const resolved = transition(override) + if (!resolved) { + stopMovement(element) + presenceAnimation?.cancel() + presenceAnimation = undefined + presencePhase = undefined + element.style.removeProperty('opacity') + element.style.removeProperty('transform') + return + } + const nextLeft = finiteStyleNumber(element.style.left) + const nextTop = finiteStyleNumber(element.style.top) + animateMovement(element, resolved, { + x: + snapshot.wasHidden || + snapshot.previousLeft === undefined || + nextLeft === undefined + ? 0 + : snapshot.previousLeft + snapshot.movementX - nextLeft, + y: + snapshot.wasHidden || + snapshot.previousTop === undefined || + nextTop === undefined + ? 0 + : snapshot.previousTop + snapshot.movementY - nextTop, + velocityX: snapshot.velocityX, + velocityY: snapshot.velocityY, + }) + if (!snapshot.showPresence) return + presenceAnimation?.cancel() + presencePhase = 'enter' + const animation = animatePresence( + element, + resolved, + snapshot.presence ?? { opacity: 0, scale: 0.96 }, + { opacity: 1, scale: 1 }, + ) + presenceAnimation = animation + if (!animation) { + presencePhase = undefined + element.style.removeProperty('opacity') + element.style.removeProperty('transform') + return + } + animation.onfinish = () => { + if (presenceAnimation !== animation) return + element.style.removeProperty('opacity') + element.style.removeProperty('transform') + presenceAnimation = undefined + presencePhase = undefined + } + }, + hide(element, override, complete) { + const resolved = transition(override) + if (!resolved) { + stopMovement(element) + presenceAnimation?.cancel() + presenceAnimation = undefined + presencePhase = undefined + element.style.removeProperty('opacity') + element.style.removeProperty('transform') + return false + } + const generation = ++hideGeneration + const from = readTooltipPresenceState(element) + presenceAnimation?.cancel() + presencePhase = 'exit' + const animation = animatePresence(element, resolved, from, { + opacity: 0, + scale: 0.96, + }) + presenceAnimation = animation + if (!animation) { + presencePhase = undefined + stopMovement(element) + return false + } + animation.onfinish = () => { + if (generation !== hideGeneration) return + complete() + element.style.removeProperty('opacity') + element.style.removeProperty('transform') + presenceAnimation = undefined + presencePhase = undefined + stopMovement(element) + } + return true + }, + destroy(element) { + hideGeneration += 1 + presenceAnimation?.cancel() + presenceAnimation = undefined + presencePhase = undefined + stopMovement(element) + element?.style.removeProperty('opacity') + element?.style.removeProperty('transform') + }, + } +} + +interface TooltipPresenceState { + opacity: number + scale: number +} + +interface TooltipMovementSnapshot { + x: number + y: number + velocityX: number + velocityY: number +} + +interface TooltipSpringMovement { + spring: ChartSpring + startedAt: number + fromX: number + fromY: number + velocityX: number + velocityY: number +} + +const emptyTooltipMovement: TooltipMovementSnapshot = { + x: 0, + y: 0, + velocityX: 0, + velocityY: 0, +} + +function tooltipMotionSamples(transition: ResolvedTransition) { + if (transition.type === 'tween') { + const offsets = Array.from({ length: 31 }, (_, index) => index / 30) + return { + duration: transition.duration, + offsets, + values: offsets.map(transition.easing), + } + } + const offsets: number[] = [] + const values: number[] = [] + let duration = 0 + for (let elapsed = 0; elapsed <= 2_000; elapsed += 16) { + const sample = transition.spring.sample(elapsed) + duration = elapsed + offsets.push(elapsed) + values.push(sample.value) + if (sample.done && elapsed > 0) break + } + if (duration === 0) { + return { duration: 0, offsets: [0, 1], values: [0, 1] } + } + offsets[offsets.length - 1] = duration + values[values.length - 1] = 1 + return { + duration, + offsets: offsets.map((elapsed) => elapsed / duration), + values, + } +} + +function interpolate(from: number, to: number, progress: number) { + return from + (to - from) * progress +} + +function finiteStyleNumber(value: string) { + const number = Number.parseFloat(value) + return Number.isFinite(number) ? number : undefined +} + +function readTooltipPresenceState(element: HTMLElement): TooltipPresenceState { + const style = element.ownerDocument.defaultView?.getComputedStyle(element) + return { + opacity: finiteStyleNumber(style?.opacity ?? '') ?? 1, + scale: readTransformScale(style?.transform ?? ''), + } +} + +function readTooltipTranslate(element: HTMLElement) { + const style = element.ownerDocument.defaultView?.getComputedStyle(element) + const value = style?.translate || element.style.translate + if (!value || value === 'none') return { x: 0, y: 0 } + const values = value.match(/-?\d*\.?\d+(?:e[-+]?\d+)?/gi)?.map(Number) + return { + x: values?.[0] ?? 0, + y: values?.[1] ?? 0, + } +} + +function readTransformScale(value: string) { + if (!value || value === 'none') return 1 + const values = value.match(/-?\d*\.?\d+(?:e[-+]?\d+)?/gi)?.map(Number) + if (!values?.length) return 1 + if (value.startsWith('matrix3d(')) { + return Math.hypot(values[0] ?? 1, values[1] ?? 0, values[2] ?? 0) + } + if (value.startsWith('matrix(')) { + return Math.hypot(values[0] ?? 1, values[1] ?? 0) + } + return value.startsWith('scale(') ? (values[0] ?? 1) : 1 +} + function parseSvgFragment(current: SVGElement, markup: string) { const template = current.ownerDocument.createElement('template') template.innerHTML = `${markup}` @@ -352,8 +775,11 @@ function createMotionSvgChartRenderer< TYValue > = renderChartSvgWithResources, ): ChartRenderer { - const renderer: ChartRenderer = { + const renderer: ChartRenderer & { + [chartRendererMotion]: ChartRendererMotionCapability + } = { id: `svg:${motion.id}`, + [chartRendererMotion]: { createTooltip: motion.createTooltip }, prerender: renderSvg, mount(container) { const adoptedRoot = @@ -504,7 +930,7 @@ function createMotionSvgChartRenderer< const animate = !reduced && (initial - ? motion.initial && !adoptedRoot + ? motion.initial && (!adoptedRoot || motion.initial === 'always') : motion.resize || !resized) const viewportMoved = Boolean( previousScene && @@ -837,17 +1263,138 @@ function createBarTracks( return tracks } -function createLineTracks( +function createCartesianPathTracks( root: SVGSVGElement, scene: ChartScene, timingFor: TimingResolver, ): MotionTrack[] { - const groups = [...root.querySelectorAll('g.ts-chart__line')] + const groups = [ + ...root.querySelectorAll( + 'g.ts-chart__line:not(.ts-chart__radial-line), g.ts-chart__area:not(.ts-chart__radial-area)', + ), + ] return groups.map((group, seriesIndex) => { - const seriesKey = group.getAttribute('data-ts-key') ?? `line:${seriesIndex}` + const role: ChartMotionRole = group.classList.contains('ts-chart__area') + ? 'area' + : 'line' + const seriesKey = + group.getAttribute('data-ts-key') ?? `${role}:${seriesIndex}` const timing = timingFor({ phase: 'enter', - role: 'line', + role, + key: seriesKey, + markId: motionMarkId(scene, seriesKey), + seriesKey, + seriesIndex, + datumIndex: 0, + datumCount: 1, + datum: undefined, + point: undefined, + }) + const horizontal = scenePathAffinity(scene, seriesKey) === 'y' + const baseline = resolvePathBaseline(scene, horizontal) + const previousTransform = group.getAttribute('transform') + group.dataset.tsMotionRole = role + const apply = (values: readonly number[]) => { + const progress = values[0] ?? 0 + const transform = horizontal + ? `matrix(${formatNumber(progress)} 0 0 1 ${formatNumber(baseline * (1 - progress))} 0)` + : `matrix(1 0 0 ${formatNumber(progress)} 0 ${formatNumber(baseline * (1 - progress))})` + group.setAttribute( + 'transform', + previousTransform ? `${previousTransform} ${transform}` : transform, + ) + } + const cleanup = () => { + if (previousTransform === null) group.removeAttribute('transform') + else group.setAttribute('transform', previousTransform) + delete group.dataset.tsMotionRole + } + apply([0]) + return { + ...timing, + values: bindMotionValues(undefined, [0], [1]), + apply, + finish: cleanup, + cancel: cleanup, + } + }) +} + +function createRadialPathTracks( + root: SVGSVGElement, + scene: ChartScene, + timingFor: TimingResolver, +): MotionTrack[] { + const groups = [ + ...root.querySelectorAll( + 'g.ts-chart__radial-line, g.ts-chart__radial-area, g.ts-chart__radial-dot', + ), + ] + return groups.map((group, seriesIndex) => { + const role: ChartMotionRole = group.classList.contains( + 'ts-chart__radial-area', + ) + ? 'area' + : group.classList.contains('ts-chart__radial-dot') + ? 'dot' + : 'line' + const seriesKey = + group.getAttribute('data-ts-key') ?? `${role}:${seriesIndex}` + const timing = timingFor({ + phase: 'enter', + role, + key: seriesKey, + markId: motionMarkId(scene, seriesKey), + seriesKey, + seriesIndex, + datumIndex: 0, + datumCount: 1, + datum: undefined, + point: undefined, + }) + const previousTransform = group.getAttribute('transform') + group.dataset.tsMotionRole = role + const apply = (values: readonly number[]) => { + const progress = values[0] ?? 0 + const transform = `scale(${formatNumber(progress)})` + group.setAttribute( + 'transform', + previousTransform ? `${previousTransform} ${transform}` : transform, + ) + } + const cleanup = () => { + if (previousTransform === null) group.removeAttribute('transform') + else group.setAttribute('transform', previousTransform) + delete group.dataset.tsMotionRole + } + apply([0]) + return { + ...timing, + values: bindMotionValues(undefined, [0], [1]), + apply, + finish: cleanup, + cancel: cleanup, + } + }) +} + +function createArcTracks( + root: SVGSVGElement, + scene: ChartScene, + timingFor: TimingResolver, +): MotionTrack[] { + const groups = [...root.querySelectorAll('g.ts-chart__arc')] + return groups.flatMap((group, seriesIndex) => { + const seriesKey = group.getAttribute('data-ts-key') ?? `arc:${seriesIndex}` + const geometry = sceneArcGeometry(scene, seriesKey) + if (!geometry) return [] + const role: ChartMotionRole = group.classList.contains('ts-chart__bar') + ? 'bar' + : 'arc' + const timing = timingFor({ + phase: 'enter', + role, key: seriesKey, markId: motionMarkId(scene, seriesKey), seriesKey, @@ -859,53 +1406,179 @@ function createLineTracks( }) const document = root.ownerDocument let definitions = root.querySelector('defs') - let ownsDefinitions = false if (!definitions) { definitions = document.createElementNS( 'http://www.w3.org/2000/svg', 'defs', ) + definitions.dataset.tsMotionDefs = '' root.prepend(definitions) - ownsDefinitions = true } const clip = document.createElementNS( 'http://www.w3.org/2000/svg', 'clipPath', ) - const rectangle = document.createElementNS( - 'http://www.w3.org/2000/svg', - 'rect', - ) + const path = document.createElementNS('http://www.w3.org/2000/svg', 'path') const id = `ts-chart-motion-clip-${++clipId}` clip.id = id - rectangle.setAttribute('x', formatNumber(scene.chart.x)) - rectangle.setAttribute('y', formatNumber(scene.chart.y)) - rectangle.setAttribute('width', '0') - rectangle.setAttribute('height', formatNumber(scene.chart.height)) - clip.append(rectangle) + clip.append(path) definitions.append(clip) const previousClip = group.getAttribute('clip-path') group.setAttribute('clip-path', `url(#${id})`) - group.dataset.tsMotionRole = 'line' + group.dataset.tsMotionRole = role + const apply = (values: readonly number[]) => { + const progress = Math.max(0, Math.min(1, values[0] ?? 0)) + path.setAttribute( + 'd', + radialSweepClipPath( + geometry.startAngle, + geometry.sweep * progress, + geometry.radius, + ), + ) + } const cleanup = () => { if (previousClip === null) group.removeAttribute('clip-path') else group.setAttribute('clip-path', previousClip) delete group.dataset.tsMotionRole clip.remove() - if (ownsDefinitions && !definitions?.children.length) definitions.remove() + if ( + definitions?.dataset.tsMotionDefs !== undefined && + !definitions.children.length + ) { + definitions.remove() + } } - return { - ...timing, - values: bindMotionValues(undefined, [0], [scene.chart.width]), - apply(values) { - rectangle.setAttribute('width', formatNumber(values[0] ?? 0)) + apply([0]) + return [ + { + ...timing, + values: bindMotionValues(undefined, [0], [1]), + apply, + finish: cleanup, + cancel: cleanup, }, - finish: cleanup, - cancel: cleanup, - } + ] }) } +function resolvePathBaseline(scene: ChartScene, horizontal: boolean) { + const chartStart = horizontal ? scene.chart.x : scene.chart.y + const chartSize = horizontal ? scene.chart.width : scene.chart.height + const fallback = horizontal ? chartStart : chartStart + chartSize + const scale = scene.scales[horizontal ? 'x' : 'y'] + if (!scale) return fallback + const zero = scale.map(0) + return Number.isFinite(zero) && + zero >= chartStart && + zero <= chartStart + chartSize + ? zero + : fallback +} + +function scenePathAffinity( + scene: ChartScene, + key: string, +): 'x' | 'y' | 'xy' | 'geometry' | undefined { + const node = findSceneNodeContext(scene.nodes, key)?.node + if (!node) return undefined + const visit = ( + candidate: SceneNode, + ): 'x' | 'y' | 'xy' | 'geometry' | undefined => { + if (candidate.kind === 'group') { + for (const child of candidate.children) { + const affinity = visit(child) + if (affinity) return affinity + } + return undefined + } + return 'interaction' in candidate + ? candidate.interaction?.affinity + : undefined + } + return visit(node) +} + +function sceneArcGeometry( + scene: ChartScene, + key: string, +): { startAngle: number; sweep: number; radius: number } | undefined { + const node = findSceneNodeContext(scene.nodes, key)?.node + if (!node) return undefined + const pointSets: (readonly (readonly [number, number])[])[] = [] + const visit = (candidate: SceneNode) => { + if (candidate.kind === 'group') { + candidate.children.forEach(visit) + return + } + if (candidate.kind === 'area' && candidate.points.length) { + pointSets.push(candidate.points) + } + } + visit(node) + const firstSet = pointSets.find((points) => points.length > 1) + const firstPoint = firstSet?.[0] + if (!firstSet || !firstPoint) return undefined + const startAngle = polarPointAngle(firstPoint) + let direction = 0 + for (let index = 1; index < firstSet.length; index += 1) { + const point = firstSet[index] + if (!point) continue + const delta = signedAngleDelta(startAngle, polarPointAngle(point)) + if (Math.abs(delta) > 1e-4) { + direction = Math.sign(delta) + break + } + } + if (!direction) return undefined + let sweep = 0 + let radius = 0 + for (const points of pointSets) { + for (const point of points) { + const angle = polarPointAngle(point) + const distance = + direction > 0 + ? positiveAngle(angle - startAngle) + : positiveAngle(startAngle - angle) + sweep = Math.max(sweep, distance) + radius = Math.max(radius, Math.hypot(point[0], point[1])) + } + } + const tau = Math.PI * 2 + if (sweep > tau - Math.PI / 12) sweep = tau + if (sweep <= 1e-4 || radius <= 0) return undefined + return { startAngle, sweep: sweep * direction, radius: radius + 2 } +} + +function polarPointAngle(point: readonly [number, number]) { + return Math.atan2(point[0], -point[1]) +} + +function signedAngleDelta(from: number, to: number) { + const tau = Math.PI * 2 + return ((((to - from + Math.PI) % tau) + tau) % tau) - Math.PI +} + +function positiveAngle(angle: number) { + const tau = Math.PI * 2 + return ((angle % tau) + tau) % tau +} + +function radialSweepClipPath( + startAngle: number, + sweep: number, + radius: number, +) { + if (Math.abs(sweep) <= 1e-6) return 'M0 0Z' + const steps = Math.max(1, Math.ceil(Math.abs(sweep) / (Math.PI / 24))) + let path = 'M0 0' + for (let index = 0; index <= steps; index += 1) { + const angle = startAngle + (sweep * index) / steps + path += `L${formatNumber(Math.sin(angle) * radius)} ${formatNumber(-Math.cos(angle) * radius)}` + } + return `${path}Z` +} + function reconcileMotionSvg( context: ChartSvgMotionContext, options: ResolvedMotionOptions, @@ -2633,11 +3306,26 @@ function resolveTiming( let delay = automaticDelay let transition = options.transition let path: ChartMotionPath = 'morph' + let disabled = false const apply = (definition: ChartMotionDefinition | undefined) => { const authored = typeof definition === 'function' ? definition(context) : definition - if (!authored) return - if (authored.delay !== undefined) delay = nonNegative(authored.delay, delay) + if (authored === undefined) return + if (authored === false) { + delay = automaticDelay + transition = options.transition + path = 'morph' + disabled = true + return + } + disabled = false + const authoredDelay = + typeof authored.delay === 'function' + ? authored.delay(context) + : authored.delay + if (authoredDelay !== undefined) { + delay = nonNegative(authoredDelay, delay) + } if (authored.path !== undefined) path = authored.path transition = resolveTransition( authored.transition, @@ -2679,7 +3367,7 @@ function resolveTiming( // A delayed physical retarget would freeze the sampled velocity. Spring // updates therefore begin immediately; use delay for enter/exit choreography. if (context.phase === 'update' && transition.type === 'spring') delay = 0 - return { delay, transition, path } + return { disabled, delay, transition, path } } function createTimingResolver( @@ -2787,7 +3475,13 @@ function runTracks( tracks: readonly MotionTrack[], lifecycle: { publish?: () => void; finish?: () => void } = {}, ) { - if (!tracks.length) { + const activeTracks = tracks.filter((track) => { + if (!track.disabled) return true + completeMotionTrack(track) + return false + }) + if (activeTracks.length !== tracks.length) lifecycle.publish?.() + if (!activeTracks.length) { lifecycle.finish?.() return () => {} } @@ -2795,13 +3489,13 @@ function runTracks( const requestFrame = view?.requestAnimationFrame?.bind(view) const cancelFrame = view?.cancelAnimationFrame?.bind(view) if (!requestFrame || !cancelFrame) { - tracks.forEach(completeMotionTrack) + activeTracks.forEach(completeMotionTrack) lifecycle.finish?.() return () => {} } const safetyLimit = Math.max( - ...tracks.map( + ...activeTracks.map( (track) => track.delay + (track.transition.type === 'tween' @@ -2810,7 +3504,7 @@ function runTracks( ), ) if (safetyLimit <= 0) { - tracks.forEach(completeMotionTrack) + activeTracks.forEach(completeMotionTrack) lifecycle.finish?.() return () => {} } @@ -2826,7 +3520,7 @@ function runTracks( if (cancelled) return start ??= time const elapsed = time - start - for (const track of tracks) { + for (const track of activeTracks) { if (finished.has(track)) continue if (sampleMotionTrack(track, elapsed)) { completeMotionTrack(track) @@ -2834,12 +3528,12 @@ function runTracks( } } lifecycle.publish?.() - root.dataset.tsMotionProgress = String(finished.size / tracks.length) - if (finished.size < tracks.length && elapsed < safetyLimit) { + root.dataset.tsMotionProgress = String(finished.size / activeTracks.length) + if (finished.size < activeTracks.length && elapsed < safetyLimit) { frame = requestFrame(tick) return } - for (const track of tracks) { + for (const track of activeTracks) { if (!finished.has(track)) completeMotionTrack(track) } lifecycle.finish?.() @@ -2852,7 +3546,7 @@ function runTracks( if (cancelled) return cancelled = true cancelFrame(frame) - tracks.forEach((track) => { + activeTracks.forEach((track) => { if (!finished.has(track)) track.cancel?.() }) lifecycle.publish?.() diff --git a/packages/charts-core/src/network-sankey.test.ts b/packages/charts-core/src/network-sankey.test.ts index 719720d2..bfecb029 100644 --- a/packages/charts-core/src/network-sankey.test.ts +++ b/packages/charts-core/src/network-sankey.test.ts @@ -579,6 +579,6 @@ function motionContext(markId: string): ChartMotionContext { function resolveMotion( motion: ChartMotionDefinition | undefined, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): false | ChartMotionTiming | undefined { return typeof motion === 'function' ? motion(context) : motion } diff --git a/packages/charts-core/src/polar.test.ts b/packages/charts-core/src/polar.test.ts index 42ece8dd..b5ab099f 100644 --- a/packages/charts-core/src/polar.test.ts +++ b/packages/charts-core/src/polar.test.ts @@ -1229,7 +1229,7 @@ function authoredMotionContext(markId: string): ChartMotionContext { function resolveAuthoredMotion( motion: ChartMotionDefinition | undefined, context: ChartMotionContext, -): ChartMotionTiming | undefined { +): false | ChartMotionTiming | undefined { return typeof motion === 'function' ? motion(context) : motion } diff --git a/packages/charts-core/src/renderer-motion-internal.ts b/packages/charts-core/src/renderer-motion-internal.ts new file mode 100644 index 00000000..d16d6526 --- /dev/null +++ b/packages/charts-core/src/renderer-motion-internal.ts @@ -0,0 +1,82 @@ +import type { ChartRenderer, ChartTooltipExtensionContext } from './dom-types' +import type { ChartMotionTransition, ChartValue } from './types' + +export const chartRendererMotion = Symbol('tanstack-charts-renderer-motion') + +export interface ChartTooltipMotionSnapshot { + wasHidden: boolean + showPresence: boolean + previousLeft?: number + previousTop?: number + movementX: number + movementY: number + velocityX: number + velocityY: number + presence?: { opacity: number; scale: number } +} + +export interface ChartTooltipMotionController { + beforePaint: (element: HTMLElement) => ChartTooltipMotionSnapshot + afterPaint: ( + element: HTMLElement, + snapshot: ChartTooltipMotionSnapshot, + transition: false | ChartMotionTransition | undefined, + ) => void + hide: ( + element: HTMLElement, + transition: false | ChartMotionTransition | undefined, + complete: () => void, + ) => boolean + destroy: (element: HTMLElement | undefined) => void +} + +export interface ChartRendererMotionCapability { + createTooltip: (context: { + container: HTMLElement + transition: () => false | ChartMotionTransition | undefined + }) => ChartTooltipMotionController +} + +type MotionRenderer = ChartRenderer & { + [chartRendererMotion]?: ChartRendererMotionCapability +} + +type MotionTooltipContext = ChartTooltipExtensionContext & { + [chartRendererMotion]?: ChartTooltipMotionController +} + +export function rendererMotionCapability( + renderer: ChartRenderer, +): ChartRendererMotionCapability | undefined { + return (renderer as MotionRenderer)[chartRendererMotion] +} + +export function tooltipMotionController< + TDatum, + TXValue extends ChartValue, + TYValue extends ChartValue, +>( + context: ChartTooltipExtensionContext, +): ChartTooltipMotionController | undefined { + return (context as MotionTooltipContext)[chartRendererMotion] +} + +export function connectRendererTooltipMotion< + TDatum, + TXValue extends ChartValue, + TYValue extends ChartValue, +>( + renderer: ChartRenderer, + context: ChartTooltipExtensionContext, + transition: () => false | ChartMotionTransition | undefined, +) { + const capability = rendererMotionCapability(renderer) + if (capability) { + const motionContext = context as MotionTooltipContext + motionContext[chartRendererMotion] = capability.createTooltip({ + container: context.container, + transition, + }) + } + return context +} diff --git a/packages/charts-core/src/renderer.test.ts b/packages/charts-core/src/renderer.test.ts index 6c7853d6..5b8fa267 100644 --- a/packages/charts-core/src/renderer.test.ts +++ b/packages/charts-core/src/renderer.test.ts @@ -3,6 +3,7 @@ import { scaleBand, scaleLinear } from 'd3-scale' import { barY } from './bar' import { createChartCursor, cursorHost } from './cursor' import { lineY } from './line' +import { motion } from './motion' import { mountChartRenderer } from './renderer' import { defineChart, findNearestPoint } from './scene' import { stack } from './stack' @@ -193,43 +194,34 @@ describe('renderer-neutral chart host', () => { configurable: true, value: animate, }) - const fake = createFakeRenderer() const container = document.createElement('div') const host = mountChartRenderer(container, { definition: defineChart(definition, { maxFocusDistance: 1_000, - motion: { - transition: { - type: 'spring', - stiffness: 170, - damping: 18, - mass: 1, - }, - }, tooltip: tooltipExtension, }), - renderer: fake.renderer, + renderer: motion({ + initial: false, + transition: { + type: 'spring', + stiffness: 170, + damping: 18, + mass: 1, + }, + }), width: 480, height: 260, ariaLabel: 'Spring tooltip', }) try { - fake.element.dispatchEvent( - new MouseEvent('pointermove', { - bubbles: true, - clientX: 123, - clientY: 45, - }), - ) + host.interaction.setControlledFocus(host.getScene().points[0]!) const enterFrames = animate.mock.calls[0]?.[0] const enterOptions = animate.mock.calls[0]?.[1] expect(enterFrames?.length).toBeGreaterThan(2) expect(enterOptions).toMatchObject({ easing: 'linear', fill: 'both' }) - fake.element.dispatchEvent( - new MouseEvent('mouseleave', { bubbles: true }), - ) + host.interaction.setControlledFocus(null) const tooltip = container.querySelector('.ts-chart-tooltip') expect(animate).toHaveBeenCalledTimes(2) expect(tooltip?.hidden).toBe(false) @@ -241,6 +233,172 @@ describe('renderer-neutral chart host', () => { } }) + it('lets chart motion disable tooltip motion while a tooltip override re-enables it', () => { + const descriptor = Object.getOwnPropertyDescriptor( + window.HTMLElement.prototype, + 'animate', + ) + const animate = vi.fn(() => ({ + cancel: vi.fn(), + onfinish: null, + })) + Object.defineProperty(window.HTMLElement.prototype, 'animate', { + configurable: true, + value: animate, + }) + const immediateContainer = document.createElement('div') + const immediate = mountChartRenderer(immediateContainer, { + definition: defineChart(definition, { + maxFocusDistance: 1_000, + motion: false, + tooltip: tooltipExtension, + }), + renderer: motion({ initial: false }), + width: 480, + height: 260, + ariaLabel: 'Immediate tooltip', + }) + const animatedContainer = document.createElement('div') + const animated = mountChartRenderer(animatedContainer, { + definition: defineChart(definition, { + maxFocusDistance: 1_000, + motion: false, + tooltip: { + use: tooltipExtension, + motion: { type: 'tween', duration: 100 }, + }, + }), + renderer: motion({ initial: false }), + width: 480, + height: 260, + ariaLabel: 'Animated tooltip override', + }) + + try { + immediate.interaction.setControlledFocus(immediate.getScene().points[0]!) + expect(animate).not.toHaveBeenCalled() + animated.interaction.setControlledFocus(animated.getScene().points[0]!) + expect(animate).toHaveBeenCalledOnce() + } finally { + immediate.destroy() + animated.destroy() + restoreProperty(window.HTMLElement.prototype, 'animate', descriptor) + } + }) + + it('keeps tooltips immediate without a renderer motion capability', () => { + const descriptor = Object.getOwnPropertyDescriptor( + window.HTMLElement.prototype, + 'animate', + ) + const animate = vi.fn() + Object.defineProperty(window.HTMLElement.prototype, 'animate', { + configurable: true, + value: animate, + }) + const fake = createFakeRenderer() + const container = document.createElement('div') + const host = mountChartRenderer(container, { + definition: defineChart(definition, { + motion: { + transition: { type: 'spring', stiffness: 170, damping: 18 }, + }, + tooltip: { + use: tooltipExtension, + motion: { type: 'spring', stiffness: 200 }, + }, + }), + renderer: fake.renderer, + width: 480, + height: 260, + ariaLabel: 'Static tooltip', + }) + + try { + host.interaction.setControlledFocus(host.getScene().points[0]!) + host.interaction.setControlledFocus(null) + + expect(animate).not.toHaveBeenCalled() + expect( + container.querySelector('.ts-chart-tooltip')?.hidden, + ).toBe(true) + } finally { + host.destroy() + restoreProperty(window.HTMLElement.prototype, 'animate', descriptor) + } + }) + + it('retargets tooltip springs from the live position and velocity', () => { + let currentTime = 1_000 + const frames: Array = [] + const requestFrame = vi + .spyOn(window, 'requestAnimationFrame') + .mockImplementation((callback) => { + frames.push(callback) + return frames.length + }) + const cancelFrame = vi + .spyOn(window, 'cancelAnimationFrame') + .mockImplementation(() => {}) + const performanceNow = vi + .spyOn(window.performance, 'now') + .mockImplementation(() => currentTime) + const container = document.createElement('div') + const host = mountChartRenderer(container, { + definition: defineChart(definition, { + maxFocusDistance: 1_000, + tooltip: tooltipExtension, + }), + renderer: motion({ + initial: false, + transition: { + type: 'spring', + stiffness: 170, + damping: 18, + mass: 1, + }, + }), + width: 480, + height: 260, + ariaLabel: 'Retargeted spring tooltip', + }) + + try { + host.interaction.setControlledFocus(host.getScene().points[0]!) + const tooltip = container.querySelector('.ts-chart-tooltip') + if (!tooltip) throw new Error('Expected chart tooltip') + const firstLeft = Number.parseFloat(tooltip.style.left) + + host.interaction.setControlledFocus(host.getScene().points[1]!) + const secondLeft = Number.parseFloat(tooltip.style.left) + expect(secondLeft).not.toBe(firstLeft) + expect(requestFrame).toHaveBeenCalled() + + frames.at(-1)?.(1_016) + currentTime = 1_016 + const movingX = Number.parseFloat(tooltip.style.translate) + const visualLeftBeforeRetarget = secondLeft + movingX + + host.interaction.setControlledFocus(host.getScene().points[0]!) + const retargetedLeft = Number.parseFloat(tooltip.style.left) + const retargetedX = Number.parseFloat(tooltip.style.translate) + expect(retargetedLeft + retargetedX).toBeCloseTo( + visualLeftBeforeRetarget, + 5, + ) + + frames.at(-1)?.(1_017) + expect(Number.parseFloat(tooltip.style.translate)).toBeGreaterThan( + retargetedX, + ) + } finally { + host.destroy() + requestFrame.mockRestore() + cancelFrame.mockRestore() + performanceNow.mockRestore() + } + }) + it('delegates controlled client coordinate conversion to the mounted surface', () => { const fake = createFakeRenderer() const container = document.createElement('div') diff --git a/packages/charts-core/src/renderer.ts b/packages/charts-core/src/renderer.ts index d6af7907..da3fb94f 100644 --- a/packages/charts-core/src/renderer.ts +++ b/packages/charts-core/src/renderer.ts @@ -4,6 +4,7 @@ import { createDomTextMeasurer } from './dom-text' import { findNearestPoint, viewportInteractionPoints } from './scene' import { focusDisabled } from './focus-disabled' import { nearestPoint } from './nearest' +import { connectRendererTooltipMotion } from './renderer-motion-internal' import { chartPointFromNavigationOrder, chartPointFromSceneOrder, @@ -1021,12 +1022,17 @@ export function mountChartRenderer< if (tooltipExtension !== input.extension || !tooltipInstance) { destroyTooltip() tooltipExtension = input.extension - tooltipInstance = input.extension.create({ - container, - dismiss: dismissTooltip, - motion: resolveTooltipMotion, - bodyChange: () => options.onTooltipBodyChange, - }) + tooltipInstance = input.extension.create( + connectRendererTooltipMotion( + surface.renderer, + { + container, + dismiss: dismissTooltip, + bodyChange: () => options.onTooltipBodyChange, + }, + resolveTooltipMotion, + ), + ) } const instance = tooltipInstance instance.update(input.options) @@ -1046,8 +1052,9 @@ export function mountChartRenderer< }) } - function resolveTooltipMotion(): ChartMotionTransition | undefined { + function resolveTooltipMotion(): false | ChartMotionTransition | undefined { const definition = options.definition.motion + if (definition === false) return false return typeof definition === 'function' ? undefined : definition?.transition } diff --git a/packages/charts-core/src/tooltip.ts b/packages/charts-core/src/tooltip.ts index 539ecbda..8dbc4c82 100644 --- a/packages/charts-core/src/tooltip.ts +++ b/packages/charts-core/src/tooltip.ts @@ -1,5 +1,5 @@ import { placeTooltip } from './tooltip-position' -import { createChartSpring } from './spring' +import { tooltipMotionController } from './renderer-motion-internal' import { createChartTooltipContent, orderChartTooltipPoints, @@ -23,7 +23,6 @@ import type { ChartTooltipItem, ChartTooltipOptions, ChartTooltipPortalOptions, - ChartMotionTransition, ChartValue, } from './types' @@ -81,12 +80,11 @@ function createTooltipExtension< let anchor: { x: number; y: number } | null = null let positionFrame: number | undefined let resizeObserver: ResizeObserver | undefined - let tooltipAnimation: Animation | undefined - let hideGeneration = 0 let portalExtension: ChartTooltipPortalExtension | undefined let portalInstance: ChartTooltipPortalExtensionInstance | undefined const { container } = extensionContext const view = container.ownerDocument.defaultView + const tooltipMotion = tooltipMotionController(extensionContext) function update(nextOptions: ChartTooltipOptions) { if (options !== nextOptions) bodyDirty = true @@ -104,6 +102,9 @@ function createTooltipExtension< } const tooltipElement = ensureElement() syncPortal() + const motionSnapshot = tooltipMotion?.beforePaint(tooltipElement) + tooltipElement.style.visibility = 'hidden' + tooltipElement.removeAttribute('hidden') tooltipElement.className = options.className ? `ts-chart-tooltip ${options.className}` : 'ts-chart-tooltip' @@ -141,14 +142,6 @@ function createTooltipExtension< tooltipElement.style.pointerEvents = nextContext.pinned ? 'auto' : 'none' tooltipElement.style.userSelect = nextContext.pinned ? 'text' : 'none' tooltipElement.dataset.sticky = String(nextContext.pinned) - const entering = tooltipElement.hasAttribute('hidden') - const previousLeft = finiteStyleNumber(tooltipElement.style.left) - const previousTop = finiteStyleNumber(tooltipElement.style.top) - hideGeneration += 1 - tooltipAnimation?.cancel() - tooltipAnimation = undefined - tooltipElement.style.visibility = 'hidden' - tooltipElement.removeAttribute('hidden') anchor = resolveChartTooltipAnchor( nextContext.point, points, @@ -159,7 +152,9 @@ function createTooltipExtension< ) position() tooltipElement.style.removeProperty('visibility') - animateVisibleTooltip(tooltipElement, entering, previousLeft, previousTop) + if (motionSnapshot) { + tooltipMotion?.afterPaint(tooltipElement, motionSnapshot, options.motion) + } } function ensureElement() { @@ -334,36 +329,13 @@ function createTooltipExtension< hideTooltipBody() return } - const transition = resolveMotion() - if (!transition || prefersReducedMotion()) { - portalInstance?.hide() - currentElement.setAttribute('hidden', '') - hideTooltipBody() - return - } - const generation = ++hideGeneration - tooltipAnimation?.cancel() - tooltipAnimation = animateTooltip( - currentElement, - transition, - { opacity: 1, scale: 1, x: 0, y: 0 }, - { opacity: 0, scale: 0.96, x: 0, y: 0 }, - ) - if (!tooltipAnimation) { + const complete = () => { portalInstance?.hide() currentElement.setAttribute('hidden', '') hideTooltipBody() - return - } - tooltipAnimation.onfinish = () => { - if (generation !== hideGeneration) return - portalInstance?.hide() - currentElement.setAttribute('hidden', '') - currentElement.style.removeProperty('opacity') - currentElement.style.removeProperty('transform') - hideTooltipBody() - tooltipAnimation = undefined } + if (tooltipMotion?.hide(currentElement, options.motion, complete)) return + complete() } function destroy() { @@ -376,8 +348,7 @@ function createTooltipExtension< view?.cancelAnimationFrame?.(positionFrame) positionFrame = undefined } - tooltipAnimation?.cancel() - tooltipAnimation = undefined + tooltipMotion?.destroy(element) resizeObserver?.disconnect() resizeObserver = undefined element?.remove() @@ -391,143 +362,6 @@ function createTooltipExtension< contains: (target) => Boolean(target && element?.contains(target as Node)), destroy, } - - function resolveMotion() { - return options.motion === false - ? undefined - : (options.motion ?? extensionContext.motion()) - } - - function prefersReducedMotion() { - return Boolean( - view?.matchMedia?.('(prefers-reduced-motion: reduce)').matches, - ) - } - - function animateVisibleTooltip( - tooltipElement: HTMLElement, - entering: boolean, - previousLeft: number | undefined, - previousTop: number | undefined, - ) { - const transition = resolveMotion() - if (!transition || prefersReducedMotion()) { - tooltipElement.style.removeProperty('opacity') - tooltipElement.style.removeProperty('transform') - return - } - const nextLeft = finiteStyleNumber(tooltipElement.style.left) - const nextTop = finiteStyleNumber(tooltipElement.style.top) - const x = - entering || previousLeft === undefined || nextLeft === undefined - ? 0 - : previousLeft - nextLeft - const y = - entering || previousTop === undefined || nextTop === undefined - ? 0 - : previousTop - nextTop - if (!entering && Math.abs(x) < 0.5 && Math.abs(y) < 0.5) return - tooltipAnimation = animateTooltip( - tooltipElement, - transition, - { - opacity: entering ? 0 : 1, - scale: entering ? 0.96 : 1, - x, - y, - }, - { opacity: 1, scale: 1, x: 0, y: 0 }, - ) - if (tooltipAnimation) { - tooltipAnimation.onfinish = () => { - tooltipElement.style.removeProperty('opacity') - tooltipElement.style.removeProperty('transform') - tooltipAnimation = undefined - } - } - } -} - -interface TooltipMotionState { - opacity: number - scale: number - x: number - y: number -} - -function animateTooltip( - element: HTMLElement, - transition: ChartMotionTransition, - from: TooltipMotionState, - to: TooltipMotionState, -) { - if (typeof element.animate !== 'function') return undefined - const sampled = tooltipMotionSamples(transition) - const keyframes = sampled.values.map((progress, index) => ({ - offset: sampled.offsets[index], - opacity: interpolate(from.opacity, to.opacity, progress), - transform: `translate(${interpolate(from.x, to.x, progress)}px, ${interpolate(from.y, to.y, progress)}px) scale(${interpolate(from.scale, to.scale, progress)})`, - })) - return element.animate(keyframes, { - duration: sampled.duration, - easing: sampled.easing, - fill: 'both', - }) -} - -function tooltipMotionSamples(transition: ChartMotionTransition) { - if (transition.type !== 'spring') { - if (typeof transition.easing === 'function') { - const offsets = Array.from({ length: 31 }, (_, index) => index / 30) - return { - duration: Math.max(0, transition.duration ?? 250), - easing: 'linear', - offsets, - values: offsets.map(transition.easing), - } - } - return { - duration: Math.max(0, transition.duration ?? 250), - easing: transition.easing ?? 'ease-out', - offsets: [0, 1], - values: [0, 1], - } - } - const spring = createChartSpring(transition) - const offsets: number[] = [] - const values: number[] = [] - let duration = 0 - for (let elapsed = 0; elapsed <= 2_000; elapsed += 16) { - const sample = spring.sample(elapsed) - duration = elapsed - offsets.push(elapsed) - values.push(sample.value) - if (sample.done && elapsed > 0) break - } - if (duration === 0) - return { - duration: 0, - easing: 'linear', - offsets: [0, 1], - values: [0, 1], - } - offsets[offsets.length - 1] = duration - values[values.length - 1] = 1 - return { - duration, - easing: 'linear', - offsets: offsets.map((elapsed) => elapsed / duration), - values, - } -} - -function interpolate(from: number, to: number, progress: number) { - return from + (to - from) * progress -} - -function finiteStyleNumber(value: string) { - const number = Number.parseFloat(value) - return Number.isFinite(number) ? number : undefined } function samePointList( diff --git a/packages/charts-core/src/types.ts b/packages/charts-core/src/types.ts index 6aedf093..17059fbf 100644 --- a/packages/charts-core/src/types.ts +++ b/packages/charts-core/src/types.ts @@ -687,16 +687,19 @@ export interface ChartRollingPathMotion { export type ChartMotionPath = 'morph' | ChartRollingPathMotion -export interface ChartMotionTiming { - delay?: number +export interface ChartMotionTiming { + delay?: number | ((context: ChartMotionContext) => number | undefined) transition?: ChartMotionTransition /** How line and area paths move between compatible keyed updates. */ path?: ChartMotionPath } export type ChartMotionDefinition = - | ChartMotionTiming - | ((context: ChartMotionContext) => ChartMotionTiming | undefined) + | false + | ChartMotionTiming + | (( + context: ChartMotionContext, + ) => false | ChartMotionTiming | undefined) export interface ChartMarkMotionOptions { motion?: ChartMotionDefinition @@ -1403,7 +1406,7 @@ export interface ChartTooltipOptions< TYValue extends ChartValue = ChartValue, > { className?: string - /** Animates tooltip entry, movement, and exit. Inherits a static chart-level transition when omitted. */ + /** Overrides tooltip motion from the active motion renderer; `false` keeps it immediate. */ motion?: false | ChartMotionTransition portal?: ChartTooltipPortalInput items?: readonly ChartTooltipItem[] diff --git a/scripts/measure-bundles.mjs b/scripts/measure-bundles.mjs index 2c89c779..e32f5bc8 100644 --- a/scripts/measure-bundles.mjs +++ b/scripts/measure-bundles.mjs @@ -91,6 +91,9 @@ const retainedInputGroups = { sceneMotionContract: [ /(?:^|\/)packages\/charts-core\/src\/scene-motion-internal\.ts$/u, ], + motionDefinition: [ + /(?:^|\/)packages\/charts-core\/src\/motion-definition\.ts$/u, + ], springRuntime: [/(?:^|\/)packages\/charts-core\/src\/spring\.ts$/u], focusGuide: [/(?:^|\/)packages\/charts-core\/src\/focus-guide\.ts$/u], focusMark: [/(?:^|\/)packages\/charts-core\/src\/focus-mark\.ts$/u], @@ -900,7 +903,7 @@ const entries = [ budgeted( 'Composite mark + static SVG', 'benchmarks/entries/charts-composite-mark.ts', - 26.45, + 26.5, { inputBoundary: { require: [ @@ -1195,7 +1198,7 @@ const entries = [ budgeted( 'Polar line + scatter composition + static SVG', 'benchmarks/entries/charts-polar-line-scatter-svg.ts', - 25.3, + 25.32, ), locked( 'Representative marks', @@ -1656,6 +1659,26 @@ const entries = [ 'compactBandKernel', 'compactOrdinal', 'reactTooltipBridge', + 'motionRuntime', + 'springRuntime', + 'transformRuntime', + 'd3Runtime', + ], + }, + }, + ), + budgeted( + 'Motion timing utilities', + 'benchmarks/entries/charts-motion-definition.ts', + 0.5, + { + inputBoundary: { + require: ['motionDefinition'], + forbid: [ + 'motionRuntime', + 'springRuntime', + 'tooltipExtension', + 'tooltipPortal', 'transformRuntime', 'd3Runtime', ], @@ -1665,7 +1688,7 @@ const entries = [ budgeted( 'Motion SVG renderer', 'benchmarks/entries/charts-motion-svg-renderer.ts', - 18.2, + 19.65, { rendererBoundary: 'svg', inputBoundary: { @@ -1771,7 +1794,7 @@ const entries = [ budgeted( 'Stats parity surface', 'benchmarks/entries/charts-stats-parity.ts', - 51.2, + 51.25, ), locked( 'Custom-scale line scene', diff --git a/scripts/public-callback-contract.mjs b/scripts/public-callback-contract.mjs index da5fa45f..875ee1a2 100644 --- a/scripts/public-callback-contract.mjs +++ b/scripts/public-callback-contract.mjs @@ -346,6 +346,7 @@ const callbackInventory = { ], ['@tanstack/charts:src/types.ts:ChartMarkStateValue', '$call'], ['@tanstack/charts:src/types.ts:ChartMotionDefinition', '$call'], + ['@tanstack/charts:src/types.ts:ChartMotionTiming', 'delay'], ['@tanstack/charts:src/types.ts:ChartMotionTweenTransition', 'easing'], ['@tanstack/charts:src/types.ts:ChartScale', 'resolve'], ['@tanstack/charts:src/types.ts:ChartScaleResolver', '$call'], @@ -620,7 +621,7 @@ const callbackInventory = { ['@tanstack/charts:src/dom-types.ts:ChartTooltipExtension', 'create'], [ '@tanstack/charts:src/dom-types.ts:ChartTooltipExtensionContext', - 'bodyChange dismiss motion', + 'bodyChange dismiss', ], [ '@tanstack/charts:src/dom-types.ts:ChartTooltipExtensionInstance', From 201830ab934e5e91e3bf76e5e9955bbdbc82479b Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Fri, 14 Aug 2026 00:03:13 -0600 Subject: [PATCH 3/3] Finalize ShadCN catalog release --- API-FRICTION.md | 226 - .../bundle-size/universal-baseline.json | 16 +- benchmarks/comparison/bundle-baseline.json | 128 +- .../conformance/DEFINITION-COVERAGE-AUDIT.md | 139 +- .../DEFINITION-COVERAGE-OVERVIEW.md | 317 +- .../case.json | 4 +- .../dashboard.tsx | 0 .../data.test.ts | 0 .../data.ts | 0 .../recharts-view.tsx | 0 .../recharts.ts | 0 .../styles.ts | 0 .../tanstack-view.tsx | 0 .../tanstack.test.ts | 0 .../tanstack.ts | 0 .../case.json | 4 +- .../data.ts | 0 .../recharts-view.tsx | 0 .../recharts.ts | 0 .../tanstack-view.tsx | 0 .../tanstack.ts | 0 .../view.tsx | 0 .../case.json | 4 +- .../data.ts | 0 .../recharts-view.tsx | 0 .../recharts.ts | 0 .../tanstack-view.tsx | 0 .../tanstack.ts | 0 .../view.tsx | 0 .../case.json | 4 +- .../data.ts | 0 .../recharts-view.tsx | 0 .../recharts.ts | 0 .../tanstack-view.tsx | 0 .../tanstack.ts | 0 .../view.tsx | 0 .../case.json | 4 +- .../data.ts | 0 .../recharts-view.tsx | 0 .../recharts.ts | 0 .../tanstack-view.tsx | 0 .../tanstack.ts | 0 .../view.tsx | 0 .../case.json | 4 +- .../data.ts | 0 .../recharts-view.tsx | 0 .../recharts.ts | 0 .../tanstack-view.tsx | 0 .../tanstack.ts | 0 .../view.tsx | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 13 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 13 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 13 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 13 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 13 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 13 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 13 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 .../case.json | 14 +- .../recharts.ts | 0 .../tanstack.ts | 0 benchmarks/conformance/catalog-index.json | 568 +- .../definition-coverage-roadmap.json | 2272 ++++++ .../definition-coverage-roadmap.test.ts | 20 +- .../previews/121-active-bar-dashboard.svg | 2 +- ...dashboard.svg => 127-shadcn-dashboard.svg} | 0 ...ltiple.svg => 128-shadcn-bar-multiple.svg} | 0 ...text.svg => 129-shadcn-pie-donut-text.svg} | 0 ...iple.svg => 130-shadcn-radar-multiple.svg} | 2 +- ...al-text.svg => 131-shadcn-radial-text.svg} | 0 ...ed.svg => 132-shadcn-tooltip-advanced.svg} | 0 ...area-axes.svg => 133-shadcn-area-axes.svg} | 0 ...efault.svg => 134-shadcn-area-default.svg} | 0 ...dient.svg => 135-shadcn-area-gradient.svg} | 0 ...ea-icons.svg => 136-shadcn-area-icons.svg} | 0 ...ve.svg => 137-shadcn-area-interactive.svg} | 0 ...-legend.svg => 138-shadcn-area-legend.svg} | 0 ...-linear.svg => 139-shadcn-area-linear.svg} | 0 ...svg => 140-shadcn-area-stacked-expand.svg} | 0 .../previews/140-shadcn-bar-interactive.svg | 1 - ...tacked.svg => 141-shadcn-area-stacked.svg} | 0 ...area-step.svg => 142-shadcn-area-step.svg} | 0 ...r-active.svg => 143-shadcn-bar-active.svg} | 0 ...default.svg => 144-shadcn-bar-default.svg} | 0 ...ntal.svg => 145-shadcn-bar-horizontal.svg} | 0 .../previews/146-shadcn-bar-interactive.svg | 1 + ...om.svg => 147-shadcn-bar-label-custom.svg} | 0 ...bar-label.svg => 148-shadcn-bar-label.svg} | 0 ...bar-mixed.svg => 149-shadcn-bar-mixed.svg} | 0 ...gative.svg => 150-shadcn-bar-negative.svg} | 0 .../previews/150-shadcn-line-interactive.svg | 1 - ...stacked.svg => 151-shadcn-bar-stacked.svg} | 0 ...efault.svg => 152-shadcn-line-default.svg} | 0 ...rs.svg => 153-shadcn-line-dots-colors.svg} | 0 ...om.svg => 154-shadcn-line-dots-custom.svg} | 0 ...line-dots.svg => 155-shadcn-line-dots.svg} | 0 .../previews/156-shadcn-line-interactive.svg | 1 + ...m.svg => 157-shadcn-line-label-custom.svg} | 0 ...ne-label.svg => 158-shadcn-line-label.svg} | 0 ...-linear.svg => 159-shadcn-line-linear.svg} | 0 ...tiple.svg => 160-shadcn-line-multiple.svg} | 0 ...line-step.svg => 161-shadcn-line-step.svg} | 0 ...ve.svg => 162-shadcn-pie-donut-active.svg} | 0 ...pie-donut.svg => 163-shadcn-pie-donut.svg} | 0 ...ive.svg => 164-shadcn-pie-interactive.svg} | 0 ...om.svg => 165-shadcn-pie-label-custom.svg} | 0 ...list.svg => 166-shadcn-pie-label-list.svg} | 0 ...pie-label.svg => 167-shadcn-pie-label.svg} | 0 ...e-legend.svg => 168-shadcn-pie-legend.svg} | 0 ....svg => 169-shadcn-pie-separator-none.svg} | 0 ...e-simple.svg => 170-shadcn-pie-simple.svg} | 0 ...stacked.svg => 171-shadcn-pie-stacked.svg} | 0 ...fault.svg => 172-shadcn-radar-default.svg} | 2 +- ...dar-dots.svg => 173-shadcn-radar-dots.svg} | 2 +- .../previews/173-shadcn-radar-grid-none.svg | 1 - ... => 174-shadcn-radar-grid-circle-fill.svg} | 2 +- ...175-shadcn-radar-grid-circle-no-lines.svg} | 2 +- .../175-shadcn-radar-label-custom.svg | 1 - ...e.svg => 176-shadcn-radar-grid-circle.svg} | 2 +- ...m.svg => 177-shadcn-radar-grid-custom.svg} | 2 +- ...ill.svg => 178-shadcn-radar-grid-fill.svg} | 2 +- .../previews/179-shadcn-radar-grid-none.svg | 1 + ...r-icons.svg => 180-shadcn-radar-icons.svg} | 2 +- .../181-shadcn-radar-label-custom.svg | 1 + ...legend.svg => 182-shadcn-radar-legend.svg} | 2 +- ...ly.svg => 183-shadcn-radar-lines-only.svg} | 2 +- ...radius.svg => 184-shadcn-radar-radius.svg} | 2 +- ...al-grid.svg => 185-shadcn-radial-grid.svg} | 0 ...-label.svg => 186-shadcn-radial-label.svg} | 0 ...-shape.svg => 187-shadcn-radial-shape.svg} | 0 ...imple.svg => 188-shadcn-radial-simple.svg} | 0 ...cked.svg => 189-shadcn-radial-stacked.svg} | 0 ...ult.svg => 190-shadcn-tooltip-default.svg} | 0 ...r.svg => 191-shadcn-tooltip-formatter.svg} | 0 ...icons.svg => 192-shadcn-tooltip-icons.svg} | 0 ... => 193-shadcn-tooltip-indicator-line.svg} | 0 ... => 194-shadcn-tooltip-indicator-none.svg} | 0 ...vg => 195-shadcn-tooltip-label-custom.svg} | 0 ...=> 196-shadcn-tooltip-label-formatter.svg} | 0 ....svg => 197-shadcn-tooltip-label-none.svg} | 0 benchmarks/conformance/previews/manifest.json | 429 +- benchmarks/conformance/shadcn/README.md | 2 +- benchmarks/conformance/shadcn/catalog.json | 140 +- .../conformance/shared/shadcn-motion.test.ts | 12 +- docs/comparison.md | 8 +- examples/conformance/src/main.tsx | 20 +- packages/charts-core/docs/comparison.md | 8 +- packages/charts-core/docs/config.json | 284 + pnpm-lock.yaml | 7224 ++++++++++++----- scripts/catalog-definition-shapes.test.mjs | 4 +- scripts/generate-shadcn-cases.mjs | 37 +- scripts/measure-bundles.mjs | 12 +- 336 files changed, 9385 insertions(+), 3442 deletions(-) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/case.json (96%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/dashboard.tsx (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/data.test.ts (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/data.ts (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/recharts-view.tsx (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/recharts.ts (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/styles.ts (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/tanstack-view.tsx (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/tanstack.test.ts (100%) rename benchmarks/conformance/cases/{121-shadcn-dashboard => 127-shadcn-dashboard}/tanstack.ts (100%) rename benchmarks/conformance/cases/{122-shadcn-bar-multiple => 128-shadcn-bar-multiple}/case.json (94%) rename benchmarks/conformance/cases/{122-shadcn-bar-multiple => 128-shadcn-bar-multiple}/data.ts (100%) rename benchmarks/conformance/cases/{122-shadcn-bar-multiple => 128-shadcn-bar-multiple}/recharts-view.tsx (100%) rename benchmarks/conformance/cases/{122-shadcn-bar-multiple => 128-shadcn-bar-multiple}/recharts.ts (100%) rename benchmarks/conformance/cases/{122-shadcn-bar-multiple => 128-shadcn-bar-multiple}/tanstack-view.tsx (100%) rename benchmarks/conformance/cases/{122-shadcn-bar-multiple => 128-shadcn-bar-multiple}/tanstack.ts (100%) rename benchmarks/conformance/cases/{122-shadcn-bar-multiple => 128-shadcn-bar-multiple}/view.tsx (100%) rename benchmarks/conformance/cases/{123-shadcn-pie-donut-text => 129-shadcn-pie-donut-text}/case.json (94%) rename benchmarks/conformance/cases/{123-shadcn-pie-donut-text => 129-shadcn-pie-donut-text}/data.ts (100%) rename benchmarks/conformance/cases/{123-shadcn-pie-donut-text => 129-shadcn-pie-donut-text}/recharts-view.tsx (100%) rename benchmarks/conformance/cases/{123-shadcn-pie-donut-text => 129-shadcn-pie-donut-text}/recharts.ts (100%) rename benchmarks/conformance/cases/{123-shadcn-pie-donut-text => 129-shadcn-pie-donut-text}/tanstack-view.tsx (100%) rename benchmarks/conformance/cases/{123-shadcn-pie-donut-text => 129-shadcn-pie-donut-text}/tanstack.ts (100%) rename benchmarks/conformance/cases/{123-shadcn-pie-donut-text => 129-shadcn-pie-donut-text}/view.tsx (100%) rename benchmarks/conformance/cases/{124-shadcn-radar-multiple => 130-shadcn-radar-multiple}/case.json (94%) rename benchmarks/conformance/cases/{124-shadcn-radar-multiple => 130-shadcn-radar-multiple}/data.ts (100%) rename benchmarks/conformance/cases/{124-shadcn-radar-multiple => 130-shadcn-radar-multiple}/recharts-view.tsx (100%) rename benchmarks/conformance/cases/{124-shadcn-radar-multiple => 130-shadcn-radar-multiple}/recharts.ts (100%) rename benchmarks/conformance/cases/{124-shadcn-radar-multiple => 130-shadcn-radar-multiple}/tanstack-view.tsx (100%) rename benchmarks/conformance/cases/{124-shadcn-radar-multiple => 130-shadcn-radar-multiple}/tanstack.ts (100%) rename benchmarks/conformance/cases/{124-shadcn-radar-multiple => 130-shadcn-radar-multiple}/view.tsx (100%) rename benchmarks/conformance/cases/{125-shadcn-radial-text => 131-shadcn-radial-text}/case.json (94%) rename benchmarks/conformance/cases/{125-shadcn-radial-text => 131-shadcn-radial-text}/data.ts (100%) rename benchmarks/conformance/cases/{125-shadcn-radial-text => 131-shadcn-radial-text}/recharts-view.tsx (100%) rename benchmarks/conformance/cases/{125-shadcn-radial-text => 131-shadcn-radial-text}/recharts.ts (100%) rename benchmarks/conformance/cases/{125-shadcn-radial-text => 131-shadcn-radial-text}/tanstack-view.tsx (100%) rename benchmarks/conformance/cases/{125-shadcn-radial-text => 131-shadcn-radial-text}/tanstack.ts (100%) rename benchmarks/conformance/cases/{125-shadcn-radial-text => 131-shadcn-radial-text}/view.tsx (100%) rename benchmarks/conformance/cases/{126-shadcn-tooltip-advanced => 132-shadcn-tooltip-advanced}/case.json (94%) rename benchmarks/conformance/cases/{126-shadcn-tooltip-advanced => 132-shadcn-tooltip-advanced}/data.ts (100%) rename benchmarks/conformance/cases/{126-shadcn-tooltip-advanced => 132-shadcn-tooltip-advanced}/recharts-view.tsx (100%) rename benchmarks/conformance/cases/{126-shadcn-tooltip-advanced => 132-shadcn-tooltip-advanced}/recharts.ts (100%) rename benchmarks/conformance/cases/{126-shadcn-tooltip-advanced => 132-shadcn-tooltip-advanced}/tanstack-view.tsx (100%) rename benchmarks/conformance/cases/{126-shadcn-tooltip-advanced => 132-shadcn-tooltip-advanced}/tanstack.ts (100%) rename benchmarks/conformance/cases/{126-shadcn-tooltip-advanced => 132-shadcn-tooltip-advanced}/view.tsx (100%) rename benchmarks/conformance/cases/{127-shadcn-area-axes => 133-shadcn-area-axes}/case.json (80%) rename benchmarks/conformance/cases/{127-shadcn-area-axes => 133-shadcn-area-axes}/recharts.ts (100%) rename benchmarks/conformance/cases/{127-shadcn-area-axes => 133-shadcn-area-axes}/tanstack.ts (100%) rename benchmarks/conformance/cases/{128-shadcn-area-default => 134-shadcn-area-default}/case.json (81%) rename benchmarks/conformance/cases/{128-shadcn-area-default => 134-shadcn-area-default}/recharts.ts (100%) rename benchmarks/conformance/cases/{128-shadcn-area-default => 134-shadcn-area-default}/tanstack.ts (100%) rename benchmarks/conformance/cases/{129-shadcn-area-gradient => 135-shadcn-area-gradient}/case.json (80%) rename benchmarks/conformance/cases/{129-shadcn-area-gradient => 135-shadcn-area-gradient}/recharts.ts (100%) rename benchmarks/conformance/cases/{129-shadcn-area-gradient => 135-shadcn-area-gradient}/tanstack.ts (100%) rename benchmarks/conformance/cases/{130-shadcn-area-icons => 136-shadcn-area-icons}/case.json (80%) rename benchmarks/conformance/cases/{130-shadcn-area-icons => 136-shadcn-area-icons}/recharts.ts (100%) rename benchmarks/conformance/cases/{130-shadcn-area-icons => 136-shadcn-area-icons}/tanstack.ts (100%) rename benchmarks/conformance/cases/{131-shadcn-area-interactive => 137-shadcn-area-interactive}/case.json (80%) rename benchmarks/conformance/cases/{131-shadcn-area-interactive => 137-shadcn-area-interactive}/recharts.ts (100%) rename benchmarks/conformance/cases/{131-shadcn-area-interactive => 137-shadcn-area-interactive}/tanstack.ts (100%) rename benchmarks/conformance/cases/{132-shadcn-area-legend => 138-shadcn-area-legend}/case.json (80%) rename benchmarks/conformance/cases/{132-shadcn-area-legend => 138-shadcn-area-legend}/recharts.ts (100%) rename benchmarks/conformance/cases/{132-shadcn-area-legend => 138-shadcn-area-legend}/tanstack.ts (100%) rename benchmarks/conformance/cases/{133-shadcn-area-linear => 139-shadcn-area-linear}/case.json (80%) rename benchmarks/conformance/cases/{133-shadcn-area-linear => 139-shadcn-area-linear}/recharts.ts (100%) rename benchmarks/conformance/cases/{133-shadcn-area-linear => 139-shadcn-area-linear}/tanstack.ts (100%) rename benchmarks/conformance/cases/{134-shadcn-area-stacked-expand => 140-shadcn-area-stacked-expand}/case.json (80%) rename benchmarks/conformance/cases/{134-shadcn-area-stacked-expand => 140-shadcn-area-stacked-expand}/recharts.ts (100%) rename benchmarks/conformance/cases/{134-shadcn-area-stacked-expand => 140-shadcn-area-stacked-expand}/tanstack.ts (100%) rename benchmarks/conformance/cases/{135-shadcn-area-stacked => 141-shadcn-area-stacked}/case.json (80%) rename benchmarks/conformance/cases/{135-shadcn-area-stacked => 141-shadcn-area-stacked}/recharts.ts (100%) rename benchmarks/conformance/cases/{135-shadcn-area-stacked => 141-shadcn-area-stacked}/tanstack.ts (100%) rename benchmarks/conformance/cases/{136-shadcn-area-step => 142-shadcn-area-step}/case.json (80%) rename benchmarks/conformance/cases/{136-shadcn-area-step => 142-shadcn-area-step}/recharts.ts (100%) rename benchmarks/conformance/cases/{136-shadcn-area-step => 142-shadcn-area-step}/tanstack.ts (100%) rename benchmarks/conformance/cases/{137-shadcn-bar-active => 143-shadcn-bar-active}/case.json (80%) rename benchmarks/conformance/cases/{137-shadcn-bar-active => 143-shadcn-bar-active}/recharts.ts (100%) rename benchmarks/conformance/cases/{137-shadcn-bar-active => 143-shadcn-bar-active}/tanstack.ts (100%) rename benchmarks/conformance/cases/{138-shadcn-bar-default => 144-shadcn-bar-default}/case.json (81%) rename benchmarks/conformance/cases/{138-shadcn-bar-default => 144-shadcn-bar-default}/recharts.ts (100%) rename benchmarks/conformance/cases/{138-shadcn-bar-default => 144-shadcn-bar-default}/tanstack.ts (100%) rename benchmarks/conformance/cases/{139-shadcn-bar-horizontal => 145-shadcn-bar-horizontal}/case.json (80%) rename benchmarks/conformance/cases/{139-shadcn-bar-horizontal => 145-shadcn-bar-horizontal}/recharts.ts (100%) rename benchmarks/conformance/cases/{139-shadcn-bar-horizontal => 145-shadcn-bar-horizontal}/tanstack.ts (100%) rename benchmarks/conformance/cases/{140-shadcn-bar-interactive => 146-shadcn-bar-interactive}/case.json (80%) rename benchmarks/conformance/cases/{140-shadcn-bar-interactive => 146-shadcn-bar-interactive}/recharts.ts (100%) rename benchmarks/conformance/cases/{140-shadcn-bar-interactive => 146-shadcn-bar-interactive}/tanstack.ts (100%) rename benchmarks/conformance/cases/{141-shadcn-bar-label-custom => 147-shadcn-bar-label-custom}/case.json (80%) rename benchmarks/conformance/cases/{141-shadcn-bar-label-custom => 147-shadcn-bar-label-custom}/recharts.ts (100%) rename benchmarks/conformance/cases/{141-shadcn-bar-label-custom => 147-shadcn-bar-label-custom}/tanstack.ts (100%) rename benchmarks/conformance/cases/{142-shadcn-bar-label => 148-shadcn-bar-label}/case.json (80%) rename benchmarks/conformance/cases/{142-shadcn-bar-label => 148-shadcn-bar-label}/recharts.ts (100%) rename benchmarks/conformance/cases/{142-shadcn-bar-label => 148-shadcn-bar-label}/tanstack.ts (100%) rename benchmarks/conformance/cases/{143-shadcn-bar-mixed => 149-shadcn-bar-mixed}/case.json (80%) rename benchmarks/conformance/cases/{143-shadcn-bar-mixed => 149-shadcn-bar-mixed}/recharts.ts (100%) rename benchmarks/conformance/cases/{143-shadcn-bar-mixed => 149-shadcn-bar-mixed}/tanstack.ts (100%) rename benchmarks/conformance/cases/{144-shadcn-bar-negative => 150-shadcn-bar-negative}/case.json (80%) rename benchmarks/conformance/cases/{144-shadcn-bar-negative => 150-shadcn-bar-negative}/recharts.ts (100%) rename benchmarks/conformance/cases/{144-shadcn-bar-negative => 150-shadcn-bar-negative}/tanstack.ts (100%) rename benchmarks/conformance/cases/{145-shadcn-bar-stacked => 151-shadcn-bar-stacked}/case.json (80%) rename benchmarks/conformance/cases/{145-shadcn-bar-stacked => 151-shadcn-bar-stacked}/recharts.ts (100%) rename benchmarks/conformance/cases/{145-shadcn-bar-stacked => 151-shadcn-bar-stacked}/tanstack.ts (100%) rename benchmarks/conformance/cases/{146-shadcn-line-default => 152-shadcn-line-default}/case.json (81%) rename benchmarks/conformance/cases/{146-shadcn-line-default => 152-shadcn-line-default}/recharts.ts (100%) rename benchmarks/conformance/cases/{146-shadcn-line-default => 152-shadcn-line-default}/tanstack.ts (100%) rename benchmarks/conformance/cases/{147-shadcn-line-dots-colors => 153-shadcn-line-dots-colors}/case.json (80%) rename benchmarks/conformance/cases/{147-shadcn-line-dots-colors => 153-shadcn-line-dots-colors}/recharts.ts (100%) rename benchmarks/conformance/cases/{147-shadcn-line-dots-colors => 153-shadcn-line-dots-colors}/tanstack.ts (100%) rename benchmarks/conformance/cases/{148-shadcn-line-dots-custom => 154-shadcn-line-dots-custom}/case.json (80%) rename benchmarks/conformance/cases/{148-shadcn-line-dots-custom => 154-shadcn-line-dots-custom}/recharts.ts (100%) rename benchmarks/conformance/cases/{148-shadcn-line-dots-custom => 154-shadcn-line-dots-custom}/tanstack.ts (100%) rename benchmarks/conformance/cases/{149-shadcn-line-dots => 155-shadcn-line-dots}/case.json (80%) rename benchmarks/conformance/cases/{149-shadcn-line-dots => 155-shadcn-line-dots}/recharts.ts (100%) rename benchmarks/conformance/cases/{149-shadcn-line-dots => 155-shadcn-line-dots}/tanstack.ts (100%) rename benchmarks/conformance/cases/{150-shadcn-line-interactive => 156-shadcn-line-interactive}/case.json (80%) rename benchmarks/conformance/cases/{150-shadcn-line-interactive => 156-shadcn-line-interactive}/recharts.ts (100%) rename benchmarks/conformance/cases/{150-shadcn-line-interactive => 156-shadcn-line-interactive}/tanstack.ts (100%) rename benchmarks/conformance/cases/{151-shadcn-line-label-custom => 157-shadcn-line-label-custom}/case.json (80%) rename benchmarks/conformance/cases/{151-shadcn-line-label-custom => 157-shadcn-line-label-custom}/recharts.ts (100%) rename benchmarks/conformance/cases/{151-shadcn-line-label-custom => 157-shadcn-line-label-custom}/tanstack.ts (100%) rename benchmarks/conformance/cases/{152-shadcn-line-label => 158-shadcn-line-label}/case.json (80%) rename benchmarks/conformance/cases/{152-shadcn-line-label => 158-shadcn-line-label}/recharts.ts (100%) rename benchmarks/conformance/cases/{152-shadcn-line-label => 158-shadcn-line-label}/tanstack.ts (100%) rename benchmarks/conformance/cases/{153-shadcn-line-linear => 159-shadcn-line-linear}/case.json (80%) rename benchmarks/conformance/cases/{153-shadcn-line-linear => 159-shadcn-line-linear}/recharts.ts (100%) rename benchmarks/conformance/cases/{153-shadcn-line-linear => 159-shadcn-line-linear}/tanstack.ts (100%) rename benchmarks/conformance/cases/{154-shadcn-line-multiple => 160-shadcn-line-multiple}/case.json (80%) rename benchmarks/conformance/cases/{154-shadcn-line-multiple => 160-shadcn-line-multiple}/recharts.ts (100%) rename benchmarks/conformance/cases/{154-shadcn-line-multiple => 160-shadcn-line-multiple}/tanstack.ts (100%) rename benchmarks/conformance/cases/{155-shadcn-line-step => 161-shadcn-line-step}/case.json (80%) rename benchmarks/conformance/cases/{155-shadcn-line-step => 161-shadcn-line-step}/recharts.ts (100%) rename benchmarks/conformance/cases/{155-shadcn-line-step => 161-shadcn-line-step}/tanstack.ts (100%) rename benchmarks/conformance/cases/{156-shadcn-pie-donut-active => 162-shadcn-pie-donut-active}/case.json (80%) rename benchmarks/conformance/cases/{156-shadcn-pie-donut-active => 162-shadcn-pie-donut-active}/recharts.ts (100%) rename benchmarks/conformance/cases/{156-shadcn-pie-donut-active => 162-shadcn-pie-donut-active}/tanstack.ts (100%) rename benchmarks/conformance/cases/{157-shadcn-pie-donut => 163-shadcn-pie-donut}/case.json (80%) rename benchmarks/conformance/cases/{157-shadcn-pie-donut => 163-shadcn-pie-donut}/recharts.ts (100%) rename benchmarks/conformance/cases/{157-shadcn-pie-donut => 163-shadcn-pie-donut}/tanstack.ts (100%) rename benchmarks/conformance/cases/{158-shadcn-pie-interactive => 164-shadcn-pie-interactive}/case.json (80%) rename benchmarks/conformance/cases/{158-shadcn-pie-interactive => 164-shadcn-pie-interactive}/recharts.ts (100%) rename benchmarks/conformance/cases/{158-shadcn-pie-interactive => 164-shadcn-pie-interactive}/tanstack.ts (100%) rename benchmarks/conformance/cases/{159-shadcn-pie-label-custom => 165-shadcn-pie-label-custom}/case.json (80%) rename benchmarks/conformance/cases/{159-shadcn-pie-label-custom => 165-shadcn-pie-label-custom}/recharts.ts (100%) rename benchmarks/conformance/cases/{159-shadcn-pie-label-custom => 165-shadcn-pie-label-custom}/tanstack.ts (100%) rename benchmarks/conformance/cases/{160-shadcn-pie-label-list => 166-shadcn-pie-label-list}/case.json (80%) rename benchmarks/conformance/cases/{160-shadcn-pie-label-list => 166-shadcn-pie-label-list}/recharts.ts (100%) rename benchmarks/conformance/cases/{160-shadcn-pie-label-list => 166-shadcn-pie-label-list}/tanstack.ts (100%) rename benchmarks/conformance/cases/{161-shadcn-pie-label => 167-shadcn-pie-label}/case.json (80%) rename benchmarks/conformance/cases/{161-shadcn-pie-label => 167-shadcn-pie-label}/recharts.ts (100%) rename benchmarks/conformance/cases/{161-shadcn-pie-label => 167-shadcn-pie-label}/tanstack.ts (100%) rename benchmarks/conformance/cases/{162-shadcn-pie-legend => 168-shadcn-pie-legend}/case.json (80%) rename benchmarks/conformance/cases/{162-shadcn-pie-legend => 168-shadcn-pie-legend}/recharts.ts (100%) rename benchmarks/conformance/cases/{162-shadcn-pie-legend => 168-shadcn-pie-legend}/tanstack.ts (100%) rename benchmarks/conformance/cases/{163-shadcn-pie-separator-none => 169-shadcn-pie-separator-none}/case.json (80%) rename benchmarks/conformance/cases/{163-shadcn-pie-separator-none => 169-shadcn-pie-separator-none}/recharts.ts (100%) rename benchmarks/conformance/cases/{163-shadcn-pie-separator-none => 169-shadcn-pie-separator-none}/tanstack.ts (100%) rename benchmarks/conformance/cases/{164-shadcn-pie-simple => 170-shadcn-pie-simple}/case.json (81%) rename benchmarks/conformance/cases/{164-shadcn-pie-simple => 170-shadcn-pie-simple}/recharts.ts (100%) rename benchmarks/conformance/cases/{164-shadcn-pie-simple => 170-shadcn-pie-simple}/tanstack.ts (100%) rename benchmarks/conformance/cases/{165-shadcn-pie-stacked => 171-shadcn-pie-stacked}/case.json (80%) rename benchmarks/conformance/cases/{165-shadcn-pie-stacked => 171-shadcn-pie-stacked}/recharts.ts (100%) rename benchmarks/conformance/cases/{165-shadcn-pie-stacked => 171-shadcn-pie-stacked}/tanstack.ts (100%) rename benchmarks/conformance/cases/{166-shadcn-radar-default => 172-shadcn-radar-default}/case.json (81%) rename benchmarks/conformance/cases/{166-shadcn-radar-default => 172-shadcn-radar-default}/recharts.ts (100%) rename benchmarks/conformance/cases/{166-shadcn-radar-default => 172-shadcn-radar-default}/tanstack.ts (100%) rename benchmarks/conformance/cases/{167-shadcn-radar-dots => 173-shadcn-radar-dots}/case.json (80%) rename benchmarks/conformance/cases/{167-shadcn-radar-dots => 173-shadcn-radar-dots}/recharts.ts (100%) rename benchmarks/conformance/cases/{167-shadcn-radar-dots => 173-shadcn-radar-dots}/tanstack.ts (100%) rename benchmarks/conformance/cases/{168-shadcn-radar-grid-circle-fill => 174-shadcn-radar-grid-circle-fill}/case.json (80%) rename benchmarks/conformance/cases/{168-shadcn-radar-grid-circle-fill => 174-shadcn-radar-grid-circle-fill}/recharts.ts (100%) rename benchmarks/conformance/cases/{168-shadcn-radar-grid-circle-fill => 174-shadcn-radar-grid-circle-fill}/tanstack.ts (100%) rename benchmarks/conformance/cases/{169-shadcn-radar-grid-circle-no-lines => 175-shadcn-radar-grid-circle-no-lines}/case.json (80%) rename benchmarks/conformance/cases/{169-shadcn-radar-grid-circle-no-lines => 175-shadcn-radar-grid-circle-no-lines}/recharts.ts (100%) rename benchmarks/conformance/cases/{169-shadcn-radar-grid-circle-no-lines => 175-shadcn-radar-grid-circle-no-lines}/tanstack.ts (100%) rename benchmarks/conformance/cases/{170-shadcn-radar-grid-circle => 176-shadcn-radar-grid-circle}/case.json (80%) rename benchmarks/conformance/cases/{170-shadcn-radar-grid-circle => 176-shadcn-radar-grid-circle}/recharts.ts (100%) rename benchmarks/conformance/cases/{170-shadcn-radar-grid-circle => 176-shadcn-radar-grid-circle}/tanstack.ts (100%) rename benchmarks/conformance/cases/{171-shadcn-radar-grid-custom => 177-shadcn-radar-grid-custom}/case.json (80%) rename benchmarks/conformance/cases/{171-shadcn-radar-grid-custom => 177-shadcn-radar-grid-custom}/recharts.ts (100%) rename benchmarks/conformance/cases/{171-shadcn-radar-grid-custom => 177-shadcn-radar-grid-custom}/tanstack.ts (100%) rename benchmarks/conformance/cases/{172-shadcn-radar-grid-fill => 178-shadcn-radar-grid-fill}/case.json (80%) rename benchmarks/conformance/cases/{172-shadcn-radar-grid-fill => 178-shadcn-radar-grid-fill}/recharts.ts (100%) rename benchmarks/conformance/cases/{172-shadcn-radar-grid-fill => 178-shadcn-radar-grid-fill}/tanstack.ts (100%) rename benchmarks/conformance/cases/{173-shadcn-radar-grid-none => 179-shadcn-radar-grid-none}/case.json (80%) rename benchmarks/conformance/cases/{173-shadcn-radar-grid-none => 179-shadcn-radar-grid-none}/recharts.ts (100%) rename benchmarks/conformance/cases/{173-shadcn-radar-grid-none => 179-shadcn-radar-grid-none}/tanstack.ts (100%) rename benchmarks/conformance/cases/{174-shadcn-radar-icons => 180-shadcn-radar-icons}/case.json (80%) rename benchmarks/conformance/cases/{174-shadcn-radar-icons => 180-shadcn-radar-icons}/recharts.ts (100%) rename benchmarks/conformance/cases/{174-shadcn-radar-icons => 180-shadcn-radar-icons}/tanstack.ts (100%) rename benchmarks/conformance/cases/{175-shadcn-radar-label-custom => 181-shadcn-radar-label-custom}/case.json (80%) rename benchmarks/conformance/cases/{175-shadcn-radar-label-custom => 181-shadcn-radar-label-custom}/recharts.ts (100%) rename benchmarks/conformance/cases/{175-shadcn-radar-label-custom => 181-shadcn-radar-label-custom}/tanstack.ts (100%) rename benchmarks/conformance/cases/{176-shadcn-radar-legend => 182-shadcn-radar-legend}/case.json (80%) rename benchmarks/conformance/cases/{176-shadcn-radar-legend => 182-shadcn-radar-legend}/recharts.ts (100%) rename benchmarks/conformance/cases/{176-shadcn-radar-legend => 182-shadcn-radar-legend}/tanstack.ts (100%) rename benchmarks/conformance/cases/{177-shadcn-radar-lines-only => 183-shadcn-radar-lines-only}/case.json (80%) rename benchmarks/conformance/cases/{177-shadcn-radar-lines-only => 183-shadcn-radar-lines-only}/recharts.ts (100%) rename benchmarks/conformance/cases/{177-shadcn-radar-lines-only => 183-shadcn-radar-lines-only}/tanstack.ts (100%) rename benchmarks/conformance/cases/{178-shadcn-radar-radius => 184-shadcn-radar-radius}/case.json (80%) rename benchmarks/conformance/cases/{178-shadcn-radar-radius => 184-shadcn-radar-radius}/recharts.ts (100%) rename benchmarks/conformance/cases/{178-shadcn-radar-radius => 184-shadcn-radar-radius}/tanstack.ts (100%) rename benchmarks/conformance/cases/{179-shadcn-radial-grid => 185-shadcn-radial-grid}/case.json (82%) rename benchmarks/conformance/cases/{179-shadcn-radial-grid => 185-shadcn-radial-grid}/recharts.ts (100%) rename benchmarks/conformance/cases/{179-shadcn-radial-grid => 185-shadcn-radial-grid}/tanstack.ts (100%) rename benchmarks/conformance/cases/{180-shadcn-radial-label => 186-shadcn-radial-label}/case.json (82%) rename benchmarks/conformance/cases/{180-shadcn-radial-label => 186-shadcn-radial-label}/recharts.ts (100%) rename benchmarks/conformance/cases/{180-shadcn-radial-label => 186-shadcn-radial-label}/tanstack.ts (100%) rename benchmarks/conformance/cases/{181-shadcn-radial-shape => 187-shadcn-radial-shape}/case.json (82%) rename benchmarks/conformance/cases/{181-shadcn-radial-shape => 187-shadcn-radial-shape}/recharts.ts (100%) rename benchmarks/conformance/cases/{181-shadcn-radial-shape => 187-shadcn-radial-shape}/tanstack.ts (100%) rename benchmarks/conformance/cases/{182-shadcn-radial-simple => 188-shadcn-radial-simple}/case.json (83%) rename benchmarks/conformance/cases/{182-shadcn-radial-simple => 188-shadcn-radial-simple}/recharts.ts (100%) rename benchmarks/conformance/cases/{182-shadcn-radial-simple => 188-shadcn-radial-simple}/tanstack.ts (100%) rename benchmarks/conformance/cases/{183-shadcn-radial-stacked => 189-shadcn-radial-stacked}/case.json (82%) rename benchmarks/conformance/cases/{183-shadcn-radial-stacked => 189-shadcn-radial-stacked}/recharts.ts (100%) rename benchmarks/conformance/cases/{183-shadcn-radial-stacked => 189-shadcn-radial-stacked}/tanstack.ts (100%) rename benchmarks/conformance/cases/{184-shadcn-tooltip-default => 190-shadcn-tooltip-default}/case.json (81%) rename benchmarks/conformance/cases/{184-shadcn-tooltip-default => 190-shadcn-tooltip-default}/recharts.ts (100%) rename benchmarks/conformance/cases/{184-shadcn-tooltip-default => 190-shadcn-tooltip-default}/tanstack.ts (100%) rename benchmarks/conformance/cases/{185-shadcn-tooltip-formatter => 191-shadcn-tooltip-formatter}/case.json (80%) rename benchmarks/conformance/cases/{185-shadcn-tooltip-formatter => 191-shadcn-tooltip-formatter}/recharts.ts (100%) rename benchmarks/conformance/cases/{185-shadcn-tooltip-formatter => 191-shadcn-tooltip-formatter}/tanstack.ts (100%) rename benchmarks/conformance/cases/{186-shadcn-tooltip-icons => 192-shadcn-tooltip-icons}/case.json (80%) rename benchmarks/conformance/cases/{186-shadcn-tooltip-icons => 192-shadcn-tooltip-icons}/recharts.ts (100%) rename benchmarks/conformance/cases/{186-shadcn-tooltip-icons => 192-shadcn-tooltip-icons}/tanstack.ts (100%) rename benchmarks/conformance/cases/{187-shadcn-tooltip-indicator-line => 193-shadcn-tooltip-indicator-line}/case.json (80%) rename benchmarks/conformance/cases/{187-shadcn-tooltip-indicator-line => 193-shadcn-tooltip-indicator-line}/recharts.ts (100%) rename benchmarks/conformance/cases/{187-shadcn-tooltip-indicator-line => 193-shadcn-tooltip-indicator-line}/tanstack.ts (100%) rename benchmarks/conformance/cases/{188-shadcn-tooltip-indicator-none => 194-shadcn-tooltip-indicator-none}/case.json (80%) rename benchmarks/conformance/cases/{188-shadcn-tooltip-indicator-none => 194-shadcn-tooltip-indicator-none}/recharts.ts (100%) rename benchmarks/conformance/cases/{188-shadcn-tooltip-indicator-none => 194-shadcn-tooltip-indicator-none}/tanstack.ts (100%) rename benchmarks/conformance/cases/{189-shadcn-tooltip-label-custom => 195-shadcn-tooltip-label-custom}/case.json (80%) rename benchmarks/conformance/cases/{189-shadcn-tooltip-label-custom => 195-shadcn-tooltip-label-custom}/recharts.ts (100%) rename benchmarks/conformance/cases/{189-shadcn-tooltip-label-custom => 195-shadcn-tooltip-label-custom}/tanstack.ts (100%) rename benchmarks/conformance/cases/{190-shadcn-tooltip-label-formatter => 196-shadcn-tooltip-label-formatter}/case.json (80%) rename benchmarks/conformance/cases/{190-shadcn-tooltip-label-formatter => 196-shadcn-tooltip-label-formatter}/recharts.ts (100%) rename benchmarks/conformance/cases/{190-shadcn-tooltip-label-formatter => 196-shadcn-tooltip-label-formatter}/tanstack.ts (100%) rename benchmarks/conformance/cases/{191-shadcn-tooltip-label-none => 197-shadcn-tooltip-label-none}/case.json (80%) rename benchmarks/conformance/cases/{191-shadcn-tooltip-label-none => 197-shadcn-tooltip-label-none}/recharts.ts (100%) rename benchmarks/conformance/cases/{191-shadcn-tooltip-label-none => 197-shadcn-tooltip-label-none}/tanstack.ts (100%) rename benchmarks/conformance/previews/{121-shadcn-dashboard.svg => 127-shadcn-dashboard.svg} (100%) rename benchmarks/conformance/previews/{122-shadcn-bar-multiple.svg => 128-shadcn-bar-multiple.svg} (100%) rename benchmarks/conformance/previews/{123-shadcn-pie-donut-text.svg => 129-shadcn-pie-donut-text.svg} (100%) rename benchmarks/conformance/previews/{124-shadcn-radar-multiple.svg => 130-shadcn-radar-multiple.svg} (56%) rename benchmarks/conformance/previews/{125-shadcn-radial-text.svg => 131-shadcn-radial-text.svg} (100%) rename benchmarks/conformance/previews/{126-shadcn-tooltip-advanced.svg => 132-shadcn-tooltip-advanced.svg} (100%) rename benchmarks/conformance/previews/{127-shadcn-area-axes.svg => 133-shadcn-area-axes.svg} (100%) rename benchmarks/conformance/previews/{128-shadcn-area-default.svg => 134-shadcn-area-default.svg} (100%) rename benchmarks/conformance/previews/{129-shadcn-area-gradient.svg => 135-shadcn-area-gradient.svg} (100%) rename benchmarks/conformance/previews/{130-shadcn-area-icons.svg => 136-shadcn-area-icons.svg} (100%) rename benchmarks/conformance/previews/{131-shadcn-area-interactive.svg => 137-shadcn-area-interactive.svg} (100%) rename benchmarks/conformance/previews/{132-shadcn-area-legend.svg => 138-shadcn-area-legend.svg} (100%) rename benchmarks/conformance/previews/{133-shadcn-area-linear.svg => 139-shadcn-area-linear.svg} (100%) rename benchmarks/conformance/previews/{134-shadcn-area-stacked-expand.svg => 140-shadcn-area-stacked-expand.svg} (100%) delete mode 100644 benchmarks/conformance/previews/140-shadcn-bar-interactive.svg rename benchmarks/conformance/previews/{135-shadcn-area-stacked.svg => 141-shadcn-area-stacked.svg} (100%) rename benchmarks/conformance/previews/{136-shadcn-area-step.svg => 142-shadcn-area-step.svg} (100%) rename benchmarks/conformance/previews/{137-shadcn-bar-active.svg => 143-shadcn-bar-active.svg} (100%) rename benchmarks/conformance/previews/{138-shadcn-bar-default.svg => 144-shadcn-bar-default.svg} (100%) rename benchmarks/conformance/previews/{139-shadcn-bar-horizontal.svg => 145-shadcn-bar-horizontal.svg} (100%) create mode 100644 benchmarks/conformance/previews/146-shadcn-bar-interactive.svg rename benchmarks/conformance/previews/{141-shadcn-bar-label-custom.svg => 147-shadcn-bar-label-custom.svg} (100%) rename benchmarks/conformance/previews/{142-shadcn-bar-label.svg => 148-shadcn-bar-label.svg} (100%) rename benchmarks/conformance/previews/{143-shadcn-bar-mixed.svg => 149-shadcn-bar-mixed.svg} (100%) rename benchmarks/conformance/previews/{144-shadcn-bar-negative.svg => 150-shadcn-bar-negative.svg} (100%) delete mode 100644 benchmarks/conformance/previews/150-shadcn-line-interactive.svg rename benchmarks/conformance/previews/{145-shadcn-bar-stacked.svg => 151-shadcn-bar-stacked.svg} (100%) rename benchmarks/conformance/previews/{146-shadcn-line-default.svg => 152-shadcn-line-default.svg} (100%) rename benchmarks/conformance/previews/{147-shadcn-line-dots-colors.svg => 153-shadcn-line-dots-colors.svg} (100%) rename benchmarks/conformance/previews/{148-shadcn-line-dots-custom.svg => 154-shadcn-line-dots-custom.svg} (100%) rename benchmarks/conformance/previews/{149-shadcn-line-dots.svg => 155-shadcn-line-dots.svg} (100%) create mode 100644 benchmarks/conformance/previews/156-shadcn-line-interactive.svg rename benchmarks/conformance/previews/{151-shadcn-line-label-custom.svg => 157-shadcn-line-label-custom.svg} (100%) rename benchmarks/conformance/previews/{152-shadcn-line-label.svg => 158-shadcn-line-label.svg} (100%) rename benchmarks/conformance/previews/{153-shadcn-line-linear.svg => 159-shadcn-line-linear.svg} (100%) rename benchmarks/conformance/previews/{154-shadcn-line-multiple.svg => 160-shadcn-line-multiple.svg} (100%) rename benchmarks/conformance/previews/{155-shadcn-line-step.svg => 161-shadcn-line-step.svg} (100%) rename benchmarks/conformance/previews/{156-shadcn-pie-donut-active.svg => 162-shadcn-pie-donut-active.svg} (100%) rename benchmarks/conformance/previews/{157-shadcn-pie-donut.svg => 163-shadcn-pie-donut.svg} (100%) rename benchmarks/conformance/previews/{158-shadcn-pie-interactive.svg => 164-shadcn-pie-interactive.svg} (100%) rename benchmarks/conformance/previews/{159-shadcn-pie-label-custom.svg => 165-shadcn-pie-label-custom.svg} (100%) rename benchmarks/conformance/previews/{160-shadcn-pie-label-list.svg => 166-shadcn-pie-label-list.svg} (100%) rename benchmarks/conformance/previews/{161-shadcn-pie-label.svg => 167-shadcn-pie-label.svg} (100%) rename benchmarks/conformance/previews/{162-shadcn-pie-legend.svg => 168-shadcn-pie-legend.svg} (100%) rename benchmarks/conformance/previews/{163-shadcn-pie-separator-none.svg => 169-shadcn-pie-separator-none.svg} (100%) rename benchmarks/conformance/previews/{164-shadcn-pie-simple.svg => 170-shadcn-pie-simple.svg} (100%) rename benchmarks/conformance/previews/{165-shadcn-pie-stacked.svg => 171-shadcn-pie-stacked.svg} (100%) rename benchmarks/conformance/previews/{166-shadcn-radar-default.svg => 172-shadcn-radar-default.svg} (63%) rename benchmarks/conformance/previews/{167-shadcn-radar-dots.svg => 173-shadcn-radar-dots.svg} (53%) delete mode 100644 benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg rename benchmarks/conformance/previews/{168-shadcn-radar-grid-circle-fill.svg => 174-shadcn-radar-grid-circle-fill.svg} (63%) rename benchmarks/conformance/previews/{169-shadcn-radar-grid-circle-no-lines.svg => 175-shadcn-radar-grid-circle-no-lines.svg} (52%) delete mode 100644 benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg rename benchmarks/conformance/previews/{170-shadcn-radar-grid-circle.svg => 176-shadcn-radar-grid-circle.svg} (52%) rename benchmarks/conformance/previews/{171-shadcn-radar-grid-custom.svg => 177-shadcn-radar-grid-custom.svg} (58%) rename benchmarks/conformance/previews/{172-shadcn-radar-grid-fill.svg => 178-shadcn-radar-grid-fill.svg} (64%) create mode 100644 benchmarks/conformance/previews/179-shadcn-radar-grid-none.svg rename benchmarks/conformance/previews/{174-shadcn-radar-icons.svg => 180-shadcn-radar-icons.svg} (58%) create mode 100644 benchmarks/conformance/previews/181-shadcn-radar-label-custom.svg rename benchmarks/conformance/previews/{176-shadcn-radar-legend.svg => 182-shadcn-radar-legend.svg} (58%) rename benchmarks/conformance/previews/{177-shadcn-radar-lines-only.svg => 183-shadcn-radar-lines-only.svg} (58%) rename benchmarks/conformance/previews/{178-shadcn-radar-radius.svg => 184-shadcn-radar-radius.svg} (54%) rename benchmarks/conformance/previews/{179-shadcn-radial-grid.svg => 185-shadcn-radial-grid.svg} (100%) rename benchmarks/conformance/previews/{180-shadcn-radial-label.svg => 186-shadcn-radial-label.svg} (100%) rename benchmarks/conformance/previews/{181-shadcn-radial-shape.svg => 187-shadcn-radial-shape.svg} (100%) rename benchmarks/conformance/previews/{182-shadcn-radial-simple.svg => 188-shadcn-radial-simple.svg} (100%) rename benchmarks/conformance/previews/{183-shadcn-radial-stacked.svg => 189-shadcn-radial-stacked.svg} (100%) rename benchmarks/conformance/previews/{184-shadcn-tooltip-default.svg => 190-shadcn-tooltip-default.svg} (100%) rename benchmarks/conformance/previews/{185-shadcn-tooltip-formatter.svg => 191-shadcn-tooltip-formatter.svg} (100%) rename benchmarks/conformance/previews/{186-shadcn-tooltip-icons.svg => 192-shadcn-tooltip-icons.svg} (100%) rename benchmarks/conformance/previews/{187-shadcn-tooltip-indicator-line.svg => 193-shadcn-tooltip-indicator-line.svg} (100%) rename benchmarks/conformance/previews/{188-shadcn-tooltip-indicator-none.svg => 194-shadcn-tooltip-indicator-none.svg} (100%) rename benchmarks/conformance/previews/{189-shadcn-tooltip-label-custom.svg => 195-shadcn-tooltip-label-custom.svg} (100%) rename benchmarks/conformance/previews/{190-shadcn-tooltip-label-formatter.svg => 196-shadcn-tooltip-label-formatter.svg} (100%) rename benchmarks/conformance/previews/{191-shadcn-tooltip-label-none.svg => 197-shadcn-tooltip-label-none.svg} (100%) diff --git a/API-FRICTION.md b/API-FRICTION.md index fd4bb435..65b3bfcc 100644 --- a/API-FRICTION.md +++ b/API-FRICTION.md @@ -321,18 +321,6 @@ Each entry records: | F-282 | Collection actions followed the viewport instead of the card | Application | resolved | | F-283 | Interactive chart shells rendered inert controls | Application | resolved | | F-284 | Stagger timing required repeated callback arithmetic | API | resolved | -| F-273 | Catalog cases could not declare an application viewport height | Tooling | resolved | -| F-274 | Upstream example clones had no drift boundary | Tooling | resolved | -| F-275 | Preview transparency validation rejected semantic IDs | Tooling | resolved | -| F-276 | Definition coverage assumed a combined renderer module | Tooling | resolved | -| F-277 | Preview errors omitted the failing catalog case | Tooling | resolved | -| F-278 | Renderer checks could validate matching approximations | Tooling | resolved | -| F-279 | Radial grids could not render authored fills | API | resolved | -| F-280 | Chart motion did not reach HTML tooltips | API | resolved | -| F-281 | Bars could not express an authored outline | API | resolved | -| F-282 | Collection actions followed the viewport instead of the card | Application | resolved | -| F-283 | Interactive chart shells rendered inert controls | Application | resolved | -| F-284 | Stagger timing required repeated callback arithmetic | API | resolved | ## Findings @@ -8243,217 +8231,3 @@ Each entry records: filters, offsets, invalid inputs, native spread, and field precedence. The isolated entry is 0.26 KiB gzip and retains neither the SVG motion renderer nor spring physics. - -### F-273 — Catalog cases could not declare an application viewport height - -- Status: resolved -- Severity: low -- Owner: Tooling -- Observed in: reproducing shadcn/ui's dashboard as a renderer-comparison case -- Friction: the catalog fixed every case at 480 pixels tall, which clipped a - full application shell and made its Recharts and TanStack renderers impossible - to inspect as one shared viewport. -- Decision: allow validated case metadata to declare an optional height and use - it for catalog cards, mounts, updates, and embeds while retaining 480 pixels - as the default. -- Verification: metadata tests accept the dashboard's 860-pixel height, the - conformance example build passes, and Chromium renders both comparison panels - at 960 by 860 pixels without root overflow. - -### F-274 — Upstream example clones had no drift boundary - -- Status: resolved -- Severity: medium -- Owner: Tooling -- Observed in: spiking a maintained TanStack clone of the shadcn chart catalog -- Friction: an example's source URL recorded where it came from, but did not - identify the exact upstream revision or detect changed, added, and removed - examples. Visual clones could silently diverge from shadcn's 70-file catalog. -- Decision: pin the upstream commit, registry blob, and each example's Git blob - SHA in one manifest. Keep normal validation offline and add an explicit remote - drift command that compares the manifest with shadcn's current Git tree. -- Verification: the inventory test requires all 70 files, exact family counts, - unique local mappings, and reports synthetic source changes, additions, and - removals. The offline command verifies all five spike mappings. - -### F-275 — Preview transparency validation rejected semantic IDs - -- Status: resolved -- Severity: low -- Owner: Tooling -- Observed in: generating the shadcn radial-text catalog preview -- Friction: the preview validator searched the complete SVG string for - `background:`. A valid semantic key such as `radial-background:object` - therefore failed the transparent-background gate. -- Decision: detect an actual CSS `background` declaration after a rule or - declaration boundary, without reserving ordinary chart IDs. -- Verification: the preview regression accepts the semantic background key and - continues to reject an authored CSS background declaration. - -### F-276 — Definition-shape coverage assumed a combined renderer module - -- Status: resolved -- Severity: low -- Owner: Tooling -- Observed in: isolating TanStack and Recharts bundle graphs for the shadcn - catalog spike -- Friction: the definition-shape gate scanned `tanstack.ts`, `view.tsx`, and - `chart.ts`, but ignored a renderer-specific `tanstack-view.tsx`. Splitting the - two implementations for honest bundle measurement made five valid static - definitions disappear from coverage. -- Decision: include renderer-specific TanStack view modules in the definition - scanner while retaining the existing entry and shared-view conventions. -- Verification: the shape gate finds all 122 definitions again: 117 static and - five responsive. - -### F-277 — Preview errors omitted the failing catalog case - -- Status: resolved -- Severity: low -- Owner: Tooling -- Observed in: generating static previews for the 70-case shadcn collection -- Friction: the renderer's clipped-label diagnostic described the labels and - bounds but omitted the case ID and theme. A full-catalog run therefore could - not identify which new example needed a margin correction. -- Decision: wrap presentation-validation failures with the current case ID and - theme while retaining the original error as the cause. -- Verification: the next full preview run reports any failed case directly. - -### F-278 — Renderer conformance could validate two matching approximations - -- Status: resolved -- Severity: high -- Owner: Tooling -- Observed in: expanding the shadcn chart collection from five measured cases - to all 70 upstream examples -- Friction: geometry and paint checks compared TanStack Charts with a local - Recharts implementation built from the same simplified family spec. Both - renderers could agree while their card, data, layout, and variant behavior - visibly differed from the official shadcn output. The later whole-card gate - still allowed a wrong chart type to pass because white card pixels dominated - the score. -- Decision: capture every official shadcn card at a fixed 640-pixel viewport - and compare the complete TanStack card screenshot against that committed - baseline. Require at least 90% pixel similarity and 70% similarity over the - union of non-white pixels in a fixed chart region for every case; retain - failed local and diff images for review. -- Verification: the full gate passes all 70 whole-card and chart-region checks. - Whole-card similarity averages above 97%, and every chart-region score is - above 75%. The earlier wrong radial-stacked implementation would fail at - 20.9%. The pinned inventory check also requires one baseline image per - catalog entry and an ordered 70-case reference manifest. - -### F-279 — Radial grids could not render authored fills - -- Status: resolved -- Severity: medium -- Owner: API -- Observed in: reproducing shadcn's filled polygon and circle radar grids -- Friction: `RadialGridOptions` exposed only stroke styling and the renderer - hard-coded every ring to `fill: none`. Shadcn's filled-grid variants therefore - required a separate approximation instead of expressing their source grid. -- Decision: expose `fill` and `fillOpacity` on `RadialGridOptions` and forward - both values to every generated ring. -- Verification: the polar scene test asserts an authored radial-grid fill and - opacity, and the two filled shadcn radar variants pass the chart-foreground - visual gate above 97%. - -### F-280 — Chart motion did not reach HTML tooltips - -- Status: resolved -- Severity: medium -- Owner: API -- Observed in: applying the shadcn spring preset to the complete chart catalog -- Friction: chart and mark motion animated renderer geometry, but the HTML - tooltip was owned by a separate extension and appeared, moved, and vanished - immediately. The first tooltip motion pass also restarted every move from the - prior target instead of the spring's live position and velocity, so crossing - points quickly produced visible jumps. Applying one motion policy therefore - produced a visibly split interaction. -- Decision: let the optional `motion()` renderer attach an internal tooltip - motion controller to the host. The tooltip inherits that renderer's fallback - or a static chart-level transition, while `tooltip.motion` can override or - disable it. Keep translation independent from presence motion, and retarget - springs from their current sampled position and velocity. The public tooltip - extension contract stays renderer-neutral. -- Verification: the renderer test asserts that a chart spring produces sampled - tooltip keyframes, keeps the tooltip mounted until its exit completes, and - preserves both visual position and travel direction across a mid-flight - retarget. The tooltip-only bundle retains neither `motion.ts` nor `spring.ts` - and measures 4.37 KiB gzip. - -### F-281 — Bars could not express an authored outline - -- Status: resolved -- Severity: medium -- Owner: API -- Observed in: reproducing shadcn's active-bar example -- Friction: `barX` and `barY` exposed fill paint but not base stroke paint. The - selected Firefox bar therefore could not reproduce the upstream dashed - outline without replacing the mark or abusing focus-state styling. -- Decision: expose visual `stroke` and `strokeDasharray` channels plus - `strokeOpacity` and `strokeWidth` on both bar orientations. -- Verification: the bar scene test resolves per-datum outlines for horizontal - and vertical bars, and the active-bar screenshot passes at 98% whole-card and - 97% chart-region similarity. - -### F-282 — Collection actions followed the viewport instead of the card - -- Status: resolved -- Severity: medium -- Owner: Application -- Observed in: browsing the two-column ShadCN collection -- Friction: every collection preview reserved the case's fixed conformance - viewport height, while the rendered ShadCN card was often much shorter. The - Code, Preview, and Original actions followed the reserved viewport rather - than the visible card, leaving roughly 280 pixels of empty space and making - the actions appear to belong to the next row. -- Decision: retain the full height as the chart's rendering input, then size - the collection preview shell to the rendered card. Observe the card so the - shell follows responsive height changes without coupling the gallery to - per-case dimensions. -- Verification: the live Radar collection now measures each preview shell to - its visible card and places the action row 14 pixels below it at both columns; - resizing continues to refit through the card observer. - -### F-283 — Interactive chart shells rendered inert controls - -- Status: resolved -- Severity: high -- Owner: Application -- Observed in: the generated ShadCN area, bar, line, and pie interactive cases -- Friction: the catalog reproduced the controls visually with static `div` - elements, but they had no input semantics or state. The pie month picker, - area range picker, and desktop/mobile metric panels could not change their - charts even though each case was explicitly named interactive. -- Decision: keep interaction state in the shared React example shell and - rebuild the selected chart definition from that state. Use native select and - button semantics, preserve the official labels and active treatment, and - keep the four behaviors centralized rather than adding state code to every - generated case. -- Verification: DOM regressions change the area range, both metric-series - charts, and the active pie month and assert the plotted geometry or paint - changes. Browser checks confirm the 7-day area path and ticks, mobile bar and - line geometry and colors, and May pie slice, swatch, and center value. - -### F-284 — Stagger timing required repeated callback arithmetic - -- Status: resolved -- Severity: medium -- Owner: API -- Observed in: evaluating optional entrance staggering for stacked radial and - pie compositions -- Friction: every definition had to repeat phase filters, role filters, index - selection, and delay arithmetic. Combining that callback with an existing - transition or rolling-path definition required another handwritten merge. - An initial `composeMotion()` helper recovered composition but made ordinary - timing objects unnecessarily indirect. -- Decision: allow `ChartMotionTiming.delay` to resolve from motion context and - make `stagger()` return that single partial timing field. It composes through - native object spread, whose order also defines conflict precedence. Export it - from `/motion` for convenience and `/motion/definition` as an isolated - policy-only entry. -- Verification: unit tests cover datum and series staggering, phase and role - filters, offsets, invalid inputs, native spread, and field precedence. The - isolated entry is 0.26 KiB gzip and retains neither the SVG motion renderer - nor spring physics. diff --git a/benchmarks/bundle-size/universal-baseline.json b/benchmarks/bundle-size/universal-baseline.json index 8472048f..02d2cd6b 100644 --- a/benchmarks/bundle-size/universal-baseline.json +++ b/benchmarks/bundle-size/universal-baseline.json @@ -15,24 +15,24 @@ "gzip": 26220 }, "TanStack DOM host": { - "bytes": 70628, - "gzip": 24727 + "bytes": 70878, + "gzip": 24859 }, "React adapter": { - "bytes": 72787, - "gzip": 25475 + "bytes": 73037, + "gzip": 25621 }, "React line consumer": { - "bytes": 95981, - "gzip": 34727 + "bytes": 96231, + "gzip": 34868 }, "Compact-scale line scene": { "bytes": 29572, "gzip": 10769 }, "React compact-scale line consumer": { - "bytes": 78482, - "gzip": 27667 + "bytes": 78732, + "gzip": 27803 }, "Custom-scale line scene": { "bytes": 27756, diff --git a/benchmarks/comparison/bundle-baseline.json b/benchmarks/comparison/bundle-baseline.json index 2173d00c..25ca8b2b 100644 --- a/benchmarks/comparison/bundle-baseline.json +++ b/benchmarks/comparison/bundle-baseline.json @@ -1,8 +1,8 @@ { "schemaVersion": 4, - "generatedAt": "2026-08-12T23:00:29.524Z", + "generatedAt": "2026-08-14T05:55:21.257Z", "packageVersions": { - "tanstack": "0.11.2", + "tanstack": "0.12.0", "chartjs": "4.5.1", "echarts": "6.1.0", "recharts": "3.10.1", @@ -11,8 +11,8 @@ "sources": { "tanstack": { "kind": "workspace", - "revision": "b9d8c541ef6a94afdc1812555ee0e4459c81d140", - "inputDigest": "sha256:52b55a904317f891ec664992193770fd9468bddddeef1e8f9fe10ec113051b05" + "revision": "56567ec51902d8af0d0d730f3a31206999cc8438", + "inputDigest": "sha256:6755913ae5f9c34a2bbb1ccb7cd2144274bc37d74051c091fc279ac3d1d7a4cd" }, "chartjs": { "kind": "package", @@ -45,88 +45,88 @@ }, "bundles": { "tanstack-line-basic": { - "minifiedBytes": 105444, - "gzipBytes": 38355, - "brotliBytes": 33936, - "incrementalGzipBytes": 38355, - "incrementalBrotliBytes": 33936 + "minifiedBytes": 105944, + "gzipBytes": 38533, + "brotliBytes": 34109, + "incrementalGzipBytes": 38533, + "incrementalBrotliBytes": 34109 }, "tanstack-line-interactive": { - "minifiedBytes": 110885, - "gzipBytes": 40139, - "brotliBytes": 35457, - "incrementalGzipBytes": 40139, - "incrementalBrotliBytes": 35457 + "minifiedBytes": 111385, + "gzipBytes": 40302, + "brotliBytes": 35551, + "incrementalGzipBytes": 40302, + "incrementalBrotliBytes": 35551 }, "tanstack-line-advanced": { - "minifiedBytes": 118073, - "gzipBytes": 42438, - "brotliBytes": 37478, - "incrementalGzipBytes": 42438, - "incrementalBrotliBytes": 37478 + "minifiedBytes": 118575, + "gzipBytes": 42629, + "brotliBytes": 37541, + "incrementalGzipBytes": 42629, + "incrementalBrotliBytes": 37541 }, "tanstack-bar-basic": { - "minifiedBytes": 113973, - "gzipBytes": 41522, - "brotliBytes": 36650, - "incrementalGzipBytes": 41522, - "incrementalBrotliBytes": 36650 + "minifiedBytes": 114612, + "gzipBytes": 41793, + "brotliBytes": 36837, + "incrementalGzipBytes": 41793, + "incrementalBrotliBytes": 36837 }, "tanstack-bar-interactive": { - "minifiedBytes": 118265, - "gzipBytes": 42870, - "brotliBytes": 37747, - "incrementalGzipBytes": 42870, - "incrementalBrotliBytes": 37747 + "minifiedBytes": 118904, + "gzipBytes": 43127, + "brotliBytes": 37954, + "incrementalGzipBytes": 43127, + "incrementalBrotliBytes": 37954 }, "tanstack-bar-advanced": { - "minifiedBytes": 118604, - "gzipBytes": 43012, - "brotliBytes": 37919, - "incrementalGzipBytes": 43012, - "incrementalBrotliBytes": 37919 + "minifiedBytes": 119243, + "gzipBytes": 43268, + "brotliBytes": 38025, + "incrementalGzipBytes": 43268, + "incrementalBrotliBytes": 38025 }, "tanstack-area-basic": { - "minifiedBytes": 110531, - "gzipBytes": 40265, - "brotliBytes": 35653, - "incrementalGzipBytes": 40265, - "incrementalBrotliBytes": 35653 + "minifiedBytes": 111028, + "gzipBytes": 40457, + "brotliBytes": 35802, + "incrementalGzipBytes": 40457, + "incrementalBrotliBytes": 35802 }, "tanstack-area-interactive": { - "minifiedBytes": 115972, - "gzipBytes": 42001, - "brotliBytes": 37115, - "incrementalGzipBytes": 42001, - "incrementalBrotliBytes": 37115 + "minifiedBytes": 116469, + "gzipBytes": 42189, + "brotliBytes": 37272, + "incrementalGzipBytes": 42189, + "incrementalBrotliBytes": 37272 }, "tanstack-area-advanced": { - "minifiedBytes": 123342, - "gzipBytes": 44453, - "brotliBytes": 39193, - "incrementalGzipBytes": 44453, - "incrementalBrotliBytes": 39193 + "minifiedBytes": 123841, + "gzipBytes": 44639, + "brotliBytes": 39311, + "incrementalGzipBytes": 44639, + "incrementalBrotliBytes": 39311 }, "tanstack-scatter-basic": { - "minifiedBytes": 106483, - "gzipBytes": 38737, - "brotliBytes": 34248, - "incrementalGzipBytes": 38737, - "incrementalBrotliBytes": 34248 + "minifiedBytes": 106983, + "gzipBytes": 38919, + "brotliBytes": 34369, + "incrementalGzipBytes": 38919, + "incrementalBrotliBytes": 34369 }, "tanstack-scatter-interactive": { - "minifiedBytes": 111924, - "gzipBytes": 40487, - "brotliBytes": 35678, - "incrementalGzipBytes": 40487, - "incrementalBrotliBytes": 35678 + "minifiedBytes": 112424, + "gzipBytes": 40678, + "brotliBytes": 35859, + "incrementalGzipBytes": 40678, + "incrementalBrotliBytes": 35859 }, "tanstack-scatter-advanced": { - "minifiedBytes": 111940, - "gzipBytes": 40494, - "brotliBytes": 35700, - "incrementalGzipBytes": 40494, - "incrementalBrotliBytes": 35700 + "minifiedBytes": 112440, + "gzipBytes": 40683, + "brotliBytes": 35866, + "incrementalGzipBytes": 40683, + "incrementalBrotliBytes": 35866 }, "chartjs-line-basic": { "minifiedBytes": 137909, diff --git a/benchmarks/conformance/DEFINITION-COVERAGE-AUDIT.md b/benchmarks/conformance/DEFINITION-COVERAGE-AUDIT.md index 2aebf161..5308ba7d 100644 --- a/benchmarks/conformance/DEFINITION-COVERAGE-AUDIT.md +++ b/benchmarks/conformance/DEFINITION-COVERAGE-AUDIT.md @@ -2,7 +2,7 @@ Date: 2026-08-10 -Scope: all 117 catalog directories. The 67 cases previously classified as +Scope: all 188 catalog directories. The 67 cases previously classified as strict custom authoring, preparation review, or shell-only are reviewed beside the former 42-case definition-native control group from [the custom authoring audit](./CUSTOM-AUTHORING-AUDIT.md). That audit remains @@ -31,12 +31,12 @@ work: | Disposition | Cases | Meaning | | --------------------- | ------: | ------------------------------------------------------------------------ | -| Definition now | 64 | Current marks and eager transforms are sufficient | +| Definition now | 135 | Current marks and eager transforms are sufficient | | First-party primitive | 35 | Add a reusable mark, transform, layout, guide, or controlled signal | | Optional primitive | 15 | Keep a heavy dependency granular, but hide its layout DTOs and lifecycle | | Application boundary | 2 | The remaining work is product state, DOM layout, or data arrival | | Inline custom mark | 1 | The geometry is intentionally case-specific | -| **Total** | **117** | | +| **Total** | **188** | | A normal definition does not require every implementation algorithm to live in Charts core. D3 may implement an optional `sankeyDiagram`, `densityContour`, @@ -222,35 +222,106 @@ ownership boundary. ## Interaction and shell cases -| Case | Disposition | Target definition or application boundary | -| -------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [80 — Axis pointer](./cases/80-echarts-axis-pointer/tanstack.ts) | Definition now | Resolved with `focusGuideX`, grouped x focus, native grouped tooltip, and the native color legend; only conformance observation remains outside. | -| [81 — Interactive legend](./cases/81-recharts-interactive-legend/tanstack.ts) | First-party primitive | Resolved with a controlled accessible color legend: full domains resolve before series geometry and focus points are filtered. | -| [82 — Chart/table selection](./cases/82-chart-table-selection/view.tsx) | First-party primitive | Resolved with `keyedSelection` and `whenSelected`; the semantic HTML table, status, clear action, representative-row policy, and persistence remain application or case UI. | -| [83 — Focus/context](./cases/83-focus-context-window/view.tsx) | Optional primitive | `brushX`, controlled signals, and `keyedSelection` own the semantic window and detail selection. Two chart hosts are warranted rather than `viewGrid`: detail and overview have independent rows, domains, axes, margins, sizes, and behavior. The range input and four-month policy remain application UI. | -| [84 — Pinned nested tooltip](./cases/84-pinned-nested-chart-tooltip/view.tsx) | Definition now | Resolved with sticky pin-only tooltip visibility, portal placement, dismissal, inline pinned state, and adapter body composition; only cohort policy and the nested child remain outside. | -| [85 — Resource lanes](./cases/85-scrollable-resource-lanes/tanstack.ts) | Application boundary | Native interval marks, inferred ID identity, focus, and tooltip own chart semantics. DOM scrolling, fixed rail/legend, auto-scroll, persistent details, and schedule semantics remain application-owned. | -| [86 — Streaming window](./cases/86-streaming-window-preservation/view.tsx) | Application boundary | Resolved: one exported definition bounds rows before scale inference, paints a decorative line plus interactive observations, and owns focus and tooltip. Arrival, viewport policy, controls, and announcements remain application-owned. | -| [87 — Synchronized cursors](./cases/87-echarts-synchronized-cursors/tanstack.ts) | Definition now | Resolved with one `viewGrid`, shared x semantics, grouped focus, child `focusGuideX` marks, decorative lines, and native sticky pinning. Only the live value summary remains application UI. | -| [88 — Free cursor](./cases/88-echarts-free-cursor/tanstack.ts) | First-party primitive | Resolved with `continuousCursor`: final-scale inversion, unsnapped rules, marker and labels, transient pointer/touch previews, controlled pinning and Escape clearing are definition-owned. Semantic sliders and status remain application UI. | -| [89 — Brush selection](./cases/89-brush-range-selection/tanstack.ts) | Optional primitive | Resolved with controlled `brushX`: final-scale candidate mapping, observed-date snapping, reverse normalization, painting, keyboard handles, cancellation, and teardown are definition-owned. The monthly cohort and live financial summary remain application-owned. | -| [90 — Zoomable window](./cases/90-zoomable-time-window/tanstack.ts) | Optional primitive | Resolved with controlled `zoomX`: final-scale inversion, pointer-anchored wheel zoom, drag and horizontal-wheel pan, touch, keyboard, clamping, cancellation, focus-gated wheel capture, and teardown are definition-owned. Visible-row and y-domain policy, status, reset, and persistence remain application-owned. | -| [91 — Playback scrubber](./cases/91-timeline-playback-scrubber/tanstack.ts) | First-party primitive | Resolved with controlled `handleX`: final-scale track, rule and playhead painting, observed-date snapping, pointer and touch capture, cancellation, keyboard slider semantics, and teardown are definition-owned. Playback timing, transport controls, status, and announcements remain application-owned. | -| [92 — Editable range](./cases/92-editable-event-range/tanstack.ts) | First-party primitive | Resolved with the same controlled `handleX`: final-scale end-handle painting, constrained date snapping, semantic lane placement, pointer and touch capture, cancellation, keyboard slider semantics, and teardown are definition-owned. The date input, validation, event constraint, commit state, status, and exact-value alternative remain application-owned. | -| [112 — Entrance motion](./cases/112-motion-entrance/tanstack.ts) | Definition now | Motion is already definition-local; replay and demo settings are shell controls. | -| [113 — Spring updates](./cases/113-motion-updates/tanstack.ts) | Definition now | Keyed enter/update/exit, interruption, and per-datum policy are already declarative; stage controls remain outside. | -| [114 — Spring line](./cases/114-spring-line-motion/tanstack.ts) | Definition now | Line morph and per-series spring overrides are already declarative; demo controls remain outside. | -| [115 — Definition motion](./cases/115-definition-motion/tanstack.ts) | Definition now | Chart, mark, datum, axis, tick, and label motion are already definition-owned. | -| [117 — Focus cursor motion](./cases/117-focus-cursor-motion/tanstack.ts) | First-party primitive | Add a stable-key focus guide with x/y rules, marker, labels, and normal motion; remove the second SVG and spring loop. | -| [118 — Token calendar](./cases/118-token-usage-calendar/shell.tsx) | First-party primitive | Add per-tick text style, anchor, and offset accessors so the first month label needs no post-render DOM mutation. | -| [119 — Stacked bar cursor](./cases/119-stacked-bar-band-cursor/chart.ts) | First-party primitive | Use renderer-native `crosshair` axes for the categorical band, endpoint rule, labels, grouped focus, and ordinary definition motion; only conformance observation remains outside. | -| [120 — Themed area card](./cases/120-themed-interactive-area/chart.ts) | Definition now | Native area, line, points, gradients, sparse guides, tooltip, and keyed spring policy own the chart; the range selector and card remain application UI. | -| [121 — Active bar dashboard](./cases/121-active-bar-dashboard/chart.ts) | Definition now | Native gradient bars, focus states, band cursor, tooltip, and spring updates own the chart; KPI totals double as application-owned series controls. | -| [122 — KPI sparklines](./cases/122-premium-kpi-sparklines/chart.ts) | Definition now | Three guide-free definitions use ordinary area and line marks, gradients, CSS-variable paint, and keyed spring updates; metric copy and responsive card layout remain application content. | -| [123 — Active donut](./cases/123-active-donut-metric/chart.ts) | Definition now | Native pie allocation, rounded arcs, selected wedge and ring layers, center text, tooltip, and spring motion own the visualization; legend buttons own persistent selection. | -| [124 — Theme matrix](./cases/124-theme-palette-matrix/chart.ts) | Definition now | The same area-and-line definition is rendered through three scoped CSS-variable themes with identical geometry; only the three-card matrix and labels are application composition. | -| [125 — Sales funnel](./cases/125-sales-funnel/tanstack.ts) | Definition now | Derive centered stage boundaries from the ordered raw values, then compose one native `areaX` group per stage with direct labels and stable semantic keys. | -| [126 — Drillable sunburst](./cases/126-drillable-sunburst/tanstack.ts) | Optional primitive | The optional sunburst mark owns focused-root partitioning, bounded visible depth, hierarchy-aware polar motion, and stable node geometry; the application owns selected-root state and the center back control. | +| Case | Disposition | Target definition or application boundary | +| ---------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [80 — Axis pointer](./cases/80-echarts-axis-pointer/tanstack.ts) | Definition now | Resolved with `focusGuideX`, grouped x focus, native grouped tooltip, and the native color legend; only conformance observation remains outside. | +| [81 — Interactive legend](./cases/81-recharts-interactive-legend/tanstack.ts) | First-party primitive | Resolved with a controlled accessible color legend: full domains resolve before series geometry and focus points are filtered. | +| [82 — Chart/table selection](./cases/82-chart-table-selection/view.tsx) | First-party primitive | Resolved with `keyedSelection` and `whenSelected`; the semantic HTML table, status, clear action, representative-row policy, and persistence remain application or case UI. | +| [83 — Focus/context](./cases/83-focus-context-window/view.tsx) | Optional primitive | `brushX`, controlled signals, and `keyedSelection` own the semantic window and detail selection. Two chart hosts are warranted rather than `viewGrid`: detail and overview have independent rows, domains, axes, margins, sizes, and behavior. The range input and four-month policy remain application UI. | +| [84 — Pinned nested tooltip](./cases/84-pinned-nested-chart-tooltip/view.tsx) | Definition now | Resolved with sticky pin-only tooltip visibility, portal placement, dismissal, inline pinned state, and adapter body composition; only cohort policy and the nested child remain outside. | +| [85 — Resource lanes](./cases/85-scrollable-resource-lanes/tanstack.ts) | Application boundary | Native interval marks, inferred ID identity, focus, and tooltip own chart semantics. DOM scrolling, fixed rail/legend, auto-scroll, persistent details, and schedule semantics remain application-owned. | +| [86 — Streaming window](./cases/86-streaming-window-preservation/view.tsx) | Application boundary | Resolved: one exported definition bounds rows before scale inference, paints a decorative line plus interactive observations, and owns focus and tooltip. Arrival, viewport policy, controls, and announcements remain application-owned. | +| [87 — Synchronized cursors](./cases/87-echarts-synchronized-cursors/tanstack.ts) | Definition now | Resolved with one `viewGrid`, shared x semantics, grouped focus, child `focusGuideX` marks, decorative lines, and native sticky pinning. Only the live value summary remains application UI. | +| [88 — Free cursor](./cases/88-echarts-free-cursor/tanstack.ts) | First-party primitive | Resolved with `continuousCursor`: final-scale inversion, unsnapped rules, marker and labels, transient pointer/touch previews, controlled pinning and Escape clearing are definition-owned. Semantic sliders and status remain application UI. | +| [89 — Brush selection](./cases/89-brush-range-selection/tanstack.ts) | Optional primitive | Resolved with controlled `brushX`: final-scale candidate mapping, observed-date snapping, reverse normalization, painting, keyboard handles, cancellation, and teardown are definition-owned. The monthly cohort and live financial summary remain application-owned. | +| [90 — Zoomable window](./cases/90-zoomable-time-window/tanstack.ts) | Optional primitive | Resolved with controlled `zoomX`: final-scale inversion, pointer-anchored wheel zoom, drag and horizontal-wheel pan, touch, keyboard, clamping, cancellation, focus-gated wheel capture, and teardown are definition-owned. Visible-row and y-domain policy, status, reset, and persistence remain application-owned. | +| [91 — Playback scrubber](./cases/91-timeline-playback-scrubber/tanstack.ts) | First-party primitive | Resolved with controlled `handleX`: final-scale track, rule and playhead painting, observed-date snapping, pointer and touch capture, cancellation, keyboard slider semantics, and teardown are definition-owned. Playback timing, transport controls, status, and announcements remain application-owned. | +| [92 — Editable range](./cases/92-editable-event-range/tanstack.ts) | First-party primitive | Resolved with the same controlled `handleX`: final-scale end-handle painting, constrained date snapping, semantic lane placement, pointer and touch capture, cancellation, keyboard slider semantics, and teardown are definition-owned. The date input, validation, event constraint, commit state, status, and exact-value alternative remain application-owned. | +| [112 — Entrance motion](./cases/112-motion-entrance/tanstack.ts) | Definition now | Motion is already definition-local; replay and demo settings are shell controls. | +| [113 — Spring updates](./cases/113-motion-updates/tanstack.ts) | Definition now | Keyed enter/update/exit, interruption, and per-datum policy are already declarative; stage controls remain outside. | +| [114 — Spring line](./cases/114-spring-line-motion/tanstack.ts) | Definition now | Line morph and per-series spring overrides are already declarative; demo controls remain outside. | +| [115 — Definition motion](./cases/115-definition-motion/tanstack.ts) | Definition now | Chart, mark, datum, axis, tick, and label motion are already definition-owned. | +| [117 — Focus cursor motion](./cases/117-focus-cursor-motion/tanstack.ts) | First-party primitive | Add a stable-key focus guide with x/y rules, marker, labels, and normal motion; remove the second SVG and spring loop. | +| [118 — Token calendar](./cases/118-token-usage-calendar/shell.tsx) | First-party primitive | Add per-tick text style, anchor, and offset accessors so the first month label needs no post-render DOM mutation. | +| [119 — Stacked bar cursor](./cases/119-stacked-bar-band-cursor/chart.ts) | First-party primitive | Use renderer-native `crosshair` axes for the categorical band, endpoint rule, labels, grouped focus, and ordinary definition motion; only conformance observation remains outside. | +| [120 — Themed area card](./cases/120-themed-interactive-area/chart.ts) | Definition now | Native area, line, points, gradients, sparse guides, tooltip, and keyed spring policy own the chart; the range selector and card remain application UI. | +| [121 — Active bar dashboard](./cases/121-active-bar-dashboard/chart.ts) | Definition now | Native gradient bars, focus states, band cursor, tooltip, and spring updates own the chart; KPI totals double as application-owned series controls. | +| [122 — KPI sparklines](./cases/122-premium-kpi-sparklines/chart.ts) | Definition now | Three guide-free definitions use ordinary area and line marks, gradients, CSS-variable paint, and keyed spring updates; metric copy and responsive card layout remain application content. | +| [123 — Active donut](./cases/123-active-donut-metric/chart.ts) | Definition now | Native pie allocation, rounded arcs, selected wedge and ring layers, center text, tooltip, and spring motion own the visualization; legend buttons own persistent selection. | +| [124 — Theme matrix](./cases/124-theme-palette-matrix/chart.ts) | Definition now | The same area-and-line definition is rendered through three scoped CSS-variable themes with identical geometry; only the three-card matrix and labels are application composition. | +| [125 — Sales funnel](./cases/125-sales-funnel/tanstack.ts) | Definition now | Derive centered stage boundaries from the ordered raw values, then compose one native `areaX` group per stage with direct labels and stable semantic keys. | +| [126 — Drillable sunburst](./cases/126-drillable-sunburst/tanstack.ts) | Optional primitive | The optional sunburst mark owns focused-root partitioning, bounded visible depth, hierarchy-aware polar motion, and stable node geometry; the application owns selected-root state and the center back control. | +| [127 — shadcn dashboard](./cases/127-shadcn-dashboard/tanstack.ts) | Definition now | Shared native TanStack Charts dashboard definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [133 — shadcn area-axes](./cases/133-shadcn-area-axes/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [134 — shadcn area-default](./cases/134-shadcn-area-default/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [135 — shadcn area-gradient](./cases/135-shadcn-area-gradient/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [136 — shadcn area-icons](./cases/136-shadcn-area-icons/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [137 — shadcn area-interactive](./cases/137-shadcn-area-interactive/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [138 — shadcn area-legend](./cases/138-shadcn-area-legend/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [139 — shadcn area-linear](./cases/139-shadcn-area-linear/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [140 — shadcn area-stacked-expand](./cases/140-shadcn-area-stacked-expand/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [141 — shadcn area-stacked](./cases/141-shadcn-area-stacked/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [142 — shadcn area-step](./cases/142-shadcn-area-step/tanstack.ts) | Definition now | Shared native TanStack Charts area definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [143 — shadcn bar-active](./cases/143-shadcn-bar-active/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [144 — shadcn bar-default](./cases/144-shadcn-bar-default/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [145 — shadcn bar-horizontal](./cases/145-shadcn-bar-horizontal/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [146 — shadcn bar-interactive](./cases/146-shadcn-bar-interactive/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [147 — shadcn bar-label-custom](./cases/147-shadcn-bar-label-custom/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [148 — shadcn bar-label](./cases/148-shadcn-bar-label/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [149 — shadcn bar-mixed](./cases/149-shadcn-bar-mixed/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [128 — shadcn bar-multiple](./cases/128-shadcn-bar-multiple/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [150 — shadcn bar-negative](./cases/150-shadcn-bar-negative/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [151 — shadcn bar-stacked](./cases/151-shadcn-bar-stacked/tanstack.ts) | Definition now | Shared native TanStack Charts bar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [152 — shadcn line-default](./cases/152-shadcn-line-default/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [153 — shadcn line-dots-colors](./cases/153-shadcn-line-dots-colors/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [154 — shadcn line-dots-custom](./cases/154-shadcn-line-dots-custom/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [155 — shadcn line-dots](./cases/155-shadcn-line-dots/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [156 — shadcn line-interactive](./cases/156-shadcn-line-interactive/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [157 — shadcn line-label-custom](./cases/157-shadcn-line-label-custom/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [158 — shadcn line-label](./cases/158-shadcn-line-label/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [159 — shadcn line-linear](./cases/159-shadcn-line-linear/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [160 — shadcn line-multiple](./cases/160-shadcn-line-multiple/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [161 — shadcn line-step](./cases/161-shadcn-line-step/tanstack.ts) | Definition now | Shared native TanStack Charts line definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [162 — shadcn pie-donut-active](./cases/162-shadcn-pie-donut-active/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [129 — shadcn pie-donut-text](./cases/129-shadcn-pie-donut-text/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [163 — shadcn pie-donut](./cases/163-shadcn-pie-donut/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [164 — shadcn pie-interactive](./cases/164-shadcn-pie-interactive/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [165 — shadcn pie-label-custom](./cases/165-shadcn-pie-label-custom/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [166 — shadcn pie-label-list](./cases/166-shadcn-pie-label-list/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [167 — shadcn pie-label](./cases/167-shadcn-pie-label/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [168 — shadcn pie-legend](./cases/168-shadcn-pie-legend/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [169 — shadcn pie-separator-none](./cases/169-shadcn-pie-separator-none/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [170 — shadcn pie-simple](./cases/170-shadcn-pie-simple/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [171 — shadcn pie-stacked](./cases/171-shadcn-pie-stacked/tanstack.ts) | Definition now | Shared native TanStack Charts pie definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [172 — shadcn radar-default](./cases/172-shadcn-radar-default/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [173 — shadcn radar-dots](./cases/173-shadcn-radar-dots/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [174 — shadcn radar-grid-circle-fill](./cases/174-shadcn-radar-grid-circle-fill/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [175 — shadcn radar-grid-circle-no-lines](./cases/175-shadcn-radar-grid-circle-no-lines/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [176 — shadcn radar-grid-circle](./cases/176-shadcn-radar-grid-circle/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [177 — shadcn radar-grid-custom](./cases/177-shadcn-radar-grid-custom/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [178 — shadcn radar-grid-fill](./cases/178-shadcn-radar-grid-fill/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [179 — shadcn radar-grid-none](./cases/179-shadcn-radar-grid-none/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [180 — shadcn radar-icons](./cases/180-shadcn-radar-icons/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [181 — shadcn radar-label-custom](./cases/181-shadcn-radar-label-custom/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [182 — shadcn radar-legend](./cases/182-shadcn-radar-legend/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [183 — shadcn radar-lines-only](./cases/183-shadcn-radar-lines-only/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [130 — shadcn radar-multiple](./cases/130-shadcn-radar-multiple/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [184 — shadcn radar-radius](./cases/184-shadcn-radar-radius/tanstack.ts) | Definition now | Shared native TanStack Charts radar definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [185 — shadcn radial-grid](./cases/185-shadcn-radial-grid/tanstack.ts) | Definition now | Shared native TanStack Charts radial definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [186 — shadcn radial-label](./cases/186-shadcn-radial-label/tanstack.ts) | Definition now | Shared native TanStack Charts radial definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [187 — shadcn radial-shape](./cases/187-shadcn-radial-shape/tanstack.ts) | Definition now | Shared native TanStack Charts radial definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [188 — shadcn radial-simple](./cases/188-shadcn-radial-simple/tanstack.ts) | Definition now | Shared native TanStack Charts radial definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [189 — shadcn radial-stacked](./cases/189-shadcn-radial-stacked/tanstack.ts) | Definition now | Shared native TanStack Charts radial definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [131 — shadcn radial-text](./cases/131-shadcn-radial-text/tanstack.ts) | Definition now | Shared native TanStack Charts radial definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [132 — shadcn tooltip-advanced](./cases/132-shadcn-tooltip-advanced/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [190 — shadcn tooltip-default](./cases/190-shadcn-tooltip-default/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [191 — shadcn tooltip-formatter](./cases/191-shadcn-tooltip-formatter/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [192 — shadcn tooltip-icons](./cases/192-shadcn-tooltip-icons/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [193 — shadcn tooltip-indicator-line](./cases/193-shadcn-tooltip-indicator-line/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [194 — shadcn tooltip-indicator-none](./cases/194-shadcn-tooltip-indicator-none/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [195 — shadcn tooltip-label-custom](./cases/195-shadcn-tooltip-label-custom/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [196 — shadcn tooltip-label-formatter](./cases/196-shadcn-tooltip-label-formatter/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | +| [197 — shadcn tooltip-label-none](./cases/197-shadcn-tooltip-label-none/tanstack.ts) | Definition now | Shared native TanStack Charts tooltip definitions reproduce the pinned shadcn variant; the card remains application presentation. | ## Reference evidence @@ -282,8 +353,8 @@ bundle. ## Delivery result -All 117 catalog directories now have one roadmap record and case-local -evidence. All 114 normal-definition cases are verified against their current +All 188 catalog directories now have one roadmap record and case-local +evidence. All 185 normal-definition cases are verified against their current boundary; only cases 85, 86, and 116 retain accepted application or bespoke geometry work. The roadmap validator compares its IDs with the live catalog directories so a new case cannot silently remain outside this review. diff --git a/benchmarks/conformance/DEFINITION-COVERAGE-OVERVIEW.md b/benchmarks/conformance/DEFINITION-COVERAGE-OVERVIEW.md index e1f3ea0d..45f712e3 100644 --- a/benchmarks/conformance/DEFINITION-COVERAGE-OVERVIEW.md +++ b/benchmarks/conformance/DEFINITION-COVERAGE-OVERVIEW.md @@ -2,19 +2,19 @@ Date: 2026-08-10 -The catalog has 117 case directories. One hundred fourteen visualizations now use +The catalog has 188 case directories. 185 visualizations now use normal chart definitions. Cases 85 and 86 retain application shells, and Case 116 retains one deliberately bespoke inline mark. No other case-owned layout or renderer is an accepted endpoint. | Disposition | Cases | Result | | --------------------- | ------: | ------------------------------------------------- | -| Definition now | 64 | Normal definition | +| Definition now | 135 | Normal definition | | First-party primitive | 35 | Normal definition | | Optional primitive | 15 | Normal definition | | Application boundary | 2 | Accepted boundary | | Inline custom mark | 1 | Accepted boundary | -| **Total** | **117** | **114 normal definitions; 3 accepted boundaries** | +| **Total** | **188** | **185 normal definitions; 3 accepted boundaries** | ## Shared decisions @@ -63,7 +63,7 @@ presentation policy. ## Verification -- The roadmap validator compares all 117 roadmap and audit IDs with the live +- The roadmap validator compares all 188 roadmap and audit IDs with the live catalog directories, requires unique IDs, validates the capability DAG, and requires every verified or accepted case to cite evidence under its own directory. @@ -78,122 +78,193 @@ presentation policy. ## Case catalog -| Case | Disposition | Current boundary | Case-local evidence | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------- | -| [01-line-gaps — Apple stock line with seasonal gaps](./cases/01-line-gaps/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [02-multi-line-end-labels — Industry unemployment with end labels](./cases/02-multi-line-end-labels/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [03-temperature-range-band — San Francisco temperature range band](./cases/03-temperature-range-band/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [04-stacked-time-area — Industry unemployment stacked area](./cases/04-stacked-time-area/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [13-interval-timeline — Open-to-close price intervals](./cases/13-interval-timeline/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [14-error-bars — Point estimates with error bars](./cases/14-error-bars/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [15-boxplot — Grouped boxplot](./cases/15-boxplot/tanstack.ts) | First-party primitive | `composite-mark`, `box-mark` | `tanstack.ts`, `tanstack.test.ts` | -| [16-lollipop — Ranked lollipop chart](./cases/16-lollipop/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [17-dumbbell — Dumbbell comparison](./cases/17-dumbbell/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [18-cumulative-histogram — Cumulative histogram](./cases/18-cumulative-histogram/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [19-moving-average-line — San Francisco temperature moving averages](./cases/19-moving-average-line/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [20-normalized-stacked-area — Industry share of unemployment](./cases/20-normalized-stacked-area/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [21-streamgraph — Streamgraph](./cases/21-streamgraph/tanstack.ts) | First-party primitive | `inside-out-wiggle-stack` | `tanstack.ts`, `tanstack.test.ts` | -| [22-bollinger-band — Bollinger band](./cases/22-bollinger-band/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [24-quantitative-binned-heatmap — Quantitative binned heatmap](./cases/24-quantitative-binned-heatmap/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [25-calendar-heatmap — Precipitation calendar heatmap](./cases/25-calendar-heatmap/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [26-diverging-likert — Diverging Likert responses](./cases/26-diverging-likert/tanstack.ts) | First-party primitive | `anchored-stack` | `tanstack.ts`, `tanstack.test.ts` | -| [27-parallel-coordinates — Parallel coordinates](./cases/27-parallel-coordinates/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | -| [28-candlestick — Candlestick chart](./cases/28-candlestick/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [29-waterfall — Annual gasoline-price waterfall](./cases/29-waterfall/tanstack.ts) | First-party primitive | `waterfall-layout` | `tanstack.ts`, `tanstack.test.ts` | -| [30-slopegraph — Two-period slopegraph](./cases/30-slopegraph/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | -| [31-linear-regression — Scatterplot with linear regression](./cases/31-linear-regression/tanstack.ts) | First-party primitive | `composite-mark`, `line-x-mark`, `regression-mark` | `tanstack.ts`, `tanstack.test.ts` | -| [32-change-arrows — Metro inequality change arrows](./cases/32-change-arrows/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [33-difference-chart — Apple close versus moving average](./cases/33-difference-chart/tanstack.ts) | First-party primitive | `composite-mark`, `line-x-mark`, `resolved-mark-layout`, `difference-mark` | `tanstack.ts`, `tanstack.test.ts` | -| [34-pointer-tooltip — Pointer-selected tooltip](./cases/34-pointer-tooltip/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [35-grouped-tooltip — Grouped X tooltip](./cases/35-grouped-tooltip/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [36-hierarchy-tree — Tidy hierarchy tree](./cases/36-hierarchy-tree/tanstack.ts) | Optional primitive | `hierarchy-tree` | `tanstack.ts` | -| [37-delaunay-network — Delaunay spatial network](./cases/37-delaunay-network/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `spatial-delaunay` | `tanstack.ts` | -| [38-contour-topography — Filled wind-speed contours](./cases/38-contour-topography/tanstack.ts) | Optional primitive | `spatial-contour` | `tanstack.ts` | -| [39-density-contours — Point density contours](./cases/39-density-contours/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `spatial-density` | `tanstack.ts` | -| [40-force-directed-network — Les Misérables character network](./cases/40-force-directed-network/tanstack.ts) | Optional primitive | `network-force` | `tanstack.ts` | -| [40-geojson-map — Westport House floor plan](./cases/40-geojson-map/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [41-waffle-unit-chart — English letter frequency waffle](./cases/41-waffle-unit-chart/tanstack.ts) | First-party primitive | `resolved-mark-layout`, `waffle-mark` | `tanstack.ts` | -| [42-vector-field — Two-dimensional vector field](./cases/42-vector-field/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [43-hexbin-density — Hexagonally binned density](./cases/43-hexbin-density/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `spatial-hexbin` | `tanstack.ts` | -| [44-framed-scatter — Framed guide-free scatterplot](./cases/44-framed-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [50-empirical-cdf — Empirical cumulative distribution](./cases/50-empirical-cdf/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [51-faceted-distributions — Faceted distributions](./cases/51-faceted-distributions/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [52-beeswarm-dodge — Beeswarm distribution](./cases/52-beeswarm-dodge/tanstack.ts) | First-party primitive | `resolved-mark-layout`, `dodge-layout` | `tanstack.ts` | -| [53-log-scale-scatter — Log-scale Flare class sizes](./cases/53-log-scale-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [54-bump-ranking — Industry unemployment bump chart](./cases/54-bump-ranking/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [55-indexed-multi-line — Indexed industry unemployment](./cases/55-indexed-multi-line/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [56-connected-scatter — Directed connected scatterplot](./cases/56-connected-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [57-scatter-marginal-histograms — Scatterplot with marginal histograms](./cases/57-scatter-marginal-histograms/tanstack.ts) | First-party primitive | `view-composition` | `tanstack.ts`, `tanstack.test.ts` | -| [58-select-extrema — Annotated AAPL extrema](./cases/58-select-extrema/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [59-grouped-reducer-bars — Mean penguin mass reducer bars](./cases/59-grouped-reducer-bars/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [60-lag-autocorrelation — AAPL lag-one autocorrelation](./cases/60-lag-autocorrelation/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [61-quantile-ribbon — Industry unemployment percentile ribbon](./cases/61-quantile-ribbon/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [62-ridgeline-density — Ridgeline density comparison](./cases/62-ridgeline-density/tanstack.ts) | First-party primitive | `ridgeline-mark` | `tanstack.ts`, `tanstack.test.ts` | -| [63-violin-distributions — Violin distribution comparison](./cases/63-violin-distributions/tanstack.ts) | First-party primitive | `violin-mark` | `tanstack.ts`, `tanstack.test.ts` | -| [64-marimekko-mosaic — Marimekko survey composition](./cases/64-marimekko-mosaic/tanstack.ts) | First-party primitive | `mosaic-layout` | `tanstack.ts`, `tanstack.test.ts` | -| [65-voronoi-nearest-tooltip — Voronoi nearest-point interaction](./cases/65-voronoi-nearest-tooltip/tanstack.ts) | Optional primitive | `spatial-voronoi` | `tanstack.ts` | -| [70-composed-chart — Layered Seattle weather chart](./cases/70-composed-chart/tanstack.ts) | First-party primitive | `bar-max-thickness` | `tanstack.ts`, `tanstack.test.ts` | -| [71-recharts-population-pyramid — Palmer penguins by species and sex](./cases/71-recharts-population-pyramid/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [72-recharts-mixed-bars — Stacked and adjacent Seattle weather bars](./cases/72-recharts-mixed-bars/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [73-many-point-scatter — Automobile specifications scatter](./cases/73-many-point-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [74-recharts-treemap — Flare analytics treemap](./cases/74-recharts-treemap/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `hierarchy-treemap` | `tanstack.ts` | -| [75-radar — Simple radar chart](./cases/75-radar/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | -| [76-pie — English letter frequency pie](./cases/76-pie/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | -| [77-donut — English letter frequency donut](./cases/77-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | -| [78-gauge — Survey agreement share gauge](./cases/78-gauge/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | -| [80-echarts-axis-pointer — Snapped axis pointer with grouped tooltip](./cases/80-echarts-axis-pointer/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [81-recharts-interactive-legend — Interactive series legend](./cases/81-recharts-interactive-legend/tanstack.ts) | First-party primitive | `controlled-signals`, `interactive-legend` | `tanstack.ts`, `tanstack.test.ts`, `view.tsx` | -| [82-chart-table-selection — Linked chart and data table selection](./cases/82-chart-table-selection/tanstack.ts) | First-party primitive | `controlled-signals`, `keyed-selection` | `tanstack.ts`, `tanstack.test.ts`, `view.tsx` | -| [83-focus-context-window — Focus and context time window](./cases/83-focus-context-window/tanstack.ts) | Optional primitive | `controlled-signals`, `keyed-selection`, `configured-scale-inversion`, `brush-x` | `tanstack.ts`, `tanstack.test.ts`, `view.tsx` | -| [84-pinned-nested-chart-tooltip — Pinned penguin tooltip with a nested chart](./cases/84-pinned-nested-chart-tooltip/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `model.test.ts`, `view.tsx` | -| [85-scrollable-resource-lanes — Scrollable resource timeline lanes](./cases/85-scrollable-resource-lanes/tanstack.ts) | Application boundary | `application-boundary` | `tanstack.ts`, `tanstack.test.ts`, `shell.ts` | -| [86-streaming-window-preservation — Streaming window preservation](./cases/86-streaming-window-preservation/data.test.ts) | Application boundary | `application-boundary`, `decorative-mark` | `data.test.ts`, `tanstack.test.ts` | -| [87-echarts-synchronized-cursors — Synchronized cursors across views](./cases/87-echarts-synchronized-cursors/tanstack.ts) | Definition now | `view-composition`, `focus-guide`, `decorative-mark` | `tanstack.ts`, `tanstack.test.ts` | -| [88-echarts-free-cursor — Free cursor over car measurements](./cases/88-echarts-free-cursor/tanstack.ts) | First-party primitive | `controlled-signals`, `configured-scale-inversion`, `continuous-cursor` | `tanstack.ts`, `tanstack.test.ts` | -| [89-brush-range-selection — Observed monthly AAPL brush selection](./cases/89-brush-range-selection/tanstack.ts) | Optional primitive | `controlled-signals`, `configured-scale-inversion`, `brush-x` | `tanstack.ts`, `tanstack.test.ts` | -| [90-zoomable-time-window — Wheel zoom and pan over AAPL closes](./cases/90-zoomable-time-window/case.json) | Optional primitive | `controlled-signals`, `configured-scale-inversion`, `zoom-x` | `case.json`, `tanstack.ts`, `tanstack.test.ts` | -| [91-timeline-playback-scrubber — AAPL close playback scrubber](./cases/91-timeline-playback-scrubber/tanstack.ts) | First-party primitive | `controlled-signals`, `scale-handle` | `tanstack.ts`, `tanstack.test.ts` | -| [92-editable-event-range — Editable event range](./cases/92-editable-event-range/tanstack.ts) | First-party primitive | `controlled-signals`, `scale-handle` | `tanstack.ts`, `tanstack.test.ts` | -| [93-labeled-pie — Letter frequency pie with labels](./cases/93-labeled-pie/tanstack.test.ts) | First-party primitive | `polar-value-allocation`, `radial-labels` | `tanstack.test.ts` | -| [94-center-donut — Letter frequency donut with total](./cases/94-center-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | -| [95-rounded-donut — Rounded letter frequency donut](./cases/95-rounded-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | -| [96-nested-donut — Nested Flare package sizes](./cases/96-nested-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | -| [97-rose — English letter frequency rose](./cases/97-rose/tanstack.ts) | First-party primitive | `radial-bars` | `tanstack.ts`, `tanstack.test.ts` | -| [98-needle-gauge — County unemployment gauge](./cases/98-needle-gauge/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | -| [99-comparative-radar — Comparative radar chart](./cases/99-comparative-radar/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | -| [100-radial-bars — Concentric letter frequency bars](./cases/100-radial-bars/tanstack.test.ts) | First-party primitive | `radial-bars` | `tanstack.test.ts` | -| [101-sunburst — Flare analytics sunburst](./cases/101-sunburst/tanstack.ts) | Optional primitive | `hierarchy-sunburst` | `tanstack.ts`, `tanstack.test.ts` | -| [102-world-choropleth — World learning-poverty choropleth](./cases/102-world-choropleth/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [103-bubble-map — World population bubble map](./cases/103-bubble-map/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [104-orthographic-globe — Orthographic globe with graticule](./cases/104-orthographic-globe/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [105-route-map — HMS Beagle voyage](./cases/105-route-map/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [106-polar-line — Seattle daily high-temperature polar line](./cases/106-polar-line/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [107-polar-scatter — Surface wind polar scatter](./cases/107-polar-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [108-country-choropleth — World population-density choropleth](./cases/108-country-choropleth/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [109-us-state-choropleth — United States county unemployment choropleth](./cases/109-us-state-choropleth/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [110-projection-gallery — Standard world projection gallery](./cases/110-projection-gallery/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [111-basic-sankey — Basic Sankey](./cases/111-basic-sankey/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `network-sankey` | `tanstack.ts`, `tanstack.test.ts` | -| [111-sankey-flow — Sankey](./cases/111-sankey-flow/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `network-sankey` | `tanstack.ts`, `tanstack.test.ts` | -| [112-motion-entrance — Staggered entrance motion](./cases/112-motion-entrance/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [113-motion-updates — Interrupted spring updates](./cases/113-motion-updates/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [114-spring-line-motion — Spring line updates](./cases/114-spring-line-motion/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [115-definition-motion — Definition-owned motion](./cases/115-definition-motion/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | -| [116-geometry-morph — Cross-chart geometry morph](./cases/116-geometry-morph/tanstack.ts) | Inline custom mark | `inline-custom-boundary` | `tanstack.ts`, `tanstack.test.ts` | -| [117-focus-cursor-motion — Focus and crosshair motion](./cases/117-focus-cursor-motion/tanstack.ts) | First-party primitive | `focus-guide` | `tanstack.ts`, `tanstack.test.ts` | -| [118-token-usage-calendar — Token use calendar heatmap](./cases/118-token-usage-calendar/tanstack.ts) | First-party primitive | `axis-tick-label-accessors` | `tanstack.ts`, `tanstack.test.ts`, `shell.test.ts` | -| [119-stacked-bar-band-cursor — Stacked bars with band and rule cursors](./cases/119-stacked-bar-band-cursor/chart.ts) | First-party primitive | `crosshair` | `chart.ts`, `model.test.ts`, `case.json` | -| [120-themed-interactive-area — Themed interactive area card](./cases/120-themed-interactive-area/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.ts`, `tanstack.test.ts` | -| [121-active-bar-dashboard — Active bar dashboard](./cases/121-active-bar-dashboard/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | -| [122-premium-kpi-sparklines — Premium KPI sparklines](./cases/122-premium-kpi-sparklines/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | -| [123-active-donut-metric — Active donut metric](./cases/123-active-donut-metric/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | -| [124-theme-palette-matrix — Theme palette matrix](./cases/124-theme-palette-matrix/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | -| [125-sales-funnel — Sales conversion funnel](./cases/125-sales-funnel/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `model.test.ts`, `case.json` | -| [126-drillable-sunburst — Drillable Flare sunburst](./cases/126-drillable-sunburst/tanstack.ts) | Optional primitive | `hierarchy-sunburst` | `tanstack.ts`, `tanstack.test.ts`, `model.test.ts` | -| [bar-grouped — Grouped bars](./cases/bar-grouped/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [bar-horizontal-ranking — Horizontal ranking with long labels](./cases/bar-horizontal-ranking/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [bar-stacked — Stacked bars](./cases/bar-stacked/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [bar-vertical-sorted — Sorted vertical bars](./cases/bar-vertical-sorted/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [facets-anscombe — Anscombe quartet small multiples](./cases/facets-anscombe/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [heatmap-labeled — Labeled ordinal heatmap](./cases/heatmap-labeled/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [histogram — Histogram](./cases/histogram/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | -| [scatter-bubble — Bubble scatterplot](./cases/scatter-bubble/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| Case | Disposition | Current boundary | Case-local evidence | +| ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------- | +| [01-line-gaps — Apple stock line with seasonal gaps](./cases/01-line-gaps/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [02-multi-line-end-labels — Industry unemployment with end labels](./cases/02-multi-line-end-labels/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [03-temperature-range-band — San Francisco temperature range band](./cases/03-temperature-range-band/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [04-stacked-time-area — Industry unemployment stacked area](./cases/04-stacked-time-area/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [13-interval-timeline — Open-to-close price intervals](./cases/13-interval-timeline/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [14-error-bars — Point estimates with error bars](./cases/14-error-bars/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [15-boxplot — Grouped boxplot](./cases/15-boxplot/tanstack.ts) | First-party primitive | `composite-mark`, `box-mark` | `tanstack.ts`, `tanstack.test.ts` | +| [16-lollipop — Ranked lollipop chart](./cases/16-lollipop/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [17-dumbbell — Dumbbell comparison](./cases/17-dumbbell/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [18-cumulative-histogram — Cumulative histogram](./cases/18-cumulative-histogram/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [19-moving-average-line — San Francisco temperature moving averages](./cases/19-moving-average-line/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [20-normalized-stacked-area — Industry share of unemployment](./cases/20-normalized-stacked-area/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [21-streamgraph — Streamgraph](./cases/21-streamgraph/tanstack.ts) | First-party primitive | `inside-out-wiggle-stack` | `tanstack.ts`, `tanstack.test.ts` | +| [22-bollinger-band — Bollinger band](./cases/22-bollinger-band/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [24-quantitative-binned-heatmap — Quantitative binned heatmap](./cases/24-quantitative-binned-heatmap/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [25-calendar-heatmap — Precipitation calendar heatmap](./cases/25-calendar-heatmap/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [26-diverging-likert — Diverging Likert responses](./cases/26-diverging-likert/tanstack.ts) | First-party primitive | `anchored-stack` | `tanstack.ts`, `tanstack.test.ts` | +| [27-parallel-coordinates — Parallel coordinates](./cases/27-parallel-coordinates/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | +| [28-candlestick — Candlestick chart](./cases/28-candlestick/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [29-waterfall — Annual gasoline-price waterfall](./cases/29-waterfall/tanstack.ts) | First-party primitive | `waterfall-layout` | `tanstack.ts`, `tanstack.test.ts` | +| [30-slopegraph — Two-period slopegraph](./cases/30-slopegraph/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | +| [31-linear-regression — Scatterplot with linear regression](./cases/31-linear-regression/tanstack.ts) | First-party primitive | `composite-mark`, `line-x-mark`, `regression-mark` | `tanstack.ts`, `tanstack.test.ts` | +| [32-change-arrows — Metro inequality change arrows](./cases/32-change-arrows/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [33-difference-chart — Apple close versus moving average](./cases/33-difference-chart/tanstack.ts) | First-party primitive | `composite-mark`, `line-x-mark`, `resolved-mark-layout`, `difference-mark` | `tanstack.ts`, `tanstack.test.ts` | +| [34-pointer-tooltip — Pointer-selected tooltip](./cases/34-pointer-tooltip/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [35-grouped-tooltip — Grouped X tooltip](./cases/35-grouped-tooltip/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [36-hierarchy-tree — Tidy hierarchy tree](./cases/36-hierarchy-tree/tanstack.ts) | Optional primitive | `hierarchy-tree` | `tanstack.ts` | +| [37-delaunay-network — Delaunay spatial network](./cases/37-delaunay-network/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `spatial-delaunay` | `tanstack.ts` | +| [38-contour-topography — Filled wind-speed contours](./cases/38-contour-topography/tanstack.ts) | Optional primitive | `spatial-contour` | `tanstack.ts` | +| [39-density-contours — Point density contours](./cases/39-density-contours/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `spatial-density` | `tanstack.ts` | +| [40-force-directed-network — Les Misérables character network](./cases/40-force-directed-network/tanstack.ts) | Optional primitive | `network-force` | `tanstack.ts` | +| [40-geojson-map — Westport House floor plan](./cases/40-geojson-map/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [41-waffle-unit-chart — English letter frequency waffle](./cases/41-waffle-unit-chart/tanstack.ts) | First-party primitive | `resolved-mark-layout`, `waffle-mark` | `tanstack.ts` | +| [42-vector-field — Two-dimensional vector field](./cases/42-vector-field/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [43-hexbin-density — Hexagonally binned density](./cases/43-hexbin-density/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `spatial-hexbin` | `tanstack.ts` | +| [44-framed-scatter — Framed guide-free scatterplot](./cases/44-framed-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [50-empirical-cdf — Empirical cumulative distribution](./cases/50-empirical-cdf/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [51-faceted-distributions — Faceted distributions](./cases/51-faceted-distributions/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [52-beeswarm-dodge — Beeswarm distribution](./cases/52-beeswarm-dodge/tanstack.ts) | First-party primitive | `resolved-mark-layout`, `dodge-layout` | `tanstack.ts` | +| [53-log-scale-scatter — Log-scale Flare class sizes](./cases/53-log-scale-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [54-bump-ranking — Industry unemployment bump chart](./cases/54-bump-ranking/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [55-indexed-multi-line — Indexed industry unemployment](./cases/55-indexed-multi-line/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [56-connected-scatter — Directed connected scatterplot](./cases/56-connected-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [57-scatter-marginal-histograms — Scatterplot with marginal histograms](./cases/57-scatter-marginal-histograms/tanstack.ts) | First-party primitive | `view-composition` | `tanstack.ts`, `tanstack.test.ts` | +| [58-select-extrema — Annotated AAPL extrema](./cases/58-select-extrema/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [59-grouped-reducer-bars — Mean penguin mass reducer bars](./cases/59-grouped-reducer-bars/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [60-lag-autocorrelation — AAPL lag-one autocorrelation](./cases/60-lag-autocorrelation/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [61-quantile-ribbon — Industry unemployment percentile ribbon](./cases/61-quantile-ribbon/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [62-ridgeline-density — Ridgeline density comparison](./cases/62-ridgeline-density/tanstack.ts) | First-party primitive | `ridgeline-mark` | `tanstack.ts`, `tanstack.test.ts` | +| [63-violin-distributions — Violin distribution comparison](./cases/63-violin-distributions/tanstack.ts) | First-party primitive | `violin-mark` | `tanstack.ts`, `tanstack.test.ts` | +| [64-marimekko-mosaic — Marimekko survey composition](./cases/64-marimekko-mosaic/tanstack.ts) | First-party primitive | `mosaic-layout` | `tanstack.ts`, `tanstack.test.ts` | +| [65-voronoi-nearest-tooltip — Voronoi nearest-point interaction](./cases/65-voronoi-nearest-tooltip/tanstack.ts) | Optional primitive | `spatial-voronoi` | `tanstack.ts` | +| [70-composed-chart — Layered Seattle weather chart](./cases/70-composed-chart/tanstack.ts) | First-party primitive | `bar-max-thickness` | `tanstack.ts`, `tanstack.test.ts` | +| [71-recharts-population-pyramid — Palmer penguins by species and sex](./cases/71-recharts-population-pyramid/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [72-recharts-mixed-bars — Stacked and adjacent Seattle weather bars](./cases/72-recharts-mixed-bars/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [73-many-point-scatter — Automobile specifications scatter](./cases/73-many-point-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [74-recharts-treemap — Flare analytics treemap](./cases/74-recharts-treemap/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `hierarchy-treemap` | `tanstack.ts` | +| [75-radar — Simple radar chart](./cases/75-radar/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | +| [76-pie — English letter frequency pie](./cases/76-pie/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | +| [77-donut — English letter frequency donut](./cases/77-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | +| [78-gauge — Survey agreement share gauge](./cases/78-gauge/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | +| [80-echarts-axis-pointer — Snapped axis pointer with grouped tooltip](./cases/80-echarts-axis-pointer/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [81-recharts-interactive-legend — Interactive series legend](./cases/81-recharts-interactive-legend/tanstack.ts) | First-party primitive | `controlled-signals`, `interactive-legend` | `tanstack.ts`, `tanstack.test.ts`, `view.tsx` | +| [82-chart-table-selection — Linked chart and data table selection](./cases/82-chart-table-selection/tanstack.ts) | First-party primitive | `controlled-signals`, `keyed-selection` | `tanstack.ts`, `tanstack.test.ts`, `view.tsx` | +| [83-focus-context-window — Focus and context time window](./cases/83-focus-context-window/tanstack.ts) | Optional primitive | `controlled-signals`, `keyed-selection`, `configured-scale-inversion`, `brush-x` | `tanstack.ts`, `tanstack.test.ts`, `view.tsx` | +| [84-pinned-nested-chart-tooltip — Pinned penguin tooltip with a nested chart](./cases/84-pinned-nested-chart-tooltip/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `model.test.ts`, `view.tsx` | +| [85-scrollable-resource-lanes — Scrollable resource timeline lanes](./cases/85-scrollable-resource-lanes/tanstack.ts) | Application boundary | `application-boundary` | `tanstack.ts`, `tanstack.test.ts`, `shell.ts` | +| [86-streaming-window-preservation — Streaming window preservation](./cases/86-streaming-window-preservation/data.test.ts) | Application boundary | `application-boundary`, `decorative-mark` | `data.test.ts`, `tanstack.test.ts` | +| [87-echarts-synchronized-cursors — Synchronized cursors across views](./cases/87-echarts-synchronized-cursors/tanstack.ts) | Definition now | `view-composition`, `focus-guide`, `decorative-mark` | `tanstack.ts`, `tanstack.test.ts` | +| [88-echarts-free-cursor — Free cursor over car measurements](./cases/88-echarts-free-cursor/tanstack.ts) | First-party primitive | `controlled-signals`, `configured-scale-inversion`, `continuous-cursor` | `tanstack.ts`, `tanstack.test.ts` | +| [89-brush-range-selection — Observed monthly AAPL brush selection](./cases/89-brush-range-selection/tanstack.ts) | Optional primitive | `controlled-signals`, `configured-scale-inversion`, `brush-x` | `tanstack.ts`, `tanstack.test.ts` | +| [90-zoomable-time-window — Wheel zoom and pan over AAPL closes](./cases/90-zoomable-time-window/case.json) | Optional primitive | `controlled-signals`, `configured-scale-inversion`, `zoom-x` | `case.json`, `tanstack.ts`, `tanstack.test.ts` | +| [91-timeline-playback-scrubber — AAPL close playback scrubber](./cases/91-timeline-playback-scrubber/tanstack.ts) | First-party primitive | `controlled-signals`, `scale-handle` | `tanstack.ts`, `tanstack.test.ts` | +| [92-editable-event-range — Editable event range](./cases/92-editable-event-range/tanstack.ts) | First-party primitive | `controlled-signals`, `scale-handle` | `tanstack.ts`, `tanstack.test.ts` | +| [93-labeled-pie — Letter frequency pie with labels](./cases/93-labeled-pie/tanstack.test.ts) | First-party primitive | `polar-value-allocation`, `radial-labels` | `tanstack.test.ts` | +| [94-center-donut — Letter frequency donut with total](./cases/94-center-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | +| [95-rounded-donut — Rounded letter frequency donut](./cases/95-rounded-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | +| [96-nested-donut — Nested Flare package sizes](./cases/96-nested-donut/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | +| [97-rose — English letter frequency rose](./cases/97-rose/tanstack.ts) | First-party primitive | `radial-bars` | `tanstack.ts`, `tanstack.test.ts` | +| [98-needle-gauge — County unemployment gauge](./cases/98-needle-gauge/tanstack.test.ts) | First-party primitive | `polar-value-allocation` | `tanstack.test.ts` | +| [99-comparative-radar — Comparative radar chart](./cases/99-comparative-radar/tanstack.test.ts) | First-party primitive | `fold-transform` | `tanstack.test.ts` | +| [100-radial-bars — Concentric letter frequency bars](./cases/100-radial-bars/tanstack.test.ts) | First-party primitive | `radial-bars` | `tanstack.test.ts` | +| [101-sunburst — Flare analytics sunburst](./cases/101-sunburst/tanstack.ts) | Optional primitive | `hierarchy-sunburst` | `tanstack.ts`, `tanstack.test.ts` | +| [102-world-choropleth — World learning-poverty choropleth](./cases/102-world-choropleth/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [103-bubble-map — World population bubble map](./cases/103-bubble-map/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [104-orthographic-globe — Orthographic globe with graticule](./cases/104-orthographic-globe/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [105-route-map — HMS Beagle voyage](./cases/105-route-map/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [106-polar-line — Seattle daily high-temperature polar line](./cases/106-polar-line/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [107-polar-scatter — Surface wind polar scatter](./cases/107-polar-scatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [108-country-choropleth — World population-density choropleth](./cases/108-country-choropleth/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [109-us-state-choropleth — United States county unemployment choropleth](./cases/109-us-state-choropleth/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [110-projection-gallery — Standard world projection gallery](./cases/110-projection-gallery/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [111-basic-sankey — Basic Sankey](./cases/111-basic-sankey/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `network-sankey` | `tanstack.ts`, `tanstack.test.ts` | +| [111-sankey-flow — Sankey](./cases/111-sankey-flow/tanstack.ts) | Optional primitive | `resolved-mark-layout`, `network-sankey` | `tanstack.ts`, `tanstack.test.ts` | +| [112-motion-entrance — Staggered entrance motion](./cases/112-motion-entrance/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [113-motion-updates — Interrupted spring updates](./cases/113-motion-updates/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [114-spring-line-motion — Spring line updates](./cases/114-spring-line-motion/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [115-definition-motion — Definition-owned motion](./cases/115-definition-motion/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `tanstack.test.ts` | +| [116-geometry-morph — Cross-chart geometry morph](./cases/116-geometry-morph/tanstack.ts) | Inline custom mark | `inline-custom-boundary` | `tanstack.ts`, `tanstack.test.ts` | +| [117-focus-cursor-motion — Focus and crosshair motion](./cases/117-focus-cursor-motion/tanstack.ts) | First-party primitive | `focus-guide` | `tanstack.ts`, `tanstack.test.ts` | +| [118-token-usage-calendar — Token use calendar heatmap](./cases/118-token-usage-calendar/tanstack.ts) | First-party primitive | `axis-tick-label-accessors` | `tanstack.ts`, `tanstack.test.ts`, `shell.test.ts` | +| [119-stacked-bar-band-cursor — Stacked bars with band and rule cursors](./cases/119-stacked-bar-band-cursor/chart.ts) | First-party primitive | `crosshair` | `chart.ts`, `model.test.ts`, `case.json` | +| [120-themed-interactive-area — Themed interactive area card](./cases/120-themed-interactive-area/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.ts`, `tanstack.test.ts` | +| [121-active-bar-dashboard — Active bar dashboard](./cases/121-active-bar-dashboard/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | +| [122-premium-kpi-sparklines — Premium KPI sparklines](./cases/122-premium-kpi-sparklines/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | +| [123-active-donut-metric — Active donut metric](./cases/123-active-donut-metric/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | +| [124-theme-palette-matrix — Theme palette matrix](./cases/124-theme-palette-matrix/chart.ts) | Definition now | `current-definition-api` | `chart.ts`, `tanstack.test.ts`, `view.tsx` | +| [125-sales-funnel — Sales conversion funnel](./cases/125-sales-funnel/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `model.test.ts`, `case.json` | +| [126-drillable-sunburst — Drillable Flare sunburst](./cases/126-drillable-sunburst/tanstack.ts) | Optional primitive | `hierarchy-sunburst` | `tanstack.ts`, `tanstack.test.ts`, `model.test.ts` | +| [127-shadcn-dashboard — Dashboard](./cases/127-shadcn-dashboard/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [133-shadcn-area-axes — Area Chart - Axes](./cases/133-shadcn-area-axes/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [134-shadcn-area-default — Area Chart](./cases/134-shadcn-area-default/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [135-shadcn-area-gradient — Area Chart - Gradient](./cases/135-shadcn-area-gradient/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [136-shadcn-area-icons — Area Chart - Icons](./cases/136-shadcn-area-icons/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [137-shadcn-area-interactive — Area Chart - Interactive](./cases/137-shadcn-area-interactive/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [138-shadcn-area-legend — Area Chart - Legend](./cases/138-shadcn-area-legend/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [139-shadcn-area-linear — Area Chart - Linear](./cases/139-shadcn-area-linear/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [140-shadcn-area-stacked-expand — Area Chart - Stacked Expanded](./cases/140-shadcn-area-stacked-expand/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [141-shadcn-area-stacked — Area Chart - Stacked](./cases/141-shadcn-area-stacked/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [142-shadcn-area-step — Area Chart - Step](./cases/142-shadcn-area-step/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [143-shadcn-bar-active — Bar Chart - Active](./cases/143-shadcn-bar-active/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [144-shadcn-bar-default — Bar Chart](./cases/144-shadcn-bar-default/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [145-shadcn-bar-horizontal — Bar Chart - Horizontal](./cases/145-shadcn-bar-horizontal/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [146-shadcn-bar-interactive — Bar Chart - Interactive](./cases/146-shadcn-bar-interactive/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [147-shadcn-bar-label-custom — Bar Chart - Custom Label](./cases/147-shadcn-bar-label-custom/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [148-shadcn-bar-label — Bar Chart - Label](./cases/148-shadcn-bar-label/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [149-shadcn-bar-mixed — Bar Chart - Mixed](./cases/149-shadcn-bar-mixed/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [128-shadcn-bar-multiple — Bar Chart - Multiple](./cases/128-shadcn-bar-multiple/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [150-shadcn-bar-negative — Bar Chart - Negative](./cases/150-shadcn-bar-negative/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [151-shadcn-bar-stacked — Bar Chart - Stacked + Legend](./cases/151-shadcn-bar-stacked/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [152-shadcn-line-default — Line Chart](./cases/152-shadcn-line-default/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [153-shadcn-line-dots-colors — Line Chart - Dots Colors](./cases/153-shadcn-line-dots-colors/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [154-shadcn-line-dots-custom — Line Chart - Custom Dots](./cases/154-shadcn-line-dots-custom/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [155-shadcn-line-dots — Line Chart - Dots](./cases/155-shadcn-line-dots/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [156-shadcn-line-interactive — Line Chart - Interactive](./cases/156-shadcn-line-interactive/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [157-shadcn-line-label-custom — Line Chart - Custom Label](./cases/157-shadcn-line-label-custom/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [158-shadcn-line-label — Line Chart - Label](./cases/158-shadcn-line-label/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [159-shadcn-line-linear — Line Chart - Linear](./cases/159-shadcn-line-linear/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [160-shadcn-line-multiple — Line Chart - Multiple](./cases/160-shadcn-line-multiple/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [161-shadcn-line-step — Line Chart - Step](./cases/161-shadcn-line-step/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [162-shadcn-pie-donut-active — Pie Chart - Donut Active](./cases/162-shadcn-pie-donut-active/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [129-shadcn-pie-donut-text — Pie Chart - Donut with Text](./cases/129-shadcn-pie-donut-text/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [163-shadcn-pie-donut — Pie Chart - Donut](./cases/163-shadcn-pie-donut/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [164-shadcn-pie-interactive — Pie Chart - Interactive](./cases/164-shadcn-pie-interactive/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [165-shadcn-pie-label-custom — Pie Chart - Custom Label](./cases/165-shadcn-pie-label-custom/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [166-shadcn-pie-label-list — Pie Chart - Label List](./cases/166-shadcn-pie-label-list/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [167-shadcn-pie-label — Pie Chart - Label](./cases/167-shadcn-pie-label/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [168-shadcn-pie-legend — Pie Chart - Legend](./cases/168-shadcn-pie-legend/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [169-shadcn-pie-separator-none — Pie Chart - Separator None](./cases/169-shadcn-pie-separator-none/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [170-shadcn-pie-simple — Pie Chart](./cases/170-shadcn-pie-simple/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [171-shadcn-pie-stacked — Pie Chart - Stacked](./cases/171-shadcn-pie-stacked/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [172-shadcn-radar-default — Radar Chart](./cases/172-shadcn-radar-default/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [173-shadcn-radar-dots — Radar Chart - Dots](./cases/173-shadcn-radar-dots/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [174-shadcn-radar-grid-circle-fill — Radar Chart - Grid Circle Filled](./cases/174-shadcn-radar-grid-circle-fill/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [175-shadcn-radar-grid-circle-no-lines — Radar Chart - Grid Circle - No lines](./cases/175-shadcn-radar-grid-circle-no-lines/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [176-shadcn-radar-grid-circle — Radar Chart - Grid Circle](./cases/176-shadcn-radar-grid-circle/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [177-shadcn-radar-grid-custom — Radar Chart - Grid Custom](./cases/177-shadcn-radar-grid-custom/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [178-shadcn-radar-grid-fill — Radar Chart - Grid Filled](./cases/178-shadcn-radar-grid-fill/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [179-shadcn-radar-grid-none — Radar Chart - Grid None](./cases/179-shadcn-radar-grid-none/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [180-shadcn-radar-icons — Radar Chart - Icons](./cases/180-shadcn-radar-icons/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [181-shadcn-radar-label-custom — Radar Chart - Custom Label](./cases/181-shadcn-radar-label-custom/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [182-shadcn-radar-legend — Radar Chart - Legend](./cases/182-shadcn-radar-legend/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [183-shadcn-radar-lines-only — Radar Chart - Lines Only](./cases/183-shadcn-radar-lines-only/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [130-shadcn-radar-multiple — Radar Chart - Multiple](./cases/130-shadcn-radar-multiple/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [184-shadcn-radar-radius — Radar Chart - Radius Axis](./cases/184-shadcn-radar-radius/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [185-shadcn-radial-grid — Radial Chart - Grid](./cases/185-shadcn-radial-grid/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [186-shadcn-radial-label — Radial Chart - Label](./cases/186-shadcn-radial-label/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [187-shadcn-radial-shape — Radial Chart - Shape](./cases/187-shadcn-radial-shape/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [188-shadcn-radial-simple — Radial Chart](./cases/188-shadcn-radial-simple/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [189-shadcn-radial-stacked — Radial Chart - Stacked](./cases/189-shadcn-radial-stacked/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [131-shadcn-radial-text — Radial Chart - Text](./cases/131-shadcn-radial-text/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [132-shadcn-tooltip-advanced — Tooltip - Advanced](./cases/132-shadcn-tooltip-advanced/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [190-shadcn-tooltip-default — Tooltip - Default](./cases/190-shadcn-tooltip-default/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [191-shadcn-tooltip-formatter — Tooltip - Formatter](./cases/191-shadcn-tooltip-formatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [192-shadcn-tooltip-icons — Tooltip - Icons](./cases/192-shadcn-tooltip-icons/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [193-shadcn-tooltip-indicator-line — Tooltip - Line Indicator](./cases/193-shadcn-tooltip-indicator-line/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [194-shadcn-tooltip-indicator-none — Tooltip - No Indicator](./cases/194-shadcn-tooltip-indicator-none/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [195-shadcn-tooltip-label-custom — Tooltip - Custom label](./cases/195-shadcn-tooltip-label-custom/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [196-shadcn-tooltip-label-formatter — Tooltip - Label Formatter](./cases/196-shadcn-tooltip-label-formatter/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [197-shadcn-tooltip-label-none — Tooltip - No Label](./cases/197-shadcn-tooltip-label-none/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts`, `case.json` | +| [bar-grouped — Grouped bars](./cases/bar-grouped/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [bar-horizontal-ranking — Horizontal ranking with long labels](./cases/bar-horizontal-ranking/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [bar-stacked — Stacked bars](./cases/bar-stacked/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [bar-vertical-sorted — Sorted vertical bars](./cases/bar-vertical-sorted/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [facets-anscombe — Anscombe quartet small multiples](./cases/facets-anscombe/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [heatmap-labeled — Labeled ordinal heatmap](./cases/heatmap-labeled/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [histogram — Histogram](./cases/histogram/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | +| [scatter-bubble — Bubble scatterplot](./cases/scatter-bubble/tanstack.ts) | Definition now | `current-definition-api` | `tanstack.ts` | diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/case.json b/benchmarks/conformance/cases/127-shadcn-dashboard/case.json similarity index 96% rename from benchmarks/conformance/cases/121-shadcn-dashboard/case.json rename to benchmarks/conformance/cases/127-shadcn-dashboard/case.json index bf98e9de..0ff67710 100644 --- a/benchmarks/conformance/cases/121-shadcn-dashboard/case.json +++ b/benchmarks/conformance/cases/127-shadcn-dashboard/case.json @@ -2,8 +2,8 @@ "schemaVersion": 1, "referenceRenderer": "recharts", "height": 860, - "order": 1220, - "id": "121-shadcn-dashboard", + "order": 1280, + "id": "127-shadcn-dashboard", "title": "shadcn dashboard", "family": "application", "intent": "Reproduce shadcn/ui's canonical dashboard shell and interactive stacked-area card while replacing only Recharts with TanStack Charts.", diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/dashboard.tsx b/benchmarks/conformance/cases/127-shadcn-dashboard/dashboard.tsx similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/dashboard.tsx rename to benchmarks/conformance/cases/127-shadcn-dashboard/dashboard.tsx diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/data.test.ts b/benchmarks/conformance/cases/127-shadcn-dashboard/data.test.ts similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/data.test.ts rename to benchmarks/conformance/cases/127-shadcn-dashboard/data.test.ts diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/data.ts b/benchmarks/conformance/cases/127-shadcn-dashboard/data.ts similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/data.ts rename to benchmarks/conformance/cases/127-shadcn-dashboard/data.ts diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/recharts-view.tsx b/benchmarks/conformance/cases/127-shadcn-dashboard/recharts-view.tsx similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/recharts-view.tsx rename to benchmarks/conformance/cases/127-shadcn-dashboard/recharts-view.tsx diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts b/benchmarks/conformance/cases/127-shadcn-dashboard/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts rename to benchmarks/conformance/cases/127-shadcn-dashboard/recharts.ts diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/styles.ts b/benchmarks/conformance/cases/127-shadcn-dashboard/styles.ts similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/styles.ts rename to benchmarks/conformance/cases/127-shadcn-dashboard/styles.ts diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx b/benchmarks/conformance/cases/127-shadcn-dashboard/tanstack-view.tsx similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/tanstack-view.tsx rename to benchmarks/conformance/cases/127-shadcn-dashboard/tanstack-view.tsx diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.test.ts b/benchmarks/conformance/cases/127-shadcn-dashboard/tanstack.test.ts similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.test.ts rename to benchmarks/conformance/cases/127-shadcn-dashboard/tanstack.test.ts diff --git a/benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts b/benchmarks/conformance/cases/127-shadcn-dashboard/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts rename to benchmarks/conformance/cases/127-shadcn-dashboard/tanstack.ts diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/case.json b/benchmarks/conformance/cases/128-shadcn-bar-multiple/case.json similarity index 94% rename from benchmarks/conformance/cases/122-shadcn-bar-multiple/case.json rename to benchmarks/conformance/cases/128-shadcn-bar-multiple/case.json index f06a995f..83ef3d45 100644 --- a/benchmarks/conformance/cases/122-shadcn-bar-multiple/case.json +++ b/benchmarks/conformance/cases/128-shadcn-bar-multiple/case.json @@ -3,8 +3,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1230, - "id": "122-shadcn-bar-multiple", + "order": 1290, + "id": "128-shadcn-bar-multiple", "title": "shadcn bar chart – multiple", "family": "bar", "intent": "Reproduce shadcn/ui's grouped bar example while replacing Recharts with TanStack Charts.", diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/data.ts b/benchmarks/conformance/cases/128-shadcn-bar-multiple/data.ts similarity index 100% rename from benchmarks/conformance/cases/122-shadcn-bar-multiple/data.ts rename to benchmarks/conformance/cases/128-shadcn-bar-multiple/data.ts diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts-view.tsx b/benchmarks/conformance/cases/128-shadcn-bar-multiple/recharts-view.tsx similarity index 100% rename from benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts-view.tsx rename to benchmarks/conformance/cases/128-shadcn-bar-multiple/recharts-view.tsx diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts b/benchmarks/conformance/cases/128-shadcn-bar-multiple/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts rename to benchmarks/conformance/cases/128-shadcn-bar-multiple/recharts.ts diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx b/benchmarks/conformance/cases/128-shadcn-bar-multiple/tanstack-view.tsx similarity index 100% rename from benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack-view.tsx rename to benchmarks/conformance/cases/128-shadcn-bar-multiple/tanstack-view.tsx diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts b/benchmarks/conformance/cases/128-shadcn-bar-multiple/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts rename to benchmarks/conformance/cases/128-shadcn-bar-multiple/tanstack.ts diff --git a/benchmarks/conformance/cases/122-shadcn-bar-multiple/view.tsx b/benchmarks/conformance/cases/128-shadcn-bar-multiple/view.tsx similarity index 100% rename from benchmarks/conformance/cases/122-shadcn-bar-multiple/view.tsx rename to benchmarks/conformance/cases/128-shadcn-bar-multiple/view.tsx diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/case.json b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/case.json similarity index 94% rename from benchmarks/conformance/cases/123-shadcn-pie-donut-text/case.json rename to benchmarks/conformance/cases/129-shadcn-pie-donut-text/case.json index acd6b41c..0f23420a 100644 --- a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/case.json +++ b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/case.json @@ -3,8 +3,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1240, - "id": "123-shadcn-pie-donut-text", + "order": 1300, + "id": "129-shadcn-pie-donut-text", "title": "shadcn pie chart – donut with text", "family": "pie", "intent": "Reproduce shadcn/ui's donut-with-center-text example while replacing Recharts with TanStack Charts.", diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/data.ts b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/data.ts similarity index 100% rename from benchmarks/conformance/cases/123-shadcn-pie-donut-text/data.ts rename to benchmarks/conformance/cases/129-shadcn-pie-donut-text/data.ts diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts-view.tsx b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/recharts-view.tsx similarity index 100% rename from benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts-view.tsx rename to benchmarks/conformance/cases/129-shadcn-pie-donut-text/recharts-view.tsx diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts rename to benchmarks/conformance/cases/129-shadcn-pie-donut-text/recharts.ts diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/tanstack-view.tsx similarity index 100% rename from benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack-view.tsx rename to benchmarks/conformance/cases/129-shadcn-pie-donut-text/tanstack-view.tsx diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts rename to benchmarks/conformance/cases/129-shadcn-pie-donut-text/tanstack.ts diff --git a/benchmarks/conformance/cases/123-shadcn-pie-donut-text/view.tsx b/benchmarks/conformance/cases/129-shadcn-pie-donut-text/view.tsx similarity index 100% rename from benchmarks/conformance/cases/123-shadcn-pie-donut-text/view.tsx rename to benchmarks/conformance/cases/129-shadcn-pie-donut-text/view.tsx diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/case.json b/benchmarks/conformance/cases/130-shadcn-radar-multiple/case.json similarity index 94% rename from benchmarks/conformance/cases/124-shadcn-radar-multiple/case.json rename to benchmarks/conformance/cases/130-shadcn-radar-multiple/case.json index e65abcf7..38236c2b 100644 --- a/benchmarks/conformance/cases/124-shadcn-radar-multiple/case.json +++ b/benchmarks/conformance/cases/130-shadcn-radar-multiple/case.json @@ -3,8 +3,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1250, - "id": "124-shadcn-radar-multiple", + "order": 1310, + "id": "130-shadcn-radar-multiple", "title": "shadcn radar chart – multiple", "family": "radar", "intent": "Reproduce shadcn/ui's multi-series radar example while replacing Recharts with TanStack Charts.", diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/data.ts b/benchmarks/conformance/cases/130-shadcn-radar-multiple/data.ts similarity index 100% rename from benchmarks/conformance/cases/124-shadcn-radar-multiple/data.ts rename to benchmarks/conformance/cases/130-shadcn-radar-multiple/data.ts diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts-view.tsx b/benchmarks/conformance/cases/130-shadcn-radar-multiple/recharts-view.tsx similarity index 100% rename from benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts-view.tsx rename to benchmarks/conformance/cases/130-shadcn-radar-multiple/recharts-view.tsx diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts b/benchmarks/conformance/cases/130-shadcn-radar-multiple/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts rename to benchmarks/conformance/cases/130-shadcn-radar-multiple/recharts.ts diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx b/benchmarks/conformance/cases/130-shadcn-radar-multiple/tanstack-view.tsx similarity index 100% rename from benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack-view.tsx rename to benchmarks/conformance/cases/130-shadcn-radar-multiple/tanstack-view.tsx diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts b/benchmarks/conformance/cases/130-shadcn-radar-multiple/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts rename to benchmarks/conformance/cases/130-shadcn-radar-multiple/tanstack.ts diff --git a/benchmarks/conformance/cases/124-shadcn-radar-multiple/view.tsx b/benchmarks/conformance/cases/130-shadcn-radar-multiple/view.tsx similarity index 100% rename from benchmarks/conformance/cases/124-shadcn-radar-multiple/view.tsx rename to benchmarks/conformance/cases/130-shadcn-radar-multiple/view.tsx diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/case.json b/benchmarks/conformance/cases/131-shadcn-radial-text/case.json similarity index 94% rename from benchmarks/conformance/cases/125-shadcn-radial-text/case.json rename to benchmarks/conformance/cases/131-shadcn-radial-text/case.json index 92a0fb84..6c5986a1 100644 --- a/benchmarks/conformance/cases/125-shadcn-radial-text/case.json +++ b/benchmarks/conformance/cases/131-shadcn-radial-text/case.json @@ -3,8 +3,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1260, - "id": "125-shadcn-radial-text", + "order": 1320, + "id": "131-shadcn-radial-text", "title": "shadcn radial chart – text", "family": "radial", "intent": "Reproduce shadcn/ui's partial radial chart with center text while replacing Recharts with TanStack Charts.", diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/data.ts b/benchmarks/conformance/cases/131-shadcn-radial-text/data.ts similarity index 100% rename from benchmarks/conformance/cases/125-shadcn-radial-text/data.ts rename to benchmarks/conformance/cases/131-shadcn-radial-text/data.ts diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/recharts-view.tsx b/benchmarks/conformance/cases/131-shadcn-radial-text/recharts-view.tsx similarity index 100% rename from benchmarks/conformance/cases/125-shadcn-radial-text/recharts-view.tsx rename to benchmarks/conformance/cases/131-shadcn-radial-text/recharts-view.tsx diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts b/benchmarks/conformance/cases/131-shadcn-radial-text/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts rename to benchmarks/conformance/cases/131-shadcn-radial-text/recharts.ts diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx b/benchmarks/conformance/cases/131-shadcn-radial-text/tanstack-view.tsx similarity index 100% rename from benchmarks/conformance/cases/125-shadcn-radial-text/tanstack-view.tsx rename to benchmarks/conformance/cases/131-shadcn-radial-text/tanstack-view.tsx diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts b/benchmarks/conformance/cases/131-shadcn-radial-text/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts rename to benchmarks/conformance/cases/131-shadcn-radial-text/tanstack.ts diff --git a/benchmarks/conformance/cases/125-shadcn-radial-text/view.tsx b/benchmarks/conformance/cases/131-shadcn-radial-text/view.tsx similarity index 100% rename from benchmarks/conformance/cases/125-shadcn-radial-text/view.tsx rename to benchmarks/conformance/cases/131-shadcn-radial-text/view.tsx diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/case.json b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/case.json similarity index 94% rename from benchmarks/conformance/cases/126-shadcn-tooltip-advanced/case.json rename to benchmarks/conformance/cases/132-shadcn-tooltip-advanced/case.json index 68048f66..78fae304 100644 --- a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/case.json +++ b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/case.json @@ -3,8 +3,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1270, - "id": "126-shadcn-tooltip-advanced", + "order": 1330, + "id": "132-shadcn-tooltip-advanced", "title": "shadcn tooltip – advanced", "family": "tooltip", "intent": "Reproduce shadcn/ui's stacked-bar card and custom total tooltip while replacing Recharts with TanStack Charts.", diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/data.ts b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/data.ts similarity index 100% rename from benchmarks/conformance/cases/126-shadcn-tooltip-advanced/data.ts rename to benchmarks/conformance/cases/132-shadcn-tooltip-advanced/data.ts diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts-view.tsx b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/recharts-view.tsx similarity index 100% rename from benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts-view.tsx rename to benchmarks/conformance/cases/132-shadcn-tooltip-advanced/recharts-view.tsx diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts rename to benchmarks/conformance/cases/132-shadcn-tooltip-advanced/recharts.ts diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/tanstack-view.tsx similarity index 100% rename from benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack-view.tsx rename to benchmarks/conformance/cases/132-shadcn-tooltip-advanced/tanstack-view.tsx diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts rename to benchmarks/conformance/cases/132-shadcn-tooltip-advanced/tanstack.ts diff --git a/benchmarks/conformance/cases/126-shadcn-tooltip-advanced/view.tsx b/benchmarks/conformance/cases/132-shadcn-tooltip-advanced/view.tsx similarity index 100% rename from benchmarks/conformance/cases/126-shadcn-tooltip-advanced/view.tsx rename to benchmarks/conformance/cases/132-shadcn-tooltip-advanced/view.tsx diff --git a/benchmarks/conformance/cases/127-shadcn-area-axes/case.json b/benchmarks/conformance/cases/133-shadcn-area-axes/case.json similarity index 80% rename from benchmarks/conformance/cases/127-shadcn-area-axes/case.json rename to benchmarks/conformance/cases/133-shadcn-area-axes/case.json index 259fe8a3..3f5d228f 100644 --- a/benchmarks/conformance/cases/127-shadcn-area-axes/case.json +++ b/benchmarks/conformance/cases/133-shadcn-area-axes/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1280, - "id": "127-shadcn-area-axes", + "order": 1340, + "id": "133-shadcn-area-axes", "title": "shadcn Area Chart - Axes", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-axes example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "axes", - "shadcn card shell" - ], + "features": ["area chart", "axes", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts b/benchmarks/conformance/cases/133-shadcn-area-axes/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts rename to benchmarks/conformance/cases/133-shadcn-area-axes/recharts.ts diff --git a/benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts b/benchmarks/conformance/cases/133-shadcn-area-axes/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts rename to benchmarks/conformance/cases/133-shadcn-area-axes/tanstack.ts diff --git a/benchmarks/conformance/cases/128-shadcn-area-default/case.json b/benchmarks/conformance/cases/134-shadcn-area-default/case.json similarity index 81% rename from benchmarks/conformance/cases/128-shadcn-area-default/case.json rename to benchmarks/conformance/cases/134-shadcn-area-default/case.json index 5954509c..5134724a 100644 --- a/benchmarks/conformance/cases/128-shadcn-area-default/case.json +++ b/benchmarks/conformance/cases/134-shadcn-area-default/case.json @@ -1,20 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1290, - "id": "128-shadcn-area-default", + "order": 1350, + "id": "134-shadcn-area-default", "title": "shadcn Area Chart", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-default example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "shadcn card shell" - ], + "features": ["area chart", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts b/benchmarks/conformance/cases/134-shadcn-area-default/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts rename to benchmarks/conformance/cases/134-shadcn-area-default/recharts.ts diff --git a/benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts b/benchmarks/conformance/cases/134-shadcn-area-default/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts rename to benchmarks/conformance/cases/134-shadcn-area-default/tanstack.ts diff --git a/benchmarks/conformance/cases/129-shadcn-area-gradient/case.json b/benchmarks/conformance/cases/135-shadcn-area-gradient/case.json similarity index 80% rename from benchmarks/conformance/cases/129-shadcn-area-gradient/case.json rename to benchmarks/conformance/cases/135-shadcn-area-gradient/case.json index de287864..5532ce8b 100644 --- a/benchmarks/conformance/cases/129-shadcn-area-gradient/case.json +++ b/benchmarks/conformance/cases/135-shadcn-area-gradient/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1300, - "id": "129-shadcn-area-gradient", + "order": 1360, + "id": "135-shadcn-area-gradient", "title": "shadcn Area Chart - Gradient", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-gradient example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "gradient", - "shadcn card shell" - ], + "features": ["area chart", "gradient", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts b/benchmarks/conformance/cases/135-shadcn-area-gradient/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts rename to benchmarks/conformance/cases/135-shadcn-area-gradient/recharts.ts diff --git a/benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts b/benchmarks/conformance/cases/135-shadcn-area-gradient/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts rename to benchmarks/conformance/cases/135-shadcn-area-gradient/tanstack.ts diff --git a/benchmarks/conformance/cases/130-shadcn-area-icons/case.json b/benchmarks/conformance/cases/136-shadcn-area-icons/case.json similarity index 80% rename from benchmarks/conformance/cases/130-shadcn-area-icons/case.json rename to benchmarks/conformance/cases/136-shadcn-area-icons/case.json index be650277..1fb01632 100644 --- a/benchmarks/conformance/cases/130-shadcn-area-icons/case.json +++ b/benchmarks/conformance/cases/136-shadcn-area-icons/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1310, - "id": "130-shadcn-area-icons", + "order": 1370, + "id": "136-shadcn-area-icons", "title": "shadcn Area Chart - Icons", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-icons example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "icons", - "shadcn card shell" - ], + "features": ["area chart", "icons", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts b/benchmarks/conformance/cases/136-shadcn-area-icons/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts rename to benchmarks/conformance/cases/136-shadcn-area-icons/recharts.ts diff --git a/benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts b/benchmarks/conformance/cases/136-shadcn-area-icons/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts rename to benchmarks/conformance/cases/136-shadcn-area-icons/tanstack.ts diff --git a/benchmarks/conformance/cases/131-shadcn-area-interactive/case.json b/benchmarks/conformance/cases/137-shadcn-area-interactive/case.json similarity index 80% rename from benchmarks/conformance/cases/131-shadcn-area-interactive/case.json rename to benchmarks/conformance/cases/137-shadcn-area-interactive/case.json index d8915f98..38280aa7 100644 --- a/benchmarks/conformance/cases/131-shadcn-area-interactive/case.json +++ b/benchmarks/conformance/cases/137-shadcn-area-interactive/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1320, - "id": "131-shadcn-area-interactive", + "order": 1380, + "id": "137-shadcn-area-interactive", "title": "shadcn Area Chart - Interactive", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-interactive example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "interactive", - "shadcn card shell" - ], + "features": ["area chart", "interactive", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts b/benchmarks/conformance/cases/137-shadcn-area-interactive/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts rename to benchmarks/conformance/cases/137-shadcn-area-interactive/recharts.ts diff --git a/benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts b/benchmarks/conformance/cases/137-shadcn-area-interactive/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts rename to benchmarks/conformance/cases/137-shadcn-area-interactive/tanstack.ts diff --git a/benchmarks/conformance/cases/132-shadcn-area-legend/case.json b/benchmarks/conformance/cases/138-shadcn-area-legend/case.json similarity index 80% rename from benchmarks/conformance/cases/132-shadcn-area-legend/case.json rename to benchmarks/conformance/cases/138-shadcn-area-legend/case.json index 5de0b6d7..81666b26 100644 --- a/benchmarks/conformance/cases/132-shadcn-area-legend/case.json +++ b/benchmarks/conformance/cases/138-shadcn-area-legend/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1330, - "id": "132-shadcn-area-legend", + "order": 1390, + "id": "138-shadcn-area-legend", "title": "shadcn Area Chart - Legend", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-legend example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "legend", - "shadcn card shell" - ], + "features": ["area chart", "legend", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts b/benchmarks/conformance/cases/138-shadcn-area-legend/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts rename to benchmarks/conformance/cases/138-shadcn-area-legend/recharts.ts diff --git a/benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts b/benchmarks/conformance/cases/138-shadcn-area-legend/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts rename to benchmarks/conformance/cases/138-shadcn-area-legend/tanstack.ts diff --git a/benchmarks/conformance/cases/133-shadcn-area-linear/case.json b/benchmarks/conformance/cases/139-shadcn-area-linear/case.json similarity index 80% rename from benchmarks/conformance/cases/133-shadcn-area-linear/case.json rename to benchmarks/conformance/cases/139-shadcn-area-linear/case.json index 95b49bc7..3d2e98c2 100644 --- a/benchmarks/conformance/cases/133-shadcn-area-linear/case.json +++ b/benchmarks/conformance/cases/139-shadcn-area-linear/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1340, - "id": "133-shadcn-area-linear", + "order": 1400, + "id": "139-shadcn-area-linear", "title": "shadcn Area Chart - Linear", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-linear example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "linear", - "shadcn card shell" - ], + "features": ["area chart", "linear", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts b/benchmarks/conformance/cases/139-shadcn-area-linear/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts rename to benchmarks/conformance/cases/139-shadcn-area-linear/recharts.ts diff --git a/benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts b/benchmarks/conformance/cases/139-shadcn-area-linear/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts rename to benchmarks/conformance/cases/139-shadcn-area-linear/tanstack.ts diff --git a/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/case.json b/benchmarks/conformance/cases/140-shadcn-area-stacked-expand/case.json similarity index 80% rename from benchmarks/conformance/cases/134-shadcn-area-stacked-expand/case.json rename to benchmarks/conformance/cases/140-shadcn-area-stacked-expand/case.json index 67a7c992..e83b5f4a 100644 --- a/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/case.json +++ b/benchmarks/conformance/cases/140-shadcn-area-stacked-expand/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1350, - "id": "134-shadcn-area-stacked-expand", + "order": 1410, + "id": "140-shadcn-area-stacked-expand", "title": "shadcn Area Chart - Stacked Expanded", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-stacked-expand example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "stacked expand", - "shadcn card shell" - ], + "features": ["area chart", "stacked expand", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts b/benchmarks/conformance/cases/140-shadcn-area-stacked-expand/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts rename to benchmarks/conformance/cases/140-shadcn-area-stacked-expand/recharts.ts diff --git a/benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts b/benchmarks/conformance/cases/140-shadcn-area-stacked-expand/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts rename to benchmarks/conformance/cases/140-shadcn-area-stacked-expand/tanstack.ts diff --git a/benchmarks/conformance/cases/135-shadcn-area-stacked/case.json b/benchmarks/conformance/cases/141-shadcn-area-stacked/case.json similarity index 80% rename from benchmarks/conformance/cases/135-shadcn-area-stacked/case.json rename to benchmarks/conformance/cases/141-shadcn-area-stacked/case.json index 16004861..384fbba1 100644 --- a/benchmarks/conformance/cases/135-shadcn-area-stacked/case.json +++ b/benchmarks/conformance/cases/141-shadcn-area-stacked/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1360, - "id": "135-shadcn-area-stacked", + "order": 1420, + "id": "141-shadcn-area-stacked", "title": "shadcn Area Chart - Stacked", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-stacked example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "stacked", - "shadcn card shell" - ], + "features": ["area chart", "stacked", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts b/benchmarks/conformance/cases/141-shadcn-area-stacked/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts rename to benchmarks/conformance/cases/141-shadcn-area-stacked/recharts.ts diff --git a/benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts b/benchmarks/conformance/cases/141-shadcn-area-stacked/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts rename to benchmarks/conformance/cases/141-shadcn-area-stacked/tanstack.ts diff --git a/benchmarks/conformance/cases/136-shadcn-area-step/case.json b/benchmarks/conformance/cases/142-shadcn-area-step/case.json similarity index 80% rename from benchmarks/conformance/cases/136-shadcn-area-step/case.json rename to benchmarks/conformance/cases/142-shadcn-area-step/case.json index 67348e6a..7e87b66f 100644 --- a/benchmarks/conformance/cases/136-shadcn-area-step/case.json +++ b/benchmarks/conformance/cases/142-shadcn-area-step/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1370, - "id": "136-shadcn-area-step", + "order": 1430, + "id": "142-shadcn-area-step", "title": "shadcn Area Chart - Step", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-step example with TanStack Charts.", "support": "native", - "features": [ - "area chart", - "step", - "shadcn card shell" - ], + "features": ["area chart", "step", "shadcn card shell"], "geometry": [ { "role": "area", diff --git a/benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts b/benchmarks/conformance/cases/142-shadcn-area-step/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts rename to benchmarks/conformance/cases/142-shadcn-area-step/recharts.ts diff --git a/benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts b/benchmarks/conformance/cases/142-shadcn-area-step/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts rename to benchmarks/conformance/cases/142-shadcn-area-step/tanstack.ts diff --git a/benchmarks/conformance/cases/137-shadcn-bar-active/case.json b/benchmarks/conformance/cases/143-shadcn-bar-active/case.json similarity index 80% rename from benchmarks/conformance/cases/137-shadcn-bar-active/case.json rename to benchmarks/conformance/cases/143-shadcn-bar-active/case.json index a54eea93..83b28ee8 100644 --- a/benchmarks/conformance/cases/137-shadcn-bar-active/case.json +++ b/benchmarks/conformance/cases/143-shadcn-bar-active/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1380, - "id": "137-shadcn-bar-active", + "order": 1440, + "id": "143-shadcn-bar-active", "title": "shadcn Bar Chart - Active", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-active example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "active", - "shadcn card shell" - ], + "features": ["bar chart", "active", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts b/benchmarks/conformance/cases/143-shadcn-bar-active/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts rename to benchmarks/conformance/cases/143-shadcn-bar-active/recharts.ts diff --git a/benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts b/benchmarks/conformance/cases/143-shadcn-bar-active/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts rename to benchmarks/conformance/cases/143-shadcn-bar-active/tanstack.ts diff --git a/benchmarks/conformance/cases/138-shadcn-bar-default/case.json b/benchmarks/conformance/cases/144-shadcn-bar-default/case.json similarity index 81% rename from benchmarks/conformance/cases/138-shadcn-bar-default/case.json rename to benchmarks/conformance/cases/144-shadcn-bar-default/case.json index 2eebb66e..c81903bb 100644 --- a/benchmarks/conformance/cases/138-shadcn-bar-default/case.json +++ b/benchmarks/conformance/cases/144-shadcn-bar-default/case.json @@ -1,20 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1390, - "id": "138-shadcn-bar-default", + "order": 1450, + "id": "144-shadcn-bar-default", "title": "shadcn Bar Chart", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-default example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "shadcn card shell" - ], + "features": ["bar chart", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts b/benchmarks/conformance/cases/144-shadcn-bar-default/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts rename to benchmarks/conformance/cases/144-shadcn-bar-default/recharts.ts diff --git a/benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts b/benchmarks/conformance/cases/144-shadcn-bar-default/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts rename to benchmarks/conformance/cases/144-shadcn-bar-default/tanstack.ts diff --git a/benchmarks/conformance/cases/139-shadcn-bar-horizontal/case.json b/benchmarks/conformance/cases/145-shadcn-bar-horizontal/case.json similarity index 80% rename from benchmarks/conformance/cases/139-shadcn-bar-horizontal/case.json rename to benchmarks/conformance/cases/145-shadcn-bar-horizontal/case.json index de2f14ad..e91baae4 100644 --- a/benchmarks/conformance/cases/139-shadcn-bar-horizontal/case.json +++ b/benchmarks/conformance/cases/145-shadcn-bar-horizontal/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1400, - "id": "139-shadcn-bar-horizontal", + "order": 1460, + "id": "145-shadcn-bar-horizontal", "title": "shadcn Bar Chart - Horizontal", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-horizontal example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "horizontal", - "shadcn card shell" - ], + "features": ["bar chart", "horizontal", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts b/benchmarks/conformance/cases/145-shadcn-bar-horizontal/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts rename to benchmarks/conformance/cases/145-shadcn-bar-horizontal/recharts.ts diff --git a/benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts b/benchmarks/conformance/cases/145-shadcn-bar-horizontal/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts rename to benchmarks/conformance/cases/145-shadcn-bar-horizontal/tanstack.ts diff --git a/benchmarks/conformance/cases/140-shadcn-bar-interactive/case.json b/benchmarks/conformance/cases/146-shadcn-bar-interactive/case.json similarity index 80% rename from benchmarks/conformance/cases/140-shadcn-bar-interactive/case.json rename to benchmarks/conformance/cases/146-shadcn-bar-interactive/case.json index 94199a75..c09cb37a 100644 --- a/benchmarks/conformance/cases/140-shadcn-bar-interactive/case.json +++ b/benchmarks/conformance/cases/146-shadcn-bar-interactive/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1410, - "id": "140-shadcn-bar-interactive", + "order": 1470, + "id": "146-shadcn-bar-interactive", "title": "shadcn Bar Chart - Interactive", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-interactive example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "interactive", - "shadcn card shell" - ], + "features": ["bar chart", "interactive", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts b/benchmarks/conformance/cases/146-shadcn-bar-interactive/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts rename to benchmarks/conformance/cases/146-shadcn-bar-interactive/recharts.ts diff --git a/benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts b/benchmarks/conformance/cases/146-shadcn-bar-interactive/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts rename to benchmarks/conformance/cases/146-shadcn-bar-interactive/tanstack.ts diff --git a/benchmarks/conformance/cases/141-shadcn-bar-label-custom/case.json b/benchmarks/conformance/cases/147-shadcn-bar-label-custom/case.json similarity index 80% rename from benchmarks/conformance/cases/141-shadcn-bar-label-custom/case.json rename to benchmarks/conformance/cases/147-shadcn-bar-label-custom/case.json index 5858df6d..49170bba 100644 --- a/benchmarks/conformance/cases/141-shadcn-bar-label-custom/case.json +++ b/benchmarks/conformance/cases/147-shadcn-bar-label-custom/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1420, - "id": "141-shadcn-bar-label-custom", + "order": 1480, + "id": "147-shadcn-bar-label-custom", "title": "shadcn Bar Chart - Custom Label", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-label-custom example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "label custom", - "shadcn card shell" - ], + "features": ["bar chart", "label custom", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts b/benchmarks/conformance/cases/147-shadcn-bar-label-custom/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts rename to benchmarks/conformance/cases/147-shadcn-bar-label-custom/recharts.ts diff --git a/benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts b/benchmarks/conformance/cases/147-shadcn-bar-label-custom/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts rename to benchmarks/conformance/cases/147-shadcn-bar-label-custom/tanstack.ts diff --git a/benchmarks/conformance/cases/142-shadcn-bar-label/case.json b/benchmarks/conformance/cases/148-shadcn-bar-label/case.json similarity index 80% rename from benchmarks/conformance/cases/142-shadcn-bar-label/case.json rename to benchmarks/conformance/cases/148-shadcn-bar-label/case.json index 9a922d88..73c7b2d8 100644 --- a/benchmarks/conformance/cases/142-shadcn-bar-label/case.json +++ b/benchmarks/conformance/cases/148-shadcn-bar-label/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1430, - "id": "142-shadcn-bar-label", + "order": 1490, + "id": "148-shadcn-bar-label", "title": "shadcn Bar Chart - Label", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-label example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "label", - "shadcn card shell" - ], + "features": ["bar chart", "label", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts b/benchmarks/conformance/cases/148-shadcn-bar-label/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts rename to benchmarks/conformance/cases/148-shadcn-bar-label/recharts.ts diff --git a/benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts b/benchmarks/conformance/cases/148-shadcn-bar-label/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts rename to benchmarks/conformance/cases/148-shadcn-bar-label/tanstack.ts diff --git a/benchmarks/conformance/cases/143-shadcn-bar-mixed/case.json b/benchmarks/conformance/cases/149-shadcn-bar-mixed/case.json similarity index 80% rename from benchmarks/conformance/cases/143-shadcn-bar-mixed/case.json rename to benchmarks/conformance/cases/149-shadcn-bar-mixed/case.json index 33aa61c2..09816de3 100644 --- a/benchmarks/conformance/cases/143-shadcn-bar-mixed/case.json +++ b/benchmarks/conformance/cases/149-shadcn-bar-mixed/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1440, - "id": "143-shadcn-bar-mixed", + "order": 1500, + "id": "149-shadcn-bar-mixed", "title": "shadcn Bar Chart - Mixed", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-mixed example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "mixed", - "shadcn card shell" - ], + "features": ["bar chart", "mixed", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts b/benchmarks/conformance/cases/149-shadcn-bar-mixed/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts rename to benchmarks/conformance/cases/149-shadcn-bar-mixed/recharts.ts diff --git a/benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts b/benchmarks/conformance/cases/149-shadcn-bar-mixed/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts rename to benchmarks/conformance/cases/149-shadcn-bar-mixed/tanstack.ts diff --git a/benchmarks/conformance/cases/144-shadcn-bar-negative/case.json b/benchmarks/conformance/cases/150-shadcn-bar-negative/case.json similarity index 80% rename from benchmarks/conformance/cases/144-shadcn-bar-negative/case.json rename to benchmarks/conformance/cases/150-shadcn-bar-negative/case.json index ae1f66dc..4ca5758c 100644 --- a/benchmarks/conformance/cases/144-shadcn-bar-negative/case.json +++ b/benchmarks/conformance/cases/150-shadcn-bar-negative/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1450, - "id": "144-shadcn-bar-negative", + "order": 1510, + "id": "150-shadcn-bar-negative", "title": "shadcn Bar Chart - Negative", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-negative example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "negative", - "shadcn card shell" - ], + "features": ["bar chart", "negative", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts b/benchmarks/conformance/cases/150-shadcn-bar-negative/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts rename to benchmarks/conformance/cases/150-shadcn-bar-negative/recharts.ts diff --git a/benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts b/benchmarks/conformance/cases/150-shadcn-bar-negative/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts rename to benchmarks/conformance/cases/150-shadcn-bar-negative/tanstack.ts diff --git a/benchmarks/conformance/cases/145-shadcn-bar-stacked/case.json b/benchmarks/conformance/cases/151-shadcn-bar-stacked/case.json similarity index 80% rename from benchmarks/conformance/cases/145-shadcn-bar-stacked/case.json rename to benchmarks/conformance/cases/151-shadcn-bar-stacked/case.json index 0b8c6747..e8aec797 100644 --- a/benchmarks/conformance/cases/145-shadcn-bar-stacked/case.json +++ b/benchmarks/conformance/cases/151-shadcn-bar-stacked/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1460, - "id": "145-shadcn-bar-stacked", + "order": 1520, + "id": "151-shadcn-bar-stacked", "title": "shadcn Bar Chart - Stacked + Legend", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-stacked example with TanStack Charts.", "support": "native", - "features": [ - "bar chart", - "stacked", - "shadcn card shell" - ], + "features": ["bar chart", "stacked", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts b/benchmarks/conformance/cases/151-shadcn-bar-stacked/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts rename to benchmarks/conformance/cases/151-shadcn-bar-stacked/recharts.ts diff --git a/benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts b/benchmarks/conformance/cases/151-shadcn-bar-stacked/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts rename to benchmarks/conformance/cases/151-shadcn-bar-stacked/tanstack.ts diff --git a/benchmarks/conformance/cases/146-shadcn-line-default/case.json b/benchmarks/conformance/cases/152-shadcn-line-default/case.json similarity index 81% rename from benchmarks/conformance/cases/146-shadcn-line-default/case.json rename to benchmarks/conformance/cases/152-shadcn-line-default/case.json index e070f10b..43a71061 100644 --- a/benchmarks/conformance/cases/146-shadcn-line-default/case.json +++ b/benchmarks/conformance/cases/152-shadcn-line-default/case.json @@ -1,20 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1470, - "id": "146-shadcn-line-default", + "order": 1530, + "id": "152-shadcn-line-default", "title": "shadcn Line Chart", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-default example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "shadcn card shell" - ], + "features": ["line chart", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts b/benchmarks/conformance/cases/152-shadcn-line-default/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts rename to benchmarks/conformance/cases/152-shadcn-line-default/recharts.ts diff --git a/benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts b/benchmarks/conformance/cases/152-shadcn-line-default/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts rename to benchmarks/conformance/cases/152-shadcn-line-default/tanstack.ts diff --git a/benchmarks/conformance/cases/147-shadcn-line-dots-colors/case.json b/benchmarks/conformance/cases/153-shadcn-line-dots-colors/case.json similarity index 80% rename from benchmarks/conformance/cases/147-shadcn-line-dots-colors/case.json rename to benchmarks/conformance/cases/153-shadcn-line-dots-colors/case.json index 60b78c72..d3a182b4 100644 --- a/benchmarks/conformance/cases/147-shadcn-line-dots-colors/case.json +++ b/benchmarks/conformance/cases/153-shadcn-line-dots-colors/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1480, - "id": "147-shadcn-line-dots-colors", + "order": 1540, + "id": "153-shadcn-line-dots-colors", "title": "shadcn Line Chart - Dots Colors", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-dots-colors example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "dots colors", - "shadcn card shell" - ], + "features": ["line chart", "dots colors", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts b/benchmarks/conformance/cases/153-shadcn-line-dots-colors/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts rename to benchmarks/conformance/cases/153-shadcn-line-dots-colors/recharts.ts diff --git a/benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts b/benchmarks/conformance/cases/153-shadcn-line-dots-colors/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts rename to benchmarks/conformance/cases/153-shadcn-line-dots-colors/tanstack.ts diff --git a/benchmarks/conformance/cases/148-shadcn-line-dots-custom/case.json b/benchmarks/conformance/cases/154-shadcn-line-dots-custom/case.json similarity index 80% rename from benchmarks/conformance/cases/148-shadcn-line-dots-custom/case.json rename to benchmarks/conformance/cases/154-shadcn-line-dots-custom/case.json index a4e78713..dd334e10 100644 --- a/benchmarks/conformance/cases/148-shadcn-line-dots-custom/case.json +++ b/benchmarks/conformance/cases/154-shadcn-line-dots-custom/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1490, - "id": "148-shadcn-line-dots-custom", + "order": 1550, + "id": "154-shadcn-line-dots-custom", "title": "shadcn Line Chart - Custom Dots", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-dots-custom example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "dots custom", - "shadcn card shell" - ], + "features": ["line chart", "dots custom", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts b/benchmarks/conformance/cases/154-shadcn-line-dots-custom/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts rename to benchmarks/conformance/cases/154-shadcn-line-dots-custom/recharts.ts diff --git a/benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts b/benchmarks/conformance/cases/154-shadcn-line-dots-custom/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts rename to benchmarks/conformance/cases/154-shadcn-line-dots-custom/tanstack.ts diff --git a/benchmarks/conformance/cases/149-shadcn-line-dots/case.json b/benchmarks/conformance/cases/155-shadcn-line-dots/case.json similarity index 80% rename from benchmarks/conformance/cases/149-shadcn-line-dots/case.json rename to benchmarks/conformance/cases/155-shadcn-line-dots/case.json index 84840282..508620f3 100644 --- a/benchmarks/conformance/cases/149-shadcn-line-dots/case.json +++ b/benchmarks/conformance/cases/155-shadcn-line-dots/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1500, - "id": "149-shadcn-line-dots", + "order": 1560, + "id": "155-shadcn-line-dots", "title": "shadcn Line Chart - Dots", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-dots example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "dots", - "shadcn card shell" - ], + "features": ["line chart", "dots", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts b/benchmarks/conformance/cases/155-shadcn-line-dots/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts rename to benchmarks/conformance/cases/155-shadcn-line-dots/recharts.ts diff --git a/benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts b/benchmarks/conformance/cases/155-shadcn-line-dots/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts rename to benchmarks/conformance/cases/155-shadcn-line-dots/tanstack.ts diff --git a/benchmarks/conformance/cases/150-shadcn-line-interactive/case.json b/benchmarks/conformance/cases/156-shadcn-line-interactive/case.json similarity index 80% rename from benchmarks/conformance/cases/150-shadcn-line-interactive/case.json rename to benchmarks/conformance/cases/156-shadcn-line-interactive/case.json index 90b9280f..2ad25717 100644 --- a/benchmarks/conformance/cases/150-shadcn-line-interactive/case.json +++ b/benchmarks/conformance/cases/156-shadcn-line-interactive/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1510, - "id": "150-shadcn-line-interactive", + "order": 1570, + "id": "156-shadcn-line-interactive", "title": "shadcn Line Chart - Interactive", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-interactive example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "interactive", - "shadcn card shell" - ], + "features": ["line chart", "interactive", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts b/benchmarks/conformance/cases/156-shadcn-line-interactive/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts rename to benchmarks/conformance/cases/156-shadcn-line-interactive/recharts.ts diff --git a/benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts b/benchmarks/conformance/cases/156-shadcn-line-interactive/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts rename to benchmarks/conformance/cases/156-shadcn-line-interactive/tanstack.ts diff --git a/benchmarks/conformance/cases/151-shadcn-line-label-custom/case.json b/benchmarks/conformance/cases/157-shadcn-line-label-custom/case.json similarity index 80% rename from benchmarks/conformance/cases/151-shadcn-line-label-custom/case.json rename to benchmarks/conformance/cases/157-shadcn-line-label-custom/case.json index a14a93ed..f2cff6f4 100644 --- a/benchmarks/conformance/cases/151-shadcn-line-label-custom/case.json +++ b/benchmarks/conformance/cases/157-shadcn-line-label-custom/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1520, - "id": "151-shadcn-line-label-custom", + "order": 1580, + "id": "157-shadcn-line-label-custom", "title": "shadcn Line Chart - Custom Label", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-label-custom example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "label custom", - "shadcn card shell" - ], + "features": ["line chart", "label custom", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts b/benchmarks/conformance/cases/157-shadcn-line-label-custom/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts rename to benchmarks/conformance/cases/157-shadcn-line-label-custom/recharts.ts diff --git a/benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts b/benchmarks/conformance/cases/157-shadcn-line-label-custom/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts rename to benchmarks/conformance/cases/157-shadcn-line-label-custom/tanstack.ts diff --git a/benchmarks/conformance/cases/152-shadcn-line-label/case.json b/benchmarks/conformance/cases/158-shadcn-line-label/case.json similarity index 80% rename from benchmarks/conformance/cases/152-shadcn-line-label/case.json rename to benchmarks/conformance/cases/158-shadcn-line-label/case.json index 9f5e0700..04ac8ba5 100644 --- a/benchmarks/conformance/cases/152-shadcn-line-label/case.json +++ b/benchmarks/conformance/cases/158-shadcn-line-label/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1530, - "id": "152-shadcn-line-label", + "order": 1590, + "id": "158-shadcn-line-label", "title": "shadcn Line Chart - Label", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-label example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "label", - "shadcn card shell" - ], + "features": ["line chart", "label", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts b/benchmarks/conformance/cases/158-shadcn-line-label/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts rename to benchmarks/conformance/cases/158-shadcn-line-label/recharts.ts diff --git a/benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts b/benchmarks/conformance/cases/158-shadcn-line-label/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts rename to benchmarks/conformance/cases/158-shadcn-line-label/tanstack.ts diff --git a/benchmarks/conformance/cases/153-shadcn-line-linear/case.json b/benchmarks/conformance/cases/159-shadcn-line-linear/case.json similarity index 80% rename from benchmarks/conformance/cases/153-shadcn-line-linear/case.json rename to benchmarks/conformance/cases/159-shadcn-line-linear/case.json index 854501a8..caf49f59 100644 --- a/benchmarks/conformance/cases/153-shadcn-line-linear/case.json +++ b/benchmarks/conformance/cases/159-shadcn-line-linear/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1540, - "id": "153-shadcn-line-linear", + "order": 1600, + "id": "159-shadcn-line-linear", "title": "shadcn Line Chart - Linear", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-linear example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "linear", - "shadcn card shell" - ], + "features": ["line chart", "linear", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts b/benchmarks/conformance/cases/159-shadcn-line-linear/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts rename to benchmarks/conformance/cases/159-shadcn-line-linear/recharts.ts diff --git a/benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts b/benchmarks/conformance/cases/159-shadcn-line-linear/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts rename to benchmarks/conformance/cases/159-shadcn-line-linear/tanstack.ts diff --git a/benchmarks/conformance/cases/154-shadcn-line-multiple/case.json b/benchmarks/conformance/cases/160-shadcn-line-multiple/case.json similarity index 80% rename from benchmarks/conformance/cases/154-shadcn-line-multiple/case.json rename to benchmarks/conformance/cases/160-shadcn-line-multiple/case.json index df7fa0ae..5d07fd79 100644 --- a/benchmarks/conformance/cases/154-shadcn-line-multiple/case.json +++ b/benchmarks/conformance/cases/160-shadcn-line-multiple/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1550, - "id": "154-shadcn-line-multiple", + "order": 1610, + "id": "160-shadcn-line-multiple", "title": "shadcn Line Chart - Multiple", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-multiple example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "multiple", - "shadcn card shell" - ], + "features": ["line chart", "multiple", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts b/benchmarks/conformance/cases/160-shadcn-line-multiple/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts rename to benchmarks/conformance/cases/160-shadcn-line-multiple/recharts.ts diff --git a/benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts b/benchmarks/conformance/cases/160-shadcn-line-multiple/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts rename to benchmarks/conformance/cases/160-shadcn-line-multiple/tanstack.ts diff --git a/benchmarks/conformance/cases/155-shadcn-line-step/case.json b/benchmarks/conformance/cases/161-shadcn-line-step/case.json similarity index 80% rename from benchmarks/conformance/cases/155-shadcn-line-step/case.json rename to benchmarks/conformance/cases/161-shadcn-line-step/case.json index d79e9feb..201e33bb 100644 --- a/benchmarks/conformance/cases/155-shadcn-line-step/case.json +++ b/benchmarks/conformance/cases/161-shadcn-line-step/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1560, - "id": "155-shadcn-line-step", + "order": 1620, + "id": "161-shadcn-line-step", "title": "shadcn Line Chart - Step", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-step example with TanStack Charts.", "support": "native", - "features": [ - "line chart", - "step", - "shadcn card shell" - ], + "features": ["line chart", "step", "shadcn card shell"], "geometry": [ { "role": "line", diff --git a/benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts b/benchmarks/conformance/cases/161-shadcn-line-step/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts rename to benchmarks/conformance/cases/161-shadcn-line-step/recharts.ts diff --git a/benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts b/benchmarks/conformance/cases/161-shadcn-line-step/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts rename to benchmarks/conformance/cases/161-shadcn-line-step/tanstack.ts diff --git a/benchmarks/conformance/cases/156-shadcn-pie-donut-active/case.json b/benchmarks/conformance/cases/162-shadcn-pie-donut-active/case.json similarity index 80% rename from benchmarks/conformance/cases/156-shadcn-pie-donut-active/case.json rename to benchmarks/conformance/cases/162-shadcn-pie-donut-active/case.json index a5c18b7a..5c51f0ba 100644 --- a/benchmarks/conformance/cases/156-shadcn-pie-donut-active/case.json +++ b/benchmarks/conformance/cases/162-shadcn-pie-donut-active/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1570, - "id": "156-shadcn-pie-donut-active", + "order": 1630, + "id": "162-shadcn-pie-donut-active", "title": "shadcn Pie Chart - Donut Active", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-donut-active example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "donut active", - "shadcn card shell" - ], + "features": ["pie chart", "donut active", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts b/benchmarks/conformance/cases/162-shadcn-pie-donut-active/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts rename to benchmarks/conformance/cases/162-shadcn-pie-donut-active/recharts.ts diff --git a/benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts b/benchmarks/conformance/cases/162-shadcn-pie-donut-active/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts rename to benchmarks/conformance/cases/162-shadcn-pie-donut-active/tanstack.ts diff --git a/benchmarks/conformance/cases/157-shadcn-pie-donut/case.json b/benchmarks/conformance/cases/163-shadcn-pie-donut/case.json similarity index 80% rename from benchmarks/conformance/cases/157-shadcn-pie-donut/case.json rename to benchmarks/conformance/cases/163-shadcn-pie-donut/case.json index b3641876..6b974818 100644 --- a/benchmarks/conformance/cases/157-shadcn-pie-donut/case.json +++ b/benchmarks/conformance/cases/163-shadcn-pie-donut/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1580, - "id": "157-shadcn-pie-donut", + "order": 1640, + "id": "163-shadcn-pie-donut", "title": "shadcn Pie Chart - Donut", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-donut example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "donut", - "shadcn card shell" - ], + "features": ["pie chart", "donut", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts b/benchmarks/conformance/cases/163-shadcn-pie-donut/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts rename to benchmarks/conformance/cases/163-shadcn-pie-donut/recharts.ts diff --git a/benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts b/benchmarks/conformance/cases/163-shadcn-pie-donut/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts rename to benchmarks/conformance/cases/163-shadcn-pie-donut/tanstack.ts diff --git a/benchmarks/conformance/cases/158-shadcn-pie-interactive/case.json b/benchmarks/conformance/cases/164-shadcn-pie-interactive/case.json similarity index 80% rename from benchmarks/conformance/cases/158-shadcn-pie-interactive/case.json rename to benchmarks/conformance/cases/164-shadcn-pie-interactive/case.json index 21d8c9c7..a3122b05 100644 --- a/benchmarks/conformance/cases/158-shadcn-pie-interactive/case.json +++ b/benchmarks/conformance/cases/164-shadcn-pie-interactive/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1590, - "id": "158-shadcn-pie-interactive", + "order": 1650, + "id": "164-shadcn-pie-interactive", "title": "shadcn Pie Chart - Interactive", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-interactive example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "interactive", - "shadcn card shell" - ], + "features": ["pie chart", "interactive", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts b/benchmarks/conformance/cases/164-shadcn-pie-interactive/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts rename to benchmarks/conformance/cases/164-shadcn-pie-interactive/recharts.ts diff --git a/benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts b/benchmarks/conformance/cases/164-shadcn-pie-interactive/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts rename to benchmarks/conformance/cases/164-shadcn-pie-interactive/tanstack.ts diff --git a/benchmarks/conformance/cases/159-shadcn-pie-label-custom/case.json b/benchmarks/conformance/cases/165-shadcn-pie-label-custom/case.json similarity index 80% rename from benchmarks/conformance/cases/159-shadcn-pie-label-custom/case.json rename to benchmarks/conformance/cases/165-shadcn-pie-label-custom/case.json index 25da4f8c..e8a56f83 100644 --- a/benchmarks/conformance/cases/159-shadcn-pie-label-custom/case.json +++ b/benchmarks/conformance/cases/165-shadcn-pie-label-custom/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1600, - "id": "159-shadcn-pie-label-custom", + "order": 1660, + "id": "165-shadcn-pie-label-custom", "title": "shadcn Pie Chart - Custom Label", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-label-custom example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "label custom", - "shadcn card shell" - ], + "features": ["pie chart", "label custom", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts b/benchmarks/conformance/cases/165-shadcn-pie-label-custom/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts rename to benchmarks/conformance/cases/165-shadcn-pie-label-custom/recharts.ts diff --git a/benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts b/benchmarks/conformance/cases/165-shadcn-pie-label-custom/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts rename to benchmarks/conformance/cases/165-shadcn-pie-label-custom/tanstack.ts diff --git a/benchmarks/conformance/cases/160-shadcn-pie-label-list/case.json b/benchmarks/conformance/cases/166-shadcn-pie-label-list/case.json similarity index 80% rename from benchmarks/conformance/cases/160-shadcn-pie-label-list/case.json rename to benchmarks/conformance/cases/166-shadcn-pie-label-list/case.json index 6795daa3..e974a32a 100644 --- a/benchmarks/conformance/cases/160-shadcn-pie-label-list/case.json +++ b/benchmarks/conformance/cases/166-shadcn-pie-label-list/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1610, - "id": "160-shadcn-pie-label-list", + "order": 1670, + "id": "166-shadcn-pie-label-list", "title": "shadcn Pie Chart - Label List", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-label-list example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "label list", - "shadcn card shell" - ], + "features": ["pie chart", "label list", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts b/benchmarks/conformance/cases/166-shadcn-pie-label-list/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts rename to benchmarks/conformance/cases/166-shadcn-pie-label-list/recharts.ts diff --git a/benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts b/benchmarks/conformance/cases/166-shadcn-pie-label-list/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts rename to benchmarks/conformance/cases/166-shadcn-pie-label-list/tanstack.ts diff --git a/benchmarks/conformance/cases/161-shadcn-pie-label/case.json b/benchmarks/conformance/cases/167-shadcn-pie-label/case.json similarity index 80% rename from benchmarks/conformance/cases/161-shadcn-pie-label/case.json rename to benchmarks/conformance/cases/167-shadcn-pie-label/case.json index 5982b8be..ecd1ea57 100644 --- a/benchmarks/conformance/cases/161-shadcn-pie-label/case.json +++ b/benchmarks/conformance/cases/167-shadcn-pie-label/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1620, - "id": "161-shadcn-pie-label", + "order": 1680, + "id": "167-shadcn-pie-label", "title": "shadcn Pie Chart - Label", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-label example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "label", - "shadcn card shell" - ], + "features": ["pie chart", "label", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts b/benchmarks/conformance/cases/167-shadcn-pie-label/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts rename to benchmarks/conformance/cases/167-shadcn-pie-label/recharts.ts diff --git a/benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts b/benchmarks/conformance/cases/167-shadcn-pie-label/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts rename to benchmarks/conformance/cases/167-shadcn-pie-label/tanstack.ts diff --git a/benchmarks/conformance/cases/162-shadcn-pie-legend/case.json b/benchmarks/conformance/cases/168-shadcn-pie-legend/case.json similarity index 80% rename from benchmarks/conformance/cases/162-shadcn-pie-legend/case.json rename to benchmarks/conformance/cases/168-shadcn-pie-legend/case.json index aa11a606..f44f1d70 100644 --- a/benchmarks/conformance/cases/162-shadcn-pie-legend/case.json +++ b/benchmarks/conformance/cases/168-shadcn-pie-legend/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1630, - "id": "162-shadcn-pie-legend", + "order": 1690, + "id": "168-shadcn-pie-legend", "title": "shadcn Pie Chart - Legend", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-legend example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "legend", - "shadcn card shell" - ], + "features": ["pie chart", "legend", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts b/benchmarks/conformance/cases/168-shadcn-pie-legend/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts rename to benchmarks/conformance/cases/168-shadcn-pie-legend/recharts.ts diff --git a/benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts b/benchmarks/conformance/cases/168-shadcn-pie-legend/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts rename to benchmarks/conformance/cases/168-shadcn-pie-legend/tanstack.ts diff --git a/benchmarks/conformance/cases/163-shadcn-pie-separator-none/case.json b/benchmarks/conformance/cases/169-shadcn-pie-separator-none/case.json similarity index 80% rename from benchmarks/conformance/cases/163-shadcn-pie-separator-none/case.json rename to benchmarks/conformance/cases/169-shadcn-pie-separator-none/case.json index 7d9cf26b..d7e2065a 100644 --- a/benchmarks/conformance/cases/163-shadcn-pie-separator-none/case.json +++ b/benchmarks/conformance/cases/169-shadcn-pie-separator-none/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1640, - "id": "163-shadcn-pie-separator-none", + "order": 1700, + "id": "169-shadcn-pie-separator-none", "title": "shadcn Pie Chart - Separator None", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-separator-none example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "separator none", - "shadcn card shell" - ], + "features": ["pie chart", "separator none", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts b/benchmarks/conformance/cases/169-shadcn-pie-separator-none/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts rename to benchmarks/conformance/cases/169-shadcn-pie-separator-none/recharts.ts diff --git a/benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts b/benchmarks/conformance/cases/169-shadcn-pie-separator-none/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts rename to benchmarks/conformance/cases/169-shadcn-pie-separator-none/tanstack.ts diff --git a/benchmarks/conformance/cases/164-shadcn-pie-simple/case.json b/benchmarks/conformance/cases/170-shadcn-pie-simple/case.json similarity index 81% rename from benchmarks/conformance/cases/164-shadcn-pie-simple/case.json rename to benchmarks/conformance/cases/170-shadcn-pie-simple/case.json index 66ee2a40..24348823 100644 --- a/benchmarks/conformance/cases/164-shadcn-pie-simple/case.json +++ b/benchmarks/conformance/cases/170-shadcn-pie-simple/case.json @@ -1,20 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1650, - "id": "164-shadcn-pie-simple", + "order": 1710, + "id": "170-shadcn-pie-simple", "title": "shadcn Pie Chart", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-simple example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "shadcn card shell" - ], + "features": ["pie chart", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts b/benchmarks/conformance/cases/170-shadcn-pie-simple/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts rename to benchmarks/conformance/cases/170-shadcn-pie-simple/recharts.ts diff --git a/benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts b/benchmarks/conformance/cases/170-shadcn-pie-simple/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts rename to benchmarks/conformance/cases/170-shadcn-pie-simple/tanstack.ts diff --git a/benchmarks/conformance/cases/165-shadcn-pie-stacked/case.json b/benchmarks/conformance/cases/171-shadcn-pie-stacked/case.json similarity index 80% rename from benchmarks/conformance/cases/165-shadcn-pie-stacked/case.json rename to benchmarks/conformance/cases/171-shadcn-pie-stacked/case.json index 877799f7..fdca76ef 100644 --- a/benchmarks/conformance/cases/165-shadcn-pie-stacked/case.json +++ b/benchmarks/conformance/cases/171-shadcn-pie-stacked/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1660, - "id": "165-shadcn-pie-stacked", + "order": 1720, + "id": "171-shadcn-pie-stacked", "title": "shadcn Pie Chart - Stacked", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-stacked example with TanStack Charts.", "support": "native", - "features": [ - "pie chart", - "stacked", - "shadcn card shell" - ], + "features": ["pie chart", "stacked", "shadcn card shell"], "geometry": [ { "role": "arc", diff --git a/benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts b/benchmarks/conformance/cases/171-shadcn-pie-stacked/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts rename to benchmarks/conformance/cases/171-shadcn-pie-stacked/recharts.ts diff --git a/benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts b/benchmarks/conformance/cases/171-shadcn-pie-stacked/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts rename to benchmarks/conformance/cases/171-shadcn-pie-stacked/tanstack.ts diff --git a/benchmarks/conformance/cases/166-shadcn-radar-default/case.json b/benchmarks/conformance/cases/172-shadcn-radar-default/case.json similarity index 81% rename from benchmarks/conformance/cases/166-shadcn-radar-default/case.json rename to benchmarks/conformance/cases/172-shadcn-radar-default/case.json index eb912f09..0d18a8e5 100644 --- a/benchmarks/conformance/cases/166-shadcn-radar-default/case.json +++ b/benchmarks/conformance/cases/172-shadcn-radar-default/case.json @@ -1,20 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1670, - "id": "166-shadcn-radar-default", + "order": 1730, + "id": "172-shadcn-radar-default", "title": "shadcn Radar Chart", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-default example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "shadcn card shell" - ], + "features": ["radar chart", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts b/benchmarks/conformance/cases/172-shadcn-radar-default/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts rename to benchmarks/conformance/cases/172-shadcn-radar-default/recharts.ts diff --git a/benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts b/benchmarks/conformance/cases/172-shadcn-radar-default/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts rename to benchmarks/conformance/cases/172-shadcn-radar-default/tanstack.ts diff --git a/benchmarks/conformance/cases/167-shadcn-radar-dots/case.json b/benchmarks/conformance/cases/173-shadcn-radar-dots/case.json similarity index 80% rename from benchmarks/conformance/cases/167-shadcn-radar-dots/case.json rename to benchmarks/conformance/cases/173-shadcn-radar-dots/case.json index 61245b30..8277193c 100644 --- a/benchmarks/conformance/cases/167-shadcn-radar-dots/case.json +++ b/benchmarks/conformance/cases/173-shadcn-radar-dots/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1680, - "id": "167-shadcn-radar-dots", + "order": 1740, + "id": "173-shadcn-radar-dots", "title": "shadcn Radar Chart - Dots", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-dots example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "dots", - "shadcn card shell" - ], + "features": ["radar chart", "dots", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts b/benchmarks/conformance/cases/173-shadcn-radar-dots/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts rename to benchmarks/conformance/cases/173-shadcn-radar-dots/recharts.ts diff --git a/benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts b/benchmarks/conformance/cases/173-shadcn-radar-dots/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts rename to benchmarks/conformance/cases/173-shadcn-radar-dots/tanstack.ts diff --git a/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/case.json b/benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/case.json similarity index 80% rename from benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/case.json rename to benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/case.json index b3701f51..8bbc0231 100644 --- a/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/case.json +++ b/benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1690, - "id": "168-shadcn-radar-grid-circle-fill", + "order": 1750, + "id": "174-shadcn-radar-grid-circle-fill", "title": "shadcn Radar Chart - Grid Circle Filled", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-fill example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "grid circle fill", - "shadcn card shell" - ], + "features": ["radar chart", "grid circle fill", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts b/benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts rename to benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/recharts.ts diff --git a/benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts b/benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts rename to benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/tanstack.ts diff --git a/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/case.json b/benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/case.json similarity index 80% rename from benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/case.json rename to benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/case.json index a1668598..9c9e1a68 100644 --- a/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/case.json +++ b/benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1700, - "id": "169-shadcn-radar-grid-circle-no-lines", + "order": 1760, + "id": "175-shadcn-radar-grid-circle-no-lines", "title": "shadcn Radar Chart - Grid Circle - No lines", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-no-lines example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "grid circle no lines", - "shadcn card shell" - ], + "features": ["radar chart", "grid circle no lines", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts b/benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts rename to benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/recharts.ts diff --git a/benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts b/benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts rename to benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/tanstack.ts diff --git a/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/case.json b/benchmarks/conformance/cases/176-shadcn-radar-grid-circle/case.json similarity index 80% rename from benchmarks/conformance/cases/170-shadcn-radar-grid-circle/case.json rename to benchmarks/conformance/cases/176-shadcn-radar-grid-circle/case.json index 6ec16b0b..9781bc55 100644 --- a/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/case.json +++ b/benchmarks/conformance/cases/176-shadcn-radar-grid-circle/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1710, - "id": "170-shadcn-radar-grid-circle", + "order": 1770, + "id": "176-shadcn-radar-grid-circle", "title": "shadcn Radar Chart - Grid Circle", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-circle example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "grid circle", - "shadcn card shell" - ], + "features": ["radar chart", "grid circle", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts b/benchmarks/conformance/cases/176-shadcn-radar-grid-circle/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts rename to benchmarks/conformance/cases/176-shadcn-radar-grid-circle/recharts.ts diff --git a/benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts b/benchmarks/conformance/cases/176-shadcn-radar-grid-circle/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts rename to benchmarks/conformance/cases/176-shadcn-radar-grid-circle/tanstack.ts diff --git a/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/case.json b/benchmarks/conformance/cases/177-shadcn-radar-grid-custom/case.json similarity index 80% rename from benchmarks/conformance/cases/171-shadcn-radar-grid-custom/case.json rename to benchmarks/conformance/cases/177-shadcn-radar-grid-custom/case.json index bfa04919..052e8c16 100644 --- a/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/case.json +++ b/benchmarks/conformance/cases/177-shadcn-radar-grid-custom/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1720, - "id": "171-shadcn-radar-grid-custom", + "order": 1780, + "id": "177-shadcn-radar-grid-custom", "title": "shadcn Radar Chart - Grid Custom", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-custom example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "grid custom", - "shadcn card shell" - ], + "features": ["radar chart", "grid custom", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts b/benchmarks/conformance/cases/177-shadcn-radar-grid-custom/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts rename to benchmarks/conformance/cases/177-shadcn-radar-grid-custom/recharts.ts diff --git a/benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts b/benchmarks/conformance/cases/177-shadcn-radar-grid-custom/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts rename to benchmarks/conformance/cases/177-shadcn-radar-grid-custom/tanstack.ts diff --git a/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/case.json b/benchmarks/conformance/cases/178-shadcn-radar-grid-fill/case.json similarity index 80% rename from benchmarks/conformance/cases/172-shadcn-radar-grid-fill/case.json rename to benchmarks/conformance/cases/178-shadcn-radar-grid-fill/case.json index e6b57050..07e42d6c 100644 --- a/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/case.json +++ b/benchmarks/conformance/cases/178-shadcn-radar-grid-fill/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1730, - "id": "172-shadcn-radar-grid-fill", + "order": 1790, + "id": "178-shadcn-radar-grid-fill", "title": "shadcn Radar Chart - Grid Filled", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-fill example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "grid fill", - "shadcn card shell" - ], + "features": ["radar chart", "grid fill", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts b/benchmarks/conformance/cases/178-shadcn-radar-grid-fill/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts rename to benchmarks/conformance/cases/178-shadcn-radar-grid-fill/recharts.ts diff --git a/benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts b/benchmarks/conformance/cases/178-shadcn-radar-grid-fill/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts rename to benchmarks/conformance/cases/178-shadcn-radar-grid-fill/tanstack.ts diff --git a/benchmarks/conformance/cases/173-shadcn-radar-grid-none/case.json b/benchmarks/conformance/cases/179-shadcn-radar-grid-none/case.json similarity index 80% rename from benchmarks/conformance/cases/173-shadcn-radar-grid-none/case.json rename to benchmarks/conformance/cases/179-shadcn-radar-grid-none/case.json index 7e66e1cb..f8d6a262 100644 --- a/benchmarks/conformance/cases/173-shadcn-radar-grid-none/case.json +++ b/benchmarks/conformance/cases/179-shadcn-radar-grid-none/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1740, - "id": "173-shadcn-radar-grid-none", + "order": 1800, + "id": "179-shadcn-radar-grid-none", "title": "shadcn Radar Chart - Grid None", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-none example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "grid none", - "shadcn card shell" - ], + "features": ["radar chart", "grid none", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts b/benchmarks/conformance/cases/179-shadcn-radar-grid-none/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts rename to benchmarks/conformance/cases/179-shadcn-radar-grid-none/recharts.ts diff --git a/benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts b/benchmarks/conformance/cases/179-shadcn-radar-grid-none/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts rename to benchmarks/conformance/cases/179-shadcn-radar-grid-none/tanstack.ts diff --git a/benchmarks/conformance/cases/174-shadcn-radar-icons/case.json b/benchmarks/conformance/cases/180-shadcn-radar-icons/case.json similarity index 80% rename from benchmarks/conformance/cases/174-shadcn-radar-icons/case.json rename to benchmarks/conformance/cases/180-shadcn-radar-icons/case.json index 38b8ce4a..0a4d9029 100644 --- a/benchmarks/conformance/cases/174-shadcn-radar-icons/case.json +++ b/benchmarks/conformance/cases/180-shadcn-radar-icons/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1750, - "id": "174-shadcn-radar-icons", + "order": 1810, + "id": "180-shadcn-radar-icons", "title": "shadcn Radar Chart - Icons", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-icons example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "icons", - "shadcn card shell" - ], + "features": ["radar chart", "icons", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts b/benchmarks/conformance/cases/180-shadcn-radar-icons/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts rename to benchmarks/conformance/cases/180-shadcn-radar-icons/recharts.ts diff --git a/benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts b/benchmarks/conformance/cases/180-shadcn-radar-icons/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts rename to benchmarks/conformance/cases/180-shadcn-radar-icons/tanstack.ts diff --git a/benchmarks/conformance/cases/175-shadcn-radar-label-custom/case.json b/benchmarks/conformance/cases/181-shadcn-radar-label-custom/case.json similarity index 80% rename from benchmarks/conformance/cases/175-shadcn-radar-label-custom/case.json rename to benchmarks/conformance/cases/181-shadcn-radar-label-custom/case.json index f7067b78..386bb3d7 100644 --- a/benchmarks/conformance/cases/175-shadcn-radar-label-custom/case.json +++ b/benchmarks/conformance/cases/181-shadcn-radar-label-custom/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1760, - "id": "175-shadcn-radar-label-custom", + "order": 1820, + "id": "181-shadcn-radar-label-custom", "title": "shadcn Radar Chart - Custom Label", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-label-custom example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "label custom", - "shadcn card shell" - ], + "features": ["radar chart", "label custom", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts b/benchmarks/conformance/cases/181-shadcn-radar-label-custom/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts rename to benchmarks/conformance/cases/181-shadcn-radar-label-custom/recharts.ts diff --git a/benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts b/benchmarks/conformance/cases/181-shadcn-radar-label-custom/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts rename to benchmarks/conformance/cases/181-shadcn-radar-label-custom/tanstack.ts diff --git a/benchmarks/conformance/cases/176-shadcn-radar-legend/case.json b/benchmarks/conformance/cases/182-shadcn-radar-legend/case.json similarity index 80% rename from benchmarks/conformance/cases/176-shadcn-radar-legend/case.json rename to benchmarks/conformance/cases/182-shadcn-radar-legend/case.json index 3c30a413..5696fbad 100644 --- a/benchmarks/conformance/cases/176-shadcn-radar-legend/case.json +++ b/benchmarks/conformance/cases/182-shadcn-radar-legend/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1770, - "id": "176-shadcn-radar-legend", + "order": 1830, + "id": "182-shadcn-radar-legend", "title": "shadcn Radar Chart - Legend", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-legend example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "legend", - "shadcn card shell" - ], + "features": ["radar chart", "legend", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts b/benchmarks/conformance/cases/182-shadcn-radar-legend/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts rename to benchmarks/conformance/cases/182-shadcn-radar-legend/recharts.ts diff --git a/benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts b/benchmarks/conformance/cases/182-shadcn-radar-legend/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts rename to benchmarks/conformance/cases/182-shadcn-radar-legend/tanstack.ts diff --git a/benchmarks/conformance/cases/177-shadcn-radar-lines-only/case.json b/benchmarks/conformance/cases/183-shadcn-radar-lines-only/case.json similarity index 80% rename from benchmarks/conformance/cases/177-shadcn-radar-lines-only/case.json rename to benchmarks/conformance/cases/183-shadcn-radar-lines-only/case.json index 3ff366d4..a2ee23e2 100644 --- a/benchmarks/conformance/cases/177-shadcn-radar-lines-only/case.json +++ b/benchmarks/conformance/cases/183-shadcn-radar-lines-only/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1780, - "id": "177-shadcn-radar-lines-only", + "order": 1840, + "id": "183-shadcn-radar-lines-only", "title": "shadcn Radar Chart - Lines Only", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-lines-only example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "lines only", - "shadcn card shell" - ], + "features": ["radar chart", "lines only", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts b/benchmarks/conformance/cases/183-shadcn-radar-lines-only/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts rename to benchmarks/conformance/cases/183-shadcn-radar-lines-only/recharts.ts diff --git a/benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts b/benchmarks/conformance/cases/183-shadcn-radar-lines-only/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts rename to benchmarks/conformance/cases/183-shadcn-radar-lines-only/tanstack.ts diff --git a/benchmarks/conformance/cases/178-shadcn-radar-radius/case.json b/benchmarks/conformance/cases/184-shadcn-radar-radius/case.json similarity index 80% rename from benchmarks/conformance/cases/178-shadcn-radar-radius/case.json rename to benchmarks/conformance/cases/184-shadcn-radar-radius/case.json index c365a101..14a0f200 100644 --- a/benchmarks/conformance/cases/178-shadcn-radar-radius/case.json +++ b/benchmarks/conformance/cases/184-shadcn-radar-radius/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1790, - "id": "178-shadcn-radar-radius", + "order": 1850, + "id": "184-shadcn-radar-radius", "title": "shadcn Radar Chart - Radius Axis", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-radius example with TanStack Charts.", "support": "native", - "features": [ - "radar chart", - "radius", - "shadcn card shell" - ], + "features": ["radar chart", "radius", "shadcn card shell"], "geometry": [ { "role": "radar", diff --git a/benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts b/benchmarks/conformance/cases/184-shadcn-radar-radius/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts rename to benchmarks/conformance/cases/184-shadcn-radar-radius/recharts.ts diff --git a/benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts b/benchmarks/conformance/cases/184-shadcn-radar-radius/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts rename to benchmarks/conformance/cases/184-shadcn-radar-radius/tanstack.ts diff --git a/benchmarks/conformance/cases/179-shadcn-radial-grid/case.json b/benchmarks/conformance/cases/185-shadcn-radial-grid/case.json similarity index 82% rename from benchmarks/conformance/cases/179-shadcn-radial-grid/case.json rename to benchmarks/conformance/cases/185-shadcn-radial-grid/case.json index b6894d41..8e875608 100644 --- a/benchmarks/conformance/cases/179-shadcn-radial-grid/case.json +++ b/benchmarks/conformance/cases/185-shadcn-radial-grid/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1800, - "id": "179-shadcn-radial-grid", + "order": 1860, + "id": "185-shadcn-radial-grid", "title": "shadcn Radial Chart - Grid", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-grid example with TanStack Charts.", "support": "native", - "features": [ - "radial chart", - "grid", - "shadcn card shell" - ], + "features": ["radial chart", "grid", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts b/benchmarks/conformance/cases/185-shadcn-radial-grid/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts rename to benchmarks/conformance/cases/185-shadcn-radial-grid/recharts.ts diff --git a/benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts b/benchmarks/conformance/cases/185-shadcn-radial-grid/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts rename to benchmarks/conformance/cases/185-shadcn-radial-grid/tanstack.ts diff --git a/benchmarks/conformance/cases/180-shadcn-radial-label/case.json b/benchmarks/conformance/cases/186-shadcn-radial-label/case.json similarity index 82% rename from benchmarks/conformance/cases/180-shadcn-radial-label/case.json rename to benchmarks/conformance/cases/186-shadcn-radial-label/case.json index f05bc502..11794508 100644 --- a/benchmarks/conformance/cases/180-shadcn-radial-label/case.json +++ b/benchmarks/conformance/cases/186-shadcn-radial-label/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1810, - "id": "180-shadcn-radial-label", + "order": 1870, + "id": "186-shadcn-radial-label", "title": "shadcn Radial Chart - Label", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-label example with TanStack Charts.", "support": "native", - "features": [ - "radial chart", - "label", - "shadcn card shell" - ], + "features": ["radial chart", "label", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts b/benchmarks/conformance/cases/186-shadcn-radial-label/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts rename to benchmarks/conformance/cases/186-shadcn-radial-label/recharts.ts diff --git a/benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts b/benchmarks/conformance/cases/186-shadcn-radial-label/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts rename to benchmarks/conformance/cases/186-shadcn-radial-label/tanstack.ts diff --git a/benchmarks/conformance/cases/181-shadcn-radial-shape/case.json b/benchmarks/conformance/cases/187-shadcn-radial-shape/case.json similarity index 82% rename from benchmarks/conformance/cases/181-shadcn-radial-shape/case.json rename to benchmarks/conformance/cases/187-shadcn-radial-shape/case.json index 6fa9a1fa..05bf5ffb 100644 --- a/benchmarks/conformance/cases/181-shadcn-radial-shape/case.json +++ b/benchmarks/conformance/cases/187-shadcn-radial-shape/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1820, - "id": "181-shadcn-radial-shape", + "order": 1880, + "id": "187-shadcn-radial-shape", "title": "shadcn Radial Chart - Shape", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-shape example with TanStack Charts.", "support": "native", - "features": [ - "radial chart", - "shape", - "shadcn card shell" - ], + "features": ["radial chart", "shape", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts b/benchmarks/conformance/cases/187-shadcn-radial-shape/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts rename to benchmarks/conformance/cases/187-shadcn-radial-shape/recharts.ts diff --git a/benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts b/benchmarks/conformance/cases/187-shadcn-radial-shape/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts rename to benchmarks/conformance/cases/187-shadcn-radial-shape/tanstack.ts diff --git a/benchmarks/conformance/cases/182-shadcn-radial-simple/case.json b/benchmarks/conformance/cases/188-shadcn-radial-simple/case.json similarity index 83% rename from benchmarks/conformance/cases/182-shadcn-radial-simple/case.json rename to benchmarks/conformance/cases/188-shadcn-radial-simple/case.json index c08f93a0..69edf264 100644 --- a/benchmarks/conformance/cases/182-shadcn-radial-simple/case.json +++ b/benchmarks/conformance/cases/188-shadcn-radial-simple/case.json @@ -1,20 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1830, - "id": "182-shadcn-radial-simple", + "order": 1890, + "id": "188-shadcn-radial-simple", "title": "shadcn Radial Chart", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-simple example with TanStack Charts.", "support": "native", - "features": [ - "radial chart", - "shadcn card shell" - ], + "features": ["radial chart", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts b/benchmarks/conformance/cases/188-shadcn-radial-simple/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts rename to benchmarks/conformance/cases/188-shadcn-radial-simple/recharts.ts diff --git a/benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts b/benchmarks/conformance/cases/188-shadcn-radial-simple/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts rename to benchmarks/conformance/cases/188-shadcn-radial-simple/tanstack.ts diff --git a/benchmarks/conformance/cases/183-shadcn-radial-stacked/case.json b/benchmarks/conformance/cases/189-shadcn-radial-stacked/case.json similarity index 82% rename from benchmarks/conformance/cases/183-shadcn-radial-stacked/case.json rename to benchmarks/conformance/cases/189-shadcn-radial-stacked/case.json index e49f3ddc..9ebebe00 100644 --- a/benchmarks/conformance/cases/183-shadcn-radial-stacked/case.json +++ b/benchmarks/conformance/cases/189-shadcn-radial-stacked/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1840, - "id": "183-shadcn-radial-stacked", + "order": 1900, + "id": "189-shadcn-radial-stacked", "title": "shadcn Radial Chart - Stacked", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-stacked example with TanStack Charts.", "support": "native", - "features": [ - "radial chart", - "stacked", - "shadcn card shell" - ], + "features": ["radial chart", "stacked", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts b/benchmarks/conformance/cases/189-shadcn-radial-stacked/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts rename to benchmarks/conformance/cases/189-shadcn-radial-stacked/recharts.ts diff --git a/benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts b/benchmarks/conformance/cases/189-shadcn-radial-stacked/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts rename to benchmarks/conformance/cases/189-shadcn-radial-stacked/tanstack.ts diff --git a/benchmarks/conformance/cases/184-shadcn-tooltip-default/case.json b/benchmarks/conformance/cases/190-shadcn-tooltip-default/case.json similarity index 81% rename from benchmarks/conformance/cases/184-shadcn-tooltip-default/case.json rename to benchmarks/conformance/cases/190-shadcn-tooltip-default/case.json index 80d73243..dba70092 100644 --- a/benchmarks/conformance/cases/184-shadcn-tooltip-default/case.json +++ b/benchmarks/conformance/cases/190-shadcn-tooltip-default/case.json @@ -1,20 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1850, - "id": "184-shadcn-tooltip-default", + "order": 1910, + "id": "190-shadcn-tooltip-default", "title": "shadcn Tooltip - Default", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-default example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "shadcn card shell" - ], + "features": ["tooltip chart", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts b/benchmarks/conformance/cases/190-shadcn-tooltip-default/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts rename to benchmarks/conformance/cases/190-shadcn-tooltip-default/recharts.ts diff --git a/benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts b/benchmarks/conformance/cases/190-shadcn-tooltip-default/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts rename to benchmarks/conformance/cases/190-shadcn-tooltip-default/tanstack.ts diff --git a/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/case.json b/benchmarks/conformance/cases/191-shadcn-tooltip-formatter/case.json similarity index 80% rename from benchmarks/conformance/cases/185-shadcn-tooltip-formatter/case.json rename to benchmarks/conformance/cases/191-shadcn-tooltip-formatter/case.json index 9d3c91e5..12b32d8f 100644 --- a/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/case.json +++ b/benchmarks/conformance/cases/191-shadcn-tooltip-formatter/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1860, - "id": "185-shadcn-tooltip-formatter", + "order": 1920, + "id": "191-shadcn-tooltip-formatter", "title": "shadcn Tooltip - Formatter", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-formatter example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "formatter", - "shadcn card shell" - ], + "features": ["tooltip chart", "formatter", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts b/benchmarks/conformance/cases/191-shadcn-tooltip-formatter/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts rename to benchmarks/conformance/cases/191-shadcn-tooltip-formatter/recharts.ts diff --git a/benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts b/benchmarks/conformance/cases/191-shadcn-tooltip-formatter/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts rename to benchmarks/conformance/cases/191-shadcn-tooltip-formatter/tanstack.ts diff --git a/benchmarks/conformance/cases/186-shadcn-tooltip-icons/case.json b/benchmarks/conformance/cases/192-shadcn-tooltip-icons/case.json similarity index 80% rename from benchmarks/conformance/cases/186-shadcn-tooltip-icons/case.json rename to benchmarks/conformance/cases/192-shadcn-tooltip-icons/case.json index dbaef0c0..4fa1fea4 100644 --- a/benchmarks/conformance/cases/186-shadcn-tooltip-icons/case.json +++ b/benchmarks/conformance/cases/192-shadcn-tooltip-icons/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1870, - "id": "186-shadcn-tooltip-icons", + "order": 1930, + "id": "192-shadcn-tooltip-icons", "title": "shadcn Tooltip - Icons", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-icons example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "icons", - "shadcn card shell" - ], + "features": ["tooltip chart", "icons", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts b/benchmarks/conformance/cases/192-shadcn-tooltip-icons/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts rename to benchmarks/conformance/cases/192-shadcn-tooltip-icons/recharts.ts diff --git a/benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts b/benchmarks/conformance/cases/192-shadcn-tooltip-icons/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts rename to benchmarks/conformance/cases/192-shadcn-tooltip-icons/tanstack.ts diff --git a/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/case.json b/benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/case.json similarity index 80% rename from benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/case.json rename to benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/case.json index 78a7b663..bb4dc7ba 100644 --- a/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/case.json +++ b/benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1880, - "id": "187-shadcn-tooltip-indicator-line", + "order": 1940, + "id": "193-shadcn-tooltip-indicator-line", "title": "shadcn Tooltip - Line Indicator", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-line example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "indicator line", - "shadcn card shell" - ], + "features": ["tooltip chart", "indicator line", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts b/benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts rename to benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/recharts.ts diff --git a/benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts b/benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts rename to benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/tanstack.ts diff --git a/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/case.json b/benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/case.json similarity index 80% rename from benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/case.json rename to benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/case.json index b4762c3d..7c864fd7 100644 --- a/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/case.json +++ b/benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1890, - "id": "188-shadcn-tooltip-indicator-none", + "order": 1950, + "id": "194-shadcn-tooltip-indicator-none", "title": "shadcn Tooltip - No Indicator", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-none example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "indicator none", - "shadcn card shell" - ], + "features": ["tooltip chart", "indicator none", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts b/benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts rename to benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/recharts.ts diff --git a/benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts b/benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts rename to benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/tanstack.ts diff --git a/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/case.json b/benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/case.json similarity index 80% rename from benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/case.json rename to benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/case.json index 25369b2a..cb815892 100644 --- a/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/case.json +++ b/benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1900, - "id": "189-shadcn-tooltip-label-custom", + "order": 1960, + "id": "195-shadcn-tooltip-label-custom", "title": "shadcn Tooltip - Custom label", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-label-custom example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "label custom", - "shadcn card shell" - ], + "features": ["tooltip chart", "label custom", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts b/benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts rename to benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/recharts.ts diff --git a/benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts b/benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts rename to benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/tanstack.ts diff --git a/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/case.json b/benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/case.json similarity index 80% rename from benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/case.json rename to benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/case.json index af8b5d16..2835668d 100644 --- a/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/case.json +++ b/benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1910, - "id": "190-shadcn-tooltip-label-formatter", + "order": 1970, + "id": "196-shadcn-tooltip-label-formatter", "title": "shadcn Tooltip - Label Formatter", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-label-formatter example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "label formatter", - "shadcn card shell" - ], + "features": ["tooltip chart", "label formatter", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts b/benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts rename to benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/recharts.ts diff --git a/benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts b/benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts rename to benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/tanstack.ts diff --git a/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/case.json b/benchmarks/conformance/cases/197-shadcn-tooltip-label-none/case.json similarity index 80% rename from benchmarks/conformance/cases/191-shadcn-tooltip-label-none/case.json rename to benchmarks/conformance/cases/197-shadcn-tooltip-label-none/case.json index 49378b5f..e8e27867 100644 --- a/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/case.json +++ b/benchmarks/conformance/cases/197-shadcn-tooltip-label-none/case.json @@ -1,21 +1,15 @@ { "schemaVersion": 1, "referenceRenderer": "recharts", - "collections": [ - "shadcn" - ], + "collections": ["shadcn"], "height": 600, - "order": 1920, - "id": "191-shadcn-tooltip-label-none", + "order": 1980, + "id": "197-shadcn-tooltip-label-none", "title": "shadcn Tooltip - No Label", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-label-none example with TanStack Charts.", "support": "native", - "features": [ - "tooltip chart", - "label none", - "shadcn card shell" - ], + "features": ["tooltip chart", "label none", "shadcn card shell"], "geometry": [ { "role": "bar", diff --git a/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts b/benchmarks/conformance/cases/197-shadcn-tooltip-label-none/recharts.ts similarity index 100% rename from benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts rename to benchmarks/conformance/cases/197-shadcn-tooltip-label-none/recharts.ts diff --git a/benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts b/benchmarks/conformance/cases/197-shadcn-tooltip-label-none/tanstack.ts similarity index 100% rename from benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts rename to benchmarks/conformance/cases/197-shadcn-tooltip-label-none/tanstack.ts diff --git a/benchmarks/conformance/catalog-index.json b/benchmarks/conformance/catalog-index.json index 6c62e1b8..12032941 100644 --- a/benchmarks/conformance/catalog-index.json +++ b/benchmarks/conformance/catalog-index.json @@ -10635,8 +10635,8 @@ "schemaVersion": 1, "referenceRenderer": "recharts", "height": 860, - "order": 1220, - "id": "121-shadcn-dashboard", + "order": 1280, + "id": "127-shadcn-dashboard", "title": "shadcn dashboard", "family": "application", "intent": "Reproduce shadcn/ui's canonical dashboard shell and interactive stacked-area card while replacing only Recharts with TanStack Charts.", @@ -10666,10 +10666,10 @@ "maintain": "Preserve the official dashboard data, responsive sidebar, metric cards, time-range behavior, table shell, natural stacked-area geometry, gradients, axis labels, tooltip content, light and dark themes, and a renderer-only compact catalog preview." }, "entries": { - "tanstack": "benchmarks/conformance/cases/121-shadcn-dashboard/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/127-shadcn-dashboard/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/121-shadcn-dashboard/recharts.ts" + "path": "benchmarks/conformance/cases/127-shadcn-dashboard/recharts.ts" } } }, @@ -10678,8 +10678,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1230, - "id": "122-shadcn-bar-multiple", + "order": 1290, + "id": "128-shadcn-bar-multiple", "title": "shadcn bar chart – multiple", "family": "bar", "intent": "Reproduce shadcn/ui's grouped bar example while replacing Recharts with TanStack Charts.", @@ -10706,10 +10706,10 @@ "maintain": "Preserve the pinned upstream data, grouped layout, axis treatment, tooltip labels, card dimensions, footer, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/122-shadcn-bar-multiple/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/128-shadcn-bar-multiple/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/122-shadcn-bar-multiple/recharts.ts" + "path": "benchmarks/conformance/cases/128-shadcn-bar-multiple/recharts.ts" } } }, @@ -10718,8 +10718,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1240, - "id": "123-shadcn-pie-donut-text", + "order": 1300, + "id": "129-shadcn-pie-donut-text", "title": "shadcn pie chart – donut with text", "family": "pie", "intent": "Reproduce shadcn/ui's donut-with-center-text example while replacing Recharts with TanStack Charts.", @@ -10750,10 +10750,10 @@ "maintain": "Preserve the pinned upstream browser data, donut radii, separators, center total and label, tooltip, card dimensions, footer, and themes." }, "entries": { - "tanstack": "benchmarks/conformance/cases/123-shadcn-pie-donut-text/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/129-shadcn-pie-donut-text/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/123-shadcn-pie-donut-text/recharts.ts" + "path": "benchmarks/conformance/cases/129-shadcn-pie-donut-text/recharts.ts" } } }, @@ -10762,8 +10762,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1250, - "id": "124-shadcn-radar-multiple", + "order": 1310, + "id": "130-shadcn-radar-multiple", "title": "shadcn radar chart – multiple", "family": "radar", "intent": "Reproduce shadcn/ui's multi-series radar example while replacing Recharts with TanStack Charts.", @@ -10791,10 +10791,10 @@ "maintain": "Preserve the pinned upstream data, polygon guide, angle labels, two filled profiles, tooltip, card dimensions, footer, and themes." }, "entries": { - "tanstack": "benchmarks/conformance/cases/124-shadcn-radar-multiple/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/130-shadcn-radar-multiple/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/124-shadcn-radar-multiple/recharts.ts" + "path": "benchmarks/conformance/cases/130-shadcn-radar-multiple/recharts.ts" } } }, @@ -10803,8 +10803,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1260, - "id": "125-shadcn-radial-text", + "order": 1320, + "id": "131-shadcn-radial-text", "title": "shadcn radial chart – text", "family": "radial", "intent": "Reproduce shadcn/ui's partial radial chart with center text while replacing Recharts with TanStack Charts.", @@ -10835,10 +10835,10 @@ "maintain": "Preserve the pinned upstream value, 250-degree sweep, 80/90 radii, rounded track, center text, card dimensions, footer, and themes." }, "entries": { - "tanstack": "benchmarks/conformance/cases/125-shadcn-radial-text/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/131-shadcn-radial-text/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/125-shadcn-radial-text/recharts.ts" + "path": "benchmarks/conformance/cases/131-shadcn-radial-text/recharts.ts" } } }, @@ -10847,8 +10847,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1270, - "id": "126-shadcn-tooltip-advanced", + "order": 1330, + "id": "132-shadcn-tooltip-advanced", "title": "shadcn tooltip – advanced", "family": "tooltip", "intent": "Reproduce shadcn/ui's stacked-bar card and custom total tooltip while replacing Recharts with TanStack Charts.", @@ -10876,10 +10876,10 @@ "maintain": "Preserve the pinned upstream data, stack order, weekday axis, initial focused day, 180-pixel rich tooltip, row labels, kcal units, total, card dimensions, and themes." }, "entries": { - "tanstack": "benchmarks/conformance/cases/126-shadcn-tooltip-advanced/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/132-shadcn-tooltip-advanced/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/126-shadcn-tooltip-advanced/recharts.ts" + "path": "benchmarks/conformance/cases/132-shadcn-tooltip-advanced/recharts.ts" } } }, @@ -10888,8 +10888,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1280, - "id": "127-shadcn-area-axes", + "order": 1340, + "id": "133-shadcn-area-axes", "title": "shadcn Area Chart - Axes", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-axes example with TanStack Charts.", @@ -10910,10 +10910,10 @@ "maintain": "Preserve the pinned upstream data, area axes treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/127-shadcn-area-axes/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/133-shadcn-area-axes/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/127-shadcn-area-axes/recharts.ts" + "path": "benchmarks/conformance/cases/133-shadcn-area-axes/recharts.ts" } } }, @@ -10922,8 +10922,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1290, - "id": "128-shadcn-area-default", + "order": 1350, + "id": "134-shadcn-area-default", "title": "shadcn Area Chart", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-default example with TanStack Charts.", @@ -10944,10 +10944,10 @@ "maintain": "Preserve the pinned upstream data, area default treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/128-shadcn-area-default/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/134-shadcn-area-default/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/128-shadcn-area-default/recharts.ts" + "path": "benchmarks/conformance/cases/134-shadcn-area-default/recharts.ts" } } }, @@ -10956,8 +10956,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1300, - "id": "129-shadcn-area-gradient", + "order": 1360, + "id": "135-shadcn-area-gradient", "title": "shadcn Area Chart - Gradient", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-gradient example with TanStack Charts.", @@ -10978,10 +10978,10 @@ "maintain": "Preserve the pinned upstream data, area gradient treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/129-shadcn-area-gradient/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/135-shadcn-area-gradient/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/129-shadcn-area-gradient/recharts.ts" + "path": "benchmarks/conformance/cases/135-shadcn-area-gradient/recharts.ts" } } }, @@ -10990,8 +10990,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1310, - "id": "130-shadcn-area-icons", + "order": 1370, + "id": "136-shadcn-area-icons", "title": "shadcn Area Chart - Icons", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-icons example with TanStack Charts.", @@ -11012,10 +11012,10 @@ "maintain": "Preserve the pinned upstream data, area icons treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/130-shadcn-area-icons/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/136-shadcn-area-icons/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/130-shadcn-area-icons/recharts.ts" + "path": "benchmarks/conformance/cases/136-shadcn-area-icons/recharts.ts" } } }, @@ -11024,8 +11024,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1320, - "id": "131-shadcn-area-interactive", + "order": 1380, + "id": "137-shadcn-area-interactive", "title": "shadcn Area Chart - Interactive", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-interactive example with TanStack Charts.", @@ -11046,10 +11046,10 @@ "maintain": "Preserve the pinned upstream data, area interactive treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/131-shadcn-area-interactive/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/137-shadcn-area-interactive/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/131-shadcn-area-interactive/recharts.ts" + "path": "benchmarks/conformance/cases/137-shadcn-area-interactive/recharts.ts" } } }, @@ -11058,8 +11058,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1330, - "id": "132-shadcn-area-legend", + "order": 1390, + "id": "138-shadcn-area-legend", "title": "shadcn Area Chart - Legend", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-legend example with TanStack Charts.", @@ -11080,10 +11080,10 @@ "maintain": "Preserve the pinned upstream data, area legend treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/132-shadcn-area-legend/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/138-shadcn-area-legend/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/132-shadcn-area-legend/recharts.ts" + "path": "benchmarks/conformance/cases/138-shadcn-area-legend/recharts.ts" } } }, @@ -11092,8 +11092,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1340, - "id": "133-shadcn-area-linear", + "order": 1400, + "id": "139-shadcn-area-linear", "title": "shadcn Area Chart - Linear", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-linear example with TanStack Charts.", @@ -11114,10 +11114,10 @@ "maintain": "Preserve the pinned upstream data, area linear treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/133-shadcn-area-linear/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/139-shadcn-area-linear/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/133-shadcn-area-linear/recharts.ts" + "path": "benchmarks/conformance/cases/139-shadcn-area-linear/recharts.ts" } } }, @@ -11126,8 +11126,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1350, - "id": "134-shadcn-area-stacked-expand", + "order": 1410, + "id": "140-shadcn-area-stacked-expand", "title": "shadcn Area Chart - Stacked Expanded", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-stacked-expand example with TanStack Charts.", @@ -11148,10 +11148,10 @@ "maintain": "Preserve the pinned upstream data, area stacked expand treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/134-shadcn-area-stacked-expand/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/140-shadcn-area-stacked-expand/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/134-shadcn-area-stacked-expand/recharts.ts" + "path": "benchmarks/conformance/cases/140-shadcn-area-stacked-expand/recharts.ts" } } }, @@ -11160,8 +11160,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1360, - "id": "135-shadcn-area-stacked", + "order": 1420, + "id": "141-shadcn-area-stacked", "title": "shadcn Area Chart - Stacked", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-stacked example with TanStack Charts.", @@ -11182,10 +11182,10 @@ "maintain": "Preserve the pinned upstream data, area stacked treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/135-shadcn-area-stacked/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/141-shadcn-area-stacked/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/135-shadcn-area-stacked/recharts.ts" + "path": "benchmarks/conformance/cases/141-shadcn-area-stacked/recharts.ts" } } }, @@ -11194,8 +11194,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1370, - "id": "136-shadcn-area-step", + "order": 1430, + "id": "142-shadcn-area-step", "title": "shadcn Area Chart - Step", "family": "area", "intent": "Reproduce shadcn/ui's chart-area-step example with TanStack Charts.", @@ -11216,10 +11216,10 @@ "maintain": "Preserve the pinned upstream data, area step treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/136-shadcn-area-step/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/142-shadcn-area-step/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/136-shadcn-area-step/recharts.ts" + "path": "benchmarks/conformance/cases/142-shadcn-area-step/recharts.ts" } } }, @@ -11228,8 +11228,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1380, - "id": "137-shadcn-bar-active", + "order": 1440, + "id": "143-shadcn-bar-active", "title": "shadcn Bar Chart - Active", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-active example with TanStack Charts.", @@ -11250,10 +11250,10 @@ "maintain": "Preserve the pinned upstream data, bar active treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/137-shadcn-bar-active/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/143-shadcn-bar-active/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/137-shadcn-bar-active/recharts.ts" + "path": "benchmarks/conformance/cases/143-shadcn-bar-active/recharts.ts" } } }, @@ -11262,8 +11262,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1390, - "id": "138-shadcn-bar-default", + "order": 1450, + "id": "144-shadcn-bar-default", "title": "shadcn Bar Chart", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-default example with TanStack Charts.", @@ -11284,10 +11284,10 @@ "maintain": "Preserve the pinned upstream data, bar default treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/138-shadcn-bar-default/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/144-shadcn-bar-default/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/138-shadcn-bar-default/recharts.ts" + "path": "benchmarks/conformance/cases/144-shadcn-bar-default/recharts.ts" } } }, @@ -11296,8 +11296,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1400, - "id": "139-shadcn-bar-horizontal", + "order": 1460, + "id": "145-shadcn-bar-horizontal", "title": "shadcn Bar Chart - Horizontal", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-horizontal example with TanStack Charts.", @@ -11318,10 +11318,10 @@ "maintain": "Preserve the pinned upstream data, bar horizontal treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/139-shadcn-bar-horizontal/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/145-shadcn-bar-horizontal/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/139-shadcn-bar-horizontal/recharts.ts" + "path": "benchmarks/conformance/cases/145-shadcn-bar-horizontal/recharts.ts" } } }, @@ -11330,8 +11330,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1410, - "id": "140-shadcn-bar-interactive", + "order": 1470, + "id": "146-shadcn-bar-interactive", "title": "shadcn Bar Chart - Interactive", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-interactive example with TanStack Charts.", @@ -11352,10 +11352,10 @@ "maintain": "Preserve the pinned upstream data, bar interactive treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/140-shadcn-bar-interactive/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/146-shadcn-bar-interactive/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/140-shadcn-bar-interactive/recharts.ts" + "path": "benchmarks/conformance/cases/146-shadcn-bar-interactive/recharts.ts" } } }, @@ -11364,8 +11364,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1420, - "id": "141-shadcn-bar-label-custom", + "order": 1480, + "id": "147-shadcn-bar-label-custom", "title": "shadcn Bar Chart - Custom Label", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-label-custom example with TanStack Charts.", @@ -11386,10 +11386,10 @@ "maintain": "Preserve the pinned upstream data, bar label custom treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/141-shadcn-bar-label-custom/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/147-shadcn-bar-label-custom/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/141-shadcn-bar-label-custom/recharts.ts" + "path": "benchmarks/conformance/cases/147-shadcn-bar-label-custom/recharts.ts" } } }, @@ -11398,8 +11398,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1430, - "id": "142-shadcn-bar-label", + "order": 1490, + "id": "148-shadcn-bar-label", "title": "shadcn Bar Chart - Label", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-label example with TanStack Charts.", @@ -11420,10 +11420,10 @@ "maintain": "Preserve the pinned upstream data, bar label treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/142-shadcn-bar-label/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/148-shadcn-bar-label/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/142-shadcn-bar-label/recharts.ts" + "path": "benchmarks/conformance/cases/148-shadcn-bar-label/recharts.ts" } } }, @@ -11432,8 +11432,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1440, - "id": "143-shadcn-bar-mixed", + "order": 1500, + "id": "149-shadcn-bar-mixed", "title": "shadcn Bar Chart - Mixed", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-mixed example with TanStack Charts.", @@ -11454,10 +11454,10 @@ "maintain": "Preserve the pinned upstream data, bar mixed treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/143-shadcn-bar-mixed/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/149-shadcn-bar-mixed/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/143-shadcn-bar-mixed/recharts.ts" + "path": "benchmarks/conformance/cases/149-shadcn-bar-mixed/recharts.ts" } } }, @@ -11466,8 +11466,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1450, - "id": "144-shadcn-bar-negative", + "order": 1510, + "id": "150-shadcn-bar-negative", "title": "shadcn Bar Chart - Negative", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-negative example with TanStack Charts.", @@ -11488,10 +11488,10 @@ "maintain": "Preserve the pinned upstream data, bar negative treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/144-shadcn-bar-negative/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/150-shadcn-bar-negative/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/144-shadcn-bar-negative/recharts.ts" + "path": "benchmarks/conformance/cases/150-shadcn-bar-negative/recharts.ts" } } }, @@ -11500,8 +11500,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1460, - "id": "145-shadcn-bar-stacked", + "order": 1520, + "id": "151-shadcn-bar-stacked", "title": "shadcn Bar Chart - Stacked + Legend", "family": "bar", "intent": "Reproduce shadcn/ui's chart-bar-stacked example with TanStack Charts.", @@ -11522,10 +11522,10 @@ "maintain": "Preserve the pinned upstream data, bar stacked treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/145-shadcn-bar-stacked/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/151-shadcn-bar-stacked/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/145-shadcn-bar-stacked/recharts.ts" + "path": "benchmarks/conformance/cases/151-shadcn-bar-stacked/recharts.ts" } } }, @@ -11534,8 +11534,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1470, - "id": "146-shadcn-line-default", + "order": 1530, + "id": "152-shadcn-line-default", "title": "shadcn Line Chart", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-default example with TanStack Charts.", @@ -11556,10 +11556,10 @@ "maintain": "Preserve the pinned upstream data, line default treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/146-shadcn-line-default/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/152-shadcn-line-default/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/146-shadcn-line-default/recharts.ts" + "path": "benchmarks/conformance/cases/152-shadcn-line-default/recharts.ts" } } }, @@ -11568,8 +11568,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1480, - "id": "147-shadcn-line-dots-colors", + "order": 1540, + "id": "153-shadcn-line-dots-colors", "title": "shadcn Line Chart - Dots Colors", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-dots-colors example with TanStack Charts.", @@ -11590,10 +11590,10 @@ "maintain": "Preserve the pinned upstream data, line dots colors treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/147-shadcn-line-dots-colors/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/153-shadcn-line-dots-colors/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/147-shadcn-line-dots-colors/recharts.ts" + "path": "benchmarks/conformance/cases/153-shadcn-line-dots-colors/recharts.ts" } } }, @@ -11602,8 +11602,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1490, - "id": "148-shadcn-line-dots-custom", + "order": 1550, + "id": "154-shadcn-line-dots-custom", "title": "shadcn Line Chart - Custom Dots", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-dots-custom example with TanStack Charts.", @@ -11624,10 +11624,10 @@ "maintain": "Preserve the pinned upstream data, line dots custom treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/148-shadcn-line-dots-custom/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/154-shadcn-line-dots-custom/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/148-shadcn-line-dots-custom/recharts.ts" + "path": "benchmarks/conformance/cases/154-shadcn-line-dots-custom/recharts.ts" } } }, @@ -11636,8 +11636,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1500, - "id": "149-shadcn-line-dots", + "order": 1560, + "id": "155-shadcn-line-dots", "title": "shadcn Line Chart - Dots", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-dots example with TanStack Charts.", @@ -11658,10 +11658,10 @@ "maintain": "Preserve the pinned upstream data, line dots treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/149-shadcn-line-dots/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/155-shadcn-line-dots/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/149-shadcn-line-dots/recharts.ts" + "path": "benchmarks/conformance/cases/155-shadcn-line-dots/recharts.ts" } } }, @@ -11670,8 +11670,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1510, - "id": "150-shadcn-line-interactive", + "order": 1570, + "id": "156-shadcn-line-interactive", "title": "shadcn Line Chart - Interactive", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-interactive example with TanStack Charts.", @@ -11692,10 +11692,10 @@ "maintain": "Preserve the pinned upstream data, line interactive treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/150-shadcn-line-interactive/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/156-shadcn-line-interactive/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/150-shadcn-line-interactive/recharts.ts" + "path": "benchmarks/conformance/cases/156-shadcn-line-interactive/recharts.ts" } } }, @@ -11704,8 +11704,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1520, - "id": "151-shadcn-line-label-custom", + "order": 1580, + "id": "157-shadcn-line-label-custom", "title": "shadcn Line Chart - Custom Label", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-label-custom example with TanStack Charts.", @@ -11726,10 +11726,10 @@ "maintain": "Preserve the pinned upstream data, line label custom treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/151-shadcn-line-label-custom/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/157-shadcn-line-label-custom/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/151-shadcn-line-label-custom/recharts.ts" + "path": "benchmarks/conformance/cases/157-shadcn-line-label-custom/recharts.ts" } } }, @@ -11738,8 +11738,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1530, - "id": "152-shadcn-line-label", + "order": 1590, + "id": "158-shadcn-line-label", "title": "shadcn Line Chart - Label", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-label example with TanStack Charts.", @@ -11760,10 +11760,10 @@ "maintain": "Preserve the pinned upstream data, line label treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/152-shadcn-line-label/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/158-shadcn-line-label/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/152-shadcn-line-label/recharts.ts" + "path": "benchmarks/conformance/cases/158-shadcn-line-label/recharts.ts" } } }, @@ -11772,8 +11772,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1540, - "id": "153-shadcn-line-linear", + "order": 1600, + "id": "159-shadcn-line-linear", "title": "shadcn Line Chart - Linear", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-linear example with TanStack Charts.", @@ -11794,10 +11794,10 @@ "maintain": "Preserve the pinned upstream data, line linear treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/153-shadcn-line-linear/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/159-shadcn-line-linear/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/153-shadcn-line-linear/recharts.ts" + "path": "benchmarks/conformance/cases/159-shadcn-line-linear/recharts.ts" } } }, @@ -11806,8 +11806,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1550, - "id": "154-shadcn-line-multiple", + "order": 1610, + "id": "160-shadcn-line-multiple", "title": "shadcn Line Chart - Multiple", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-multiple example with TanStack Charts.", @@ -11828,10 +11828,10 @@ "maintain": "Preserve the pinned upstream data, line multiple treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/154-shadcn-line-multiple/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/160-shadcn-line-multiple/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/154-shadcn-line-multiple/recharts.ts" + "path": "benchmarks/conformance/cases/160-shadcn-line-multiple/recharts.ts" } } }, @@ -11840,8 +11840,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1560, - "id": "155-shadcn-line-step", + "order": 1620, + "id": "161-shadcn-line-step", "title": "shadcn Line Chart - Step", "family": "line", "intent": "Reproduce shadcn/ui's chart-line-step example with TanStack Charts.", @@ -11862,10 +11862,10 @@ "maintain": "Preserve the pinned upstream data, line step treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/155-shadcn-line-step/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/161-shadcn-line-step/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/155-shadcn-line-step/recharts.ts" + "path": "benchmarks/conformance/cases/161-shadcn-line-step/recharts.ts" } } }, @@ -11874,8 +11874,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1570, - "id": "156-shadcn-pie-donut-active", + "order": 1630, + "id": "162-shadcn-pie-donut-active", "title": "shadcn Pie Chart - Donut Active", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-donut-active example with TanStack Charts.", @@ -11896,10 +11896,10 @@ "maintain": "Preserve the pinned upstream data, pie donut active treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/156-shadcn-pie-donut-active/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/162-shadcn-pie-donut-active/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/156-shadcn-pie-donut-active/recharts.ts" + "path": "benchmarks/conformance/cases/162-shadcn-pie-donut-active/recharts.ts" } } }, @@ -11908,8 +11908,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1580, - "id": "157-shadcn-pie-donut", + "order": 1640, + "id": "163-shadcn-pie-donut", "title": "shadcn Pie Chart - Donut", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-donut example with TanStack Charts.", @@ -11930,10 +11930,10 @@ "maintain": "Preserve the pinned upstream data, pie donut treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/157-shadcn-pie-donut/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/163-shadcn-pie-donut/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/157-shadcn-pie-donut/recharts.ts" + "path": "benchmarks/conformance/cases/163-shadcn-pie-donut/recharts.ts" } } }, @@ -11942,8 +11942,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1590, - "id": "158-shadcn-pie-interactive", + "order": 1650, + "id": "164-shadcn-pie-interactive", "title": "shadcn Pie Chart - Interactive", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-interactive example with TanStack Charts.", @@ -11964,10 +11964,10 @@ "maintain": "Preserve the pinned upstream data, pie interactive treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/158-shadcn-pie-interactive/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/164-shadcn-pie-interactive/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/158-shadcn-pie-interactive/recharts.ts" + "path": "benchmarks/conformance/cases/164-shadcn-pie-interactive/recharts.ts" } } }, @@ -11976,8 +11976,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1600, - "id": "159-shadcn-pie-label-custom", + "order": 1660, + "id": "165-shadcn-pie-label-custom", "title": "shadcn Pie Chart - Custom Label", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-label-custom example with TanStack Charts.", @@ -11998,10 +11998,10 @@ "maintain": "Preserve the pinned upstream data, pie label custom treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/159-shadcn-pie-label-custom/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/165-shadcn-pie-label-custom/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/159-shadcn-pie-label-custom/recharts.ts" + "path": "benchmarks/conformance/cases/165-shadcn-pie-label-custom/recharts.ts" } } }, @@ -12010,8 +12010,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1610, - "id": "160-shadcn-pie-label-list", + "order": 1670, + "id": "166-shadcn-pie-label-list", "title": "shadcn Pie Chart - Label List", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-label-list example with TanStack Charts.", @@ -12032,10 +12032,10 @@ "maintain": "Preserve the pinned upstream data, pie label list treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/160-shadcn-pie-label-list/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/166-shadcn-pie-label-list/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/160-shadcn-pie-label-list/recharts.ts" + "path": "benchmarks/conformance/cases/166-shadcn-pie-label-list/recharts.ts" } } }, @@ -12044,8 +12044,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1620, - "id": "161-shadcn-pie-label", + "order": 1680, + "id": "167-shadcn-pie-label", "title": "shadcn Pie Chart - Label", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-label example with TanStack Charts.", @@ -12066,10 +12066,10 @@ "maintain": "Preserve the pinned upstream data, pie label treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/161-shadcn-pie-label/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/167-shadcn-pie-label/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/161-shadcn-pie-label/recharts.ts" + "path": "benchmarks/conformance/cases/167-shadcn-pie-label/recharts.ts" } } }, @@ -12078,8 +12078,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1630, - "id": "162-shadcn-pie-legend", + "order": 1690, + "id": "168-shadcn-pie-legend", "title": "shadcn Pie Chart - Legend", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-legend example with TanStack Charts.", @@ -12100,10 +12100,10 @@ "maintain": "Preserve the pinned upstream data, pie legend treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/162-shadcn-pie-legend/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/168-shadcn-pie-legend/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/162-shadcn-pie-legend/recharts.ts" + "path": "benchmarks/conformance/cases/168-shadcn-pie-legend/recharts.ts" } } }, @@ -12112,8 +12112,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1640, - "id": "163-shadcn-pie-separator-none", + "order": 1700, + "id": "169-shadcn-pie-separator-none", "title": "shadcn Pie Chart - Separator None", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-separator-none example with TanStack Charts.", @@ -12134,10 +12134,10 @@ "maintain": "Preserve the pinned upstream data, pie separator none treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/163-shadcn-pie-separator-none/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/169-shadcn-pie-separator-none/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/163-shadcn-pie-separator-none/recharts.ts" + "path": "benchmarks/conformance/cases/169-shadcn-pie-separator-none/recharts.ts" } } }, @@ -12146,8 +12146,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1650, - "id": "164-shadcn-pie-simple", + "order": 1710, + "id": "170-shadcn-pie-simple", "title": "shadcn Pie Chart", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-simple example with TanStack Charts.", @@ -12168,10 +12168,10 @@ "maintain": "Preserve the pinned upstream data, pie simple treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/164-shadcn-pie-simple/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/170-shadcn-pie-simple/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/164-shadcn-pie-simple/recharts.ts" + "path": "benchmarks/conformance/cases/170-shadcn-pie-simple/recharts.ts" } } }, @@ -12180,8 +12180,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1660, - "id": "165-shadcn-pie-stacked", + "order": 1720, + "id": "171-shadcn-pie-stacked", "title": "shadcn Pie Chart - Stacked", "family": "pie", "intent": "Reproduce shadcn/ui's chart-pie-stacked example with TanStack Charts.", @@ -12202,10 +12202,10 @@ "maintain": "Preserve the pinned upstream data, pie stacked treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/165-shadcn-pie-stacked/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/171-shadcn-pie-stacked/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/165-shadcn-pie-stacked/recharts.ts" + "path": "benchmarks/conformance/cases/171-shadcn-pie-stacked/recharts.ts" } } }, @@ -12214,8 +12214,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1670, - "id": "166-shadcn-radar-default", + "order": 1730, + "id": "172-shadcn-radar-default", "title": "shadcn Radar Chart", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-default example with TanStack Charts.", @@ -12236,10 +12236,10 @@ "maintain": "Preserve the pinned upstream data, radar default treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/166-shadcn-radar-default/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/172-shadcn-radar-default/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/166-shadcn-radar-default/recharts.ts" + "path": "benchmarks/conformance/cases/172-shadcn-radar-default/recharts.ts" } } }, @@ -12248,8 +12248,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1680, - "id": "167-shadcn-radar-dots", + "order": 1740, + "id": "173-shadcn-radar-dots", "title": "shadcn Radar Chart - Dots", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-dots example with TanStack Charts.", @@ -12270,10 +12270,10 @@ "maintain": "Preserve the pinned upstream data, radar dots treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/167-shadcn-radar-dots/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/173-shadcn-radar-dots/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/167-shadcn-radar-dots/recharts.ts" + "path": "benchmarks/conformance/cases/173-shadcn-radar-dots/recharts.ts" } } }, @@ -12282,8 +12282,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1690, - "id": "168-shadcn-radar-grid-circle-fill", + "order": 1750, + "id": "174-shadcn-radar-grid-circle-fill", "title": "shadcn Radar Chart - Grid Circle Filled", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-fill example with TanStack Charts.", @@ -12304,10 +12304,10 @@ "maintain": "Preserve the pinned upstream data, radar grid circle fill treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/168-shadcn-radar-grid-circle-fill/recharts.ts" + "path": "benchmarks/conformance/cases/174-shadcn-radar-grid-circle-fill/recharts.ts" } } }, @@ -12316,8 +12316,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1700, - "id": "169-shadcn-radar-grid-circle-no-lines", + "order": 1760, + "id": "175-shadcn-radar-grid-circle-no-lines", "title": "shadcn Radar Chart - Grid Circle - No lines", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-circle-no-lines example with TanStack Charts.", @@ -12338,10 +12338,10 @@ "maintain": "Preserve the pinned upstream data, radar grid circle no lines treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/169-shadcn-radar-grid-circle-no-lines/recharts.ts" + "path": "benchmarks/conformance/cases/175-shadcn-radar-grid-circle-no-lines/recharts.ts" } } }, @@ -12350,8 +12350,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1710, - "id": "170-shadcn-radar-grid-circle", + "order": 1770, + "id": "176-shadcn-radar-grid-circle", "title": "shadcn Radar Chart - Grid Circle", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-circle example with TanStack Charts.", @@ -12372,10 +12372,10 @@ "maintain": "Preserve the pinned upstream data, radar grid circle treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/170-shadcn-radar-grid-circle/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/176-shadcn-radar-grid-circle/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/170-shadcn-radar-grid-circle/recharts.ts" + "path": "benchmarks/conformance/cases/176-shadcn-radar-grid-circle/recharts.ts" } } }, @@ -12384,8 +12384,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1720, - "id": "171-shadcn-radar-grid-custom", + "order": 1780, + "id": "177-shadcn-radar-grid-custom", "title": "shadcn Radar Chart - Grid Custom", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-custom example with TanStack Charts.", @@ -12406,10 +12406,10 @@ "maintain": "Preserve the pinned upstream data, radar grid custom treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/171-shadcn-radar-grid-custom/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/177-shadcn-radar-grid-custom/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/171-shadcn-radar-grid-custom/recharts.ts" + "path": "benchmarks/conformance/cases/177-shadcn-radar-grid-custom/recharts.ts" } } }, @@ -12418,8 +12418,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1730, - "id": "172-shadcn-radar-grid-fill", + "order": 1790, + "id": "178-shadcn-radar-grid-fill", "title": "shadcn Radar Chart - Grid Filled", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-fill example with TanStack Charts.", @@ -12440,10 +12440,10 @@ "maintain": "Preserve the pinned upstream data, radar grid fill treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/172-shadcn-radar-grid-fill/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/178-shadcn-radar-grid-fill/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/172-shadcn-radar-grid-fill/recharts.ts" + "path": "benchmarks/conformance/cases/178-shadcn-radar-grid-fill/recharts.ts" } } }, @@ -12452,8 +12452,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1740, - "id": "173-shadcn-radar-grid-none", + "order": 1800, + "id": "179-shadcn-radar-grid-none", "title": "shadcn Radar Chart - Grid None", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-grid-none example with TanStack Charts.", @@ -12474,10 +12474,10 @@ "maintain": "Preserve the pinned upstream data, radar grid none treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/173-shadcn-radar-grid-none/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/179-shadcn-radar-grid-none/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/173-shadcn-radar-grid-none/recharts.ts" + "path": "benchmarks/conformance/cases/179-shadcn-radar-grid-none/recharts.ts" } } }, @@ -12486,8 +12486,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1750, - "id": "174-shadcn-radar-icons", + "order": 1810, + "id": "180-shadcn-radar-icons", "title": "shadcn Radar Chart - Icons", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-icons example with TanStack Charts.", @@ -12508,10 +12508,10 @@ "maintain": "Preserve the pinned upstream data, radar icons treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/174-shadcn-radar-icons/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/180-shadcn-radar-icons/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/174-shadcn-radar-icons/recharts.ts" + "path": "benchmarks/conformance/cases/180-shadcn-radar-icons/recharts.ts" } } }, @@ -12520,8 +12520,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1760, - "id": "175-shadcn-radar-label-custom", + "order": 1820, + "id": "181-shadcn-radar-label-custom", "title": "shadcn Radar Chart - Custom Label", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-label-custom example with TanStack Charts.", @@ -12542,10 +12542,10 @@ "maintain": "Preserve the pinned upstream data, radar label custom treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/175-shadcn-radar-label-custom/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/181-shadcn-radar-label-custom/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/175-shadcn-radar-label-custom/recharts.ts" + "path": "benchmarks/conformance/cases/181-shadcn-radar-label-custom/recharts.ts" } } }, @@ -12554,8 +12554,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1770, - "id": "176-shadcn-radar-legend", + "order": 1830, + "id": "182-shadcn-radar-legend", "title": "shadcn Radar Chart - Legend", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-legend example with TanStack Charts.", @@ -12576,10 +12576,10 @@ "maintain": "Preserve the pinned upstream data, radar legend treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/176-shadcn-radar-legend/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/182-shadcn-radar-legend/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/176-shadcn-radar-legend/recharts.ts" + "path": "benchmarks/conformance/cases/182-shadcn-radar-legend/recharts.ts" } } }, @@ -12588,8 +12588,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1780, - "id": "177-shadcn-radar-lines-only", + "order": 1840, + "id": "183-shadcn-radar-lines-only", "title": "shadcn Radar Chart - Lines Only", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-lines-only example with TanStack Charts.", @@ -12610,10 +12610,10 @@ "maintain": "Preserve the pinned upstream data, radar lines only treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/177-shadcn-radar-lines-only/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/183-shadcn-radar-lines-only/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/177-shadcn-radar-lines-only/recharts.ts" + "path": "benchmarks/conformance/cases/183-shadcn-radar-lines-only/recharts.ts" } } }, @@ -12622,8 +12622,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1790, - "id": "178-shadcn-radar-radius", + "order": 1850, + "id": "184-shadcn-radar-radius", "title": "shadcn Radar Chart - Radius Axis", "family": "radar", "intent": "Reproduce shadcn/ui's chart-radar-radius example with TanStack Charts.", @@ -12644,10 +12644,10 @@ "maintain": "Preserve the pinned upstream data, radar radius treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/178-shadcn-radar-radius/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/184-shadcn-radar-radius/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/178-shadcn-radar-radius/recharts.ts" + "path": "benchmarks/conformance/cases/184-shadcn-radar-radius/recharts.ts" } } }, @@ -12656,8 +12656,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1800, - "id": "179-shadcn-radial-grid", + "order": 1860, + "id": "185-shadcn-radial-grid", "title": "shadcn Radial Chart - Grid", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-grid example with TanStack Charts.", @@ -12682,10 +12682,10 @@ "maintain": "Preserve the pinned upstream data, radial grid treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/179-shadcn-radial-grid/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/185-shadcn-radial-grid/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/179-shadcn-radial-grid/recharts.ts" + "path": "benchmarks/conformance/cases/185-shadcn-radial-grid/recharts.ts" } } }, @@ -12694,8 +12694,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1810, - "id": "180-shadcn-radial-label", + "order": 1870, + "id": "186-shadcn-radial-label", "title": "shadcn Radial Chart - Label", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-label example with TanStack Charts.", @@ -12720,10 +12720,10 @@ "maintain": "Preserve the pinned upstream data, radial label treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/180-shadcn-radial-label/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/186-shadcn-radial-label/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/180-shadcn-radial-label/recharts.ts" + "path": "benchmarks/conformance/cases/186-shadcn-radial-label/recharts.ts" } } }, @@ -12732,8 +12732,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1820, - "id": "181-shadcn-radial-shape", + "order": 1880, + "id": "187-shadcn-radial-shape", "title": "shadcn Radial Chart - Shape", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-shape example with TanStack Charts.", @@ -12758,10 +12758,10 @@ "maintain": "Preserve the pinned upstream data, radial shape treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/181-shadcn-radial-shape/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/187-shadcn-radial-shape/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/181-shadcn-radial-shape/recharts.ts" + "path": "benchmarks/conformance/cases/187-shadcn-radial-shape/recharts.ts" } } }, @@ -12770,8 +12770,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1830, - "id": "182-shadcn-radial-simple", + "order": 1890, + "id": "188-shadcn-radial-simple", "title": "shadcn Radial Chart", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-simple example with TanStack Charts.", @@ -12796,10 +12796,10 @@ "maintain": "Preserve the pinned upstream data, radial simple treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/182-shadcn-radial-simple/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/188-shadcn-radial-simple/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/182-shadcn-radial-simple/recharts.ts" + "path": "benchmarks/conformance/cases/188-shadcn-radial-simple/recharts.ts" } } }, @@ -12808,8 +12808,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1840, - "id": "183-shadcn-radial-stacked", + "order": 1900, + "id": "189-shadcn-radial-stacked", "title": "shadcn Radial Chart - Stacked", "family": "radial", "intent": "Reproduce shadcn/ui's chart-radial-stacked example with TanStack Charts.", @@ -12834,10 +12834,10 @@ "maintain": "Preserve the pinned upstream data, radial stacked treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/183-shadcn-radial-stacked/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/189-shadcn-radial-stacked/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/183-shadcn-radial-stacked/recharts.ts" + "path": "benchmarks/conformance/cases/189-shadcn-radial-stacked/recharts.ts" } } }, @@ -12846,8 +12846,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1850, - "id": "184-shadcn-tooltip-default", + "order": 1910, + "id": "190-shadcn-tooltip-default", "title": "shadcn Tooltip - Default", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-default example with TanStack Charts.", @@ -12868,10 +12868,10 @@ "maintain": "Preserve the pinned upstream data, tooltip default treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/184-shadcn-tooltip-default/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/190-shadcn-tooltip-default/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/184-shadcn-tooltip-default/recharts.ts" + "path": "benchmarks/conformance/cases/190-shadcn-tooltip-default/recharts.ts" } } }, @@ -12880,8 +12880,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1860, - "id": "185-shadcn-tooltip-formatter", + "order": 1920, + "id": "191-shadcn-tooltip-formatter", "title": "shadcn Tooltip - Formatter", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-formatter example with TanStack Charts.", @@ -12902,10 +12902,10 @@ "maintain": "Preserve the pinned upstream data, tooltip formatter treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/185-shadcn-tooltip-formatter/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/191-shadcn-tooltip-formatter/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/185-shadcn-tooltip-formatter/recharts.ts" + "path": "benchmarks/conformance/cases/191-shadcn-tooltip-formatter/recharts.ts" } } }, @@ -12914,8 +12914,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1870, - "id": "186-shadcn-tooltip-icons", + "order": 1930, + "id": "192-shadcn-tooltip-icons", "title": "shadcn Tooltip - Icons", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-icons example with TanStack Charts.", @@ -12936,10 +12936,10 @@ "maintain": "Preserve the pinned upstream data, tooltip icons treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/186-shadcn-tooltip-icons/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/192-shadcn-tooltip-icons/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/186-shadcn-tooltip-icons/recharts.ts" + "path": "benchmarks/conformance/cases/192-shadcn-tooltip-icons/recharts.ts" } } }, @@ -12948,8 +12948,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1880, - "id": "187-shadcn-tooltip-indicator-line", + "order": 1940, + "id": "193-shadcn-tooltip-indicator-line", "title": "shadcn Tooltip - Line Indicator", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-line example with TanStack Charts.", @@ -12970,10 +12970,10 @@ "maintain": "Preserve the pinned upstream data, tooltip indicator line treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/187-shadcn-tooltip-indicator-line/recharts.ts" + "path": "benchmarks/conformance/cases/193-shadcn-tooltip-indicator-line/recharts.ts" } } }, @@ -12982,8 +12982,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1890, - "id": "188-shadcn-tooltip-indicator-none", + "order": 1950, + "id": "194-shadcn-tooltip-indicator-none", "title": "shadcn Tooltip - No Indicator", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-indicator-none example with TanStack Charts.", @@ -13004,10 +13004,10 @@ "maintain": "Preserve the pinned upstream data, tooltip indicator none treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/188-shadcn-tooltip-indicator-none/recharts.ts" + "path": "benchmarks/conformance/cases/194-shadcn-tooltip-indicator-none/recharts.ts" } } }, @@ -13016,8 +13016,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1900, - "id": "189-shadcn-tooltip-label-custom", + "order": 1960, + "id": "195-shadcn-tooltip-label-custom", "title": "shadcn Tooltip - Custom label", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-label-custom example with TanStack Charts.", @@ -13038,10 +13038,10 @@ "maintain": "Preserve the pinned upstream data, tooltip label custom treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/189-shadcn-tooltip-label-custom/recharts.ts" + "path": "benchmarks/conformance/cases/195-shadcn-tooltip-label-custom/recharts.ts" } } }, @@ -13050,8 +13050,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1910, - "id": "190-shadcn-tooltip-label-formatter", + "order": 1970, + "id": "196-shadcn-tooltip-label-formatter", "title": "shadcn Tooltip - Label Formatter", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-label-formatter example with TanStack Charts.", @@ -13072,10 +13072,10 @@ "maintain": "Preserve the pinned upstream data, tooltip label formatter treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/190-shadcn-tooltip-label-formatter/recharts.ts" + "path": "benchmarks/conformance/cases/196-shadcn-tooltip-label-formatter/recharts.ts" } } }, @@ -13084,8 +13084,8 @@ "referenceRenderer": "recharts", "collections": ["shadcn"], "height": 600, - "order": 1920, - "id": "191-shadcn-tooltip-label-none", + "order": 1980, + "id": "197-shadcn-tooltip-label-none", "title": "shadcn Tooltip - No Label", "family": "tooltip", "intent": "Reproduce shadcn/ui's chart-tooltip-label-none example with TanStack Charts.", @@ -13106,10 +13106,10 @@ "maintain": "Preserve the pinned upstream data, tooltip label none treatment, card dimensions, and light and dark tokens." }, "entries": { - "tanstack": "benchmarks/conformance/cases/191-shadcn-tooltip-label-none/tanstack.ts", + "tanstack": "benchmarks/conformance/cases/197-shadcn-tooltip-label-none/tanstack.ts", "reference": { "renderer": "recharts", - "path": "benchmarks/conformance/cases/191-shadcn-tooltip-label-none/recharts.ts" + "path": "benchmarks/conformance/cases/197-shadcn-tooltip-label-none/recharts.ts" } } } diff --git a/benchmarks/conformance/definition-coverage-roadmap.json b/benchmarks/conformance/definition-coverage-roadmap.json index 5e86f3c8..da0c72c6 100644 --- a/benchmarks/conformance/definition-coverage-roadmap.json +++ b/benchmarks/conformance/definition-coverage-roadmap.json @@ -3679,6 +3679,2278 @@ } ] }, + { + "id": "127-shadcn-dashboard", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/127-shadcn-dashboard/tanstack.ts", + "cases/127-shadcn-dashboard/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn dashboard variant through the shared native dashboard chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "133-shadcn-area-axes", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/133-shadcn-area-axes/tanstack.ts", + "cases/133-shadcn-area-axes/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-axes variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "134-shadcn-area-default", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/134-shadcn-area-default/tanstack.ts", + "cases/134-shadcn-area-default/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-default variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "135-shadcn-area-gradient", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/135-shadcn-area-gradient/tanstack.ts", + "cases/135-shadcn-area-gradient/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-gradient variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "136-shadcn-area-icons", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/136-shadcn-area-icons/tanstack.ts", + "cases/136-shadcn-area-icons/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-icons variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "137-shadcn-area-interactive", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/137-shadcn-area-interactive/tanstack.ts", + "cases/137-shadcn-area-interactive/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-interactive variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "138-shadcn-area-legend", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/138-shadcn-area-legend/tanstack.ts", + "cases/138-shadcn-area-legend/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-legend variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "139-shadcn-area-linear", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/139-shadcn-area-linear/tanstack.ts", + "cases/139-shadcn-area-linear/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-linear variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "140-shadcn-area-stacked-expand", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/140-shadcn-area-stacked-expand/tanstack.ts", + "cases/140-shadcn-area-stacked-expand/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-stacked-expand variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "141-shadcn-area-stacked", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/141-shadcn-area-stacked/tanstack.ts", + "cases/141-shadcn-area-stacked/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-stacked variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "142-shadcn-area-step", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/142-shadcn-area-step/tanstack.ts", + "cases/142-shadcn-area-step/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-area-step variant through the shared native area chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "143-shadcn-bar-active", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/143-shadcn-bar-active/tanstack.ts", + "cases/143-shadcn-bar-active/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-active variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "144-shadcn-bar-default", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/144-shadcn-bar-default/tanstack.ts", + "cases/144-shadcn-bar-default/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-default variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "145-shadcn-bar-horizontal", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/145-shadcn-bar-horizontal/tanstack.ts", + "cases/145-shadcn-bar-horizontal/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-horizontal variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "146-shadcn-bar-interactive", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/146-shadcn-bar-interactive/tanstack.ts", + "cases/146-shadcn-bar-interactive/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-interactive variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "147-shadcn-bar-label-custom", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/147-shadcn-bar-label-custom/tanstack.ts", + "cases/147-shadcn-bar-label-custom/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-label-custom variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "148-shadcn-bar-label", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/148-shadcn-bar-label/tanstack.ts", + "cases/148-shadcn-bar-label/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-label variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "149-shadcn-bar-mixed", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/149-shadcn-bar-mixed/tanstack.ts", + "cases/149-shadcn-bar-mixed/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-mixed variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "128-shadcn-bar-multiple", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/128-shadcn-bar-multiple/tanstack.ts", + "cases/128-shadcn-bar-multiple/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-multiple variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "150-shadcn-bar-negative", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/150-shadcn-bar-negative/tanstack.ts", + "cases/150-shadcn-bar-negative/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-negative variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "151-shadcn-bar-stacked", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/151-shadcn-bar-stacked/tanstack.ts", + "cases/151-shadcn-bar-stacked/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-bar-stacked variant through the shared native bar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "152-shadcn-line-default", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/152-shadcn-line-default/tanstack.ts", + "cases/152-shadcn-line-default/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-default variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "153-shadcn-line-dots-colors", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/153-shadcn-line-dots-colors/tanstack.ts", + "cases/153-shadcn-line-dots-colors/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-dots-colors variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "154-shadcn-line-dots-custom", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/154-shadcn-line-dots-custom/tanstack.ts", + "cases/154-shadcn-line-dots-custom/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-dots-custom variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "155-shadcn-line-dots", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/155-shadcn-line-dots/tanstack.ts", + "cases/155-shadcn-line-dots/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-dots variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "156-shadcn-line-interactive", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/156-shadcn-line-interactive/tanstack.ts", + "cases/156-shadcn-line-interactive/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-interactive variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "157-shadcn-line-label-custom", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/157-shadcn-line-label-custom/tanstack.ts", + "cases/157-shadcn-line-label-custom/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-label-custom variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "158-shadcn-line-label", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/158-shadcn-line-label/tanstack.ts", + "cases/158-shadcn-line-label/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-label variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "159-shadcn-line-linear", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/159-shadcn-line-linear/tanstack.ts", + "cases/159-shadcn-line-linear/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-linear variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "160-shadcn-line-multiple", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/160-shadcn-line-multiple/tanstack.ts", + "cases/160-shadcn-line-multiple/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-multiple variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "161-shadcn-line-step", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/161-shadcn-line-step/tanstack.ts", + "cases/161-shadcn-line-step/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-line-step variant through the shared native line chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "162-shadcn-pie-donut-active", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/162-shadcn-pie-donut-active/tanstack.ts", + "cases/162-shadcn-pie-donut-active/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-donut-active variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "129-shadcn-pie-donut-text", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/129-shadcn-pie-donut-text/tanstack.ts", + "cases/129-shadcn-pie-donut-text/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-donut-text variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "163-shadcn-pie-donut", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/163-shadcn-pie-donut/tanstack.ts", + "cases/163-shadcn-pie-donut/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-donut variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "164-shadcn-pie-interactive", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/164-shadcn-pie-interactive/tanstack.ts", + "cases/164-shadcn-pie-interactive/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-interactive variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "165-shadcn-pie-label-custom", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/165-shadcn-pie-label-custom/tanstack.ts", + "cases/165-shadcn-pie-label-custom/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-label-custom variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "166-shadcn-pie-label-list", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/166-shadcn-pie-label-list/tanstack.ts", + "cases/166-shadcn-pie-label-list/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-label-list variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "167-shadcn-pie-label", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/167-shadcn-pie-label/tanstack.ts", + "cases/167-shadcn-pie-label/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-label variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "168-shadcn-pie-legend", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/168-shadcn-pie-legend/tanstack.ts", + "cases/168-shadcn-pie-legend/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-legend variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "169-shadcn-pie-separator-none", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/169-shadcn-pie-separator-none/tanstack.ts", + "cases/169-shadcn-pie-separator-none/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-separator-none variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "170-shadcn-pie-simple", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/170-shadcn-pie-simple/tanstack.ts", + "cases/170-shadcn-pie-simple/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-simple variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "171-shadcn-pie-stacked", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/171-shadcn-pie-stacked/tanstack.ts", + "cases/171-shadcn-pie-stacked/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-pie-stacked variant through the shared native pie chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "172-shadcn-radar-default", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/172-shadcn-radar-default/tanstack.ts", + "cases/172-shadcn-radar-default/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-default variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "173-shadcn-radar-dots", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/173-shadcn-radar-dots/tanstack.ts", + "cases/173-shadcn-radar-dots/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-dots variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "174-shadcn-radar-grid-circle-fill", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/174-shadcn-radar-grid-circle-fill/tanstack.ts", + "cases/174-shadcn-radar-grid-circle-fill/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-grid-circle-fill variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "175-shadcn-radar-grid-circle-no-lines", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/175-shadcn-radar-grid-circle-no-lines/tanstack.ts", + "cases/175-shadcn-radar-grid-circle-no-lines/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-grid-circle-no-lines variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "176-shadcn-radar-grid-circle", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/176-shadcn-radar-grid-circle/tanstack.ts", + "cases/176-shadcn-radar-grid-circle/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-grid-circle variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "177-shadcn-radar-grid-custom", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/177-shadcn-radar-grid-custom/tanstack.ts", + "cases/177-shadcn-radar-grid-custom/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-grid-custom variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "178-shadcn-radar-grid-fill", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/178-shadcn-radar-grid-fill/tanstack.ts", + "cases/178-shadcn-radar-grid-fill/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-grid-fill variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "179-shadcn-radar-grid-none", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/179-shadcn-radar-grid-none/tanstack.ts", + "cases/179-shadcn-radar-grid-none/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-grid-none variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "180-shadcn-radar-icons", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/180-shadcn-radar-icons/tanstack.ts", + "cases/180-shadcn-radar-icons/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-icons variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "181-shadcn-radar-label-custom", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/181-shadcn-radar-label-custom/tanstack.ts", + "cases/181-shadcn-radar-label-custom/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-label-custom variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "182-shadcn-radar-legend", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/182-shadcn-radar-legend/tanstack.ts", + "cases/182-shadcn-radar-legend/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-legend variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "183-shadcn-radar-lines-only", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/183-shadcn-radar-lines-only/tanstack.ts", + "cases/183-shadcn-radar-lines-only/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-lines-only variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "130-shadcn-radar-multiple", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/130-shadcn-radar-multiple/tanstack.ts", + "cases/130-shadcn-radar-multiple/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-multiple variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "184-shadcn-radar-radius", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/184-shadcn-radar-radius/tanstack.ts", + "cases/184-shadcn-radar-radius/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radar-radius variant through the shared native radar chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "185-shadcn-radial-grid", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/185-shadcn-radial-grid/tanstack.ts", + "cases/185-shadcn-radial-grid/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radial-grid variant through the shared native radial chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "186-shadcn-radial-label", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/186-shadcn-radial-label/tanstack.ts", + "cases/186-shadcn-radial-label/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radial-label variant through the shared native radial chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "187-shadcn-radial-shape", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/187-shadcn-radial-shape/tanstack.ts", + "cases/187-shadcn-radial-shape/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radial-shape variant through the shared native radial chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "188-shadcn-radial-simple", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/188-shadcn-radial-simple/tanstack.ts", + "cases/188-shadcn-radial-simple/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radial-simple variant through the shared native radial chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "189-shadcn-radial-stacked", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/189-shadcn-radial-stacked/tanstack.ts", + "cases/189-shadcn-radial-stacked/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radial-stacked variant through the shared native radial chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "131-shadcn-radial-text", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/131-shadcn-radial-text/tanstack.ts", + "cases/131-shadcn-radial-text/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-radial-text variant through the shared native radial chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "132-shadcn-tooltip-advanced", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/132-shadcn-tooltip-advanced/tanstack.ts", + "cases/132-shadcn-tooltip-advanced/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-advanced variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "190-shadcn-tooltip-default", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/190-shadcn-tooltip-default/tanstack.ts", + "cases/190-shadcn-tooltip-default/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-default variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "191-shadcn-tooltip-formatter", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/191-shadcn-tooltip-formatter/tanstack.ts", + "cases/191-shadcn-tooltip-formatter/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-formatter variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "192-shadcn-tooltip-icons", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/192-shadcn-tooltip-icons/tanstack.ts", + "cases/192-shadcn-tooltip-icons/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-icons variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "193-shadcn-tooltip-indicator-line", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/193-shadcn-tooltip-indicator-line/tanstack.ts", + "cases/193-shadcn-tooltip-indicator-line/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-indicator-line variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "194-shadcn-tooltip-indicator-none", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/194-shadcn-tooltip-indicator-none/tanstack.ts", + "cases/194-shadcn-tooltip-indicator-none/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-indicator-none variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "195-shadcn-tooltip-label-custom", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/195-shadcn-tooltip-label-custom/tanstack.ts", + "cases/195-shadcn-tooltip-label-custom/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-label-custom variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "196-shadcn-tooltip-label-formatter", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/196-shadcn-tooltip-label-formatter/tanstack.ts", + "cases/196-shadcn-tooltip-label-formatter/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-label-formatter variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, + { + "id": "197-shadcn-tooltip-label-none", + "coverage": "app-composed", + "disposition": "definition-now", + "phase": "phase-0", + "status": "verified", + "capabilities": ["current-definition-api"], + "evidence": [ + "cases/197-shadcn-tooltip-label-none/tanstack.ts", + "cases/197-shadcn-tooltip-label-none/case.json" + ], + "work": [ + { + "kind": "definition-composition", + "stage": "definition-builder", + "owner": "charts", + "coordinateSpace": "none", + "sources": [ + "benchmarks/conformance/shared/shadcn-catalog-tanstack.tsx" + ], + "summary": "Compose the pinned shadcn chart-tooltip-label-none variant through the shared native tooltip chart definition." + }, + { + "kind": "application-shell", + "stage": "post-render", + "owner": "application", + "coordinateSpace": "dom", + "sources": ["benchmarks/conformance/shared/shadcn-chart-card.tsx"], + "summary": "Share the canonical shadcn card dimensions, typography, footer, and theme tokens across renderer implementations." + } + ] + }, { "id": "bar-grouped", "coverage": "declarative", diff --git a/benchmarks/conformance/definition-coverage-roadmap.test.ts b/benchmarks/conformance/definition-coverage-roadmap.test.ts index 4cd59f99..b3e9d91a 100644 --- a/benchmarks/conformance/definition-coverage-roadmap.test.ts +++ b/benchmarks/conformance/definition-coverage-roadmap.test.ts @@ -140,12 +140,12 @@ describe('definition coverage roadmap', () => { .filter((entry) => entry.isDirectory()) .map((entry) => entry.name) - expect(auditedIds).toHaveLength(117) - expect(new Set(auditedIds).size).toBe(117) - expect(roadmapIds).toHaveLength(117) - expect(new Set(roadmapIds).size).toBe(117) - expect(overviewIds).toHaveLength(117) - expect(new Set(overviewIds).size).toBe(117) + expect(auditedIds).toHaveLength(188) + expect(new Set(auditedIds).size).toBe(188) + expect(roadmapIds).toHaveLength(188) + expect(new Set(roadmapIds).size).toBe(188) + expect(overviewIds).toHaveLength(188) + expect(new Set(overviewIds).size).toBe(188) expect([...roadmapIds].sort()).toEqual([...auditedIds].sort()) expect([...roadmapIds].sort()).toEqual([...overviewIds].sort()) expect([...roadmapIds].sort()).toEqual([...catalogIds].sort()) @@ -154,13 +154,13 @@ describe('definition coverage roadmap', () => { expect(countBy(roadmap.cases, 'disposition')).toEqual({ 'application-boundary': 2, - 'definition-now': 64, + 'definition-now': 135, 'first-party-primitive': 35, 'inline-custom-mark': 1, 'optional-primitive': 15, }) expect(countBy(roadmap.cases, 'phase')).toEqual({ - 'phase-0': 66, + 'phase-0': 137, 'phase-1': 2, 'phase-2': 26, 'phase-3': 11, @@ -170,8 +170,8 @@ describe('definition coverage roadmap', () => { const roadmapById = new Map(roadmap.cases.map((entry) => [entry.id, entry])) const auditRows = coverageRows(audit, false) const overviewRows = coverageRows(overview, true) - expect(auditRows).toHaveLength(117) - expect(overviewRows).toHaveLength(117) + expect(auditRows).toHaveLength(188) + expect(overviewRows).toHaveLength(188) for (const row of auditRows) { expect(dispositionByLabel[row.disposition]).toBe( roadmapById.get(row.id)?.disposition, diff --git a/benchmarks/conformance/previews/121-active-bar-dashboard.svg b/benchmarks/conformance/previews/121-active-bar-dashboard.svg index acca9c2f..3e3d5ade 100644 --- a/benchmarks/conformance/previews/121-active-bar-dashboard.svg +++ b/benchmarks/conformance/previews/121-active-bar-dashboard.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/121-shadcn-dashboard.svg b/benchmarks/conformance/previews/127-shadcn-dashboard.svg similarity index 100% rename from benchmarks/conformance/previews/121-shadcn-dashboard.svg rename to benchmarks/conformance/previews/127-shadcn-dashboard.svg diff --git a/benchmarks/conformance/previews/122-shadcn-bar-multiple.svg b/benchmarks/conformance/previews/128-shadcn-bar-multiple.svg similarity index 100% rename from benchmarks/conformance/previews/122-shadcn-bar-multiple.svg rename to benchmarks/conformance/previews/128-shadcn-bar-multiple.svg diff --git a/benchmarks/conformance/previews/123-shadcn-pie-donut-text.svg b/benchmarks/conformance/previews/129-shadcn-pie-donut-text.svg similarity index 100% rename from benchmarks/conformance/previews/123-shadcn-pie-donut-text.svg rename to benchmarks/conformance/previews/129-shadcn-pie-donut-text.svg diff --git a/benchmarks/conformance/previews/124-shadcn-radar-multiple.svg b/benchmarks/conformance/previews/130-shadcn-radar-multiple.svg similarity index 56% rename from benchmarks/conformance/previews/124-shadcn-radar-multiple.svg rename to benchmarks/conformance/previews/130-shadcn-radar-multiple.svg index 2d0c6736..613a72fd 100644 --- a/benchmarks/conformance/previews/124-shadcn-radar-multiple.svg +++ b/benchmarks/conformance/previews/130-shadcn-radar-multiple.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/125-shadcn-radial-text.svg b/benchmarks/conformance/previews/131-shadcn-radial-text.svg similarity index 100% rename from benchmarks/conformance/previews/125-shadcn-radial-text.svg rename to benchmarks/conformance/previews/131-shadcn-radial-text.svg diff --git a/benchmarks/conformance/previews/126-shadcn-tooltip-advanced.svg b/benchmarks/conformance/previews/132-shadcn-tooltip-advanced.svg similarity index 100% rename from benchmarks/conformance/previews/126-shadcn-tooltip-advanced.svg rename to benchmarks/conformance/previews/132-shadcn-tooltip-advanced.svg diff --git a/benchmarks/conformance/previews/127-shadcn-area-axes.svg b/benchmarks/conformance/previews/133-shadcn-area-axes.svg similarity index 100% rename from benchmarks/conformance/previews/127-shadcn-area-axes.svg rename to benchmarks/conformance/previews/133-shadcn-area-axes.svg diff --git a/benchmarks/conformance/previews/128-shadcn-area-default.svg b/benchmarks/conformance/previews/134-shadcn-area-default.svg similarity index 100% rename from benchmarks/conformance/previews/128-shadcn-area-default.svg rename to benchmarks/conformance/previews/134-shadcn-area-default.svg diff --git a/benchmarks/conformance/previews/129-shadcn-area-gradient.svg b/benchmarks/conformance/previews/135-shadcn-area-gradient.svg similarity index 100% rename from benchmarks/conformance/previews/129-shadcn-area-gradient.svg rename to benchmarks/conformance/previews/135-shadcn-area-gradient.svg diff --git a/benchmarks/conformance/previews/130-shadcn-area-icons.svg b/benchmarks/conformance/previews/136-shadcn-area-icons.svg similarity index 100% rename from benchmarks/conformance/previews/130-shadcn-area-icons.svg rename to benchmarks/conformance/previews/136-shadcn-area-icons.svg diff --git a/benchmarks/conformance/previews/131-shadcn-area-interactive.svg b/benchmarks/conformance/previews/137-shadcn-area-interactive.svg similarity index 100% rename from benchmarks/conformance/previews/131-shadcn-area-interactive.svg rename to benchmarks/conformance/previews/137-shadcn-area-interactive.svg diff --git a/benchmarks/conformance/previews/132-shadcn-area-legend.svg b/benchmarks/conformance/previews/138-shadcn-area-legend.svg similarity index 100% rename from benchmarks/conformance/previews/132-shadcn-area-legend.svg rename to benchmarks/conformance/previews/138-shadcn-area-legend.svg diff --git a/benchmarks/conformance/previews/133-shadcn-area-linear.svg b/benchmarks/conformance/previews/139-shadcn-area-linear.svg similarity index 100% rename from benchmarks/conformance/previews/133-shadcn-area-linear.svg rename to benchmarks/conformance/previews/139-shadcn-area-linear.svg diff --git a/benchmarks/conformance/previews/134-shadcn-area-stacked-expand.svg b/benchmarks/conformance/previews/140-shadcn-area-stacked-expand.svg similarity index 100% rename from benchmarks/conformance/previews/134-shadcn-area-stacked-expand.svg rename to benchmarks/conformance/previews/140-shadcn-area-stacked-expand.svg diff --git a/benchmarks/conformance/previews/140-shadcn-bar-interactive.svg b/benchmarks/conformance/previews/140-shadcn-bar-interactive.svg deleted file mode 100644 index e0d577a1..00000000 --- a/benchmarks/conformance/previews/140-shadcn-bar-interactive.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/benchmarks/conformance/previews/135-shadcn-area-stacked.svg b/benchmarks/conformance/previews/141-shadcn-area-stacked.svg similarity index 100% rename from benchmarks/conformance/previews/135-shadcn-area-stacked.svg rename to benchmarks/conformance/previews/141-shadcn-area-stacked.svg diff --git a/benchmarks/conformance/previews/136-shadcn-area-step.svg b/benchmarks/conformance/previews/142-shadcn-area-step.svg similarity index 100% rename from benchmarks/conformance/previews/136-shadcn-area-step.svg rename to benchmarks/conformance/previews/142-shadcn-area-step.svg diff --git a/benchmarks/conformance/previews/137-shadcn-bar-active.svg b/benchmarks/conformance/previews/143-shadcn-bar-active.svg similarity index 100% rename from benchmarks/conformance/previews/137-shadcn-bar-active.svg rename to benchmarks/conformance/previews/143-shadcn-bar-active.svg diff --git a/benchmarks/conformance/previews/138-shadcn-bar-default.svg b/benchmarks/conformance/previews/144-shadcn-bar-default.svg similarity index 100% rename from benchmarks/conformance/previews/138-shadcn-bar-default.svg rename to benchmarks/conformance/previews/144-shadcn-bar-default.svg diff --git a/benchmarks/conformance/previews/139-shadcn-bar-horizontal.svg b/benchmarks/conformance/previews/145-shadcn-bar-horizontal.svg similarity index 100% rename from benchmarks/conformance/previews/139-shadcn-bar-horizontal.svg rename to benchmarks/conformance/previews/145-shadcn-bar-horizontal.svg diff --git a/benchmarks/conformance/previews/146-shadcn-bar-interactive.svg b/benchmarks/conformance/previews/146-shadcn-bar-interactive.svg new file mode 100644 index 00000000..05ac9bd4 --- /dev/null +++ b/benchmarks/conformance/previews/146-shadcn-bar-interactive.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/141-shadcn-bar-label-custom.svg b/benchmarks/conformance/previews/147-shadcn-bar-label-custom.svg similarity index 100% rename from benchmarks/conformance/previews/141-shadcn-bar-label-custom.svg rename to benchmarks/conformance/previews/147-shadcn-bar-label-custom.svg diff --git a/benchmarks/conformance/previews/142-shadcn-bar-label.svg b/benchmarks/conformance/previews/148-shadcn-bar-label.svg similarity index 100% rename from benchmarks/conformance/previews/142-shadcn-bar-label.svg rename to benchmarks/conformance/previews/148-shadcn-bar-label.svg diff --git a/benchmarks/conformance/previews/143-shadcn-bar-mixed.svg b/benchmarks/conformance/previews/149-shadcn-bar-mixed.svg similarity index 100% rename from benchmarks/conformance/previews/143-shadcn-bar-mixed.svg rename to benchmarks/conformance/previews/149-shadcn-bar-mixed.svg diff --git a/benchmarks/conformance/previews/144-shadcn-bar-negative.svg b/benchmarks/conformance/previews/150-shadcn-bar-negative.svg similarity index 100% rename from benchmarks/conformance/previews/144-shadcn-bar-negative.svg rename to benchmarks/conformance/previews/150-shadcn-bar-negative.svg diff --git a/benchmarks/conformance/previews/150-shadcn-line-interactive.svg b/benchmarks/conformance/previews/150-shadcn-line-interactive.svg deleted file mode 100644 index a7ae2364..00000000 --- a/benchmarks/conformance/previews/150-shadcn-line-interactive.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/benchmarks/conformance/previews/145-shadcn-bar-stacked.svg b/benchmarks/conformance/previews/151-shadcn-bar-stacked.svg similarity index 100% rename from benchmarks/conformance/previews/145-shadcn-bar-stacked.svg rename to benchmarks/conformance/previews/151-shadcn-bar-stacked.svg diff --git a/benchmarks/conformance/previews/146-shadcn-line-default.svg b/benchmarks/conformance/previews/152-shadcn-line-default.svg similarity index 100% rename from benchmarks/conformance/previews/146-shadcn-line-default.svg rename to benchmarks/conformance/previews/152-shadcn-line-default.svg diff --git a/benchmarks/conformance/previews/147-shadcn-line-dots-colors.svg b/benchmarks/conformance/previews/153-shadcn-line-dots-colors.svg similarity index 100% rename from benchmarks/conformance/previews/147-shadcn-line-dots-colors.svg rename to benchmarks/conformance/previews/153-shadcn-line-dots-colors.svg diff --git a/benchmarks/conformance/previews/148-shadcn-line-dots-custom.svg b/benchmarks/conformance/previews/154-shadcn-line-dots-custom.svg similarity index 100% rename from benchmarks/conformance/previews/148-shadcn-line-dots-custom.svg rename to benchmarks/conformance/previews/154-shadcn-line-dots-custom.svg diff --git a/benchmarks/conformance/previews/149-shadcn-line-dots.svg b/benchmarks/conformance/previews/155-shadcn-line-dots.svg similarity index 100% rename from benchmarks/conformance/previews/149-shadcn-line-dots.svg rename to benchmarks/conformance/previews/155-shadcn-line-dots.svg diff --git a/benchmarks/conformance/previews/156-shadcn-line-interactive.svg b/benchmarks/conformance/previews/156-shadcn-line-interactive.svg new file mode 100644 index 00000000..1b526ebb --- /dev/null +++ b/benchmarks/conformance/previews/156-shadcn-line-interactive.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/151-shadcn-line-label-custom.svg b/benchmarks/conformance/previews/157-shadcn-line-label-custom.svg similarity index 100% rename from benchmarks/conformance/previews/151-shadcn-line-label-custom.svg rename to benchmarks/conformance/previews/157-shadcn-line-label-custom.svg diff --git a/benchmarks/conformance/previews/152-shadcn-line-label.svg b/benchmarks/conformance/previews/158-shadcn-line-label.svg similarity index 100% rename from benchmarks/conformance/previews/152-shadcn-line-label.svg rename to benchmarks/conformance/previews/158-shadcn-line-label.svg diff --git a/benchmarks/conformance/previews/153-shadcn-line-linear.svg b/benchmarks/conformance/previews/159-shadcn-line-linear.svg similarity index 100% rename from benchmarks/conformance/previews/153-shadcn-line-linear.svg rename to benchmarks/conformance/previews/159-shadcn-line-linear.svg diff --git a/benchmarks/conformance/previews/154-shadcn-line-multiple.svg b/benchmarks/conformance/previews/160-shadcn-line-multiple.svg similarity index 100% rename from benchmarks/conformance/previews/154-shadcn-line-multiple.svg rename to benchmarks/conformance/previews/160-shadcn-line-multiple.svg diff --git a/benchmarks/conformance/previews/155-shadcn-line-step.svg b/benchmarks/conformance/previews/161-shadcn-line-step.svg similarity index 100% rename from benchmarks/conformance/previews/155-shadcn-line-step.svg rename to benchmarks/conformance/previews/161-shadcn-line-step.svg diff --git a/benchmarks/conformance/previews/156-shadcn-pie-donut-active.svg b/benchmarks/conformance/previews/162-shadcn-pie-donut-active.svg similarity index 100% rename from benchmarks/conformance/previews/156-shadcn-pie-donut-active.svg rename to benchmarks/conformance/previews/162-shadcn-pie-donut-active.svg diff --git a/benchmarks/conformance/previews/157-shadcn-pie-donut.svg b/benchmarks/conformance/previews/163-shadcn-pie-donut.svg similarity index 100% rename from benchmarks/conformance/previews/157-shadcn-pie-donut.svg rename to benchmarks/conformance/previews/163-shadcn-pie-donut.svg diff --git a/benchmarks/conformance/previews/158-shadcn-pie-interactive.svg b/benchmarks/conformance/previews/164-shadcn-pie-interactive.svg similarity index 100% rename from benchmarks/conformance/previews/158-shadcn-pie-interactive.svg rename to benchmarks/conformance/previews/164-shadcn-pie-interactive.svg diff --git a/benchmarks/conformance/previews/159-shadcn-pie-label-custom.svg b/benchmarks/conformance/previews/165-shadcn-pie-label-custom.svg similarity index 100% rename from benchmarks/conformance/previews/159-shadcn-pie-label-custom.svg rename to benchmarks/conformance/previews/165-shadcn-pie-label-custom.svg diff --git a/benchmarks/conformance/previews/160-shadcn-pie-label-list.svg b/benchmarks/conformance/previews/166-shadcn-pie-label-list.svg similarity index 100% rename from benchmarks/conformance/previews/160-shadcn-pie-label-list.svg rename to benchmarks/conformance/previews/166-shadcn-pie-label-list.svg diff --git a/benchmarks/conformance/previews/161-shadcn-pie-label.svg b/benchmarks/conformance/previews/167-shadcn-pie-label.svg similarity index 100% rename from benchmarks/conformance/previews/161-shadcn-pie-label.svg rename to benchmarks/conformance/previews/167-shadcn-pie-label.svg diff --git a/benchmarks/conformance/previews/162-shadcn-pie-legend.svg b/benchmarks/conformance/previews/168-shadcn-pie-legend.svg similarity index 100% rename from benchmarks/conformance/previews/162-shadcn-pie-legend.svg rename to benchmarks/conformance/previews/168-shadcn-pie-legend.svg diff --git a/benchmarks/conformance/previews/163-shadcn-pie-separator-none.svg b/benchmarks/conformance/previews/169-shadcn-pie-separator-none.svg similarity index 100% rename from benchmarks/conformance/previews/163-shadcn-pie-separator-none.svg rename to benchmarks/conformance/previews/169-shadcn-pie-separator-none.svg diff --git a/benchmarks/conformance/previews/164-shadcn-pie-simple.svg b/benchmarks/conformance/previews/170-shadcn-pie-simple.svg similarity index 100% rename from benchmarks/conformance/previews/164-shadcn-pie-simple.svg rename to benchmarks/conformance/previews/170-shadcn-pie-simple.svg diff --git a/benchmarks/conformance/previews/165-shadcn-pie-stacked.svg b/benchmarks/conformance/previews/171-shadcn-pie-stacked.svg similarity index 100% rename from benchmarks/conformance/previews/165-shadcn-pie-stacked.svg rename to benchmarks/conformance/previews/171-shadcn-pie-stacked.svg diff --git a/benchmarks/conformance/previews/166-shadcn-radar-default.svg b/benchmarks/conformance/previews/172-shadcn-radar-default.svg similarity index 63% rename from benchmarks/conformance/previews/166-shadcn-radar-default.svg rename to benchmarks/conformance/previews/172-shadcn-radar-default.svg index 1bb003a5..e48377fb 100644 --- a/benchmarks/conformance/previews/166-shadcn-radar-default.svg +++ b/benchmarks/conformance/previews/172-shadcn-radar-default.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/167-shadcn-radar-dots.svg b/benchmarks/conformance/previews/173-shadcn-radar-dots.svg similarity index 53% rename from benchmarks/conformance/previews/167-shadcn-radar-dots.svg rename to benchmarks/conformance/previews/173-shadcn-radar-dots.svg index 93bd79ff..58121710 100644 --- a/benchmarks/conformance/previews/167-shadcn-radar-dots.svg +++ b/benchmarks/conformance/previews/173-shadcn-radar-dots.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg b/benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg deleted file mode 100644 index 520c5e8a..00000000 --- a/benchmarks/conformance/previews/173-shadcn-radar-grid-none.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/benchmarks/conformance/previews/168-shadcn-radar-grid-circle-fill.svg b/benchmarks/conformance/previews/174-shadcn-radar-grid-circle-fill.svg similarity index 63% rename from benchmarks/conformance/previews/168-shadcn-radar-grid-circle-fill.svg rename to benchmarks/conformance/previews/174-shadcn-radar-grid-circle-fill.svg index 23f2ff15..637d5dc0 100644 --- a/benchmarks/conformance/previews/168-shadcn-radar-grid-circle-fill.svg +++ b/benchmarks/conformance/previews/174-shadcn-radar-grid-circle-fill.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/169-shadcn-radar-grid-circle-no-lines.svg b/benchmarks/conformance/previews/175-shadcn-radar-grid-circle-no-lines.svg similarity index 52% rename from benchmarks/conformance/previews/169-shadcn-radar-grid-circle-no-lines.svg rename to benchmarks/conformance/previews/175-shadcn-radar-grid-circle-no-lines.svg index 5a3768e9..51621981 100644 --- a/benchmarks/conformance/previews/169-shadcn-radar-grid-circle-no-lines.svg +++ b/benchmarks/conformance/previews/175-shadcn-radar-grid-circle-no-lines.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg b/benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg deleted file mode 100644 index c3bf3361..00000000 --- a/benchmarks/conformance/previews/175-shadcn-radar-label-custom.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/benchmarks/conformance/previews/170-shadcn-radar-grid-circle.svg b/benchmarks/conformance/previews/176-shadcn-radar-grid-circle.svg similarity index 52% rename from benchmarks/conformance/previews/170-shadcn-radar-grid-circle.svg rename to benchmarks/conformance/previews/176-shadcn-radar-grid-circle.svg index d99c0bf7..3cbd05c0 100644 --- a/benchmarks/conformance/previews/170-shadcn-radar-grid-circle.svg +++ b/benchmarks/conformance/previews/176-shadcn-radar-grid-circle.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/171-shadcn-radar-grid-custom.svg b/benchmarks/conformance/previews/177-shadcn-radar-grid-custom.svg similarity index 58% rename from benchmarks/conformance/previews/171-shadcn-radar-grid-custom.svg rename to benchmarks/conformance/previews/177-shadcn-radar-grid-custom.svg index 7bc73556..9ccfa31d 100644 --- a/benchmarks/conformance/previews/171-shadcn-radar-grid-custom.svg +++ b/benchmarks/conformance/previews/177-shadcn-radar-grid-custom.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/172-shadcn-radar-grid-fill.svg b/benchmarks/conformance/previews/178-shadcn-radar-grid-fill.svg similarity index 64% rename from benchmarks/conformance/previews/172-shadcn-radar-grid-fill.svg rename to benchmarks/conformance/previews/178-shadcn-radar-grid-fill.svg index cfb14e51..9cb0bcd8 100644 --- a/benchmarks/conformance/previews/172-shadcn-radar-grid-fill.svg +++ b/benchmarks/conformance/previews/178-shadcn-radar-grid-fill.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/179-shadcn-radar-grid-none.svg b/benchmarks/conformance/previews/179-shadcn-radar-grid-none.svg new file mode 100644 index 00000000..47fd8d6d --- /dev/null +++ b/benchmarks/conformance/previews/179-shadcn-radar-grid-none.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/174-shadcn-radar-icons.svg b/benchmarks/conformance/previews/180-shadcn-radar-icons.svg similarity index 58% rename from benchmarks/conformance/previews/174-shadcn-radar-icons.svg rename to benchmarks/conformance/previews/180-shadcn-radar-icons.svg index 89bcbde7..4f3db8c5 100644 --- a/benchmarks/conformance/previews/174-shadcn-radar-icons.svg +++ b/benchmarks/conformance/previews/180-shadcn-radar-icons.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/181-shadcn-radar-label-custom.svg b/benchmarks/conformance/previews/181-shadcn-radar-label-custom.svg new file mode 100644 index 00000000..d254bac9 --- /dev/null +++ b/benchmarks/conformance/previews/181-shadcn-radar-label-custom.svg @@ -0,0 +1 @@ + diff --git a/benchmarks/conformance/previews/176-shadcn-radar-legend.svg b/benchmarks/conformance/previews/182-shadcn-radar-legend.svg similarity index 58% rename from benchmarks/conformance/previews/176-shadcn-radar-legend.svg rename to benchmarks/conformance/previews/182-shadcn-radar-legend.svg index abaebe7f..f40f45f5 100644 --- a/benchmarks/conformance/previews/176-shadcn-radar-legend.svg +++ b/benchmarks/conformance/previews/182-shadcn-radar-legend.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/177-shadcn-radar-lines-only.svg b/benchmarks/conformance/previews/183-shadcn-radar-lines-only.svg similarity index 58% rename from benchmarks/conformance/previews/177-shadcn-radar-lines-only.svg rename to benchmarks/conformance/previews/183-shadcn-radar-lines-only.svg index 8ed501ea..760f837e 100644 --- a/benchmarks/conformance/previews/177-shadcn-radar-lines-only.svg +++ b/benchmarks/conformance/previews/183-shadcn-radar-lines-only.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/178-shadcn-radar-radius.svg b/benchmarks/conformance/previews/184-shadcn-radar-radius.svg similarity index 54% rename from benchmarks/conformance/previews/178-shadcn-radar-radius.svg rename to benchmarks/conformance/previews/184-shadcn-radar-radius.svg index 8409934b..a87d751e 100644 --- a/benchmarks/conformance/previews/178-shadcn-radar-radius.svg +++ b/benchmarks/conformance/previews/184-shadcn-radar-radius.svg @@ -1 +1 @@ - + diff --git a/benchmarks/conformance/previews/179-shadcn-radial-grid.svg b/benchmarks/conformance/previews/185-shadcn-radial-grid.svg similarity index 100% rename from benchmarks/conformance/previews/179-shadcn-radial-grid.svg rename to benchmarks/conformance/previews/185-shadcn-radial-grid.svg diff --git a/benchmarks/conformance/previews/180-shadcn-radial-label.svg b/benchmarks/conformance/previews/186-shadcn-radial-label.svg similarity index 100% rename from benchmarks/conformance/previews/180-shadcn-radial-label.svg rename to benchmarks/conformance/previews/186-shadcn-radial-label.svg diff --git a/benchmarks/conformance/previews/181-shadcn-radial-shape.svg b/benchmarks/conformance/previews/187-shadcn-radial-shape.svg similarity index 100% rename from benchmarks/conformance/previews/181-shadcn-radial-shape.svg rename to benchmarks/conformance/previews/187-shadcn-radial-shape.svg diff --git a/benchmarks/conformance/previews/182-shadcn-radial-simple.svg b/benchmarks/conformance/previews/188-shadcn-radial-simple.svg similarity index 100% rename from benchmarks/conformance/previews/182-shadcn-radial-simple.svg rename to benchmarks/conformance/previews/188-shadcn-radial-simple.svg diff --git a/benchmarks/conformance/previews/183-shadcn-radial-stacked.svg b/benchmarks/conformance/previews/189-shadcn-radial-stacked.svg similarity index 100% rename from benchmarks/conformance/previews/183-shadcn-radial-stacked.svg rename to benchmarks/conformance/previews/189-shadcn-radial-stacked.svg diff --git a/benchmarks/conformance/previews/184-shadcn-tooltip-default.svg b/benchmarks/conformance/previews/190-shadcn-tooltip-default.svg similarity index 100% rename from benchmarks/conformance/previews/184-shadcn-tooltip-default.svg rename to benchmarks/conformance/previews/190-shadcn-tooltip-default.svg diff --git a/benchmarks/conformance/previews/185-shadcn-tooltip-formatter.svg b/benchmarks/conformance/previews/191-shadcn-tooltip-formatter.svg similarity index 100% rename from benchmarks/conformance/previews/185-shadcn-tooltip-formatter.svg rename to benchmarks/conformance/previews/191-shadcn-tooltip-formatter.svg diff --git a/benchmarks/conformance/previews/186-shadcn-tooltip-icons.svg b/benchmarks/conformance/previews/192-shadcn-tooltip-icons.svg similarity index 100% rename from benchmarks/conformance/previews/186-shadcn-tooltip-icons.svg rename to benchmarks/conformance/previews/192-shadcn-tooltip-icons.svg diff --git a/benchmarks/conformance/previews/187-shadcn-tooltip-indicator-line.svg b/benchmarks/conformance/previews/193-shadcn-tooltip-indicator-line.svg similarity index 100% rename from benchmarks/conformance/previews/187-shadcn-tooltip-indicator-line.svg rename to benchmarks/conformance/previews/193-shadcn-tooltip-indicator-line.svg diff --git a/benchmarks/conformance/previews/188-shadcn-tooltip-indicator-none.svg b/benchmarks/conformance/previews/194-shadcn-tooltip-indicator-none.svg similarity index 100% rename from benchmarks/conformance/previews/188-shadcn-tooltip-indicator-none.svg rename to benchmarks/conformance/previews/194-shadcn-tooltip-indicator-none.svg diff --git a/benchmarks/conformance/previews/189-shadcn-tooltip-label-custom.svg b/benchmarks/conformance/previews/195-shadcn-tooltip-label-custom.svg similarity index 100% rename from benchmarks/conformance/previews/189-shadcn-tooltip-label-custom.svg rename to benchmarks/conformance/previews/195-shadcn-tooltip-label-custom.svg diff --git a/benchmarks/conformance/previews/190-shadcn-tooltip-label-formatter.svg b/benchmarks/conformance/previews/196-shadcn-tooltip-label-formatter.svg similarity index 100% rename from benchmarks/conformance/previews/190-shadcn-tooltip-label-formatter.svg rename to benchmarks/conformance/previews/196-shadcn-tooltip-label-formatter.svg diff --git a/benchmarks/conformance/previews/191-shadcn-tooltip-label-none.svg b/benchmarks/conformance/previews/197-shadcn-tooltip-label-none.svg similarity index 100% rename from benchmarks/conformance/previews/191-shadcn-tooltip-label-none.svg rename to benchmarks/conformance/previews/197-shadcn-tooltip-label-none.svg diff --git a/benchmarks/conformance/previews/manifest.json b/benchmarks/conformance/previews/manifest.json index 343e2358..2fc9e828 100644 --- a/benchmarks/conformance/previews/manifest.json +++ b/benchmarks/conformance/previews/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "width": 288, "height": 192, - "sourceHash": "93452895c364c1dd0cc6b824137d35b8c43e0a022dca544e38dccea52b94fb88", + "sourceHash": "52f3f890587d74815d2bd2fb3c6ef09a97d84d333a76312ade628afb03062b9f", "assets": [ { "id": "01-line-gaps", @@ -26,23 +26,23 @@ }, { "id": "bar-vertical-sorted", - "sha256": "619bb54274e95dee9d0fdf744c31559b6fe9e48834960007ac829256d0deecca", - "bytes": 4129 + "sha256": "3962f4645adc980cab0b3ce322f77285aff219c03c0b241ecbd96503cb150110", + "bytes": 5117 }, { "id": "bar-horizontal-ranking", - "sha256": "8a330ef99ea0a41b827545435be244fa4b948bba4518500686ed95e53a80c320", - "bytes": 6010 + "sha256": "74035993b087ecc1153b3748ad8dbe71693734f9b7732b102734a1ac5a3587b4", + "bytes": 6314 }, { "id": "bar-grouped", - "sha256": "513ab2ff52f8e765ebe0fa2e25b1f85860872609a67e8accdd039ed0944237be", - "bytes": 1944 + "sha256": "ee36013e993d90facd783866688dfbad1ad8999c6988fba6b69d2b463adf78e8", + "bytes": 2172 }, { "id": "bar-stacked", - "sha256": "b3d39b0dbaf4753352d3b15fd319777102796262aba9385813f5d16595e25b0c", - "bytes": 11479 + "sha256": "ee00e20cf270e9a150cc24c943356a9f48ac5122ae3a619c2aab7d3ec7fd1770", + "bytes": 14215 }, { "id": "scatter-bubble", @@ -66,8 +66,8 @@ }, { "id": "13-interval-timeline", - "sha256": "490ab60daf095965b3da1a265dd0b6d1556442f280cdd7429c54f015a6f38604", - "bytes": 2263 + "sha256": "bb6baa0358b0572804dfe0a76f39d75fcd2bd4edb0264d1c1c2f298e44ce2b59", + "bytes": 2567 }, { "id": "14-error-bars", @@ -76,8 +76,8 @@ }, { "id": "15-boxplot", - "sha256": "48abc37817fe79e93a36ca02f82ca0d4f1b19089b66e2576030507443ef9e37f", - "bytes": 5119 + "sha256": "0d7c6d957037fc68d0e1b5bbd462aeb3468da527f7ba3a2fa9272abe77404c55", + "bytes": 5309 }, { "id": "16-lollipop", @@ -126,8 +126,8 @@ }, { "id": "26-diverging-likert", - "sha256": "cefa185aaa4c38ced8f3bcf23da42878c5b47eafc13a339f509214d9be144bc0", - "bytes": 4989 + "sha256": "2fb3dc56e74413d4ec923c43203a81096c67aa5e93ef92605aa0764df6faf1cd", + "bytes": 5939 }, { "id": "27-parallel-coordinates", @@ -141,8 +141,8 @@ }, { "id": "29-waterfall", - "sha256": "1a328367909686681a28df949e72fe9c9ec7437c5caf62958575894410ea9534", - "bytes": 2229 + "sha256": "32fba7866360d13d3d32b69185992ae378c2371665358292f27a9e0fd2d42b63", + "bytes": 2495 }, { "id": "30-slopegraph", @@ -271,8 +271,8 @@ }, { "id": "59-grouped-reducer-bars", - "sha256": "6b7f891770cdee0886b174576454f012e0a7285ea7986999e02001753eda56a8", - "bytes": 2074 + "sha256": "c188a770d7da9dac5a0ad9811ed3bc1e33c9fbee1dc06f98ba81d01a9918ac14", + "bytes": 2188 }, { "id": "60-lag-autocorrelation", @@ -306,18 +306,18 @@ }, { "id": "70-composed-chart", - "sha256": "cbce365589d75552c75a43d305516bc7737f102fec6d4858d188c43639a50f14", - "bytes": 3655 + "sha256": "6ea42d265d821403ae5823c58b6da307f5bdbd5a740bc2fb555587d288caa5a0", + "bytes": 3883 }, { "id": "71-recharts-population-pyramid", - "sha256": "98c5c30195522236c31885a9426bfe59dd1aa0ffb6e0a4ecdcacdc2b7109bb1c", - "bytes": 1967 + "sha256": "4db93bf6571865d12ebe3dba3fd6043d612149cbfa7acef632530cd86d7b6fc4", + "bytes": 2195 }, { "id": "72-recharts-mixed-bars", - "sha256": "20633e483b48ec10866b44800e43d6c8b4ac154b73d3f8748cc1647e83ee9e6c", - "bytes": 4251 + "sha256": "d44979007445584f8e19cb01fd8b8bd252d28df099ac286ba8da7fca2ad48db1", + "bytes": 5049 }, { "id": "73-many-point-scatter", @@ -371,8 +371,8 @@ }, { "id": "84-pinned-nested-chart-tooltip", - "sha256": "8b9cb3866d0069a78f61d210e3c6977ab945496163d36e3b590149b3bf25a6cc", - "bytes": 21966 + "sha256": "dd61cb71069007281cb2728080ed65cf870af83c307d2645c30523d1d2c111fe", + "bytes": 23030 }, { "id": "85-scrollable-resource-lanes", @@ -516,13 +516,13 @@ }, { "id": "112-motion-entrance", - "sha256": "0296b7d31ec88ae89163516d5ad396ee4c564ae415606f5c58e471a35ac822c1", - "bytes": 2437 + "sha256": "7c33d72d304faedb4597e421da0b5770da1ab11d07098ab387965e974f2c2847", + "bytes": 2741 }, { "id": "113-motion-updates", - "sha256": "1492bbf6f2927727597251d0a2ab01551db65c5a8ae1c3b791bd014492237236", - "bytes": 2435 + "sha256": "d02e0db3f8790c84cec3c419e3070e72256b6a3eca227ad3166cf4618b8f7d3f", + "bytes": 2739 }, { "id": "114-spring-line-motion", @@ -531,8 +531,8 @@ }, { "id": "115-definition-motion", - "sha256": "c6bced9e93514edc33a3887ed0d6fd57075123aa7c73d7ad11f75fd4abdaaeb3", - "bytes": 6012 + "sha256": "707e4511b4f8290a8e23995fce9b280f9c84165d2eccb630904757aed0f305b6", + "bytes": 6240 }, { "id": "116-geometry-morph", @@ -551,8 +551,8 @@ }, { "id": "119-stacked-bar-band-cursor", - "sha256": "5044b45076c324852f65d30f7c60369caa9c9abbae769ce73cf7176b81fcd898", - "bytes": 7610 + "sha256": "3dba265ef8327ed8551d3a1f0bc53eecdc1deab8e99e7c0960b64666021dd39a", + "bytes": 8522 }, { "id": "120-themed-interactive-area", @@ -561,8 +561,8 @@ }, { "id": "121-active-bar-dashboard", - "sha256": "fe4a57c4e21f73f6e270d0746c76e7a9b1c72ad441477bbe5cbf0a328be073f7", - "bytes": 11458 + "sha256": "9c313c465979c8ff4a80f02904af955593d6bc0a582b9e19c2d79ab7deb957a1", + "bytes": 12370 }, { "id": "122-premium-kpi-sparklines", @@ -588,6 +588,361 @@ "id": "126-drillable-sunburst", "sha256": "163fd17e46238cb53209a371477b7bc78e196ccd66a385ee3ed2f6b60f675fc6", "bytes": 9111 + }, + { + "id": "127-shadcn-dashboard", + "sha256": "145c00805997cfac3b00f1380f93d7de82c5d82266992f28cda7f24145565fd8", + "bytes": 17838 + }, + { + "id": "128-shadcn-bar-multiple", + "sha256": "fdde89d276f842819c0d7b4ec8b29177f45bc31b44b530f712e7bbde86d9ef09", + "bytes": 3621 + }, + { + "id": "129-shadcn-pie-donut-text", + "sha256": "cea4adc3f89d3008744f5ec9e6513cc6d713c284c81e65aee974d8896b3dc66a", + "bytes": 3452 + }, + { + "id": "130-shadcn-radar-multiple", + "sha256": "21c4c3bdcb494b53bfc32722c8d34a0ad708bb9fef266cfafa619d6c4e7f1502", + "bytes": 5245 + }, + { + "id": "131-shadcn-radial-text", + "sha256": "a5152ef6e25530cb6b2aab4270ff27183b12603d47a81735c153c30da8aee3eb", + "bytes": 2796 + }, + { + "id": "132-shadcn-tooltip-advanced", + "sha256": "b7d813f5d1514872c2af10cdfccf2de4314f685b996de3b0e3e13295ff3fc61c", + "bytes": 3699 + }, + { + "id": "133-shadcn-area-axes", + "sha256": "046b6c5ded28e024911f19f5e876eff0aa5b68afcdcc52cce21cb65febaeeae6", + "bytes": 4460 + }, + { + "id": "134-shadcn-area-default", + "sha256": "9979dae9a4d4baec3c4e0b8290ecbe8b33cb65cb37e0a83805767901b14a49f1", + "bytes": 3229 + }, + { + "id": "135-shadcn-area-gradient", + "sha256": "cdf70c7fdba41e1a0157f306b7a62c84a312fbe46a86ee1efe835295ffed4d87", + "bytes": 4623 + }, + { + "id": "136-shadcn-area-icons", + "sha256": "bac5bc77762ca413a476d2bd1ff5fa5333d564e9b764ca5ab5fcc04496cd079e", + "bytes": 3790 + }, + { + "id": "137-shadcn-area-interactive", + "sha256": "813af06a599b468956f0484eecef9ee721095ab39b25db7b4c0c5d3348bd97bd", + "bytes": 19371 + }, + { + "id": "138-shadcn-area-legend", + "sha256": "7a3738fabf8b69783d372e5c4b36d30831e7aaadae5a9c0550abb2cb1231aa36", + "bytes": 3791 + }, + { + "id": "139-shadcn-area-linear", + "sha256": "6ec9dbb779f7f9813113e6fddacc2580bd516f4a962e55465aae5594e87f1cb2", + "bytes": 3022 + }, + { + "id": "140-shadcn-area-stacked-expand", + "sha256": "58ce0ba212267e6be27e6fe533c6cc0b7d6c3c158ac0a01d96029b1141eb8559", + "bytes": 4441 + }, + { + "id": "141-shadcn-area-stacked", + "sha256": "6043046de64945431315a6689651e362b994a6a309b188377b429c9914831296", + "bytes": 3792 + }, + { + "id": "142-shadcn-area-step", + "sha256": "51fecea4383f25623f676bde76ce0a04fb34d15547c7adcea6eac7ddeb290871", + "bytes": 3139 + }, + { + "id": "143-shadcn-bar-active", + "sha256": "c9c177369efe51d6aa0a5680af4cee908abe8c37ca7e3b3319c52c4c531cc787", + "bytes": 3592 + }, + { + "id": "144-shadcn-bar-default", + "sha256": "e478cf9890e61fd9459324b8802acabd002cf64aed8c62a38430768865e6e3e1", + "bytes": 3866 + }, + { + "id": "145-shadcn-bar-horizontal", + "sha256": "d3e127ac9c48a39292c61547c8188d23a500d79f10634bb03f83b71e6ff461b4", + "bytes": 3586 + }, + { + "id": "146-shadcn-bar-interactive", + "sha256": "9c7354c654e08d4aa93d8d38eb744d0bd4fdaf4b080a5cdad867b89ffe2bc06b", + "bytes": 20516 + }, + { + "id": "147-shadcn-bar-label-custom", + "sha256": "740689a87d611637eaa37674389e947c4458b9de0b8299c561fb378ac908cbb5", + "bytes": 5118 + }, + { + "id": "148-shadcn-bar-label", + "sha256": "d3fa1c26b13e93fe24bc120caa8a6a35ab93f002a644585cef5e516fba9450f5", + "bytes": 5012 + }, + { + "id": "149-shadcn-bar-mixed", + "sha256": "b09ee46e40e8924d9c1caf13b05b703ec226feaf036bc6549d29b3b38e13acd7", + "bytes": 3189 + }, + { + "id": "150-shadcn-bar-negative", + "sha256": "1adda58583b2f09357886d96736d176e6371ce5cfad863145b11cad0aa5e8e02", + "bytes": 4249 + }, + { + "id": "151-shadcn-bar-stacked", + "sha256": "4a1a335cb6d876dc1408ac6135d4be776f3d760c093d7833d3448839cc617370", + "bytes": 5138 + }, + { + "id": "152-shadcn-line-default", + "sha256": "ca54836082dfbbc13d5d7b32e40d6a90fee1f044ee133aa6f1822d374ae35e99", + "bytes": 3165 + }, + { + "id": "153-shadcn-line-dots-colors", + "sha256": "286b3ddd89651b558ebe6086489685d1b2fd6ced532c8e134ad97a7b90349946", + "bytes": 2806 + }, + { + "id": "154-shadcn-line-dots-custom", + "sha256": "9e3bf2816ee3eb817c89957aebb652b04c8fb1b1503dec15b975b3f39c471367", + "bytes": 5715 + }, + { + "id": "155-shadcn-line-dots", + "sha256": "ff111e61841d72c0810f4fee041e0d240d697aae8c1a0198c49534978d2740f6", + "bytes": 4396 + }, + { + "id": "156-shadcn-line-interactive", + "sha256": "018af8f456cc6984c0d4798a61eb72f8a9bc55ec690ee9a150f9fbcd08e7b6f2", + "bytes": 6603 + }, + { + "id": "157-shadcn-line-label-custom", + "sha256": "f71706e451ff05384b0d4c5880eee10e12c5e4864e716b481e8927892c70868c", + "bytes": 3173 + }, + { + "id": "158-shadcn-line-label", + "sha256": "8638f5aa26825f8e0c4b78f7821e8cf590d28823930a5d6c1b309ae671f52afd", + "bytes": 4461 + }, + { + "id": "159-shadcn-line-linear", + "sha256": "b67b8058ea00dd10f3c63821da5cbb2ece9f625c9c89be3693a1802b2b171c63", + "bytes": 3051 + }, + { + "id": "160-shadcn-line-multiple", + "sha256": "3ae0b06d7ab7530eb4b04d3b8ee0b2d1124aa6bf2dfe951810733122206a41b1", + "bytes": 3701 + }, + { + "id": "161-shadcn-line-step", + "sha256": "244345de610d3e3e848223748556807436d9193441fd4449e2f16f9f5b807847", + "bytes": 3121 + }, + { + "id": "162-shadcn-pie-donut-active", + "sha256": "fef7a72cf0e04ed91669ad9ef9d9ad8272c2a93b213ef7da8d354fb1e3bf1437", + "bytes": 3093 + }, + { + "id": "163-shadcn-pie-donut", + "sha256": "d91273f7fa22f039b21d1922c0e2e447b116302e1d0859650fe1527455d5decd", + "bytes": 2709 + }, + { + "id": "164-shadcn-pie-interactive", + "sha256": "15f2b56f8d92acd04700644cb55fe74ffa9124686e7fa81f41f8b545f0eab84b", + "bytes": 4065 + }, + { + "id": "165-shadcn-pie-label-custom", + "sha256": "f6cd81e25143da67ea82488b918f68bf117ddc2f3ef216f63f55f0fd65bb037a", + "bytes": 3660 + }, + { + "id": "166-shadcn-pie-label-list", + "sha256": "55a22fd89c14fc37aaa8e72f75894af5b809974d95571c240b9d585f76fd132f", + "bytes": 3771 + }, + { + "id": "167-shadcn-pie-label", + "sha256": "303190284a37a4a4556c6dc3ae31f0a7a0d6df4e984c39900ae21982bdb81ed7", + "bytes": 4627 + }, + { + "id": "168-shadcn-pie-legend", + "sha256": "e28f35b7c630f398c1137057f29a8614fffa0ac95773094be5a8cecf0ecf1efd", + "bytes": 2548 + }, + { + "id": "169-shadcn-pie-separator-none", + "sha256": "f556f261057af01a264b7f6c0b93bc14e15d1e0668f6d895fafc66e9f2a5b1c5", + "bytes": 2556 + }, + { + "id": "170-shadcn-pie-simple", + "sha256": "9f06d110eeab69d9deb07086c24948b16335cf5b77867ac44ace4a275c05d708", + "bytes": 2539 + }, + { + "id": "171-shadcn-pie-stacked", + "sha256": "3f5e43f29f4c875bbc5f74947ce72b16597be63bdc57f628d15c230b36832f70", + "bytes": 4038 + }, + { + "id": "172-shadcn-radar-default", + "sha256": "3a50f70c70b90839b4841872d6faa26b438cb5e19530038715c97026ff2f200b", + "bytes": 4953 + }, + { + "id": "173-shadcn-radar-dots", + "sha256": "0066b32e4654adf8e5286cef79c2d2199dbd3ad70bc58079863f039526ed58b1", + "bytes": 5861 + }, + { + "id": "174-shadcn-radar-grid-circle-fill", + "sha256": "55e33e6590390b15776757de6477e03d86234eb79b4fd8f01fd9fbb12b64b311", + "bytes": 5106 + }, + { + "id": "175-shadcn-radar-grid-circle-no-lines", + "sha256": "255f9cd98d662773e31a36d00a9da5dafe47581a06ec7ddaecc235dd551f0357", + "bytes": 5827 + }, + { + "id": "176-shadcn-radar-grid-circle", + "sha256": "15f642113d6c1088190ae35558560edbf81cf57ba8aa0c98f3da099a34d0fe83", + "bytes": 5828 + }, + { + "id": "177-shadcn-radar-grid-custom", + "sha256": "ab64a970c68964c5c82b2c5e2ad4f822dfced12b4871bddc74e4b3b27f387ee8", + "bytes": 4300 + }, + { + "id": "178-shadcn-radar-grid-fill", + "sha256": "79d2b691e7b221aa18ea2001e43cf90a7a91f2be0f276d168f8a16e07c763f27", + "bytes": 5139 + }, + { + "id": "179-shadcn-radar-grid-none", + "sha256": "25be27bc520446d2b5fde1f2fa2b1d018949aa693e2a01963b2e7d6f7c055642", + "bytes": 4879 + }, + { + "id": "180-shadcn-radar-icons", + "sha256": "a9627abd336749b82f0af94d6fa713df90f96b5048ef782d50c03383dd1323ad", + "bytes": 5390 + }, + { + "id": "181-shadcn-radar-label-custom", + "sha256": "f323ed67d5e38352a141706d4de90ac07dfc3a2e611b4a2fee577854c8aee3c8", + "bytes": 6755 + }, + { + "id": "182-shadcn-radar-legend", + "sha256": "6d28b45c6cc6627d091f5a71b8f421ffb1e57a705b3f753c1078c056043aa654", + "bytes": 5391 + }, + { + "id": "183-shadcn-radar-lines-only", + "sha256": "7bc623c11129957e31e27cfed662d95e0d7b9dc44d77df5f9f77716f622c5605", + "bytes": 5388 + }, + { + "id": "184-shadcn-radar-radius", + "sha256": "a9b80a463bbf98680c1076087263a43f21def1d5987c091bef32f3339c93c379", + "bytes": 4382 + }, + { + "id": "185-shadcn-radial-grid", + "sha256": "bce3f5b2cc278477be86183283270e1c9b8efa5c39497d3058b547c8e4a13833", + "bytes": 5069 + }, + { + "id": "186-shadcn-radial-label", + "sha256": "3f710d47b36556a296f0679b0fb7080437c6d12fbf0c50be2b877b8df39903fd", + "bytes": 5490 + }, + { + "id": "187-shadcn-radial-shape", + "sha256": "f3e7c9624f9a2492a099259878b35b4d2073c59d8fc8fa939bede873d884dfd7", + "bytes": 2691 + }, + { + "id": "188-shadcn-radial-simple", + "sha256": "25860b8e806941ccff530415e52d2a35cfe06028c70e7d0be02c78828e58de6a", + "bytes": 4006 + }, + { + "id": "189-shadcn-radial-stacked", + "sha256": "b20a43a82021e8463533621105459b524656603977b25d5727408e9399981b8d", + "bytes": 2817 + }, + { + "id": "190-shadcn-tooltip-default", + "sha256": "2f9be5d22ad3267642ec409fd0de635caa3953428e2a4c116e5b201983c0726f", + "bytes": 4864 + }, + { + "id": "191-shadcn-tooltip-formatter", + "sha256": "200e12d7fc4e2ab18d7c5f74036a2616bb36e6c210a8b0db68b94bf018ad2ef8", + "bytes": 4866 + }, + { + "id": "192-shadcn-tooltip-icons", + "sha256": "413952c585d41eca5d1aec1a6c45b6e5a85a8235e58e7d189da5e6463e7d9482", + "bytes": 4862 + }, + { + "id": "193-shadcn-tooltip-indicator-line", + "sha256": "6127c1ebcce557c8ce777282e334185c946a1f67e94e7011b805e6bec186881f", + "bytes": 4871 + }, + { + "id": "194-shadcn-tooltip-indicator-none", + "sha256": "bdd685138bebafb657f01d0b227975db159806480689dda5c0d7b204a776dd77", + "bytes": 4869 + }, + { + "id": "195-shadcn-tooltip-label-custom", + "sha256": "f15b0381b76c7996e510f662e9bffc7d9d0f9aac508d231973933057d63ab4ef", + "bytes": 4869 + }, + { + "id": "196-shadcn-tooltip-label-formatter", + "sha256": "ec03b2a32dbb8ce07faf36875e615476a78c25ead40471872e152e81eeb9a0ff", + "bytes": 4872 + }, + { + "id": "197-shadcn-tooltip-label-none", + "sha256": "e1c7ff8f10d6e164ac31bee9085f75f22e5001ef94626facbf9306d737148954", + "bytes": 4865 } ] } diff --git a/benchmarks/conformance/shadcn/README.md b/benchmarks/conformance/shadcn/README.md index 0ee15b86..2e547d69 100644 --- a/benchmarks/conformance/shadcn/README.md +++ b/benchmarks/conformance/shadcn/README.md @@ -25,5 +25,5 @@ original spike cases remain standalone parity fixtures. Run any reviewed family slice through the quick parity profile with: ```sh -pnpm conformance:quick -- --case=122-shadcn-bar-multiple,123-shadcn-pie-donut-text,124-shadcn-radar-multiple,125-shadcn-radial-text,126-shadcn-tooltip-advanced +pnpm conformance:quick -- --case=128-shadcn-bar-multiple,129-shadcn-pie-donut-text,130-shadcn-radar-multiple,131-shadcn-radial-text,132-shadcn-tooltip-advanced ``` diff --git a/benchmarks/conformance/shadcn/catalog.json b/benchmarks/conformance/shadcn/catalog.json index 82c98892..4c99ce98 100644 --- a/benchmarks/conformance/shadcn/catalog.json +++ b/benchmarks/conformance/shadcn/catalog.json @@ -13,490 +13,490 @@ "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-axes.tsx", "blobSha": "ee429429fbb7a8afeb411a386140e6406e08e06d", - "localCaseId": "127-shadcn-area-axes" + "localCaseId": "133-shadcn-area-axes" }, { "name": "chart-area-default", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-default.tsx", "blobSha": "3dfbcd3fc3c2f6861f4bb4211155710fec609b50", - "localCaseId": "128-shadcn-area-default" + "localCaseId": "134-shadcn-area-default" }, { "name": "chart-area-gradient", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-gradient.tsx", "blobSha": "648355c436faf0f3bb62d8954b5567a11b80424d", - "localCaseId": "129-shadcn-area-gradient" + "localCaseId": "135-shadcn-area-gradient" }, { "name": "chart-area-icons", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-icons.tsx", "blobSha": "295160e905f7fc05fcf138b9cc88efcc806574b2", - "localCaseId": "130-shadcn-area-icons" + "localCaseId": "136-shadcn-area-icons" }, { "name": "chart-area-interactive", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-interactive.tsx", "blobSha": "8f6e69d40971e901b8b0d28b31a3dcf8580ac907", - "localCaseId": "131-shadcn-area-interactive" + "localCaseId": "137-shadcn-area-interactive" }, { "name": "chart-area-legend", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-legend.tsx", "blobSha": "eddd6c255019fed830a3d58582afff55fcff7664", - "localCaseId": "132-shadcn-area-legend" + "localCaseId": "138-shadcn-area-legend" }, { "name": "chart-area-linear", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-linear.tsx", "blobSha": "5e2a36507de6c607f8c5639be11d0ea1179a5e2c", - "localCaseId": "133-shadcn-area-linear" + "localCaseId": "139-shadcn-area-linear" }, { "name": "chart-area-stacked-expand", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-stacked-expand.tsx", "blobSha": "95a7851529d85cb9a7c171a1a56167752c54c2b1", - "localCaseId": "134-shadcn-area-stacked-expand" + "localCaseId": "140-shadcn-area-stacked-expand" }, { "name": "chart-area-stacked", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-stacked.tsx", "blobSha": "92dc3edd1417e0d6c1d99d5502414995f1060ad9", - "localCaseId": "135-shadcn-area-stacked" + "localCaseId": "141-shadcn-area-stacked" }, { "name": "chart-area-step", "family": "area", "path": "apps/v4/registry/new-york-v4/charts/chart-area-step.tsx", "blobSha": "2c2dd581772d355c962924a00fd130a8c9b92a04", - "localCaseId": "136-shadcn-area-step" + "localCaseId": "142-shadcn-area-step" }, { "name": "chart-bar-active", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-active.tsx", "blobSha": "f76c5812e5e4f1beb32a2ec3fd51cafdcaa67870", - "localCaseId": "137-shadcn-bar-active" + "localCaseId": "143-shadcn-bar-active" }, { "name": "chart-bar-default", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-default.tsx", "blobSha": "dc921b04f9f34bede4a58dae8e308b582b9d6c4a", - "localCaseId": "138-shadcn-bar-default" + "localCaseId": "144-shadcn-bar-default" }, { "name": "chart-bar-horizontal", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-horizontal.tsx", "blobSha": "2016a9785c6da00c39e86bdd014dc6d4f0c48d70", - "localCaseId": "139-shadcn-bar-horizontal" + "localCaseId": "145-shadcn-bar-horizontal" }, { "name": "chart-bar-interactive", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-interactive.tsx", "blobSha": "124e381442e7872f5b49b75afcbfff09484f747f", - "localCaseId": "140-shadcn-bar-interactive" + "localCaseId": "146-shadcn-bar-interactive" }, { "name": "chart-bar-label-custom", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-label-custom.tsx", "blobSha": "bde2b2bfd8c5830824a2326ed44d3eac9af16101", - "localCaseId": "141-shadcn-bar-label-custom" + "localCaseId": "147-shadcn-bar-label-custom" }, { "name": "chart-bar-label", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-label.tsx", "blobSha": "390e1b03282fdbb51e86f1f19827290441bc8dce", - "localCaseId": "142-shadcn-bar-label" + "localCaseId": "148-shadcn-bar-label" }, { "name": "chart-bar-mixed", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-mixed.tsx", "blobSha": "bac07d75f0ac98f892ab4618471e085a2b1f1512", - "localCaseId": "143-shadcn-bar-mixed" + "localCaseId": "149-shadcn-bar-mixed" }, { "name": "chart-bar-multiple", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-multiple.tsx", "blobSha": "99b894f293093e1a88bab71ed1f3d5097d0e205c", - "localCaseId": "122-shadcn-bar-multiple" + "localCaseId": "128-shadcn-bar-multiple" }, { "name": "chart-bar-negative", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-negative.tsx", "blobSha": "982bccdb9cd4ebb5010a10cbfd43bfff876dd94c", - "localCaseId": "144-shadcn-bar-negative" + "localCaseId": "150-shadcn-bar-negative" }, { "name": "chart-bar-stacked", "family": "bar", "path": "apps/v4/registry/new-york-v4/charts/chart-bar-stacked.tsx", "blobSha": "99ceda588e9b49e54f9c5e41c267314cc73d6dce", - "localCaseId": "145-shadcn-bar-stacked" + "localCaseId": "151-shadcn-bar-stacked" }, { "name": "chart-line-default", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-default.tsx", "blobSha": "669ebf5022ac06d94a016b84dc4706d27d19595f", - "localCaseId": "146-shadcn-line-default" + "localCaseId": "152-shadcn-line-default" }, { "name": "chart-line-dots-colors", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots-colors.tsx", "blobSha": "451c24fd34f9ccac3da83e2fb2c24eeefaa0aead", - "localCaseId": "147-shadcn-line-dots-colors" + "localCaseId": "153-shadcn-line-dots-colors" }, { "name": "chart-line-dots-custom", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots-custom.tsx", "blobSha": "355f23a1071b60c8c4563320e79e9f30ff36ec3d", - "localCaseId": "148-shadcn-line-dots-custom" + "localCaseId": "154-shadcn-line-dots-custom" }, { "name": "chart-line-dots", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots.tsx", "blobSha": "0d1df7b6e6ef141f599848faa14b0e2f342a21a3", - "localCaseId": "149-shadcn-line-dots" + "localCaseId": "155-shadcn-line-dots" }, { "name": "chart-line-interactive", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-interactive.tsx", "blobSha": "3feeb25b0d4452fb35e57299997b6e089e671460", - "localCaseId": "150-shadcn-line-interactive" + "localCaseId": "156-shadcn-line-interactive" }, { "name": "chart-line-label-custom", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-label-custom.tsx", "blobSha": "14aaa7f92af490d14ab6e4e36c112ed949c805b4", - "localCaseId": "151-shadcn-line-label-custom" + "localCaseId": "157-shadcn-line-label-custom" }, { "name": "chart-line-label", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-label.tsx", "blobSha": "7a333fc3a29b097f9918e7a5ead51a81073fe800", - "localCaseId": "152-shadcn-line-label" + "localCaseId": "158-shadcn-line-label" }, { "name": "chart-line-linear", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-linear.tsx", "blobSha": "e0c2d34ac8328611c6d572b19043ce95ca00f64d", - "localCaseId": "153-shadcn-line-linear" + "localCaseId": "159-shadcn-line-linear" }, { "name": "chart-line-multiple", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-multiple.tsx", "blobSha": "fb162420976cc77ce7a7fa3e36b7fdf63a9ab18e", - "localCaseId": "154-shadcn-line-multiple" + "localCaseId": "160-shadcn-line-multiple" }, { "name": "chart-line-step", "family": "line", "path": "apps/v4/registry/new-york-v4/charts/chart-line-step.tsx", "blobSha": "5dce7fcbbcbc32f34441e3793bdbe152d91e45f7", - "localCaseId": "155-shadcn-line-step" + "localCaseId": "161-shadcn-line-step" }, { "name": "chart-pie-donut-active", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut-active.tsx", "blobSha": "b2e41b5ebbd9fe392435e1f3417aecf2df35ae8b", - "localCaseId": "156-shadcn-pie-donut-active" + "localCaseId": "162-shadcn-pie-donut-active" }, { "name": "chart-pie-donut-text", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut-text.tsx", "blobSha": "c7e3d834954dbee3af6a33eac6a8cf74b333350f", - "localCaseId": "123-shadcn-pie-donut-text" + "localCaseId": "129-shadcn-pie-donut-text" }, { "name": "chart-pie-donut", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut.tsx", "blobSha": "c4ca8674ee42a22e9572fa385318cb4b42da2fac", - "localCaseId": "157-shadcn-pie-donut" + "localCaseId": "163-shadcn-pie-donut" }, { "name": "chart-pie-interactive", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-interactive.tsx", "blobSha": "dfe17b688b3dd35a36ccda5435966b9f4160c128", - "localCaseId": "158-shadcn-pie-interactive" + "localCaseId": "164-shadcn-pie-interactive" }, { "name": "chart-pie-label-custom", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label-custom.tsx", "blobSha": "465c78c2a8d83f4c924433db265f524bb4962a6e", - "localCaseId": "159-shadcn-pie-label-custom" + "localCaseId": "165-shadcn-pie-label-custom" }, { "name": "chart-pie-label-list", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label-list.tsx", "blobSha": "ff179593352b9f541743e50eb8303fcf92320913", - "localCaseId": "160-shadcn-pie-label-list" + "localCaseId": "166-shadcn-pie-label-list" }, { "name": "chart-pie-label", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label.tsx", "blobSha": "3257c585110fb58deb95c4d5d61fe15c5ec3bde5", - "localCaseId": "161-shadcn-pie-label" + "localCaseId": "167-shadcn-pie-label" }, { "name": "chart-pie-legend", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-legend.tsx", "blobSha": "aa6ca2705c5bdd3a4e2f6be9fc08870298eb37ef", - "localCaseId": "162-shadcn-pie-legend" + "localCaseId": "168-shadcn-pie-legend" }, { "name": "chart-pie-separator-none", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-separator-none.tsx", "blobSha": "e313ea46e768bf54d89ee2db59c8d6f519a40b46", - "localCaseId": "163-shadcn-pie-separator-none" + "localCaseId": "169-shadcn-pie-separator-none" }, { "name": "chart-pie-simple", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-simple.tsx", "blobSha": "1c90420f93ce32ecfa3810dfa264f51ad2e501c6", - "localCaseId": "164-shadcn-pie-simple" + "localCaseId": "170-shadcn-pie-simple" }, { "name": "chart-pie-stacked", "family": "pie", "path": "apps/v4/registry/new-york-v4/charts/chart-pie-stacked.tsx", "blobSha": "e7e984972554d171a5a957a059558db827e0e307", - "localCaseId": "165-shadcn-pie-stacked" + "localCaseId": "171-shadcn-pie-stacked" }, { "name": "chart-radar-default", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-default.tsx", "blobSha": "425afde7ff3e7c972e20934b63218c537455f82d", - "localCaseId": "166-shadcn-radar-default" + "localCaseId": "172-shadcn-radar-default" }, { "name": "chart-radar-dots", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-dots.tsx", "blobSha": "be84261030eaa17694843243463244a016a311b0", - "localCaseId": "167-shadcn-radar-dots" + "localCaseId": "173-shadcn-radar-dots" }, { "name": "chart-radar-grid-circle-fill", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx", "blobSha": "bb58bce241bf01efcb649cbba144a7dc55fc7637", - "localCaseId": "168-shadcn-radar-grid-circle-fill" + "localCaseId": "174-shadcn-radar-grid-circle-fill" }, { "name": "chart-radar-grid-circle-no-lines", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx", "blobSha": "e098f0f1b91900fc4950610f8da0d987f0a1fe35", - "localCaseId": "169-shadcn-radar-grid-circle-no-lines" + "localCaseId": "175-shadcn-radar-grid-circle-no-lines" }, { "name": "chart-radar-grid-circle", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle.tsx", "blobSha": "67601f06ae0e5449167607683564a96a04b80fd7", - "localCaseId": "170-shadcn-radar-grid-circle" + "localCaseId": "176-shadcn-radar-grid-circle" }, { "name": "chart-radar-grid-custom", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-custom.tsx", "blobSha": "9ab8ad6127646c42c4a005ad7c369ff25b60994a", - "localCaseId": "171-shadcn-radar-grid-custom" + "localCaseId": "177-shadcn-radar-grid-custom" }, { "name": "chart-radar-grid-fill", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-fill.tsx", "blobSha": "b3ebb61358b3c51528385402fee7697ae11516c5", - "localCaseId": "172-shadcn-radar-grid-fill" + "localCaseId": "178-shadcn-radar-grid-fill" }, { "name": "chart-radar-grid-none", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-none.tsx", "blobSha": "0bdb7769a9113342db51b3a1250433cfb9c3fc4d", - "localCaseId": "173-shadcn-radar-grid-none" + "localCaseId": "179-shadcn-radar-grid-none" }, { "name": "chart-radar-icons", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-icons.tsx", "blobSha": "3c4eec62fb8756910bf8968973d616b918f9764b", - "localCaseId": "174-shadcn-radar-icons" + "localCaseId": "180-shadcn-radar-icons" }, { "name": "chart-radar-label-custom", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-label-custom.tsx", "blobSha": "bf16fa743613a25c3641593c7a60ef052fe861ca", - "localCaseId": "175-shadcn-radar-label-custom" + "localCaseId": "181-shadcn-radar-label-custom" }, { "name": "chart-radar-legend", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-legend.tsx", "blobSha": "31bdb565433854385b152710a3fade68f5823bc7", - "localCaseId": "176-shadcn-radar-legend" + "localCaseId": "182-shadcn-radar-legend" }, { "name": "chart-radar-lines-only", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-lines-only.tsx", "blobSha": "c62cddf7355f0a003d072a93c77456883deed4ab", - "localCaseId": "177-shadcn-radar-lines-only" + "localCaseId": "183-shadcn-radar-lines-only" }, { "name": "chart-radar-multiple", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-multiple.tsx", "blobSha": "b7d2102f9588a4b86f6cc281ae61eb7efe97e5ed", - "localCaseId": "124-shadcn-radar-multiple" + "localCaseId": "130-shadcn-radar-multiple" }, { "name": "chart-radar-radius", "family": "radar", "path": "apps/v4/registry/new-york-v4/charts/chart-radar-radius.tsx", "blobSha": "61f29bb5b8262c6917d9b0a19f1e4509f228e09c", - "localCaseId": "178-shadcn-radar-radius" + "localCaseId": "184-shadcn-radar-radius" }, { "name": "chart-radial-grid", "family": "radial", "path": "apps/v4/registry/new-york-v4/charts/chart-radial-grid.tsx", "blobSha": "032eb98a9e2cab56d7b7a1413af496193477d04c", - "localCaseId": "179-shadcn-radial-grid" + "localCaseId": "185-shadcn-radial-grid" }, { "name": "chart-radial-label", "family": "radial", "path": "apps/v4/registry/new-york-v4/charts/chart-radial-label.tsx", "blobSha": "effb735c84fb1ecee61fd8bab07f1daba1d65135", - "localCaseId": "180-shadcn-radial-label" + "localCaseId": "186-shadcn-radial-label" }, { "name": "chart-radial-shape", "family": "radial", "path": "apps/v4/registry/new-york-v4/charts/chart-radial-shape.tsx", "blobSha": "9550a5bf0f2eab53933f8709d25ca1439964ec3d", - "localCaseId": "181-shadcn-radial-shape" + "localCaseId": "187-shadcn-radial-shape" }, { "name": "chart-radial-simple", "family": "radial", "path": "apps/v4/registry/new-york-v4/charts/chart-radial-simple.tsx", "blobSha": "b13e20e5b584ca18b44201ba4c147fefa8a00f1d", - "localCaseId": "182-shadcn-radial-simple" + "localCaseId": "188-shadcn-radial-simple" }, { "name": "chart-radial-stacked", "family": "radial", "path": "apps/v4/registry/new-york-v4/charts/chart-radial-stacked.tsx", "blobSha": "71fbf5756f9811672c7881fa9d1ef87db549391d", - "localCaseId": "183-shadcn-radial-stacked" + "localCaseId": "189-shadcn-radial-stacked" }, { "name": "chart-radial-text", "family": "radial", "path": "apps/v4/registry/new-york-v4/charts/chart-radial-text.tsx", "blobSha": "f10347522cd27689bd960a4ed7e5033c5659b93c", - "localCaseId": "125-shadcn-radial-text" + "localCaseId": "131-shadcn-radial-text" }, { "name": "chart-tooltip-advanced", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-advanced.tsx", "blobSha": "6c55b5e514836c30ae1ff570dee3d3217aca6e9c", - "localCaseId": "126-shadcn-tooltip-advanced" + "localCaseId": "132-shadcn-tooltip-advanced" }, { "name": "chart-tooltip-default", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-default.tsx", "blobSha": "829cc53633afd526f25b7982c2516ff9b590420d", - "localCaseId": "184-shadcn-tooltip-default" + "localCaseId": "190-shadcn-tooltip-default" }, { "name": "chart-tooltip-formatter", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-formatter.tsx", "blobSha": "6d0ebf02dda90e7a688b53cdd1c8be735e192f69", - "localCaseId": "185-shadcn-tooltip-formatter" + "localCaseId": "191-shadcn-tooltip-formatter" }, { "name": "chart-tooltip-icons", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-icons.tsx", "blobSha": "1117d4494cb8316edc4a9096549adf339ec65d17", - "localCaseId": "186-shadcn-tooltip-icons" + "localCaseId": "192-shadcn-tooltip-icons" }, { "name": "chart-tooltip-indicator-line", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx", "blobSha": "2d09ce8039b05c753efde134dc3e8710d92c8e63", - "localCaseId": "187-shadcn-tooltip-indicator-line" + "localCaseId": "193-shadcn-tooltip-indicator-line" }, { "name": "chart-tooltip-indicator-none", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx", "blobSha": "6416520431aeeda2bfc170066385538b60e6e920", - "localCaseId": "188-shadcn-tooltip-indicator-none" + "localCaseId": "194-shadcn-tooltip-indicator-none" }, { "name": "chart-tooltip-label-custom", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-custom.tsx", "blobSha": "b8095ffe6b9accbcc8480c125931db7294effa81", - "localCaseId": "189-shadcn-tooltip-label-custom" + "localCaseId": "195-shadcn-tooltip-label-custom" }, { "name": "chart-tooltip-label-formatter", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx", "blobSha": "0b885d71e18d581793bc2e316c3f1402daf59182", - "localCaseId": "190-shadcn-tooltip-label-formatter" + "localCaseId": "196-shadcn-tooltip-label-formatter" }, { "name": "chart-tooltip-label-none", "family": "tooltip", "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-none.tsx", "blobSha": "f5f220bb1f20928bd1c9934ddf014cb72b89fb98", - "localCaseId": "191-shadcn-tooltip-label-none" + "localCaseId": "197-shadcn-tooltip-label-none" } ] } diff --git a/benchmarks/conformance/shared/shadcn-motion.test.ts b/benchmarks/conformance/shared/shadcn-motion.test.ts index 928c29be..fb649678 100644 --- a/benchmarks/conformance/shared/shadcn-motion.test.ts +++ b/benchmarks/conformance/shared/shadcn-motion.test.ts @@ -1,11 +1,11 @@ import { describe, expect, it } from 'vitest' import { createChartScene, type StaticChartDefinition } from '@tanstack/charts' -import { shadcnDashboardChartDefinition } from '../cases/121-shadcn-dashboard/tanstack' -import { barMultipleDefinition } from '../cases/122-shadcn-bar-multiple/tanstack' -import { pieDonutTextDefinition } from '../cases/123-shadcn-pie-donut-text/tanstack' -import { radarMultipleDefinition } from '../cases/124-shadcn-radar-multiple/tanstack' -import { radialTextDefinition } from '../cases/125-shadcn-radial-text/tanstack' -import { advancedTooltipDefinition } from '../cases/126-shadcn-tooltip-advanced/tanstack' +import { shadcnDashboardChartDefinition } from '../cases/127-shadcn-dashboard/tanstack' +import { barMultipleDefinition } from '../cases/128-shadcn-bar-multiple/tanstack' +import { pieDonutTextDefinition } from '../cases/129-shadcn-pie-donut-text/tanstack' +import { radarMultipleDefinition } from '../cases/130-shadcn-radar-multiple/tanstack' +import { radialTextDefinition } from '../cases/131-shadcn-radial-text/tanstack' +import { advancedTooltipDefinition } from '../cases/132-shadcn-tooltip-advanced/tanstack' import { createShadcnTanStackExample } from './shadcn-catalog-tanstack' import type { ShadcnMonthDatum } from './shadcn-catalog-data' import { focusGroupAngle } from '@tanstack/charts/polar' diff --git a/docs/comparison.md b/docs/comparison.md index 70a08e42..b4316fc2 100644 --- a/docs/comparison.md +++ b/docs/comparison.md @@ -12,14 +12,14 @@ turning untested behavior into a checkmark. | Library | Package | Measured source | | -------------------------------------------------------------------------------------- | -------------------- | ------------------- | -| [TanStack Charts](./overview.md) | `@tanstack/charts` | workspace `b9d8c54` | +| [TanStack Charts](./overview.md) | `@tanstack/charts` | workspace `56567ec` | | [Chart.js](https://www.chartjs.org/docs/latest/) | `chart.js` | npm `4.5.1` | | [Apache ECharts](https://echarts.apache.org/handbook/en/best-practices/canvas-vs-svg/) | `echarts` | npm `6.1.0` | | [Recharts](https://recharts.github.io/en-US/) | `recharts` | npm `3.10.1` | | [Observable Plot](https://observablehq.com/plot/features/plots) | `@observablehq/plot` | npm `0.6.17` | The competitor versions are exact package pins, not latest versions inferred -at page render time. The measured TanStack workspace revision is `b9d8c54`. +at page render time. The measured TanStack workspace revision is `56567ec`. ## Capability matrix @@ -90,7 +90,7 @@ output model. ## Bundle snapshot -Baseline date: `2026-08-12`. +Baseline date: `2026-08-14`. Controlled ranges cover 12 independently built, minified browser consumers: line, bar, area, and scatter at basic, interactive, and advanced tiers. Only @@ -106,7 +106,7 @@ Vega-Lite, AG Charts, and uPlot main exports were read from Bundlephobia on July | Library | Bundle size | React externalized | Evidence | | ------------------ | -------------------------------------- | -----------------: | ---------------------------------------------------------- | -| TanStack Charts | 37.46–43.41 KiB | — | Controlled suite | +| TanStack Charts | 37.63–43.59 KiB | — | Controlled suite | | D3 | 90 KB gzip | — | External main export | | Chart.js | 44.70–58.21 KiB | — | Controlled suite | | Apache ECharts | 153.10–173.18 KiB | — | Controlled suite | diff --git a/examples/conformance/src/main.tsx b/examples/conformance/src/main.tsx index c9b8e256..28419351 100644 --- a/examples/conformance/src/main.tsx +++ b/examples/conformance/src/main.tsx @@ -138,11 +138,7 @@ function CatalogApp() { if (route.view === 'collection') { return route.collectionId === 'shadcn' ? ( - + ) : ( ) @@ -189,8 +185,8 @@ function ShadcnCollectionPage({ const [copied, setCopied] = useState(false) const collectionFamilies = useMemo( () => - [...new Set(allEntries.map((entry) => entry.family))].sort((left, right) => - left.localeCompare(right), + [...new Set(allEntries.map((entry) => entry.family))].sort( + (left, right) => left.localeCompare(right), ), [allEntries], ) @@ -917,19 +913,13 @@ function RendererPanel({ {metric} {state === 'gap' ? ( -
+

Not implemented. This is a recorded capability gap.

) : state === 'error' ? ( -
+

{error}

) : ( diff --git a/packages/charts-core/docs/comparison.md b/packages/charts-core/docs/comparison.md index 70a08e42..b4316fc2 100644 --- a/packages/charts-core/docs/comparison.md +++ b/packages/charts-core/docs/comparison.md @@ -12,14 +12,14 @@ turning untested behavior into a checkmark. | Library | Package | Measured source | | -------------------------------------------------------------------------------------- | -------------------- | ------------------- | -| [TanStack Charts](./overview.md) | `@tanstack/charts` | workspace `b9d8c54` | +| [TanStack Charts](./overview.md) | `@tanstack/charts` | workspace `56567ec` | | [Chart.js](https://www.chartjs.org/docs/latest/) | `chart.js` | npm `4.5.1` | | [Apache ECharts](https://echarts.apache.org/handbook/en/best-practices/canvas-vs-svg/) | `echarts` | npm `6.1.0` | | [Recharts](https://recharts.github.io/en-US/) | `recharts` | npm `3.10.1` | | [Observable Plot](https://observablehq.com/plot/features/plots) | `@observablehq/plot` | npm `0.6.17` | The competitor versions are exact package pins, not latest versions inferred -at page render time. The measured TanStack workspace revision is `b9d8c54`. +at page render time. The measured TanStack workspace revision is `56567ec`. ## Capability matrix @@ -90,7 +90,7 @@ output model. ## Bundle snapshot -Baseline date: `2026-08-12`. +Baseline date: `2026-08-14`. Controlled ranges cover 12 independently built, minified browser consumers: line, bar, area, and scatter at basic, interactive, and advanced tiers. Only @@ -106,7 +106,7 @@ Vega-Lite, AG Charts, and uPlot main exports were read from Bundlephobia on July | Library | Bundle size | React externalized | Evidence | | ------------------ | -------------------------------------- | -----------------: | ---------------------------------------------------------- | -| TanStack Charts | 37.46–43.41 KiB | — | Controlled suite | +| TanStack Charts | 37.63–43.59 KiB | — | Controlled suite | | D3 | 90 KB gzip | — | External main export | | Chart.js | 44.70–58.21 KiB | — | Controlled suite | | Apache ECharts | 153.10–173.18 KiB | — | Controlled suite | diff --git a/packages/charts-core/docs/config.json b/packages/charts-core/docs/config.json index 6964efdf..406ec229 100644 --- a/packages/charts-core/docs/config.json +++ b/packages/charts-core/docs/config.json @@ -766,6 +766,290 @@ { "label": "Drillable Flare sunburst", "to": "/charts/catalog/charts/126-drillable-sunburst/" + }, + { + "label": "shadcn dashboard", + "to": "/charts/catalog/charts/127-shadcn-dashboard/" + }, + { + "label": "shadcn bar chart – multiple", + "to": "/charts/catalog/charts/128-shadcn-bar-multiple/" + }, + { + "label": "shadcn pie chart – donut with text", + "to": "/charts/catalog/charts/129-shadcn-pie-donut-text/" + }, + { + "label": "shadcn radar chart – multiple", + "to": "/charts/catalog/charts/130-shadcn-radar-multiple/" + }, + { + "label": "shadcn radial chart – text", + "to": "/charts/catalog/charts/131-shadcn-radial-text/" + }, + { + "label": "shadcn tooltip – advanced", + "to": "/charts/catalog/charts/132-shadcn-tooltip-advanced/" + }, + { + "label": "shadcn Area Chart - Axes", + "to": "/charts/catalog/charts/133-shadcn-area-axes/" + }, + { + "label": "shadcn Area Chart", + "to": "/charts/catalog/charts/134-shadcn-area-default/" + }, + { + "label": "shadcn Area Chart - Gradient", + "to": "/charts/catalog/charts/135-shadcn-area-gradient/" + }, + { + "label": "shadcn Area Chart - Icons", + "to": "/charts/catalog/charts/136-shadcn-area-icons/" + }, + { + "label": "shadcn Area Chart - Interactive", + "to": "/charts/catalog/charts/137-shadcn-area-interactive/" + }, + { + "label": "shadcn Area Chart - Legend", + "to": "/charts/catalog/charts/138-shadcn-area-legend/" + }, + { + "label": "shadcn Area Chart - Linear", + "to": "/charts/catalog/charts/139-shadcn-area-linear/" + }, + { + "label": "shadcn Area Chart - Stacked Expanded", + "to": "/charts/catalog/charts/140-shadcn-area-stacked-expand/" + }, + { + "label": "shadcn Area Chart - Stacked", + "to": "/charts/catalog/charts/141-shadcn-area-stacked/" + }, + { + "label": "shadcn Area Chart - Step", + "to": "/charts/catalog/charts/142-shadcn-area-step/" + }, + { + "label": "shadcn Bar Chart - Active", + "to": "/charts/catalog/charts/143-shadcn-bar-active/" + }, + { + "label": "shadcn Bar Chart", + "to": "/charts/catalog/charts/144-shadcn-bar-default/" + }, + { + "label": "shadcn Bar Chart - Horizontal", + "to": "/charts/catalog/charts/145-shadcn-bar-horizontal/" + }, + { + "label": "shadcn Bar Chart - Interactive", + "to": "/charts/catalog/charts/146-shadcn-bar-interactive/" + }, + { + "label": "shadcn Bar Chart - Custom Label", + "to": "/charts/catalog/charts/147-shadcn-bar-label-custom/" + }, + { + "label": "shadcn Bar Chart - Label", + "to": "/charts/catalog/charts/148-shadcn-bar-label/" + }, + { + "label": "shadcn Bar Chart - Mixed", + "to": "/charts/catalog/charts/149-shadcn-bar-mixed/" + }, + { + "label": "shadcn Bar Chart - Negative", + "to": "/charts/catalog/charts/150-shadcn-bar-negative/" + }, + { + "label": "shadcn Bar Chart - Stacked + Legend", + "to": "/charts/catalog/charts/151-shadcn-bar-stacked/" + }, + { + "label": "shadcn Line Chart", + "to": "/charts/catalog/charts/152-shadcn-line-default/" + }, + { + "label": "shadcn Line Chart - Dots Colors", + "to": "/charts/catalog/charts/153-shadcn-line-dots-colors/" + }, + { + "label": "shadcn Line Chart - Custom Dots", + "to": "/charts/catalog/charts/154-shadcn-line-dots-custom/" + }, + { + "label": "shadcn Line Chart - Dots", + "to": "/charts/catalog/charts/155-shadcn-line-dots/" + }, + { + "label": "shadcn Line Chart - Interactive", + "to": "/charts/catalog/charts/156-shadcn-line-interactive/" + }, + { + "label": "shadcn Line Chart - Custom Label", + "to": "/charts/catalog/charts/157-shadcn-line-label-custom/" + }, + { + "label": "shadcn Line Chart - Label", + "to": "/charts/catalog/charts/158-shadcn-line-label/" + }, + { + "label": "shadcn Line Chart - Linear", + "to": "/charts/catalog/charts/159-shadcn-line-linear/" + }, + { + "label": "shadcn Line Chart - Multiple", + "to": "/charts/catalog/charts/160-shadcn-line-multiple/" + }, + { + "label": "shadcn Line Chart - Step", + "to": "/charts/catalog/charts/161-shadcn-line-step/" + }, + { + "label": "shadcn Pie Chart - Donut Active", + "to": "/charts/catalog/charts/162-shadcn-pie-donut-active/" + }, + { + "label": "shadcn Pie Chart - Donut", + "to": "/charts/catalog/charts/163-shadcn-pie-donut/" + }, + { + "label": "shadcn Pie Chart - Interactive", + "to": "/charts/catalog/charts/164-shadcn-pie-interactive/" + }, + { + "label": "shadcn Pie Chart - Custom Label", + "to": "/charts/catalog/charts/165-shadcn-pie-label-custom/" + }, + { + "label": "shadcn Pie Chart - Label List", + "to": "/charts/catalog/charts/166-shadcn-pie-label-list/" + }, + { + "label": "shadcn Pie Chart - Label", + "to": "/charts/catalog/charts/167-shadcn-pie-label/" + }, + { + "label": "shadcn Pie Chart - Legend", + "to": "/charts/catalog/charts/168-shadcn-pie-legend/" + }, + { + "label": "shadcn Pie Chart - Separator None", + "to": "/charts/catalog/charts/169-shadcn-pie-separator-none/" + }, + { + "label": "shadcn Pie Chart", + "to": "/charts/catalog/charts/170-shadcn-pie-simple/" + }, + { + "label": "shadcn Pie Chart - Stacked", + "to": "/charts/catalog/charts/171-shadcn-pie-stacked/" + }, + { + "label": "shadcn Radar Chart", + "to": "/charts/catalog/charts/172-shadcn-radar-default/" + }, + { + "label": "shadcn Radar Chart - Dots", + "to": "/charts/catalog/charts/173-shadcn-radar-dots/" + }, + { + "label": "shadcn Radar Chart - Grid Circle Filled", + "to": "/charts/catalog/charts/174-shadcn-radar-grid-circle-fill/" + }, + { + "label": "shadcn Radar Chart - Grid Circle - No lines", + "to": "/charts/catalog/charts/175-shadcn-radar-grid-circle-no-lines/" + }, + { + "label": "shadcn Radar Chart - Grid Circle", + "to": "/charts/catalog/charts/176-shadcn-radar-grid-circle/" + }, + { + "label": "shadcn Radar Chart - Grid Custom", + "to": "/charts/catalog/charts/177-shadcn-radar-grid-custom/" + }, + { + "label": "shadcn Radar Chart - Grid Filled", + "to": "/charts/catalog/charts/178-shadcn-radar-grid-fill/" + }, + { + "label": "shadcn Radar Chart - Grid None", + "to": "/charts/catalog/charts/179-shadcn-radar-grid-none/" + }, + { + "label": "shadcn Radar Chart - Icons", + "to": "/charts/catalog/charts/180-shadcn-radar-icons/" + }, + { + "label": "shadcn Radar Chart - Custom Label", + "to": "/charts/catalog/charts/181-shadcn-radar-label-custom/" + }, + { + "label": "shadcn Radar Chart - Legend", + "to": "/charts/catalog/charts/182-shadcn-radar-legend/" + }, + { + "label": "shadcn Radar Chart - Lines Only", + "to": "/charts/catalog/charts/183-shadcn-radar-lines-only/" + }, + { + "label": "shadcn Radar Chart - Radius Axis", + "to": "/charts/catalog/charts/184-shadcn-radar-radius/" + }, + { + "label": "shadcn Radial Chart - Grid", + "to": "/charts/catalog/charts/185-shadcn-radial-grid/" + }, + { + "label": "shadcn Radial Chart - Label", + "to": "/charts/catalog/charts/186-shadcn-radial-label/" + }, + { + "label": "shadcn Radial Chart - Shape", + "to": "/charts/catalog/charts/187-shadcn-radial-shape/" + }, + { + "label": "shadcn Radial Chart", + "to": "/charts/catalog/charts/188-shadcn-radial-simple/" + }, + { + "label": "shadcn Radial Chart - Stacked", + "to": "/charts/catalog/charts/189-shadcn-radial-stacked/" + }, + { + "label": "shadcn Tooltip - Default", + "to": "/charts/catalog/charts/190-shadcn-tooltip-default/" + }, + { + "label": "shadcn Tooltip - Formatter", + "to": "/charts/catalog/charts/191-shadcn-tooltip-formatter/" + }, + { + "label": "shadcn Tooltip - Icons", + "to": "/charts/catalog/charts/192-shadcn-tooltip-icons/" + }, + { + "label": "shadcn Tooltip - Line Indicator", + "to": "/charts/catalog/charts/193-shadcn-tooltip-indicator-line/" + }, + { + "label": "shadcn Tooltip - No Indicator", + "to": "/charts/catalog/charts/194-shadcn-tooltip-indicator-none/" + }, + { + "label": "shadcn Tooltip - Custom label", + "to": "/charts/catalog/charts/195-shadcn-tooltip-label-custom/" + }, + { + "label": "shadcn Tooltip - Label Formatter", + "to": "/charts/catalog/charts/196-shadcn-tooltip-label-formatter/" + }, + { + "label": "shadcn Tooltip - No Label", + "to": "/charts/catalog/charts/197-shadcn-tooltip-label-none/" } ] }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c220700..a184774b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,6 @@ settings: excludeLinksFromLockfile: false importers: - .: devDependencies: '@changesets/changelog-github': @@ -950,21 +949,29 @@ importers: version: 3.5.40(typescript@6.0.3) packages: - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, + } + engines: { node: '>=6.0.0' } '@angular/common@22.0.8': - resolution: {integrity: sha512-FnwkXndUgAyWk1/p5flMfocIUtuuneJ01mxC1FxRc5/bdWTyNVeQDsM9Lw4PEAPc0AHu//EnblegRq8o6LGdUQ==} - engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + resolution: + { + integrity: sha512-FnwkXndUgAyWk1/p5flMfocIUtuuneJ01mxC1FxRc5/bdWTyNVeQDsM9Lw4PEAPc0AHu//EnblegRq8o6LGdUQ==, + } + engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } peerDependencies: '@angular/core': 22.0.8 rxjs: ^6.5.3 || ^7.4.0 '@angular/compiler-cli@22.0.8': - resolution: {integrity: sha512-shBqaUxMtqriv4UG2MHmYT8GSvDizI40mUFkOfeQ1yRJ2C9dk0TnWKPwjSO7o6bs6UiU6V8Y3uSWdmfCGVVZAA==} - engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + resolution: + { + integrity: sha512-shBqaUxMtqriv4UG2MHmYT8GSvDizI40mUFkOfeQ1yRJ2C9dk0TnWKPwjSO7o6bs6UiU6V8Y3uSWdmfCGVVZAA==, + } + engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } hasBin: true peerDependencies: '@angular/compiler': 22.0.8 @@ -974,12 +981,18 @@ packages: optional: true '@angular/compiler@22.0.8': - resolution: {integrity: sha512-ot7rvntfkZsPHmp8yl6PWUj/yG4e50X0+YeR7QYy/rEYKBiIg91w8GwjxSzaF4g5+bzJGDv7l/XnachKm0IySg==} - engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + resolution: + { + integrity: sha512-ot7rvntfkZsPHmp8yl6PWUj/yG4e50X0+YeR7QYy/rEYKBiIg91w8GwjxSzaF4g5+bzJGDv7l/XnachKm0IySg==, + } + engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } '@angular/core@22.0.8': - resolution: {integrity: sha512-HagZZVzbtXd+ZhMb++k/HOtr/UTiBROHHH7xutgYgnSnPRXX0kCca5EQ02OZ/OCWfsMP5liSJDfwiePFULKA6Q==} - engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + resolution: + { + integrity: sha512-HagZZVzbtXd+ZhMb++k/HOtr/UTiBROHHH7xutgYgnSnPRXX0kCca5EQ02OZ/OCWfsMP5liSJDfwiePFULKA6Q==, + } + engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } peerDependencies: '@angular/compiler': 22.0.8 rxjs: ^6.5.3 || ^7.4.0 @@ -991,8 +1004,11 @@ packages: optional: true '@angular/platform-browser-dynamic@22.0.8': - resolution: {integrity: sha512-HQ5GeMoKqd2eMy9hHga1F0yumhrt4gVlhoP8YfmQnZWluVagdyinUpGdd3dNiuYjLcbHB+KXdW9c6LnqEmU+dg==} - engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + resolution: + { + integrity: sha512-HQ5GeMoKqd2eMy9hHga1F0yumhrt4gVlhoP8YfmQnZWluVagdyinUpGdd3dNiuYjLcbHB+KXdW9c6LnqEmU+dg==, + } + engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } deprecated: '@angular/platform-browser-dynamic is deprecated. Use `@angular/platform-browser` instead.' peerDependencies: '@angular/common': 22.0.8 @@ -1001,8 +1017,11 @@ packages: '@angular/platform-browser': 22.0.8 '@angular/platform-browser@22.0.8': - resolution: {integrity: sha512-FllGHCayu5Dv82HAA9ORL04Xf+In9JGMbQ1Vn4QnhrAVxBz182vm+ZwszLzRDSAwmfeIjZDeK49tKAcqHR9XNg==} - engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + resolution: + { + integrity: sha512-FllGHCayu5Dv82HAA9ORL04Xf+In9JGMbQ1Vn4QnhrAVxBz182vm+ZwszLzRDSAwmfeIjZDeK49tKAcqHR9XNg==, + } + engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } peerDependencies: '@angular/animations': 22.0.8 '@angular/common': 22.0.8 @@ -1025,482 +1044,782 @@ packages: rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@5.1.11': - resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { + integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } '@asamuzakjp/dom-selector@7.1.1': - resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { + integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } '@asamuzakjp/generational-cache@1.0.1': - resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { + integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } '@asamuzakjp/nwsapi@2.3.9': - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + resolution: + { + integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==, + } '@babel/code-frame@7.29.7': - resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==, + } + engines: { node: '>=6.9.0' } '@babel/compat-data@7.29.7': - resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==, + } + engines: { node: '>=6.9.0' } '@babel/core@7.29.7': - resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==, + } + engines: { node: '>=6.9.0' } '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==, + } + engines: { node: '>=6.9.0' } '@babel/helper-annotate-as-pure@7.29.7': - resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==, + } + engines: { node: '>=6.9.0' } '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==, + } + engines: { node: '>=6.9.0' } '@babel/helper-create-class-features-plugin@7.29.7': - resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-create-regexp-features-plugin@7.29.7': - resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-define-polyfill-provider@0.6.8': - resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + resolution: + { + integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==, + } peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 '@babel/helper-globals@7.29.7': - resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==, + } + engines: { node: '>=6.9.0' } '@babel/helper-member-expression-to-functions@7.29.7': - resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==, + } + engines: { node: '>=6.9.0' } '@babel/helper-module-imports@7.18.6': - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==, + } + engines: { node: '>=6.9.0' } '@babel/helper-module-imports@7.29.7': - resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==, + } + engines: { node: '>=6.9.0' } '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-optimise-call-expression@7.29.7': - resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==, + } + engines: { node: '>=6.9.0' } '@babel/helper-plugin-utils@7.29.7': - resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==, + } + engines: { node: '>=6.9.0' } '@babel/helper-remap-async-to-generator@7.29.7': - resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-replace-supers@7.29.7': - resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-skip-transparent-expression-wrappers@7.29.7': - resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==, + } + engines: { node: '>=6.9.0' } '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==, + } + engines: { node: '>=6.9.0' } '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==, + } + engines: { node: '>=6.9.0' } '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==, + } + engines: { node: '>=6.9.0' } '@babel/helper-wrap-function@7.29.7': - resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==, + } + engines: { node: '>=6.9.0' } '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==, + } + engines: { node: '>=6.9.0' } '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==, + } + engines: { node: '>=6.0.0' } hasBin: true '@babel/plugin-proposal-decorators@7.29.7': - resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-export-default-from@7.29.7': - resolution: {integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-decorators@7.29.7': - resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + resolution: + { + integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, + } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-export-default-from@7.29.7': - resolution: {integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-flow@7.29.7': - resolution: {integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-jsx@7.29.7': - resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + resolution: + { + integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, + } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + resolution: + { + integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, + } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-typescript@7.29.7': - resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-generator-functions@7.29.7': - resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-to-generator@7.29.7': - resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-block-scoping@7.29.7': - resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-properties@7.29.7': - resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-static-block@7.29.7': - resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.12.0 '@babel/plugin-transform-classes@7.29.7': - resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-destructuring@7.29.7': - resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-export-namespace-from@7.29.7': - resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-flow-strip-types@7.29.7': - resolution: {integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-for-of@7.29.7': - resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-logical-assignment-operators@7.29.7': - resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-commonjs@7.29.7': - resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': - resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': - resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-object-rest-spread@7.29.7': - resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-catch-binding@7.29.7': - resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-chaining@7.29.7': - resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-parameters@7.29.7': - resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-methods@7.29.7': - resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-property-in-object@7.29.7': - resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-display-name@7.29.7': - resolution: {integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-development@7.29.7': - resolution: {integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-self@7.29.7': - resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-source@7.29.7': - resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx@7.29.7': - resolution: {integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-pure-annotations@7.29.7': - resolution: {integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-regenerator@7.29.7': - resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-runtime@7.29.7': - resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-typescript@7.29.7': - resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-regex@7.29.7': - resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/preset-typescript@7.29.7': - resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==, + } + engines: { node: '>=6.9.0' } '@babel/template@7.29.7': - resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==, + } + engines: { node: '>=6.9.0' } '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==, + } + engines: { node: '>=6.9.0' } '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==, + } + engines: { node: '>=6.9.0' } '@bramus/specificity@2.4.2': - resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + resolution: + { + integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==, + } hasBin: true '@changesets/apply-release-plan@7.1.1': - resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} - - '@changesets/assemble-release-plan@6.0.10': - resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} + resolution: + { + integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==, + } + + '@changesets/assemble-release-plan@6.0.10': + resolution: + { + integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==, + } '@changesets/changelog-git@0.2.1': - resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + resolution: + { + integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==, + } '@changesets/changelog-github@0.7.0': - resolution: {integrity: sha512-rBsbRvc4TVn+FvFnOVM3LxlFJfTXXCp8gfVJ+0BubxWNSVnLuAzowi5j+IEraLLP52w8AAs9QfKbPS3MMiXQJA==} + resolution: + { + integrity: sha512-rBsbRvc4TVn+FvFnOVM3LxlFJfTXXCp8gfVJ+0BubxWNSVnLuAzowi5j+IEraLLP52w8AAs9QfKbPS3MMiXQJA==, + } '@changesets/cli@2.31.1': - resolution: {integrity: sha512-uO05WTcRBwuVOJVSW8Cmpqw6q0WDL53ajGCMyszutvOe5toOnunbpM4jZzf+qxBOz7i0AzopZ8diBuewjmF40w==} + resolution: + { + integrity: sha512-uO05WTcRBwuVOJVSW8Cmpqw6q0WDL53ajGCMyszutvOe5toOnunbpM4jZzf+qxBOz7i0AzopZ8diBuewjmF40w==, + } hasBin: true '@changesets/config@3.1.4': - resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} + resolution: + { + integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==, + } '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + resolution: + { + integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==, + } '@changesets/get-dependents-graph@2.1.4': - resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} + resolution: + { + integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==, + } '@changesets/get-github-info@0.8.0': - resolution: {integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==} + resolution: + { + integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==, + } '@changesets/get-release-plan@4.0.16': - resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} + resolution: + { + integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==, + } '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + resolution: + { + integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==, + } '@changesets/git@3.0.4': - resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + resolution: + { + integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==, + } '@changesets/logger@0.1.1': - resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + resolution: + { + integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==, + } '@changesets/parse@0.4.3': - resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} + resolution: + { + integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==, + } '@changesets/pre@2.0.2': - resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + resolution: + { + integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==, + } '@changesets/read@0.6.7': - resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} + resolution: + { + integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==, + } '@changesets/should-skip-package@0.1.2': - resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + resolution: + { + integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==, + } '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + resolution: + { + integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==, + } '@changesets/types@6.1.0': - resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + resolution: + { + integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==, + } '@changesets/write@0.4.0': - resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + resolution: + { + integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==, + } '@csstools/color-helpers@6.1.0': - resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==} - engines: {node: '>=20.19.0'} + resolution: + { + integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==, + } + engines: { node: '>=20.19.0' } '@csstools/css-calc@3.3.0': - resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} - engines: {node: '>=20.19.0'} + resolution: + { + integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==, + } + engines: { node: '>=20.19.0' } peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-color-parser@4.1.10': - resolution: {integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==} - engines: {node: '>=20.19.0'} + resolution: + { + integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==, + } + engines: { node: '>=20.19.0' } peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-parser-algorithms@4.0.0': - resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} - engines: {node: '>=20.19.0'} + resolution: + { + integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==, + } + engines: { node: '>=20.19.0' } peerDependencies: '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-syntax-patches-for-csstree@1.1.7': - resolution: {integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==} + resolution: + { + integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==, + } peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -1508,350 +1827,533 @@ packages: optional: true '@csstools/css-tokenizer@4.0.0': - resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} - engines: {node: '>=20.19.0'} + resolution: + { + integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==, + } + engines: { node: '>=20.19.0' } '@emnapi/core@1.11.1': - resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + resolution: + { + integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==, + } '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + resolution: + { + integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==, + } '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + resolution: + { + integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==, + } '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + resolution: + { + integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, + } '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + resolution: + { + integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==, + } '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + resolution: + { + integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==, + } '@esbuild/aix-ppc64@0.27.7': - resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==, + } + engines: { node: '>=18' } cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==, + } + engines: { node: '>=18' } cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.27.7': - resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==, + } + engines: { node: '>=18' } cpu: [arm64] os: [android] '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==, + } + engines: { node: '>=18' } cpu: [arm64] os: [android] '@esbuild/android-arm@0.27.7': - resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==, + } + engines: { node: '>=18' } cpu: [arm] os: [android] '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==, + } + engines: { node: '>=18' } cpu: [arm] os: [android] '@esbuild/android-x64@0.27.7': - resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==, + } + engines: { node: '>=18' } cpu: [x64] os: [android] '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==, + } + engines: { node: '>=18' } cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.27.7': - resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==, + } + engines: { node: '>=18' } cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==, + } + engines: { node: '>=18' } cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.27.7': - resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==, + } + engines: { node: '>=18' } cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==, + } + engines: { node: '>=18' } cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.27.7': - resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==, + } + engines: { node: '>=18' } cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==, + } + engines: { node: '>=18' } cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.27.7': - resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==, + } + engines: { node: '>=18' } cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==, + } + engines: { node: '>=18' } cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.27.7': - resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==, + } + engines: { node: '>=18' } cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==, + } + engines: { node: '>=18' } cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.27.7': - resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==, + } + engines: { node: '>=18' } cpu: [arm] os: [linux] '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==, + } + engines: { node: '>=18' } cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.27.7': - resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==, + } + engines: { node: '>=18' } cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==, + } + engines: { node: '>=18' } cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.27.7': - resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==, + } + engines: { node: '>=18' } cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==, + } + engines: { node: '>=18' } cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.27.7': - resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==, + } + engines: { node: '>=18' } cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==, + } + engines: { node: '>=18' } cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.27.7': - resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==, + } + engines: { node: '>=18' } cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==, + } + engines: { node: '>=18' } cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.27.7': - resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==, + } + engines: { node: '>=18' } cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==, + } + engines: { node: '>=18' } cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.27.7': - resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==, + } + engines: { node: '>=18' } cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==, + } + engines: { node: '>=18' } cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.27.7': - resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==, + } + engines: { node: '>=18' } cpu: [x64] os: [linux] '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==, + } + engines: { node: '>=18' } cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.27.7': - resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==, + } + engines: { node: '>=18' } cpu: [arm64] os: [netbsd] '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==, + } + engines: { node: '>=18' } cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.27.7': - resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==, + } + engines: { node: '>=18' } cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==, + } + engines: { node: '>=18' } cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.27.7': - resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==, + } + engines: { node: '>=18' } cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==, + } + engines: { node: '>=18' } cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.27.7': - resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==, + } + engines: { node: '>=18' } cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==, + } + engines: { node: '>=18' } cpu: [x64] os: [openbsd] '@esbuild/openharmony-arm64@0.27.7': - resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==, + } + engines: { node: '>=18' } cpu: [arm64] os: [openharmony] '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==, + } + engines: { node: '>=18' } cpu: [arm64] os: [openharmony] '@esbuild/sunos-x64@0.27.7': - resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==, + } + engines: { node: '>=18' } cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==, + } + engines: { node: '>=18' } cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.27.7': - resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==, + } + engines: { node: '>=18' } cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==, + } + engines: { node: '>=18' } cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.27.7': - resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==, + } + engines: { node: '>=18' } cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==, + } + engines: { node: '>=18' } cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.27.7': - resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==, + } + engines: { node: '>=18' } cpu: [x64] os: [win32] '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==, + } + engines: { node: '>=18' } cpu: [x64] os: [win32] '@exodus/bytes@1.15.1': - resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - peerDependencies: - '@noble/hashes': ^1.8.0 || ^2.0.0 + resolution: + { + integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 peerDependenciesMeta: '@noble/hashes': optional: true '@expo/cli@57.0.11': - resolution: {integrity: sha512-ENXCwRyL8Q9qbabUmm0L6w9kXTmdGotW7eDEEWmUDXLPux+nEzNDqw0MzWQ5K3ZsXS51QmUJZg5yETB+6SnNRg==} + resolution: + { + integrity: sha512-ENXCwRyL8Q9qbabUmm0L6w9kXTmdGotW7eDEEWmUDXLPux+nEzNDqw0MzWQ5K3ZsXS51QmUJZg5yETB+6SnNRg==, + } hasBin: true peerDependencies: expo: '*' @@ -1864,22 +2366,40 @@ packages: optional: true '@expo/code-signing-certificates@0.0.6': - resolution: {integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==} + resolution: + { + integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==, + } '@expo/config-plugins@57.0.6': - resolution: {integrity: sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw==} + resolution: + { + integrity: sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw==, + } '@expo/config-types@57.0.2': - resolution: {integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==} + resolution: + { + integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==, + } '@expo/config@57.0.6': - resolution: {integrity: sha512-VpMJpB/De/fb9bBFVVBiK6Ntg9lt0kAleLH9hcZz85CYRUQ3jVFVA8rNC5f8y4cp2+FiiPNFp62+kEOFI6pDiw==} + resolution: + { + integrity: sha512-VpMJpB/De/fb9bBFVVBiK6Ntg9lt0kAleLH9hcZz85CYRUQ3jVFVA8rNC5f8y4cp2+FiiPNFp62+kEOFI6pDiw==, + } '@expo/devcert@1.2.1': - resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==} + resolution: + { + integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==, + } '@expo/devtools@57.0.1': - resolution: {integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==} + resolution: + { + integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==, + } peerDependencies: react: '*' react-native: '*' @@ -1890,37 +2410,64 @@ packages: optional: true '@expo/dom-webview@57.0.1': - resolution: {integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==} + resolution: + { + integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==, + } peerDependencies: expo: '*' react: '*' react-native: '*' '@expo/env@2.4.2': - resolution: {integrity: sha512-28pqaEqwnmLduZ00Pq9HkSzE5wbj1MTwp5/n8nm8rD8MCjR9eUnVOwmNksPI3Be2ReAPO/DbPn1puy0mvoocsQ==} - engines: {node: '>=20.12.0'} + resolution: + { + integrity: sha512-28pqaEqwnmLduZ00Pq9HkSzE5wbj1MTwp5/n8nm8rD8MCjR9eUnVOwmNksPI3Be2ReAPO/DbPn1puy0mvoocsQ==, + } + engines: { node: '>=20.12.0' } '@expo/expo-modules-macros-plugin@0.6.1': - resolution: {integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==} + resolution: + { + integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==, + } '@expo/fingerprint@0.20.6': - resolution: {integrity: sha512-cmC/6BOPRbdKr77Mgjwszb8aM0hY2RKBpMRCmjSdn9zIcn2FGor/ic4fHVr46cQFa1G6RDGg1GyAjRw3US4CCQ==} + resolution: + { + integrity: sha512-cmC/6BOPRbdKr77Mgjwszb8aM0hY2RKBpMRCmjSdn9zIcn2FGor/ic4fHVr46cQFa1G6RDGg1GyAjRw3US4CCQ==, + } hasBin: true '@expo/image-utils@0.11.4': - resolution: {integrity: sha512-pn/4770DIEOcYZr484uazuwg20FX/qaDkeMRF6J+oxejynDmEmO8wLsCudaNShFE0BhyKGQTYrs2rsRhqrqESw==} + resolution: + { + integrity: sha512-pn/4770DIEOcYZr484uazuwg20FX/qaDkeMRF6J+oxejynDmEmO8wLsCudaNShFE0BhyKGQTYrs2rsRhqrqESw==, + } '@expo/inline-modules@0.1.4': - resolution: {integrity: sha512-8bPSCm//dv8raYfrQ4x79rCX52vMw0QzmnYYl4eSOAvEbGvDPPRGGdbrhZZ7oihU+hI1sZNS5kYEgqODgFwfsw==} + resolution: + { + integrity: sha512-8bPSCm//dv8raYfrQ4x79rCX52vMw0QzmnYYl4eSOAvEbGvDPPRGGdbrhZZ7oihU+hI1sZNS5kYEgqODgFwfsw==, + } '@expo/json-file@11.0.1': - resolution: {integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==} + resolution: + { + integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==, + } '@expo/local-build-cache-provider@57.0.5': - resolution: {integrity: sha512-OwiNC0Uxu67TOH7TEQ94GLa4oNzNfbbItKGdy3QMfX+hCSZv2VvjcjRo5vttMHfXCnXa9KZIu3GBS9pvtDHWhA==} + resolution: + { + integrity: sha512-OwiNC0Uxu67TOH7TEQ94GLa4oNzNfbbItKGdy3QMfX+hCSZv2VvjcjRo5vttMHfXCnXa9KZIu3GBS9pvtDHWhA==, + } '@expo/log-box@57.0.2': - resolution: {integrity: sha512-ZsFyfIR7YCbQAdVLzuTUmMHofZC7ZS9ywYCJNPlLc78x59cI8GwXFEIVbRjjC0uJERpNtXx/tsNNnkhexXlzMw==} + resolution: + { + integrity: sha512-ZsFyfIR7YCbQAdVLzuTUmMHofZC7ZS9ywYCJNPlLc78x59cI8GwXFEIVbRjjC0uJERpNtXx/tsNNnkhexXlzMw==, + } peerDependencies: '@expo/dom-webview': ^57.0.1 expo: '*' @@ -1928,7 +2475,10 @@ packages: react-native: '*' '@expo/metro-config@57.0.7': - resolution: {integrity: sha512-bVfEkg4zF1cA62OqAdYXmFOooJ6TB/I+REi7Se6Ct+PbSC+89TwSqWXnYx34L08eIs4z+1ilgbATakTZpgefmQ==} + resolution: + { + integrity: sha512-bVfEkg4zF1cA62OqAdYXmFOooJ6TB/I+REi7Se6Ct+PbSC+89TwSqWXnYx34L08eIs4z+1ilgbATakTZpgefmQ==, + } peerDependencies: expo: '*' peerDependenciesMeta: @@ -1936,26 +2486,47 @@ packages: optional: true '@expo/metro-file-map@57.0.1': - resolution: {integrity: sha512-8JXfVstZN7QnP4NianZZnlTVboOWR0sG8trUDNajOjnbGlPln29vponXM84tY+3tAHapz5/TxE53L0ixUwqPtA==} + resolution: + { + integrity: sha512-8JXfVstZN7QnP4NianZZnlTVboOWR0sG8trUDNajOjnbGlPln29vponXM84tY+3tAHapz5/TxE53L0ixUwqPtA==, + } '@expo/metro@56.0.0': - resolution: {integrity: sha512-5gIgQHtEpjjvsjKfVtIv23a98LLRV0/y07PDShEwYSytAMlE3FSF8RHXqtHc1sUJL6dn7hnuIBpIbrLXXuVi0A==} + resolution: + { + integrity: sha512-5gIgQHtEpjjvsjKfVtIv23a98LLRV0/y07PDShEwYSytAMlE3FSF8RHXqtHc1sUJL6dn7hnuIBpIbrLXXuVi0A==, + } '@expo/osascript@2.7.1': - resolution: {integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==, + } + engines: { node: '>=12' } '@expo/package-manager@1.13.1': - resolution: {integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==} + resolution: + { + integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==, + } '@expo/plist@0.8.1': - resolution: {integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==} + resolution: + { + integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==, + } '@expo/prebuild-config@57.0.10': - resolution: {integrity: sha512-myrS5NolFAQWD8g7QuqkettnkyJx3GRl603N6rlmqAMxmO5EU7sZu4EX2EsIKkva8QtpX84B0E17PsM9xXMsTQ==} + resolution: + { + integrity: sha512-myrS5NolFAQWD8g7QuqkettnkyJx3GRl603N6rlmqAMxmO5EU7sZu4EX2EsIKkva8QtpX84B0E17PsM9xXMsTQ==, + } '@expo/require-utils@57.0.4': - resolution: {integrity: sha512-e7xbg/9BTQcsZE/oErafZXtI7kh5IgfasLJ97J5sFSzX2cA74pDvdlhW1KHVSaDkQyQv6h1LSLhsY7dEeOk7hw==} + resolution: + { + integrity: sha512-e7xbg/9BTQcsZE/oErafZXtI7kh5IgfasLJ97J5sFSzX2cA74pDvdlhW1KHVSaDkQyQv6h1LSLhsY7dEeOk7hw==, + } peerDependencies: typescript: ^5.0.0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: @@ -1963,7 +2534,10 @@ packages: optional: true '@expo/router-server@57.0.4': - resolution: {integrity: sha512-ucqCP0hK8nZb9+S8QJYdQxNCkfRClzkKdg2RpWYDKDYgRIHyoRyxEDRgDgvbhH+q78yfY83abU8OTx8MMOrf1g==} + resolution: + { + integrity: sha512-ucqCP0hK8nZb9+S8QJYdQxNCkfRClzkKdg2RpWYDKDYgRIHyoRyxEDRgDgvbhH+q78yfY83abU8OTx8MMOrf1g==, + } peerDependencies: '@expo/metro-runtime': ^57.0.7 expo: '*' @@ -1985,36 +2559,63 @@ packages: optional: true '@expo/schema-utils@57.0.2': - resolution: {integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==} + resolution: + { + integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==, + } '@expo/sdk-runtime-versions@1.0.0': - resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + resolution: + { + integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==, + } '@expo/spawn-async@1.8.0': - resolution: {integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==, + } + engines: { node: '>=12' } '@expo/sudo-prompt@9.3.2': - resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} + resolution: + { + integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==, + } '@expo/ws-tunnel@2.0.0': - resolution: {integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==} + resolution: + { + integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==, + } peerDependencies: ws: ^8.0.0 '@expo/xcpretty@4.4.4': - resolution: {integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==} + resolution: + { + integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==, + } hasBin: true '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + resolution: + { + integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==, + } '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + resolution: + { + integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==, + } '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==, + } + engines: { node: '>=18' } peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -2022,400 +2623,646 @@ packages: optional: true '@isaacs/ttlcache@1.4.1': - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==, + } + engines: { node: '>=12' } '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + resolution: + { + integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==, + } + engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + resolution: + { + integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, + } '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + resolution: + { + integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, + } '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, + } + engines: { node: '>=6.0.0' } '@jridgewell/source-map@0.3.11': - resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + resolution: + { + integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, + } '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + resolution: + { + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, + } '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + resolution: + { + integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, + } '@kurkle/color@0.3.4': - resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + resolution: + { + integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==, + } '@lit-labs/ssr-dom-shim@1.6.0': - resolution: {integrity: sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ==} + resolution: + { + integrity: sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ==, + } '@lit/reactive-element@2.1.2': - resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} + resolution: + { + integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==, + } '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + resolution: + { + integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==, + } '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + resolution: + { + integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==, + } '@napi-rs/nice-android-arm-eabi@1.1.1': - resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==, + } + engines: { node: '>= 10' } cpu: [arm] os: [android] '@napi-rs/nice-android-arm64@1.1.1': - resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==, + } + engines: { node: '>= 10' } cpu: [arm64] os: [android] '@napi-rs/nice-darwin-arm64@1.1.1': - resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==, + } + engines: { node: '>= 10' } cpu: [arm64] os: [darwin] '@napi-rs/nice-darwin-x64@1.1.1': - resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==, + } + engines: { node: '>= 10' } cpu: [x64] os: [darwin] '@napi-rs/nice-freebsd-x64@1.1.1': - resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==, + } + engines: { node: '>= 10' } cpu: [x64] os: [freebsd] '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': - resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==, + } + engines: { node: '>= 10' } cpu: [arm] os: [linux] '@napi-rs/nice-linux-arm64-gnu@1.1.1': - resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==, + } + engines: { node: '>= 10' } cpu: [arm64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-arm64-musl@1.1.1': - resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==, + } + engines: { node: '>= 10' } cpu: [arm64] os: [linux] libc: [musl] '@napi-rs/nice-linux-ppc64-gnu@1.1.1': - resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==, + } + engines: { node: '>= 10' } cpu: [ppc64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-riscv64-gnu@1.1.1': - resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==, + } + engines: { node: '>= 10' } cpu: [riscv64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-s390x-gnu@1.1.1': - resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==, + } + engines: { node: '>= 10' } cpu: [s390x] os: [linux] libc: [glibc] '@napi-rs/nice-linux-x64-gnu@1.1.1': - resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==, + } + engines: { node: '>= 10' } cpu: [x64] os: [linux] libc: [glibc] '@napi-rs/nice-linux-x64-musl@1.1.1': - resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==, + } + engines: { node: '>= 10' } cpu: [x64] os: [linux] libc: [musl] '@napi-rs/nice-openharmony-arm64@1.1.1': - resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==, + } + engines: { node: '>= 10' } cpu: [arm64] os: [openharmony] '@napi-rs/nice-win32-arm64-msvc@1.1.1': - resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==, + } + engines: { node: '>= 10' } cpu: [arm64] os: [win32] '@napi-rs/nice-win32-ia32-msvc@1.1.1': - resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==, + } + engines: { node: '>= 10' } cpu: [ia32] os: [win32] '@napi-rs/nice-win32-x64-msvc@1.1.1': - resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==, + } + engines: { node: '>= 10' } cpu: [x64] os: [win32] '@napi-rs/nice@1.1.1': - resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==, + } + engines: { node: '>= 10' } '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} + resolution: + { + integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==, + } '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + resolution: + { + integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==, + } peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 '@noble/hashes@2.2.0': - resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} - engines: {node: '>= 20.19.0'} + resolution: + { + integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==, + } + engines: { node: '>= 20.19.0' } '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: '>= 8' } '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: '>= 8' } '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: '>= 8' } '@nx/nx-darwin-arm64@22.7.5': - resolution: {integrity: sha512-eoPtwx0qZqvRUD+VVOHm150AlSYwYoPxkDHBBGqKCn5nzPspb0lLWw8q83crM/L1M928YgK0WmGf3C++7eqsTA==} + resolution: + { + integrity: sha512-eoPtwx0qZqvRUD+VVOHm150AlSYwYoPxkDHBBGqKCn5nzPspb0lLWw8q83crM/L1M928YgK0WmGf3C++7eqsTA==, + } cpu: [arm64] os: [darwin] '@nx/nx-darwin-x64@22.7.5': - resolution: {integrity: sha512-VLOn/ZoEn3HfjSj+yIHLCM56/el79r+9I28CkZNHaSXJQWZ3edSkcgcfYjVxCurpN2VEwDQHLBeFCH8M+lQ7wQ==} + resolution: + { + integrity: sha512-VLOn/ZoEn3HfjSj+yIHLCM56/el79r+9I28CkZNHaSXJQWZ3edSkcgcfYjVxCurpN2VEwDQHLBeFCH8M+lQ7wQ==, + } cpu: [x64] os: [darwin] '@nx/nx-freebsd-x64@22.7.5': - resolution: {integrity: sha512-LEVer/E2xfGvK9Go+imMQoEninOoq/38Z2bhV1SD3AThXrp1xaLFVkW5jQ6juebeVkAeztEoMLFlr576egS0vw==} + resolution: + { + integrity: sha512-LEVer/E2xfGvK9Go+imMQoEninOoq/38Z2bhV1SD3AThXrp1xaLFVkW5jQ6juebeVkAeztEoMLFlr576egS0vw==, + } cpu: [x64] os: [freebsd] '@nx/nx-linux-arm-gnueabihf@22.7.5': - resolution: {integrity: sha512-NP27EFGpmFJM6RL1Ey/AFJ7gA2xuqtIHaw6jjSNGvfrnZRUNaway30GrVaGGeODf0DsvAty/unqoBMPy6kDHbw==} + resolution: + { + integrity: sha512-NP27EFGpmFJM6RL1Ey/AFJ7gA2xuqtIHaw6jjSNGvfrnZRUNaway30GrVaGGeODf0DsvAty/unqoBMPy6kDHbw==, + } cpu: [arm] os: [linux] '@nx/nx-linux-arm64-gnu@22.7.5': - resolution: {integrity: sha512-QLnkJl3HkHsPfpLiNiAiMfpfAeFpic0U1diAxF8RqChOkCpQ7ulvyBVgE1UrQxvhd+gFQ3ed5RNDxtCRw8nTiw==} + resolution: + { + integrity: sha512-QLnkJl3HkHsPfpLiNiAiMfpfAeFpic0U1diAxF8RqChOkCpQ7ulvyBVgE1UrQxvhd+gFQ3ed5RNDxtCRw8nTiw==, + } cpu: [arm64] os: [linux] libc: [glibc] '@nx/nx-linux-arm64-musl@22.7.5': - resolution: {integrity: sha512-cEP6KmwBgnb38+jTTaibWCjwXcHmigqhTfy0tN1be7WZr6bHxbqNLsXqKRN70PSNA3HouZcxw1cdRL8tqbPBBA==} + resolution: + { + integrity: sha512-cEP6KmwBgnb38+jTTaibWCjwXcHmigqhTfy0tN1be7WZr6bHxbqNLsXqKRN70PSNA3HouZcxw1cdRL8tqbPBBA==, + } cpu: [arm64] os: [linux] libc: [musl] '@nx/nx-linux-x64-gnu@22.7.5': - resolution: {integrity: sha512-tbaX1tZCSpGifDNBfDdEZAMxVF3Yg4bhFP/bm1needc0diqb+Zflc0u5tM5/6BWDMITQDwenJVsNiQ8ZdtJURA==} + resolution: + { + integrity: sha512-tbaX1tZCSpGifDNBfDdEZAMxVF3Yg4bhFP/bm1needc0diqb+Zflc0u5tM5/6BWDMITQDwenJVsNiQ8ZdtJURA==, + } cpu: [x64] os: [linux] libc: [glibc] '@nx/nx-linux-x64-musl@22.7.5': - resolution: {integrity: sha512-H0M7csOZIgPT822LqjxSXzf4MXRND15vIkAQe3F3Jlr3Si8LC3tzbL52aVcRfgb8MF/xOB5U47mSwxWt1M2bPQ==} + resolution: + { + integrity: sha512-H0M7csOZIgPT822LqjxSXzf4MXRND15vIkAQe3F3Jlr3Si8LC3tzbL52aVcRfgb8MF/xOB5U47mSwxWt1M2bPQ==, + } cpu: [x64] os: [linux] libc: [musl] '@nx/nx-win32-arm64-msvc@22.7.5': - resolution: {integrity: sha512-JTcZch9YAnDL1gbhqePz3DZ4x7iYemLn1yJzrjbbXAmXju2eiiJiZvJJHbV06+SP9HKXDT8RjTKuAWTdVxnHug==} + resolution: + { + integrity: sha512-JTcZch9YAnDL1gbhqePz3DZ4x7iYemLn1yJzrjbbXAmXju2eiiJiZvJJHbV06+SP9HKXDT8RjTKuAWTdVxnHug==, + } cpu: [arm64] os: [win32] '@nx/nx-win32-x64-msvc@22.7.5': - resolution: {integrity: sha512-ngcMyHdBJ9FSz2nHdbZ7gtJlFq0O2b05sPAsVMkZ18CKzdaA1qrBDJfsMO49hPCny505eiT766+CkKdaCDl5kA==} + resolution: + { + integrity: sha512-ngcMyHdBJ9FSz2nHdbZ7gtJlFq0O2b05sPAsVMkZ18CKzdaA1qrBDJfsMO49hPCny505eiT766+CkKdaCDl5kA==, + } cpu: [x64] os: [win32] '@observablehq/plot@0.6.17': - resolution: {integrity: sha512-/qaXP/7mc4MUS0s4cPPFASDRjtsWp85/TbfsciqDgU1HwYixbSbbytNuInD8AcTYC3xaxACgVX06agdfQy9W+g==} - engines: {node: '>=12'} - - '@observablehq/sample-datasets@1.0.1': - resolution: {integrity: sha512-2gc2wteMytPgDalqUPdLHEFInNb8J3vI17oniIYS89B1iwuO4EPXNWgzpfryyB4CH35CpXL0BgHfVeI+qICWwA==} + resolution: + { + integrity: sha512-/qaXP/7mc4MUS0s4cPPFASDRjtsWp85/TbfsciqDgU1HwYixbSbbytNuInD8AcTYC3xaxACgVX06agdfQy9W+g==, + } + engines: { node: '>=12' } + + '@observablehq/sample-datasets@1.0.1': + resolution: + { + integrity: sha512-2gc2wteMytPgDalqUPdLHEFInNb8J3vI17oniIYS89B1iwuO4EPXNWgzpfryyB4CH35CpXL0BgHfVeI+qICWwA==, + } '@oxc-project/types@0.139.0': - resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + resolution: + { + integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==, + } '@parcel/watcher-android-arm64@2.6.0': - resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==, + } + engines: { node: '>= 10.0.0' } cpu: [arm64] os: [android] '@parcel/watcher-darwin-arm64@2.6.0': - resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==, + } + engines: { node: '>= 10.0.0' } cpu: [arm64] os: [darwin] '@parcel/watcher-darwin-x64@2.6.0': - resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==, + } + engines: { node: '>= 10.0.0' } cpu: [x64] os: [darwin] '@parcel/watcher-freebsd-x64@2.6.0': - resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==, + } + engines: { node: '>= 10.0.0' } cpu: [x64] os: [freebsd] '@parcel/watcher-linux-arm-glibc@2.6.0': - resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==, + } + engines: { node: '>= 10.0.0' } cpu: [arm] os: [linux] libc: [glibc] '@parcel/watcher-linux-arm-musl@2.6.0': - resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==, + } + engines: { node: '>= 10.0.0' } cpu: [arm] os: [linux] libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.6.0': - resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==, + } + engines: { node: '>= 10.0.0' } cpu: [arm64] os: [linux] libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.6.0': - resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==, + } + engines: { node: '>= 10.0.0' } cpu: [arm64] os: [linux] libc: [musl] '@parcel/watcher-linux-x64-glibc@2.6.0': - resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==, + } + engines: { node: '>= 10.0.0' } cpu: [x64] os: [linux] libc: [glibc] '@parcel/watcher-linux-x64-musl@2.6.0': - resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==, + } + engines: { node: '>= 10.0.0' } cpu: [x64] os: [linux] libc: [musl] '@parcel/watcher-win32-arm64@2.6.0': - resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==, + } + engines: { node: '>= 10.0.0' } cpu: [arm64] os: [win32] '@parcel/watcher-win32-x64@2.6.0': - resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==, + } + engines: { node: '>= 10.0.0' } cpu: [x64] os: [win32] '@parcel/watcher@2.6.0': - resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==, + } + engines: { node: '>= 10.0.0' } '@react-native-community/cli-clean@20.1.0': - resolution: {integrity: sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==} + resolution: + { + integrity: sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==, + } '@react-native-community/cli-config-android@20.1.0': - resolution: {integrity: sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==} + resolution: + { + integrity: sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==, + } '@react-native-community/cli-config-apple@20.1.0': - resolution: {integrity: sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==} + resolution: + { + integrity: sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==, + } '@react-native-community/cli-config@20.1.0': - resolution: {integrity: sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==} + resolution: + { + integrity: sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==, + } '@react-native-community/cli-doctor@20.1.0': - resolution: {integrity: sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==} + resolution: + { + integrity: sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==, + } '@react-native-community/cli-platform-android@20.1.0': - resolution: {integrity: sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==} + resolution: + { + integrity: sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==, + } '@react-native-community/cli-platform-apple@20.1.0': - resolution: {integrity: sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==} + resolution: + { + integrity: sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==, + } '@react-native-community/cli-platform-ios@20.1.0': - resolution: {integrity: sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==} + resolution: + { + integrity: sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==, + } '@react-native-community/cli-server-api@20.1.0': - resolution: {integrity: sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==} + resolution: + { + integrity: sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==, + } '@react-native-community/cli-tools@20.1.0': - resolution: {integrity: sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==} + resolution: + { + integrity: sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==, + } '@react-native-community/cli-types@20.1.0': - resolution: {integrity: sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==} + resolution: + { + integrity: sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==, + } '@react-native-community/cli@20.1.0': - resolution: {integrity: sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==} - engines: {node: '>=20.19.4'} + resolution: + { + integrity: sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==, + } + engines: { node: '>=20.19.4' } hasBin: true '@react-native/assets-registry@0.86.2': - resolution: {integrity: sha512-vcX/mBjWAVnWofu7KecotquI2unZ/tITwA7OGdq/mdY/zmGXIEvYhfEYyOQij/LRqi9WAL+iizInTBWnxDhK/Q==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-vcX/mBjWAVnWofu7KecotquI2unZ/tITwA7OGdq/mdY/zmGXIEvYhfEYyOQij/LRqi9WAL+iizInTBWnxDhK/Q==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/babel-plugin-codegen@0.86.2': - resolution: {integrity: sha512-NNDZqOlNbH5SzgPks1jFDYH3234Rpa5e/nhZymxhIiBH3NcE3uD+rGj/HWXhH7nHF2ToGK6XbUpqy7nmJPeh+g==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-NNDZqOlNbH5SzgPks1jFDYH3234Rpa5e/nhZymxhIiBH3NcE3uD+rGj/HWXhH7nHF2ToGK6XbUpqy7nmJPeh+g==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/babel-preset@0.86.2': - resolution: {integrity: sha512-4XKEJ6jKW9lXMB1O5o47gBoGgolde1fbX13gLW/erlcn+1ky+MHHo5UjuM3RWGdPJHIvIzekDDumSUHhB9x5iQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-4XKEJ6jKW9lXMB1O5o47gBoGgolde1fbX13gLW/erlcn+1ky+MHHo5UjuM3RWGdPJHIvIzekDDumSUHhB9x5iQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: '@babel/core': '*' '@react-native/codegen@0.86.2': - resolution: {integrity: sha512-xKkudsahUJ1n//55g4fXk5BStVqqmZlz8HQveL45ZxcfDnwvhuYe2GymksQANFsSN+slvrarjrfq8kIxJzbceA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-xKkudsahUJ1n//55g4fXk5BStVqqmZlz8HQveL45ZxcfDnwvhuYe2GymksQANFsSN+slvrarjrfq8kIxJzbceA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: '@babel/core': '*' '@react-native/community-cli-plugin@0.86.2': - resolution: {integrity: sha512-YHXNKoM6Y/HjREySZ5arET2xgiHgg67r1MdwJB//MPJAJ0Xc5g0u6UHxY9VzsHO3Y07dre6s0BinYwjt1SEWvQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-YHXNKoM6Y/HjREySZ5arET2xgiHgg67r1MdwJB//MPJAJ0Xc5g0u6UHxY9VzsHO3Y07dre6s0BinYwjt1SEWvQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: '@react-native-community/cli': '*' '@react-native/metro-config': 0.86.2 @@ -2426,44 +3273,74 @@ packages: optional: true '@react-native/debugger-frontend@0.86.2': - resolution: {integrity: sha512-KGS1aV5F6cIqpnoIUhLBXyVzy1oAj8jBFGau6vX4Vy0HXRJN7p+68RU7x6NuyraHvQcR14ccMGT5TkFuNjQ4gA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-KGS1aV5F6cIqpnoIUhLBXyVzy1oAj8jBFGau6vX4Vy0HXRJN7p+68RU7x6NuyraHvQcR14ccMGT5TkFuNjQ4gA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/debugger-shell@0.86.2': - resolution: {integrity: sha512-/TaVJ2+gGajZPJGrFaObUQmHmlaxAlfmOPZicl6pNKDUjzSgFMpcLkdTOExvb+USYTVdGX1XwxXyvjQdUO2bvg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-/TaVJ2+gGajZPJGrFaObUQmHmlaxAlfmOPZicl6pNKDUjzSgFMpcLkdTOExvb+USYTVdGX1XwxXyvjQdUO2bvg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/dev-middleware@0.86.2': - resolution: {integrity: sha512-B7L0vKvg+IcEElT7Vpqh1xj5yJAqWUegjbP+bQRaorJMAYnv11GkliTnZV2AdTDfZQJWgOEx8i8LGkHkUg7bnA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-B7L0vKvg+IcEElT7Vpqh1xj5yJAqWUegjbP+bQRaorJMAYnv11GkliTnZV2AdTDfZQJWgOEx8i8LGkHkUg7bnA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/gradle-plugin@0.86.2': - resolution: {integrity: sha512-2F6x14NcHMpVmfTTFKfMkpV5dZedZrLiv6PE+c3vgnesV2bjleUBydr4U+NI8VkI7OwW71L0A5qQ76I9LCrfoQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-2F6x14NcHMpVmfTTFKfMkpV5dZedZrLiv6PE+c3vgnesV2bjleUBydr4U+NI8VkI7OwW71L0A5qQ76I9LCrfoQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/js-polyfills@0.86.2': - resolution: {integrity: sha512-bIwNcGBaQ74shB5z1mRkxOpjikimuwsnOCEkZSzL67Z1FTyK1ObpENfyd2QvcvVW9Cjl+tHuw9ynpBnb2jPoJQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-bIwNcGBaQ74shB5z1mRkxOpjikimuwsnOCEkZSzL67Z1FTyK1ObpENfyd2QvcvVW9Cjl+tHuw9ynpBnb2jPoJQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/metro-babel-transformer@0.86.2': - resolution: {integrity: sha512-mX1wgLErdb2hDgXJr9zM9SWLe+ZteZTFTwRWGOQ53yEJwc9DVSnxdTlAtVdMeOj2ntycKh0R8jYdat2Am43cwQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-mX1wgLErdb2hDgXJr9zM9SWLe+ZteZTFTwRWGOQ53yEJwc9DVSnxdTlAtVdMeOj2ntycKh0R8jYdat2Am43cwQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: '@babel/core': '*' '@react-native/metro-config@0.86.2': - resolution: {integrity: sha512-hJno256j+MS0b3JD1aD3ouTGZVacKNVBuXL2atMQQ8BZ060vl1ptnZ83y569aDW+/rgFSOcqn6ydKeSz4uUKQQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-hJno256j+MS0b3JD1aD3ouTGZVacKNVBuXL2atMQQ8BZ060vl1ptnZ83y569aDW+/rgFSOcqn6ydKeSz4uUKQQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } '@react-native/normalize-colors@0.86.2': - resolution: {integrity: sha512-EzPFc9Y6lzYOWeso2almwXI7f8+qReHxWvT+algsOczb2UhWXIWXDoSvkdwoSfiwwmGt/ijJgKJoeHlzPkLwRg==} + resolution: + { + integrity: sha512-EzPFc9Y6lzYOWeso2almwXI7f8+qReHxWvT+algsOczb2UhWXIWXDoSvkdwoSfiwwmGt/ijJgKJoeHlzPkLwRg==, + } '@react-native/typescript-config@0.86.2': - resolution: {integrity: sha512-DcIsPc652AD10sSKWZPv2QjsEB63DEXW20XYwDzk3zdl94XbTlTSn1+VZbtx7MzHk0kkSQcaX30yTdVkNUAz8Q==} + resolution: + { + integrity: sha512-DcIsPc652AD10sSKWZPv2QjsEB63DEXW20XYwDzk3zdl94XbTlTSn1+VZbtx7MzHk0kkSQcaX30yTdVkNUAz8Q==, + } '@react-native/virtualized-lists@0.86.2': - resolution: {integrity: sha512-uO0J72gh3EvE+1/GHRk18QRyBDTRHRB0AraAfojsRjbT7VMuJwKrZYaKGshavoaEud6aw00ZB9/8mTMIKjjcAw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-uO0J72gh3EvE+1/GHRk18QRyBDTRHRB0AraAfojsRjbT7VMuJwKrZYaKGshavoaEud6aw00ZB9/8mTMIKjjcAw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: '@types/react': ^19.2.0 react: '*' @@ -2473,7 +3350,10 @@ packages: optional: true '@reduxjs/toolkit@2.12.0': - resolution: {integrity: sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==} + resolution: + { + integrity: sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==, + } peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18 || ^19 react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 @@ -2484,106 +3364,157 @@ packages: optional: true '@rolldown/binding-android-arm64@1.1.5': - resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [android] '@rolldown/binding-darwin-arm64@1.1.5': - resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [darwin] '@rolldown/binding-darwin-x64@1.1.5': - resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [darwin] '@rolldown/binding-freebsd-x64@1.1.5': - resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [freebsd] '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm] os: [linux] '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [linux] libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [linux] libc: [musl] '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [ppc64] os: [linux] libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [s390x] os: [linux] libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [linux] libc: [glibc] '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [linux] libc: [musl] '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [openharmony] '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [wasm32] '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [win32] '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [win32] '@rolldown/pluginutils@1.0.1': - resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + resolution: + { + integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, + } '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==, + } + engines: { node: '>=14.0.0' } peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: @@ -2591,8 +3522,11 @@ packages: optional: true '@rollup/pluginutils@5.4.0': - resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==, + } + engines: { node: '>=14.0.0' } peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: @@ -2600,185 +3534,293 @@ packages: optional: true '@rollup/rollup-android-arm-eabi@4.62.3': - resolution: {integrity: sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==} + resolution: + { + integrity: sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==, + } cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.62.3': - resolution: {integrity: sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==} + resolution: + { + integrity: sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==, + } cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.62.3': - resolution: {integrity: sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==} + resolution: + { + integrity: sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==, + } cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.62.3': - resolution: {integrity: sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==} + resolution: + { + integrity: sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==, + } cpu: [x64] os: [darwin] '@rollup/rollup-freebsd-arm64@4.62.3': - resolution: {integrity: sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==} + resolution: + { + integrity: sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==, + } cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.62.3': - resolution: {integrity: sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==} + resolution: + { + integrity: sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==, + } cpu: [x64] os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.62.3': - resolution: {integrity: sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==} + resolution: + { + integrity: sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==, + } cpu: [arm] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.62.3': - resolution: {integrity: sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==} + resolution: + { + integrity: sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==, + } cpu: [arm] os: [linux] libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.62.3': - resolution: {integrity: sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==} + resolution: + { + integrity: sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==, + } cpu: [arm64] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.62.3': - resolution: {integrity: sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==} + resolution: + { + integrity: sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==, + } cpu: [arm64] os: [linux] libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.62.3': - resolution: {integrity: sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==} + resolution: + { + integrity: sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==, + } cpu: [loong64] os: [linux] libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.62.3': - resolution: {integrity: sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==} + resolution: + { + integrity: sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==, + } cpu: [loong64] os: [linux] libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.62.3': - resolution: {integrity: sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==} + resolution: + { + integrity: sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==, + } cpu: [ppc64] os: [linux] libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.62.3': - resolution: {integrity: sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==} + resolution: + { + integrity: sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==, + } cpu: [ppc64] os: [linux] libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.62.3': - resolution: {integrity: sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==} + resolution: + { + integrity: sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==, + } cpu: [riscv64] os: [linux] libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.62.3': - resolution: {integrity: sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==} + resolution: + { + integrity: sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==, + } cpu: [riscv64] os: [linux] libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.62.3': - resolution: {integrity: sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==} + resolution: + { + integrity: sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==, + } cpu: [s390x] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.62.3': - resolution: {integrity: sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==} + resolution: + { + integrity: sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==, + } cpu: [x64] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-musl@4.62.3': - resolution: {integrity: sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==} + resolution: + { + integrity: sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==, + } cpu: [x64] os: [linux] libc: [musl] '@rollup/rollup-openbsd-x64@4.62.3': - resolution: {integrity: sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==} + resolution: + { + integrity: sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==, + } cpu: [x64] os: [openbsd] '@rollup/rollup-openharmony-arm64@4.62.3': - resolution: {integrity: sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==} + resolution: + { + integrity: sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==, + } cpu: [arm64] os: [openharmony] '@rollup/rollup-win32-arm64-msvc@4.62.3': - resolution: {integrity: sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==} + resolution: + { + integrity: sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==, + } cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.62.3': - resolution: {integrity: sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==} - cpu: [ia32] - os: [win32] + resolution: + { + integrity: sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==, + } + cpu: [ia32] + os: [win32] '@rollup/rollup-win32-x64-gnu@4.62.3': - resolution: {integrity: sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==} + resolution: + { + integrity: sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==, + } cpu: [x64] os: [win32] '@rollup/rollup-win32-x64-msvc@4.62.3': - resolution: {integrity: sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==} + resolution: + { + integrity: sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==, + } cpu: [x64] os: [win32] '@rollup/wasm-node@4.62.3': - resolution: {integrity: sha512-sEOQWamme1YgXeVcE1JkB1k44RwtPWcpYpGUW1Lso7bOj+Ay9lN2Pak/CcfNeC4xqIPNhYSabQNaWYkJJR7m8Q==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + resolution: + { + integrity: sha512-sEOQWamme1YgXeVcE1JkB1k44RwtPWcpYpGUW1Lso7bOj+Ay9lN2Pak/CcfNeC4xqIPNhYSabQNaWYkJJR7m8Q==, + } + engines: { node: '>=18.0.0', npm: '>=8.0.0' } hasBin: true '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + resolution: + { + integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==, + } '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + resolution: + { + integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==, + } '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + resolution: + { + integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==, + } '@sinclair/typebox@0.27.12': - resolution: {integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==} + resolution: + { + integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==, + } '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + resolution: + { + integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, + } '@standard-schema/utils@0.3.0': - resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + resolution: + { + integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==, + } '@sveltejs/acorn-typescript@1.0.11': - resolution: {integrity: sha512-LFuZUkjJ9iF7JZye/aG5XM0SFcQ5VyL0oVX4WJ9dc0Va3R3s0OauX1BESVCb+YN/ol8TAfqGDDAQsTG627Y5kw==} + resolution: + { + integrity: sha512-LFuZUkjJ9iF7JZye/aG5XM0SFcQ5VyL0oVX4WJ9dc0Va3R3s0OauX1BESVCb+YN/ol8TAfqGDDAQsTG627Y5kw==, + } peerDependencies: acorn: ^8.9.0 '@sveltejs/load-config@0.2.1': - resolution: {integrity: sha512-5m3B2cbqQ4TbwW6Xkh66Ntw6dD7gNc77cCxABTTesWcq9jxIzMgTk97pZx5vEtvQx8iokgi7GIphqZe+PGwcZA==} - engines: {node: '>= 18.0.0'} + resolution: + { + integrity: sha512-5m3B2cbqQ4TbwW6Xkh66Ntw6dD7gNc77cCxABTTesWcq9jxIzMgTk97pZx5vEtvQx8iokgi7GIphqZe+PGwcZA==, + } + engines: { node: '>= 18.0.0' } '@sveltejs/package@2.5.8': - resolution: {integrity: sha512-zeBbsXYvHiBu56v4gJaGQoEHzg96w0E1j3dOMX8vo56s6vI5eQ57ZEZhudjwjnegnVitRRu5MrmhO0eNvaonIw==} - engines: {node: ^16.14 || >=18} + resolution: + { + integrity: sha512-zeBbsXYvHiBu56v4gJaGQoEHzg96w0E1j3dOMX8vo56s6vI5eQ57ZEZhudjwjnegnVitRRu5MrmhO0eNvaonIw==, + } + engines: { node: ^16.14 || >=18 } hasBin: true peerDependencies: svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 '@sveltejs/vite-plugin-svelte@7.2.0': - resolution: {integrity: sha512-1SpkuMSRLfugrVX+IrKfE1RUegzo8AQzKQ6qQPfVzbcWi5IhuTPaKb5ZrLpucleFznkc4/RTeSPoRnGWFxX+EQ==} - engines: {node: ^20.19 || ^22.12 || >=24} + resolution: + { + integrity: sha512-1SpkuMSRLfugrVX+IrKfE1RUegzo8AQzKQ6qQPfVzbcWi5IhuTPaKb5ZrLpucleFznkc4/RTeSPoRnGWFxX+EQ==, + } + engines: { node: ^20.19 || ^22.12 || >=24 } peerDependencies: svelte: ^5.46.4 vite: ^8.0.0-beta.7 || ^8.0.0 @@ -2791,166 +3833,325 @@ packages: hasBin: true '@tsrx/core@0.1.48': - resolution: {integrity: sha512-IgkkLjApPKCGvBvwcOtLT6bACFglB5RBKW9fYErYMXJC6bxk/GM1lVAnuV9FiadiZ5jXrTw9uTxbZULncycSQQ==} + resolution: + { + integrity: sha512-IgkkLjApPKCGvBvwcOtLT6bACFglB5RBKW9fYErYMXJC6bxk/GM1lVAnuV9FiadiZ5jXrTw9uTxbZULncycSQQ==, + } '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + resolution: + { + integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==, + } '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + resolution: + { + integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==, + } '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + resolution: + { + integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, + } '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + resolution: + { + integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, + } '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + resolution: + { + integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, + } '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + resolution: + { + integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, + } '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + resolution: + { + integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==, + } '@types/d3-array@3.2.2': - resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + resolution: + { + integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==, + } '@types/d3-brush@3.0.6': - resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + resolution: + { + integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==, + } '@types/d3-color@3.1.3': - resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + resolution: + { + integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==, + } '@types/d3-contour@3.0.6': - resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + resolution: + { + integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==, + } '@types/d3-delaunay@6.0.4': - resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + resolution: + { + integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==, + } '@types/d3-ease@3.0.2': - resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + resolution: + { + integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==, + } '@types/d3-force@3.0.10': - resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + resolution: + { + integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==, + } '@types/d3-format@3.0.4': - resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + resolution: + { + integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==, + } '@types/d3-geo@3.1.0': - resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + resolution: + { + integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==, + } '@types/d3-hexbin@0.2.5': - resolution: {integrity: sha512-EF/1szlis0vN810Q3F//NYeiOjiRZHiRlHADQzc8GMMeaJx9J662LHsxJYBqwqlsTMZuvVk1qLULyvC7p1JNAg==} + resolution: + { + integrity: sha512-EF/1szlis0vN810Q3F//NYeiOjiRZHiRlHADQzc8GMMeaJx9J662LHsxJYBqwqlsTMZuvVk1qLULyvC7p1JNAg==, + } '@types/d3-hierarchy@3.1.7': - resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + resolution: + { + integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==, + } '@types/d3-interpolate@3.0.4': - resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + resolution: + { + integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==, + } '@types/d3-path@1.0.11': - resolution: {integrity: sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==} + resolution: + { + integrity: sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==, + } '@types/d3-path@3.1.1': - resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + resolution: + { + integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==, + } '@types/d3-polygon@3.0.2': - resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + resolution: + { + integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==, + } '@types/d3-quadtree@3.0.6': - resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + resolution: + { + integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==, + } '@types/d3-sankey@0.12.5': - resolution: {integrity: sha512-/3RZSew0cLAtzGQ+C89hq/Rp3H20QJuVRSqFy6RKLe7E0B8kd2iOS1oBsodrgds4PcNVpqWhdUEng/SHvBcJ6Q==} + resolution: + { + integrity: sha512-/3RZSew0cLAtzGQ+C89hq/Rp3H20QJuVRSqFy6RKLe7E0B8kd2iOS1oBsodrgds4PcNVpqWhdUEng/SHvBcJ6Q==, + } '@types/d3-scale@4.0.9': - resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + resolution: + { + integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==, + } '@types/d3-selection@3.0.11': - resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + resolution: + { + integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==, + } '@types/d3-shape@1.3.12': - resolution: {integrity: sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==} + resolution: + { + integrity: sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==, + } '@types/d3-shape@3.1.8': - resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + resolution: + { + integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==, + } '@types/d3-time@3.0.4': - resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + resolution: + { + integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==, + } '@types/d3-timer@3.0.2': - resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + resolution: + { + integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==, + } '@types/d3-zoom@3.0.8': - resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + resolution: + { + integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==, + } '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + resolution: + { + integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==, + } '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + resolution: + { + integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==, + } '@types/estree@1.0.9': - resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + resolution: + { + integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, + } '@types/geojson@7946.0.16': - resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + resolution: + { + integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==, + } '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + resolution: + { + integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, + } '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + resolution: + { + integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, + } '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + resolution: + { + integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, + } '@types/jsdom@27.0.0': - resolution: {integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==} + resolution: + { + integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==, + } '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + resolution: + { + integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, + } '@types/node@25.9.5': - resolution: {integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==} + resolution: + { + integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==, + } '@types/react-dom@19.2.3': - resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + resolution: + { + integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==, + } peerDependencies: '@types/react': ^19.2.0 '@types/react@19.2.17': - resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} + resolution: + { + integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==, + } '@types/topojson-client@3.1.5': - resolution: {integrity: sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw==} + resolution: + { + integrity: sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw==, + } '@types/topojson-specification@1.0.5': - resolution: {integrity: sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ==} + resolution: + { + integrity: sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ==, + } '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + resolution: + { + integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==, + } '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + resolution: + { + integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, + } '@types/use-sync-external-store@0.0.6': - resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} + resolution: + { + integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==, + } '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + resolution: + { + integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, + } '@types/yargs@17.0.35': - resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + resolution: + { + integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==, + } '@ungap/structured-clone@1.3.3': - resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + resolution: + { + integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==, + } '@vitejs/plugin-react@6.0.4': - resolution: {integrity: sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 babel-plugin-react-compiler: ^1.0.0 @@ -2962,10 +4163,16 @@ packages: optional: true '@vitest/expect@4.1.10': - resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + resolution: + { + integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==, + } '@vitest/mocker@4.1.10': - resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + resolution: + { + integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==, + } peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2976,223 +4183,409 @@ packages: optional: true '@vitest/pretty-format@4.1.10': - resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + resolution: + { + integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==, + } '@vitest/runner@4.1.10': - resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} + resolution: + { + integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==, + } '@vitest/snapshot@4.1.10': - resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + resolution: + { + integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==, + } '@vitest/spy@4.1.10': - resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + resolution: + { + integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==, + } '@vitest/utils@4.1.10': - resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + resolution: + { + integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==, + } '@vscode/sudo-prompt@9.3.2': - resolution: {integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==} + resolution: + { + integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==, + } '@vue/compiler-core@3.5.40': - resolution: {integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==} + resolution: + { + integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==, + } '@vue/compiler-dom@3.5.40': - resolution: {integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==} + resolution: + { + integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==, + } '@vue/compiler-sfc@3.5.40': - resolution: {integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==} + resolution: + { + integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==, + } '@vue/compiler-ssr@3.5.40': - resolution: {integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==} + resolution: + { + integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==, + } '@vue/reactivity@3.1.5': - resolution: {integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==} + resolution: + { + integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==, + } '@vue/reactivity@3.5.40': - resolution: {integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==} + resolution: + { + integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==, + } '@vue/runtime-core@3.5.40': - resolution: {integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==} + resolution: + { + integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==, + } '@vue/runtime-dom@3.5.40': - resolution: {integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==} + resolution: + { + integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==, + } '@vue/server-renderer@3.5.40': - resolution: {integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==} + resolution: + { + integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==, + } '@vue/shared@3.1.5': - resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} - - '@vue/shared@3.5.40': - resolution: {integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==} + resolution: + { + integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==, + } + + '@vue/shared@3.5.40': + resolution: + { + integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==, + } '@xmldom/xmldom@0.8.13': - resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==, + } + engines: { node: '>=10.0.0' } '@xmldom/xmldom@0.9.10': - resolution: {integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==} - engines: {node: '>=14.6'} + resolution: + { + integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==, + } + engines: { node: '>=14.6' } '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + resolution: + { + integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, + } '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} + resolution: + { + integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==, + } hasBin: true abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, + } + engines: { node: '>=6.5' } accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, + } + engines: { node: '>= 0.6' } accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==, + } + engines: { node: '>= 0.6' } acorn@8.17.0: - resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==, + } + engines: { node: '>=0.4.0' } hasBin: true agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, + } + engines: { node: '>= 14' } agent-cli-detector@0.1.4: - resolution: {integrity: sha512-qPgevFvpaQoBaRJVKzr8R7h1WPvV3DtbgRIQlne4le66KBzXx5hNBwo/+NTw67LgkKBlhCzksrdautpUdlls0Q==} - engines: {node: '>=18.18'} + resolution: + { + integrity: sha512-qPgevFvpaQoBaRJVKzr8R7h1WPvV3DtbgRIQlne4le66KBzXx5hNBwo/+NTw67LgkKBlhCzksrdautpUdlls0Q==, + } + engines: { node: '>=18.18' } hasBin: true ajv@8.20.0: - resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + resolution: + { + integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, + } alpinejs@3.15.12: - resolution: {integrity: sha512-nJvPAQVNPdZZ0NrExJ/kzQco3ijR8LwvCOadQecllESiqT4NyZ/57sN9V2XyvhlBGAbmlKYgeWZvYdKq99ij/Q==} + resolution: + { + integrity: sha512-nJvPAQVNPdZZ0NrExJ/kzQco3ijR8LwvCOadQecllESiqT4NyZ/57sN9V2XyvhlBGAbmlKYgeWZvYdKq99ij/Q==, + } anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + resolution: + { + integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==, + } ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, + } + engines: { node: '>=6' } ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + } + engines: { node: '>=8' } ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + resolution: + { + integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==, + } ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, + } + engines: { node: '>=6' } ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: '>=8' } ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, + } + engines: { node: '>=12' } ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + } + engines: { node: '>=4' } ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: '>=8' } ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, + } + engines: { node: '>=10' } ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==, + } + engines: { node: '>=12' } appdirsjs@1.2.8: - resolution: {integrity: sha512-8zl1xlxeS4a0/36CT6LOaVioPOL8TeLT1b9OHk0j9xSbzmPBuM7lUgWMSTh6SbuF8fbwjcP1rr30OCLpd1fl+A==} + resolution: + { + integrity: sha512-8zl1xlxeS4a0/36CT6LOaVioPOL8TeLT1b9OHk0j9xSbzmPBuM7lUgWMSTh6SbuF8fbwjcP1rr30OCLpd1fl+A==, + } arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, + } argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolution: + { + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, + } argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } aria-query@5.3.1: - resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==, + } + engines: { node: '>= 0.4' } array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: '>=8' } asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + resolution: + { + integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, + } assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, + } + engines: { node: '>=12' } astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==, + } + engines: { node: '>=4' } async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + resolution: + { + integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==, + } asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } axios@1.16.0: - resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} + resolution: + { + integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==, + } axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, + } + engines: { node: '>= 0.4' } babel-plugin-jsx-dom-expressions@0.40.7: - resolution: {integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==} + resolution: + { + integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==, + } peerDependencies: '@babel/core': ^7.20.12 babel-plugin-polyfill-corejs2@0.4.17: - resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + resolution: + { + integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==, + } peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + resolution: + { + integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, + } peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.8: - resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + resolution: + { + integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==, + } peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-react-compiler@1.0.0: - resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + resolution: + { + integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==, + } babel-plugin-react-native-web@0.21.2: - resolution: {integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==} + resolution: + { + integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==, + } babel-plugin-syntax-hermes-parser@0.36.0: - resolution: {integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==} + resolution: + { + integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==, + } babel-plugin-transform-flow-enums@0.0.2: - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + resolution: + { + integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==, + } babel-preset-expo@57.0.5: - resolution: {integrity: sha512-sz9ZBTiUAlu5P9VORVNKoeAaY2qKFQRC6eQV5Y8aMkqcorvXKEv97UeCkFMLmMBEPKA+QeWImREKkX9/H21WQA==} + resolution: + { + integrity: sha512-sz9ZBTiUAlu5P9VORVNKoeAaY2qKFQRC6eQV5Y8aMkqcorvXKEv97UeCkFMLmMBEPKA+QeWImREKkX9/H21WQA==, + } peerDependencies: '@babel/runtime': ^7.20.0 expo: '*' @@ -3207,7 +4600,10 @@ packages: optional: true babel-preset-solid@1.9.12: - resolution: {integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==} + resolution: + { + integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==, + } peerDependencies: '@babel/core': ^7.0.0 solid-js: ^1.9.12 @@ -3216,81 +4612,144 @@ packages: optional: true balanced-match@4.0.3: - resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==, + } + engines: { node: 20 || >=22 } base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } baseline-browser-mapping@2.11.5: - resolution: {integrity: sha512-xJo6a6YZnwZfnyGmQKWMbVOcii7XRibjOskRh+WJ9UHQoX16xrQrcIgAMQOzfvs8XiLMx6ih/fsLPF73iY2D1A==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-xJo6a6YZnwZfnyGmQKWMbVOcii7XRibjOskRh+WJ9UHQoX16xrQrcIgAMQOzfvs8XiLMx6ih/fsLPF73iY2D1A==, + } + engines: { node: '>=6.0.0' } hasBin: true better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, + } + engines: { node: '>=4' } bidi-js@1.0.3: - resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + resolution: + { + integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==, + } big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} + resolution: + { + integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==, + } + engines: { node: '>=0.6' } binary-search-bounds@2.0.5: - resolution: {integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==} + resolution: + { + integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==, + } bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + resolution: + { + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, + } body-parser@1.20.6: - resolution: {integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + resolution: + { + integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==, + } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, + } bplist-creator@0.1.0: - resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} + resolution: + { + integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==, + } bplist-parser@0.3.1: - resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} - engines: {node: '>= 5.10.0'} + resolution: + { + integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==, + } + engines: { node: '>= 5.10.0' } bplist-parser@0.3.2: - resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} - engines: {node: '>= 5.10.0'} + resolution: + { + integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==, + } + engines: { node: '>= 5.10.0' } brace-expansion@5.0.6: - resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==, + } + engines: { node: 18 || 20 || >=22 } brace-expansion@5.0.8: - resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==, + } + engines: { node: 20 || >=22 } braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, + } + engines: { node: '>=8' } browserslist@4.28.7: - resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + resolution: + { + integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + resolution: + { + integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, + } buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + resolution: + { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, + } bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, + } + engines: { node: '>= 0.8' } cac@6.7.14: resolution: @@ -3300,190 +4759,340 @@ packages: engines: { node: '>=8' } call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, + } + engines: { node: '>= 0.4' } call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, + } + engines: { node: '>= 0.4' } callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: '>=6' } camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, + } + engines: { node: '>=6' } camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: '>=10' } caniuse-lite@1.0.30001806: - resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} + resolution: + { + integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==, + } chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==, + } + engines: { node: '>=18' } chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + } + engines: { node: '>=4' } chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: '>=10' } chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + resolution: + { + integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } chardet@2.2.0: - resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} + resolution: + { + integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==, + } chart.js@4.5.1: - resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} - engines: {pnpm: '>=8'} + resolution: + { + integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==, + } + engines: { pnpm: '>=8' } chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} + resolution: + { + integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, + } + engines: { node: '>= 14.16.0' } chokidar@5.0.0: - resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} - engines: {node: '>= 20.19.0'} + resolution: + { + integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==, + } + engines: { node: '>= 20.19.0' } chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} + resolution: + { + integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==, + } + engines: { node: '>=12.13.0' } hasBin: true chromium-edge-launcher@0.3.0: - resolution: {integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==} + resolution: + { + integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==, + } ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + resolution: + { + integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, + } ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, + } + engines: { node: '>=8' } cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, + } + engines: { node: '>=4' } cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + } + engines: { node: '>=8' } cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, + } + engines: { node: '>=18' } cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, + } + engines: { node: '>=6' } cli-spinners@3.4.0: - resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} - engines: {node: '>=18.20'} + resolution: + { + integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==, + } + engines: { node: '>=18.20' } cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + resolution: + { + integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, + } cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + } + engines: { node: '>=12' } cliui@9.0.1: - resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==, + } + engines: { node: '>=20' } clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + resolution: + { + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + } + engines: { node: '>=0.8' } clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, + } + engines: { node: '>=6' } color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + } color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: '>=7.0.0' } color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + } color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + resolution: + { + integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==, + } combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: '>= 0.8' } command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + resolution: + { + integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==, + } commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, + } + engines: { node: '>=18' } commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==, + } + engines: { node: '>=20' } commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + } commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, + } + engines: { node: '>= 10' } commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} + resolution: + { + integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==, + } + engines: { node: ^12.20.0 || >=14 } common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + resolution: + { + integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==, + } compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, + } + engines: { node: '>= 0.6' } compression@1.8.1: - resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==, + } + engines: { node: '>= 0.8.0' } connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} + resolution: + { + integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==, + } + engines: { node: '>= 0.10.0' } content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, + } + engines: { node: '>= 0.6' } convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + resolution: + { + integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, + } convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + resolution: + { + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, + } copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} + resolution: + { + integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==, + } + engines: { node: '>=12.13' } core-js-compat@3.49.0: - resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} + resolution: + { + integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==, + } cosmiconfig@9.0.2: - resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==, + } + engines: { node: '>=14' } peerDependencies: typescript: '>=4.9.5' peerDependenciesMeta: @@ -3491,181 +5100,319 @@ packages: optional: true cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, + } + engines: { node: '>= 8' } css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + resolution: + { + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, + } css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} + resolution: + { + integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, + } + engines: { node: '>=8.0.0' } css-tree@3.2.1: - resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + resolution: + { + integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, + } + engines: { node: '>= 6' } csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + resolution: + { + integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, + } d3-array@2.12.1: - resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + resolution: + { + integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==, + } d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==, + } + engines: { node: '>=12' } d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==, + } + engines: { node: '>=12' } d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==, + } + engines: { node: '>=12' } d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==, + } + engines: { node: '>=12' } d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==, + } + engines: { node: '>=12' } d3-contour@4.0.2: - resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==, + } + engines: { node: '>=12' } d3-delaunay@6.0.4: - resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==, + } + engines: { node: '>=12' } d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==, + } + engines: { node: '>=12' } d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==, + } + engines: { node: '>=12' } d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==, + } + engines: { node: '>=12' } hasBin: true d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==, + } + engines: { node: '>=12' } d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==, + } + engines: { node: '>=12' } d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==, + } + engines: { node: '>=12' } d3-format@3.1.2: - resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==, + } + engines: { node: '>=12' } d3-geo@3.1.1: - resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==, + } + engines: { node: '>=12' } d3-hexbin@0.2.2: - resolution: {integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==} + resolution: + { + integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==, + } d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==, + } + engines: { node: '>=12' } d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==, + } + engines: { node: '>=12' } d3-path@1.0.9: - resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + resolution: + { + integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==, + } d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==, + } + engines: { node: '>=12' } d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==, + } + engines: { node: '>=12' } d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==, + } + engines: { node: '>=12' } d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==, + } + engines: { node: '>=12' } d3-sankey@0.12.3: - resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + resolution: + { + integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==, + } d3-scale-chromatic@3.1.0: - resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==, + } + engines: { node: '>=12' } d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==, + } + engines: { node: '>=12' } d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==, + } + engines: { node: '>=12' } d3-shape@1.3.7: - resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + resolution: + { + integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==, + } d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==, + } + engines: { node: '>=12' } d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==, + } + engines: { node: '>=12' } d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==, + } + engines: { node: '>=12' } d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==, + } + engines: { node: '>=12' } d3-transition@3.0.1: - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==, + } + engines: { node: '>=12' } peerDependencies: d3-selection: 2 - 3 d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==, + } + engines: { node: '>=12' } d3@7.9.0: - resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==, + } + engines: { node: '>=12' } data-urls@7.0.0: - resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { + integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + resolution: + { + integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==, + } dayjs@1.11.21: - resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + resolution: + { + integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==, + } debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -3673,7 +5420,10 @@ packages: optional: true debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + } peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -3681,8 +5431,11 @@ packages: optional: true debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} + resolution: + { + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, + } + engines: { node: '>=6.0' } peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -3690,230 +5443,413 @@ packages: optional: true decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - + resolution: + { + integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, + } + engines: { node: '>=0.10.0' } + decimal.js-light@2.5.1: - resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + resolution: + { + integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==, + } decimal.js@10.6.0: - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + resolution: + { + integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==, + } dedent-js@1.0.1: - resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} + resolution: + { + integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==, + } deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + } + engines: { node: '>=0.10.0' } defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + resolution: + { + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, + } define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + } + engines: { node: '>=8' } delaunator@5.1.0: - resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + resolution: + { + integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==, + } delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: '>=0.4.0' } depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + } + engines: { node: '>= 0.8' } dependency-graph@1.0.0: - resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==, + } + engines: { node: '>=4' } destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + resolution: + { + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, + } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, + } + engines: { node: '>=8' } detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, + } + engines: { node: '>=8' } devalue@5.8.2: - resolution: {integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==} + resolution: + { + integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==, + } dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: '>=8' } dnssd-advertise@1.1.6: - resolution: {integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==} + resolution: + { + integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==, + } dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + } domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + } domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + } + engines: { node: '>= 4' } domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + resolution: + { + integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, + } dotenv-expand@12.0.3: - resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==, + } + engines: { node: '>=12' } dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, + } + engines: { node: '>=12' } dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==, + } + engines: { node: '>=10' } dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, + } + engines: { node: '>= 0.4' } echarts@6.1.0: - resolution: {integrity: sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA==} + resolution: + { + integrity: sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA==, + } ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, + } ejs@5.0.1: - resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==} - engines: {node: '>=0.12.18'} + resolution: + { + integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==, + } + engines: { node: '>=0.12.18' } hasBin: true electron-to-chromium@1.5.397: - resolution: {integrity: sha512-khGTy9U9x02KEtsKM8vx5A62BsRmcOsIgDpWr1ImE32Ax8GxHGPHZf+Eu9H8zOOyHJnB0jTbseyTHbq2XCT8yw==} + resolution: + { + integrity: sha512-khGTy9U9x02KEtsKM8vx5A62BsRmcOsIgDpWr1ImE32Ax8GxHGPHZf+Eu9H8zOOyHJnB0jTbseyTHbq2XCT8yw==, + } emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + resolution: + { + integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, + } emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, + } + engines: { node: '>= 0.8' } encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, + } + engines: { node: '>= 0.8' } end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + resolution: + { + integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, + } enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, + } + engines: { node: '>=8.6' } enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==, + } + engines: { node: '>=8.6' } entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, + } + engines: { node: '>=0.12' } entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, + } + engines: { node: '>=0.12' } entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==, + } + engines: { node: '>=0.12' } entities@8.0.0: - resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} - engines: {node: '>=20.19.0'} + resolution: + { + integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==, + } + engines: { node: '>=20.19.0' } env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, + } + engines: { node: '>=6' } envinfo@7.21.0: - resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==, + } + engines: { node: '>=4' } hasBin: true errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + resolution: + { + integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, + } hasBin: true error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + resolution: + { + integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==, + } error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + resolution: + { + integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, + } errorhandler@1.5.2: - resolution: {integrity: sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==, + } + engines: { node: '>= 0.8' } es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, + } + engines: { node: '>= 0.4' } es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, + } + engines: { node: '>= 0.4' } es-module-lexer@2.3.1: - resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + resolution: + { + integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==, + } es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, + } + engines: { node: '>= 0.4' } es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, + } + engines: { node: '>= 0.4' } es-toolkit@1.50.0: - resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} + resolution: + { + integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==, + } esbuild@0.27.7: - resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==, + } + engines: { node: '>=18' } hasBin: true esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==, + } + engines: { node: '>=18' } hasBin: true escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, + } + engines: { node: '>=6' } escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, + } escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: '>=0.8.0' } escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: '>=10' } esm-env@1.2.2: - resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + resolution: + { + integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==, + } esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + } + engines: { node: '>=4' } hasBin: true esrap@2.3.0: - resolution: {integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==} + resolution: + { + integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==, + } peerDependencies: '@typescript-eslint/types': ^8.2.0 peerDependenciesMeta: @@ -3921,68 +5857,110 @@ packages: optional: true estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + } estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, + } etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + } + engines: { node: '>= 0.6' } event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: '>=6' } eventemitter3@5.0.4: - resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + resolution: + { + integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==, + } execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + } + engines: { node: '>=10' } expect-type@1.4.0: - resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==, + } + engines: { node: '>=12.0.0' } expo-asset@57.0.8: - resolution: {integrity: sha512-sGocG+Wd2WcZ1KjKyB2LfUZXzrBM0VHEATGcpJKF9T3HM56M/sMbH73vv+n85u5Zr0FkJjEbV1DWhGPimCR1QQ==} + resolution: + { + integrity: sha512-sGocG+Wd2WcZ1KjKyB2LfUZXzrBM0VHEATGcpJKF9T3HM56M/sMbH73vv+n85u5Zr0FkJjEbV1DWhGPimCR1QQ==, + } peerDependencies: expo: '*' react: '*' react-native: '*' expo-constants@57.0.8: - resolution: {integrity: sha512-ts+B7E5076BtkblrKGy7+Sm/R2obHfTwqhmYQVYbWRtilv3+C/xNwHZhyNEnAvzM/JjKqx7UdaITUBYaeFreZw==} + resolution: + { + integrity: sha512-ts+B7E5076BtkblrKGy7+Sm/R2obHfTwqhmYQVYbWRtilv3+C/xNwHZhyNEnAvzM/JjKqx7UdaITUBYaeFreZw==, + } peerDependencies: expo: '*' react-native: '*' expo-file-system@57.0.1: - resolution: {integrity: sha512-w7/ERvQFrGP2apTO9lDtZ+O6JQIhfakL7+Xqzh+rfMO9B4LB4qwrz+YvLgir8KFRVX64JHBnRuYBVLY1oQZcqw==} + resolution: + { + integrity: sha512-w7/ERvQFrGP2apTO9lDtZ+O6JQIhfakL7+Xqzh+rfMO9B4LB4qwrz+YvLgir8KFRVX64JHBnRuYBVLY1oQZcqw==, + } peerDependencies: expo: '*' react-native: '*' expo-font@57.0.1: - resolution: {integrity: sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ==} + resolution: + { + integrity: sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ==, + } peerDependencies: expo: '*' react: '*' react-native: '*' expo-keep-awake@57.0.1: - resolution: {integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==} + resolution: + { + integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==, + } peerDependencies: expo: '*' react: '*' expo-modules-autolinking@57.0.9: - resolution: {integrity: sha512-lj2nsAKMMRLXSFnGgaaQrWJ2fdSpLPc/bca6Rkiw4g8zYPn7qX4MRUJgavvzm/hBrzvMnlhXVgJtidOGuwBh+w==} + resolution: + { + integrity: sha512-lj2nsAKMMRLXSFnGgaaQrWJ2fdSpLPc/bca6Rkiw4g8zYPn7qX4MRUJgavvzm/hBrzvMnlhXVgJtidOGuwBh+w==, + } hasBin: true expo-modules-core@57.0.8: - resolution: {integrity: sha512-ZUU943Oso3B8jFggC+2+LOk8oa+im66IQlleYay6WP5iexbdF2fqpgC4BcYsN4xhCkDKh7KDINSt1FlcxyRRjQ==} + resolution: + { + integrity: sha512-ZUU943Oso3B8jFggC+2+LOk8oa+im66IQlleYay6WP5iexbdF2fqpgC4BcYsN4xhCkDKh7KDINSt1FlcxyRRjQ==, + } peerDependencies: react: '*' react-native: '*' @@ -3992,16 +5970,25 @@ packages: optional: true expo-modules-jsi@57.0.4: - resolution: {integrity: sha512-vt7FyqUqqFXiRVnBqYD7y+GSPTgeua5Ocoy0+SYt+RSHkZEA2Fyop7If3g1TYDzQObYybPRo7TG2Rle1XLaWFw==} + resolution: + { + integrity: sha512-vt7FyqUqqFXiRVnBqYD7y+GSPTgeua5Ocoy0+SYt+RSHkZEA2Fyop7If3g1TYDzQObYybPRo7TG2Rle1XLaWFw==, + } peerDependencies: react-native: '*' expo-server@57.0.1: - resolution: {integrity: sha512-sBfVDH6dmKVHZxqUxbfkzS00PZELMZt1IpnHKxcOTMZtR/t7CtRAFrbXcisG+EyzeqHSVDacZT+1tbYfZt5D8w==} - engines: {node: '>=20.16.0'} + resolution: + { + integrity: sha512-sBfVDH6dmKVHZxqUxbfkzS00PZELMZt1IpnHKxcOTMZtR/t7CtRAFrbXcisG+EyzeqHSVDacZT+1tbYfZt5D8w==, + } + engines: { node: '>=20.16.0' } expo@57.0.9: - resolution: {integrity: sha512-NDEvnU+vjRdMbtOyDC25OSok9/E97al97pyx+bMphQgNRGAED0D7oF8ha7oGYsLE+7jFzpPADVM9S60dGbpHIA==} + resolution: + { + integrity: sha512-NDEvnU+vjRdMbtOyDC25OSok9/E97al97pyx+bMphQgNRGAED0D7oF8ha7oGYsLE+7jFzpPADVM9S60dGbpHIA==, + } hasBin: true peerDependencies: '@expo/dom-webview': '*' @@ -4024,39 +6011,69 @@ packages: optional: true exponential-backoff@3.1.3: - resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + resolution: + { + integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==, + } extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + resolution: + { + integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==, + } fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} + resolution: + { + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, + } + engines: { node: '>=8.6.0' } fast-uri@3.1.4: - resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} + resolution: + { + integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==, + } fast-xml-parser@4.5.7: - resolution: {integrity: sha512-a6Qh1RMCNbSrU1+sAyAAZH3rTe+OaWJbNZIq0S+ifZciUUOQtlVxBJwoTUE2bYhysmG/RYyI5WJFIKdBahJdrQ==} - hasBin: true - + resolution: + { + integrity: sha512-a6Qh1RMCNbSrU1+sAyAAZH3rTe+OaWJbNZIq0S+ifZciUUOQtlVxBJwoTUE2bYhysmG/RYyI5WJFIKdBahJdrQ==, + } + hasBin: true + fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + resolution: + { + integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, + } fb-dotslash@0.5.8: - resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==, + } + engines: { node: '>=20' } hasBin: true fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + resolution: + { + integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, + } fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, + } + engines: { node: '>=12.0.0' } peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -4064,46 +6081,79 @@ packages: optional: true fetch-nodeshim@0.4.10: - resolution: {integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==} + resolution: + { + integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==, + } figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, + } + engines: { node: '>=8' } fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, + } + engines: { node: '>=8' } finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==, + } + engines: { node: '>= 0.8' } find-cache-directory@6.0.0: - resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==, + } + engines: { node: '>=20' } find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==, + } + engines: { node: '>=18' } find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + } + engines: { node: '>=8' } find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: '>=10' } flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + resolution: + { + integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, + } hasBin: true flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + resolution: + { + integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==, + } follow-redirects@1.16.0: - resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==, + } + engines: { node: '>=4.0' } peerDependencies: debug: '*' peerDependenciesMeta: @@ -4111,337 +6161,604 @@ packages: optional: true fontfaceobserver@2.3.0: - resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + resolution: + { + integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==, + } form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, + } + engines: { node: '>= 6' } form-data@4.0.6: - resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==, + } + engines: { node: '>= 6' } fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, + } + engines: { node: '>= 0.6' } fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + resolution: + { + integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, + } fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + resolution: + { + integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, + } + engines: { node: '>=6 <7 || >=8' } fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + resolution: + { + integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, + } + engines: { node: '>=6 <7 || >=8' } fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, + } gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + } + engines: { node: '>=6.9.0' } get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } get-east-asian-width@1.6.0: - resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==, + } + engines: { node: '>=18' } get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, + } + engines: { node: '>= 0.4' } get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, + } + engines: { node: '>= 0.4' } get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: '>=10' } getenv@2.0.0: - resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==, + } + engines: { node: '>=6' } glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: '>= 6' } glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==, + } + engines: { node: 18 || 20 || >=22 } globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: '>=10' } gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, + } + engines: { node: '>= 0.4' } graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + } + engines: { node: '>=4' } has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: '>=8' } has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, + } + engines: { node: '>= 0.4' } has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, + } + engines: { node: '>= 0.4' } hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, + } + engines: { node: '>= 0.4' } hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==, + } + engines: { node: '>= 0.4' } hermes-compiler@250829098.0.16: - resolution: {integrity: sha512-xsgzk+mUyvt9t1nUbF8USBlYxajTUtPJhVZ86q85s/SEoMKCF+52YZcudb0ENSnV3T3lV9mgB3s6R7+pH90zgw==} + resolution: + { + integrity: sha512-xsgzk+mUyvt9t1nUbF8USBlYxajTUtPJhVZ86q85s/SEoMKCF+52YZcudb0ENSnV3T3lV9mgB3s6R7+pH90zgw==, + } hermes-estree@0.35.0: - resolution: {integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==} + resolution: + { + integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==, + } hermes-estree@0.36.0: - resolution: {integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==} + resolution: + { + integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==, + } hermes-parser@0.35.0: - resolution: {integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==} + resolution: + { + integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==, + } hermes-parser@0.36.0: - resolution: {integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==} + resolution: + { + integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==, + } hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} + resolution: + { + integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, + } + engines: { node: ^16.14.0 || >=18.0.0 } html-encoding-sniffer@6.0.0: - resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { + integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } html-entities@2.3.3: - resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + resolution: + { + integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==, + } http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==, + } + engines: { node: '>= 0.8' } https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, + } + engines: { node: '>= 14' } human-id@4.2.0: - resolution: {integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==} + resolution: + { + integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==, + } hasBin: true human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + } + engines: { node: '>=10.17.0' } iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + } + engines: { node: '>=0.10.0' } iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, + } + engines: { node: '>=0.10.0' } iconv-lite@0.7.3: - resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==, + } + engines: { node: '>=0.10.0' } ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + } ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, + } + engines: { node: '>= 4' } ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, + } + engines: { node: '>= 4' } image-size@1.2.1: - resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} - engines: {node: '>=16.x'} + resolution: + { + integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==, + } + engines: { node: '>=16.x' } hasBin: true immer@11.1.15: - resolution: {integrity: sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ==} + resolution: + { + integrity: sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ==, + } immutable@5.1.9: - resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==} + resolution: + { + integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==, + } import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, + } + engines: { node: '>=6' } inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } injection-js@2.6.1: - resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} + resolution: + { + integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==, + } internmap@1.0.1: - resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + resolution: + { + integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==, + } internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==, + } + engines: { node: '>=12' } interval-tree-1d@1.0.4: - resolution: {integrity: sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==} + resolution: + { + integrity: sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==, + } invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + resolution: + { + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, + } is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + } is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==, + } + engines: { node: '>= 0.4' } is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: '>=8' } hasBin: true is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: '>=0.10.0' } is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, + } + engines: { node: '>=4' } is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: '>=8' } is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: '>=0.10.0' } is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, + } + engines: { node: '>=8' } is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, + } + engines: { node: '>=12' } is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: '>=0.12.0' } is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + resolution: + { + integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, + } is-reference@3.0.3: - resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + resolution: + { + integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==, + } is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: '>=8' } is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==, + } + engines: { node: '>=4' } is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + } + engines: { node: '>=10' } is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, + } + engines: { node: '>=18' } is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} + resolution: + { + integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==, + } + engines: { node: '>=12.13' } is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, + } + engines: { node: '>=0.10.0' } is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==, + } + engines: { node: '>=4' } is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: '>=8' } isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } isoformat@0.2.1: - resolution: {integrity: sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==} + resolution: + { + integrity: sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==, + } jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jimp-compact@0.16.1: - resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + resolution: + { + integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==, + } joi@17.13.4: - resolution: {integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==} + resolution: + { + integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==, + } js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } js-yaml@3.15.0: - resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} + resolution: + { + integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==, + } hasBin: true js-yaml@4.3.0: - resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + resolution: + { + integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==, + } hasBin: true jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + resolution: + { + integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==, + } jsdom@29.1.1: - resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + resolution: + { + integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24.0.0 } peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -4449,400 +6766,691 @@ packages: optional: true jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, + } + engines: { node: '>=6' } hasBin: true json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, + } json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + resolution: + { + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, + } json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, + } + engines: { node: '>=6' } hasBin: true jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + resolution: + { + integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, + } jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + resolution: + { + integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, + } jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + resolution: + { + integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, + } kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, + } + engines: { node: '>=6' } kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, + } + engines: { node: '>=6' } lan-network@0.2.1: - resolution: {integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==} + resolution: + { + integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==, + } hasBin: true launch-editor@2.14.1: - resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} + resolution: + { + integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==, + } less@4.8.1: - resolution: {integrity: sha512-jQ3lRIo1aUtiWVYXZ7mk4+V4BjCGswF3IxTLJ+4RUta8ZiHh8lhkig2G8dya2eCcyR1dYUvzuV46EkJN8PSwww==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-jQ3lRIo1aUtiWVYXZ7mk4+V4BjCGswF3IxTLJ+4RUta8ZiHh8lhkig2G8dya2eCcyR1dYUvzuV46EkJN8PSwww==, + } + engines: { node: '>=18' } hasBin: true leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + } + engines: { node: '>=6' } lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + resolution: + { + integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==, + } lightningcss-android-arm64@1.33.0: - resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==, + } + engines: { node: '>= 12.0.0' } cpu: [arm64] os: [android] lightningcss-darwin-arm64@1.33.0: - resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==, + } + engines: { node: '>= 12.0.0' } cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.33.0: - resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==, + } + engines: { node: '>= 12.0.0' } cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.33.0: - resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==, + } + engines: { node: '>= 12.0.0' } cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.33.0: - resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==, + } + engines: { node: '>= 12.0.0' } cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.33.0: - resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==, + } + engines: { node: '>= 12.0.0' } cpu: [arm64] os: [linux] libc: [glibc] lightningcss-linux-arm64-musl@1.33.0: - resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==, + } + engines: { node: '>= 12.0.0' } cpu: [arm64] os: [linux] libc: [musl] lightningcss-linux-x64-gnu@1.33.0: - resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==, + } + engines: { node: '>= 12.0.0' } cpu: [x64] os: [linux] libc: [glibc] lightningcss-linux-x64-musl@1.33.0: - resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==, + } + engines: { node: '>= 12.0.0' } cpu: [x64] os: [linux] libc: [musl] lightningcss-win32-arm64-msvc@1.33.0: - resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==, + } + engines: { node: '>= 12.0.0' } cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.33.0: - resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==, + } + engines: { node: '>= 12.0.0' } cpu: [x64] os: [win32] lightningcss@1.33.0: - resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==, + } + engines: { node: '>= 12.0.0' } lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + } lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } lit-element@4.2.2: - resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} + resolution: + { + integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==, + } lit-html@3.3.3: - resolution: {integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==} + resolution: + { + integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==, + } lit@3.3.3: - resolution: {integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==} + resolution: + { + integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==, + } locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + resolution: + { + integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==, + } locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + } + engines: { node: '>=8' } locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: '>=10' } lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + resolution: + { + integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, + } lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + resolution: + { + integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, + } lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + resolution: + { + integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, + } log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==, + } + engines: { node: '>=4' } log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, + } + engines: { node: '>=10' } log-symbols@7.0.1: - resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==, + } + engines: { node: '>=18' } logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + resolution: + { + integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==, + } hasBin: true loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } hasBin: true lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + resolution: + { + integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, + } lru-cache@11.5.2: - resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==, + } + engines: { node: 20 || >=22 } lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + } magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + resolution: + { + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, + } make-dir@5.1.0: - resolution: {integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==, + } + engines: { node: '>=18' } makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + resolution: + { + integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, + } marky@1.3.0: - resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} + resolution: + { + integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==, + } math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, + } + engines: { node: '>= 0.4' } mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + resolution: + { + integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, + } mdn-data@2.27.1: - resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + resolution: + { + integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==, + } media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, + } + engines: { node: '>= 0.6' } memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + resolution: + { + integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==, + } merge-anything@5.1.7: - resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} - engines: {node: '>=12.13'} + resolution: + { + integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==, + } + engines: { node: '>=12.13' } merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: '>= 8' } metro-babel-transformer@0.84.4: - resolution: {integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-cache-key@0.84.4: - resolution: {integrity: sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-cache@0.84.4: - resolution: {integrity: sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-config@0.84.4: - resolution: {integrity: sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-core@0.84.4: - resolution: {integrity: sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-file-map@0.84.4: - resolution: {integrity: sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-minify-terser@0.84.4: - resolution: {integrity: sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-resolver@0.84.4: - resolution: {integrity: sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-runtime@0.84.4: - resolution: {integrity: sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-source-map@0.84.4: - resolution: {integrity: sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-symbolicate@0.84.4: - resolution: {integrity: sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true metro-transform-plugins@0.84.4: - resolution: {integrity: sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-transform-worker@0.84.4: - resolution: {integrity: sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro@0.84.4: - resolution: {integrity: sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, + } + engines: { node: '>=8.6' } mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: '>= 0.6' } mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==, + } + engines: { node: '>= 0.6' } mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: '>= 0.6' } mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==, + } + engines: { node: '>=18' } mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + } + engines: { node: '>=4' } hasBin: true mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==, + } + engines: { node: '>=4.0.0' } hasBin: true mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, + } + engines: { node: '>=4' } mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: '>=6' } mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, + } + engines: { node: '>=18' } minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==, + } + engines: { node: 18 || 20 || >=22 } minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { + integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==, + } + engines: { node: '>=16 || 14 >=14.17' } mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, + } + engines: { node: '>=10' } hasBin: true mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, + } + engines: { node: '>=4' } ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } multitars@1.0.0: - resolution: {integrity: sha512-H/J4fMLedtudftaYMOg7ajzLYgT3/rwbWVJbqr/iUgB8DQztn38ys5HOqI1CzSxx8QhXXwOOnnBvd4v3jG5+Mg==} + resolution: + { + integrity: sha512-H/J4fMLedtudftaYMOg7ajzLYgT3/rwbWVJbqr/iUgB8DQztn38ys5HOqI1CzSxx8QhXXwOOnnBvd4v3jG5+Mg==, + } nanoid@3.3.16: - resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + resolution: + { + integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true needle@2.9.1: - resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} - engines: {node: '>= 4.4.x'} + resolution: + { + integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==, + } + engines: { node: '>= 4.4.x' } hasBin: true needle@3.5.0: - resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} - engines: {node: '>= 4.4.x'} + resolution: + { + integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==, + } + engines: { node: '>= 4.4.x' } hasBin: true negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + } + engines: { node: '>= 0.6' } negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, + } + engines: { node: '>= 0.6' } negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==, + } + engines: { node: '>= 0.6' } ng-packagr@22.0.2: - resolution: {integrity: sha512-8qQ+RWm0W3gK8Sch1kmo3EzIUiCTXIOP2gS7b+vtqCMBf4KBjBP0wFBikW5qRau9lGOzRTML0GPFGoARPR4+fw==} - engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + resolution: + { + integrity: sha512-8qQ+RWm0W3gK8Sch1kmo3EzIUiCTXIOP2gS7b+vtqCMBf4KBjBP0wFBikW5qRau9lGOzRTML0GPFGoARPR4+fw==, + } + engines: { node: ^22.22.3 || ^24.15.0 || >=26.0.0 } hasBin: true peerDependencies: '@angular/compiler-cli': ^22.0.0 || ^22.1.0-next.0 @@ -4854,15 +7462,24 @@ packages: optional: true nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==, + } + engines: { node: '>=12.0.0' } node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + resolution: + { + integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==, + } node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} + resolution: + { + integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, + } + engines: { node: 4.x || >=6.0.0 } peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: @@ -4870,36 +7487,63 @@ packages: optional: true node-forge@1.4.0: - resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} - engines: {node: '>= 6.13.0'} + resolution: + { + integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==, + } + engines: { node: '>= 6.13.0' } node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + resolution: + { + integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, + } node-releases@2.0.51: - resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==, + } + engines: { node: '>=18' } node-stream-zip@1.16.0: - resolution: {integrity: sha512-ObaRrRoR8T68wF6suxHd7R4XQNamij6ZQHrwG7Dx1D2zeHcDNLsIOBcWrIwtDm7AsCXBguaPHgXhcjxDa2szrg==} - engines: {node: '>=0.12.0'} + resolution: + { + integrity: sha512-ObaRrRoR8T68wF6suxHd7R4XQNamij6ZQHrwG7Dx1D2zeHcDNLsIOBcWrIwtDm7AsCXBguaPHgXhcjxDa2szrg==, + } + engines: { node: '>=0.12.0' } npm-package-arg@11.0.3: - resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} - engines: {node: ^16.14.0 || >=18.0.0} + resolution: + { + integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, + } + engines: { node: ^16.14.0 || >=18.0.0 } npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: '>=8' } nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, + } nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + resolution: + { + integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, + } nx@22.7.5: - resolution: {integrity: sha512-zoxsJabb33jl1QYnalDn0bicryrEBgSzdKp90d7VGGv/jDgzKrcLg/hw2ZxeYiOjWPIT/o8QNT9G9vTs4dv3AQ==} + resolution: + { + integrity: sha512-zoxsJabb33jl1QYnalDn0bicryrEBgSzdKp90d7VGGv/jDgzKrcLg/hw2ZxeYiOjWPIT/o8QNT9G9vTs4dv3AQ==, + } hasBin: true peerDependencies: '@swc-node/register': ^1.11.1 @@ -4911,20 +7555,32 @@ packages: optional: true ob1@0.84.4: - resolution: {integrity: sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, + } + engines: { node: '>= 0.4' } obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} - engines: {node: '>=12.20.0'} + resolution: + { + integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==, + } + engines: { node: '>=12.20.0' } octane@0.1.13: - resolution: {integrity: sha512-bjmuF0hjLnBPOqOLTWyOtq6U5tklKw/JKF/qbAlZ2gfAZsoL9NiK7tQSWibuIUSerXELvLfmPmpbyt0fItemsg==} - engines: {node: '>=22'} + resolution: + { + integrity: sha512-bjmuF0hjLnBPOqOLTWyOtq6U5tklKw/JKF/qbAlZ2gfAZsoL9NiK7tQSWibuIUSerXELvLfmPmpbyt0fItemsg==, + } + engines: { node: '>=22' } peerDependencies: react: ^19.0.0 react-dom: ^19.0.0 @@ -4938,202 +7594,355 @@ packages: optional: true on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==, + } + engines: { node: '>= 0.8' } on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, + } + engines: { node: '>= 0.8' } on-headers@1.1.0: - resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==, + } + engines: { node: '>= 0.8' } once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, + } + engines: { node: '>=4' } onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: '>=6' } onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, + } + engines: { node: '>=18' } open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==, + } + engines: { node: '>=8' } open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==, + } + engines: { node: '>=8' } open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, + } + engines: { node: '>=12' } ora@3.4.0: - resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==, + } + engines: { node: '>=6' } ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==, + } + engines: { node: '>=10' } ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, + } + engines: { node: '>=10' } ora@9.4.1: - resolution: {integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==, + } + engines: { node: '>=20' } outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + resolution: + { + integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==, + } p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, + } + engines: { node: '>=8' } p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + } + engines: { node: '>=6' } p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: '>=10' } p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + } + engines: { node: '>=8' } p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: '>=10' } p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, + } + engines: { node: '>=6' } p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + } + engines: { node: '>=6' } package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + resolution: + { + integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==, + } parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: '>=6' } parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, + } + engines: { node: '>=8' } parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} + resolution: + { + integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==, + } + engines: { node: '>= 0.10' } parse-png@2.1.0: - resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==, + } + engines: { node: '>=10' } parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + resolution: + { + integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, + } parse5@8.0.1: - resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + resolution: + { + integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==, + } parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, + } + engines: { node: '>= 0.8' } path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: '>=8' } path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: '>=8' } path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } path-scurry@2.0.2: - resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==, + } + engines: { node: 18 || 20 || >=22 } path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: '>=8' } pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + resolution: + { + integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, + } picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + resolution: + { + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, + } picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==, + } + engines: { node: '>=8.6' } picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==, + } + engines: { node: '>=12' } pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, + } + engines: { node: '>=6' } piscina@5.3.0: - resolution: {integrity: sha512-9D3tPBayfoal6l9l4Y8NrMn1jkV718qJoYrla6P51+hh9h0Q+9/1c8KgEnoBQqhguyfgjay4biADI8HJG3pkoA==} - engines: {node: '>=20.x'} + resolution: + { + integrity: sha512-9D3tPBayfoal6l9l4Y8NrMn1jkV718qJoYrla6P51+hh9h0Q+9/1c8KgEnoBQqhguyfgjay4biADI8HJG3pkoA==, + } + engines: { node: '>=20.x' } pixelmatch@7.1.0: - resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} + resolution: + { + integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==, + } hasBin: true pkg-dir@8.0.0: - resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==, + } + engines: { node: '>=18' } playwright-core@1.62.0: - resolution: {integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==, + } + engines: { node: '>=20' } hasBin: true playwright@1.62.0: - resolution: {integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==, + } + engines: { node: '>=20' } hasBin: true plist@3.1.1: - resolution: {integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==} - engines: {node: '>=10.4.0'} + resolution: + { + integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==, + } + engines: { node: '>=10.4.0' } pngjs@3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==, + } + engines: { node: '>=4.0.0' } pngjs@7.0.0: - resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} - engines: {node: '>=14.19.0'} + resolution: + { + integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==, + } + engines: { node: '>=14.19.0' } postcss@8.5.23: - resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} - engines: {node: ^10 || ^12 || >=14} + resolution: + { + integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==, + } + engines: { node: ^10 || ^12 || >=14 } preact-render-to-string@6.7.0: - resolution: {integrity: sha512-Z4WR8fmLMRpdYqJ9i7vrlXSsSrxVJydwrkEXHapexfARbWfGb7vGcnvNQnIzN0cXciMVOlz/XLoiMCi9gUsy9Q==} + resolution: + { + integrity: sha512-Z4WR8fmLMRpdYqJ9i7vrlXSsSrxVJydwrkEXHapexfARbWfGb7vGcnvNQnIzN0cXciMVOlz/XLoiMCi9gUsy9Q==, + } peerDependencies: preact: '>=10 || >= 11.0.0-0' preact@10.29.7: - resolution: {integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==} + resolution: + { + integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==, + } peerDependencies: preact-render-to-string: '>=5' peerDependenciesMeta: @@ -5141,98 +7950,170 @@ packages: optional: true prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, + } + engines: { node: '>=10.13.0' } hasBin: true prettier@3.9.6: - resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==, + } + engines: { node: '>=14' } hasBin: true pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } probe-image-size@7.3.0: - resolution: {integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==} + resolution: + { + integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==, + } proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, + } + engines: { node: '>=0.4.0' } promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + resolution: + { + integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==, + } prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, + } + engines: { node: '>= 6' } proxy-from-env@2.1.0: - resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==, + } + engines: { node: '>=10' } prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + resolution: + { + integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, + } punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, + } + engines: { node: '>=6' } qs@6.15.3: - resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} - engines: {node: '>=0.6'} + resolution: + { + integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==, + } + engines: { node: '>=0.6' } quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + resolution: + { + integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==, + } queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + resolution: + { + integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==, + } range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, + } + engines: { node: '>= 0.6' } raw-body@2.5.3: - resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==, + } + engines: { node: '>= 0.8' } react-devtools-core@6.1.5: - resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} + resolution: + { + integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==, + } react-dom@19.2.3: - resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + resolution: + { + integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==, + } peerDependencies: react: ^19.2.3 react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + resolution: + { + integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, + } react-is@19.2.8: - resolution: {integrity: sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==} + resolution: + { + integrity: sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==, + } react-native-svg@15.15.4: - resolution: {integrity: sha512-boT/vIRgj6zZKBpfTPJJiYWMbZE9duBMOwPK6kCSTgxsS947IFMOq9OgIFkpWZTB7t229H24pDRkh3W9ZK/J1A==} + resolution: + { + integrity: sha512-boT/vIRgj6zZKBpfTPJJiYWMbZE9duBMOwPK6kCSTgxsS947IFMOq9OgIFkpWZTB7t229H24pDRkh3W9ZK/J1A==, + } peerDependencies: react: '*' react-native: '*' react-native-svg@15.15.5: - resolution: {integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==} + resolution: + { + integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==, + } peerDependencies: react: '*' react-native: '*' react-native@0.86.2: - resolution: {integrity: sha512-zbJXGZpwfZGA79Z9ob6Atvfx4nAQL8yJBa35s58E4Oo+khPykfQP2sTeumkKbjwajFYfVayg8pj7Il9nIfTk7A==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-zbJXGZpwfZGA79Z9ob6Atvfx4nAQL8yJBa35s58E4Oo+khPykfQP2sTeumkKbjwajFYfVayg8pj7Il9nIfTk7A==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true peerDependencies: '@react-native/jest-preset': 0.86.2 @@ -5245,7 +8126,10 @@ packages: optional: true react-redux@9.3.0: - resolution: {integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==} + resolution: + { + integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==, + } peerDependencies: '@types/react': ^18.2.25 || ^19 react: ^18.0 || ^19 @@ -5257,605 +8141,1070 @@ packages: optional: true react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==, + } + engines: { node: '>=0.10.0' } react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==, + } + engines: { node: '>=0.10.0' } read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==, + } + engines: { node: '>=6' } readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + } + engines: { node: '>= 6' } readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} + resolution: + { + integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, + } + engines: { node: '>= 14.18.0' } readdirp@5.0.0: - resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} - engines: {node: '>= 20.19.0'} + resolution: + { + integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==, + } + engines: { node: '>= 20.19.0' } recharts@3.10.1: - resolution: {integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==, + } + engines: { node: '>=18' } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 redux-thunk@3.1.0: - resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} + resolution: + { + integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==, + } peerDependencies: redux: ^5.0.0 redux@5.0.1: - resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} + resolution: + { + integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==, + } reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + resolution: + { + integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==, + } regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, + } + engines: { node: '>=4' } regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + resolution: + { + integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, + } regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + resolution: + { + integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, + } regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, + } + engines: { node: '>=4' } regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + resolution: + { + integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, + } regjsparser@0.13.2: - resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} + resolution: + { + integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==, + } hasBin: true require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: '>=0.10.0' } require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, + } + engines: { node: '>=0.10.0' } require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + resolution: + { + integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, + } reselect@5.2.0: - resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==} + resolution: + { + integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==, + } resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: '>=4' } resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + } + engines: { node: '>=8' } resolve-workspace-root@2.0.1: - resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==} + resolution: + { + integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==, + } resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, + } + engines: { node: '>=10' } resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==, + } + engines: { node: '>= 0.4' } hasBin: true restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, + } + engines: { node: '>=4' } restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + } + engines: { node: '>=8' } restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, + } + engines: { node: '>=18' } reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + resolution: + { + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, + } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } robust-predicates@3.0.3: - resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + resolution: + { + integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==, + } rolldown@1.1.5: - resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true rollup-plugin-dts@6.4.1: - resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==, + } + engines: { node: '>=20' } peerDependencies: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 || ^6.0 rollup@4.62.3: - resolution: {integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + resolution: + { + integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==, + } + engines: { node: '>=18.0.0', npm: '>=8.0.0' } hasBin: true run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + resolution: + { + integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==, + } rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + resolution: + { + integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, + } sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, + } + engines: { node: '>=6' } safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } sass@1.102.0: - resolution: {integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==} - engines: {node: '>=20.19.0'} + resolution: + { + integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==, + } + engines: { node: '>=20.19.0' } hasBin: true sax@1.6.1: - resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} - engines: {node: '>=11.0.0'} + resolution: + { + integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==, + } + engines: { node: '>=11.0.0' } saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + resolution: + { + integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, + } + engines: { node: '>=v12.22.7' } scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + resolution: + { + integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==, + } scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + resolution: + { + integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==, + } semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, + } hasBin: true semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, + } + engines: { node: '>=10' } hasBin: true semver@7.8.5: - resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==, + } + engines: { node: '>=10' } hasBin: true send@0.19.2: - resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==, + } + engines: { node: '>= 0.8.0' } serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==, + } + engines: { node: '>=0.10.0' } seroval-plugins@1.5.6: - resolution: {integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==, + } + engines: { node: '>=10' } peerDependencies: seroval: ^1.0 seroval@1.5.6: - resolution: {integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==, + } + engines: { node: '>=10' } serve-static@1.16.3: - resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==, + } + engines: { node: '>= 0.8.0' } set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + resolution: + { + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, + } setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + } shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: '>=8' } shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: '>=8' } shell-quote@1.10.0: - resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==, + } + engines: { node: '>= 0.4' } side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==, + } + engines: { node: '>= 0.4' } side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, + } + engines: { node: '>= 0.4' } side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, + } + engines: { node: '>= 0.4' } side-channel@1.1.1: - resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==, + } + engines: { node: '>= 0.4' } siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + resolution: + { + integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, + } signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, + } + engines: { node: '>=14' } simple-plist@1.3.1: - resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} + resolution: + { + integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==, + } sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + resolution: + { + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, + } slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: '>=8' } slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==, + } + engines: { node: '>=6' } slugify@1.6.9: - resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==} - engines: {node: '>=8.0.0'} + resolution: + { + integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==, + } + engines: { node: '>=8.0.0' } smol-toml@1.6.1: - resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} - engines: {node: '>= 18'} + resolution: + { + integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==, + } + engines: { node: '>= 18' } solid-js@1.9.14: - resolution: {integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==} + resolution: + { + integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==, + } solid-refresh@0.6.3: - resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} + resolution: + { + integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==, + } peerDependencies: solid-js: ^1.3 source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, + } + engines: { node: '>=0.10.0' } source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, + } + engines: { node: '>=0.10.0' } source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: '>=0.10.0' } spawndamnit@3.0.1: - resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + resolution: + { + integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==, + } sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + resolution: + { + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + } stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + resolution: + { + integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, + } stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + resolution: + { + integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, + } stacktrace-parser@0.1.11: - resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==, + } + engines: { node: '>=6' } statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, + } + engines: { node: '>= 0.6' } statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==, + } + engines: { node: '>= 0.8' } std-env@4.2.0: - resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + resolution: + { + integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==, + } stdin-discarder@0.3.2: - resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==, + } + engines: { node: '>=18' } stream-buffers@2.2.0: - resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} - engines: {node: '>= 0.10.0'} + resolution: + { + integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==, + } + engines: { node: '>= 0.10.0' } stream-parser@0.3.1: - resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} + resolution: + { + integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==, + } string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: '>=8' } string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, + } + engines: { node: '>=18' } string-width@8.2.2: - resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==, + } + engines: { node: '>=20' } string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, + } + engines: { node: '>=6' } strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: '>=8' } strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==, + } + engines: { node: '>=12' } strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: '>=4' } strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + } + engines: { node: '>=6' } strnum@1.1.2: - resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + resolution: + { + integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==, + } structured-headers@0.4.1: - resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + resolution: + { + integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==, + } supports-color@10.2.2: - resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==, + } + engines: { node: '>=18' } supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + } + engines: { node: '>=4' } supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: '>=8' } supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + } + engines: { node: '>=10' } supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, + } + engines: { node: '>=8' } supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: '>= 0.4' } svelte-check@4.7.4: - resolution: {integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==} - engines: {node: '>= 18.0.0'} + resolution: + { + integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==, + } + engines: { node: '>= 18.0.0' } hasBin: true peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: ^5.0.0 || ^6.0.0 svelte2tsx@0.7.59: - resolution: {integrity: sha512-Itj7Wz9WIiGFl/uJa58+rf43ajezaljKK/KTOHq5abUjto56xe+o5SOzLwSoeJ5hma9NZEstpZiazFW2q1nZPQ==} + resolution: + { + integrity: sha512-Itj7Wz9WIiGFl/uJa58+rf43ajezaljKK/KTOHq5abUjto56xe+o5SOzLwSoeJ5hma9NZEstpZiazFW2q1nZPQ==, + } peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 || ^6.0.0 svelte@5.56.8: - resolution: {integrity: sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==, + } + engines: { node: '>=18' } symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + resolution: + { + integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, + } tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, + } + engines: { node: '>=6' } term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, + } + engines: { node: '>=8' } terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, + } + engines: { node: '>=8' } terser@5.49.0: - resolution: {integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==, + } + engines: { node: '>=10' } hasBin: true throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + resolution: + { + integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==, + } tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + resolution: + { + integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==, + } tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + resolution: + { + integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, + } tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==, + } + engines: { node: '>=18' } tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==, + } + engines: { node: '>=12.0.0' } tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==, + } + engines: { node: '>=14.0.0' } tldts-core@7.4.9: - resolution: {integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==} + resolution: + { + integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==, + } tldts@7.4.9: - resolution: {integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==} + resolution: + { + integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==, + } hasBin: true tmp@0.2.6: - resolution: {integrity: sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==} - engines: {node: '>=14.14'} + resolution: + { + integrity: sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==, + } + engines: { node: '>=14.14' } tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + resolution: + { + integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, + } to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: '>=8.0' } toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + } + engines: { node: '>=0.6' } topojson-client@3.1.0: - resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} + resolution: + { + integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==, + } hasBin: true toqr@0.1.1: - resolution: {integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==} + resolution: + { + integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==, + } tough-cookie@6.0.2: - resolution: {integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==} - engines: {node: '>=16'} + resolution: + { + integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==, + } + engines: { node: '>=16' } tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + resolution: + { + integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, + } tr46@6.0.0: - resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==, + } + engines: { node: '>=20' } tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + resolution: + { + integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, + } hasBin: true tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, + } + engines: { node: '>=6' } tslib@2.3.0: - resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + resolution: + { + integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==, + } tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + resolution: + { + integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, + } type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + } + engines: { node: '>=10' } type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==, + } + engines: { node: '>=8' } type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, + } + engines: { node: '>= 0.6' } typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} - engines: {node: '>=14.17'} + resolution: + { + integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==, + } + engines: { node: '>=14.17' } hasBin: true undici-types@7.24.6: - resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + resolution: + { + integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==, + } undici@7.29.0: - resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} - engines: {node: '>=20.18.1'} + resolution: + { + integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==, + } + engines: { node: '>=20.18.1' } unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, + } + engines: { node: '>=4' } unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, + } + engines: { node: '>=4' } unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, + } + engines: { node: '>=4' } unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, + } + engines: { node: '>=4' } universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + resolution: + { + integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, + } + engines: { node: '>= 4.0.0' } unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + } + engines: { node: '>= 0.8' } update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + resolution: + { + integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==, + } hasBin: true peerDependencies: browserslist: '>= 4.21.0' us-atlas@3.0.1: - resolution: {integrity: sha512-wEIZCq0ImPvGblTd8gZMqNNCPkQshugMUG/8nkSWXb02+XqNFREg9atHOKP9w6prLZTpqcLhSvdBW81MkV3/0Q==} + resolution: + { + integrity: sha512-wEIZCq0ImPvGblTd8gZMqNNCPkQshugMUG/8nkSWXb02+XqNFREg9atHOKP9w6prLZTpqcLhSvdBW81MkV3/0Q==, + } use-sync-external-store@1.6.0: - resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + resolution: + { + integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==, + } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} + resolution: + { + integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, + } + engines: { node: '>= 0.4.0' } uuid@7.0.3: - resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + resolution: + { + integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==, + } deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, + } + engines: { node: '>= 0.8' } victory-vendor@37.3.6: - resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==} + resolution: + { + integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==, + } vite-plugin-solid@2.11.14: - resolution: {integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==} + resolution: + { + integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==, + } peerDependencies: '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.0.0 || ^7.0.0 solid-js: ^1.7.2 @@ -5865,8 +9214,11 @@ packages: optional: true vite@8.1.5: - resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 @@ -5908,7 +9260,10 @@ packages: optional: true vitefu@1.1.3: - resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} + resolution: + { + integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==, + } peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: @@ -5916,8 +9271,11 @@ packages: optional: true vitest@4.1.10: - resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + resolution: + { + integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==, + } + engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 } hasBin: true peerDependencies: '@edge-runtime/vm': '*' @@ -5957,10 +9315,16 @@ packages: optional: true vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + resolution: + { + integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==, + } vue@3.5.40: - resolution: {integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==} + resolution: + { + integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==, + } peerDependencies: typescript: '*' peerDependenciesMeta: @@ -5968,75 +9332,135 @@ packages: optional: true w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==, + } + engines: { node: '>=18' } walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + resolution: + { + integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, + } warn-once@0.1.1: - resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} + resolution: + { + integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==, + } wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + } webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + resolution: + { + integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, + } webidl-conversions@8.0.1: - resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==, + } + engines: { node: '>=20' } whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + resolution: + { + integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, + } whatwg-mimetype@5.0.0: - resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==, + } + engines: { node: '>=20' } whatwg-url-minimum@0.1.2: - resolution: {integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==} + resolution: + { + integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==, + } whatwg-url@16.0.1: - resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { + integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + resolution: + { + integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, + } which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + resolution: + { + integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, + } which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: '>= 8' } hasBin: true why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, + } + engines: { node: '>=8' } hasBin: true world-atlas@2.0.2: - resolution: {integrity: sha512-IXfV0qwlKXpckz1FhwXVwKRjiIhOnWttOskm5CtxMsjgE/MXAYRHWJqgXOpM8IkcPBoXnyTU5lFHcYa5ChG0LQ==} + resolution: + { + integrity: sha512-IXfV0qwlKXpckz1FhwXVwKRjiIhOnWttOskm5CtxMsjgE/MXAYRHWJqgXOpM8IkcPBoXnyTU5lFHcYa5ChG0LQ==, + } wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, + } + engines: { node: '>=8' } wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: '>=10' } wrap-ansi@9.0.2: - resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==, + } + engines: { node: '>=18' } wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } ws@6.2.6: - resolution: {integrity: sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==} + resolution: + { + integrity: sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==, + } peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -6047,8 +9471,11 @@ packages: optional: true ws@7.5.13: - resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} - engines: {node: '>=8.3.0'} + resolution: + { + integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==, + } + engines: { node: '>=8.3.0' } peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -6059,8 +9486,11 @@ packages: optional: true ws@8.21.0: - resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==, + } + engines: { node: '>=10.0.0' } peerDependencies: bufferutil: ^4.0.1 utf-8-validate: '>=5.0.2' @@ -6071,8 +9501,11 @@ packages: optional: true xcode@3.0.1: - resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==, + } + engines: { node: '>=10.0.0' } xhr2@0.2.1: resolution: @@ -6082,82 +9515,141 @@ packages: engines: { node: '>= 6' } xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==, + } + engines: { node: '>=18' } xml2js@0.6.0: - resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==, + } + engines: { node: '>=4.0.0' } xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, + } + engines: { node: '>=4.0' } xmlbuilder@15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} - engines: {node: '>=8.0'} + resolution: + { + integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==, + } + engines: { node: '>=8.0' } xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + resolution: + { + integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, + } y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + resolution: + { + integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, + } y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: '>=10' } yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + } yaml@2.9.0: - resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} - engines: {node: '>= 14.6'} + resolution: + { + integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==, + } + engines: { node: '>= 14.6' } hasBin: true yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, + } + engines: { node: '>=6' } yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: '>=12' } yargs-parser@22.0.0: - resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + resolution: + { + integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, + } + engines: { node: '>=8' } yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + } + engines: { node: '>=12' } yargs@18.1.0: - resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + resolution: + { + integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: '>=10' } yoctocolors@2.2.0: - resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==, + } + engines: { node: '>=18' } zimmerframe@1.1.4: - resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + resolution: + { + integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==, + } zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + resolution: + { + integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==, + } zrender@6.1.0: - resolution: {integrity: sha512-oEGMDB6pOP2S6OwRR4PdVv610zrjnA3Bh+JnSG12fYJlBKjtNAoEb5fSUoCOOINlH96I2fU38/A2UpRKs67xYQ==} + resolution: + { + integrity: sha512-oEGMDB6pOP2S6OwRR4PdVv610zrjnA3Bh+JnSG12fYJlBKjtNAoEb5fSUoCOOINlH96I2fU38/A2UpRKs67xYQ==, + } snapshots: - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 diff --git a/scripts/catalog-definition-shapes.test.mjs b/scripts/catalog-definition-shapes.test.mjs index 55456308..1b1c2acf 100644 --- a/scripts/catalog-definition-shapes.test.mjs +++ b/scripts/catalog-definition-shapes.test.mjs @@ -58,9 +58,9 @@ describe('catalog definition shapes', () => { ) expect(classification.parameterless).toEqual([]) - expect(classification.static).toBe(117) + expect(classification.static).toBe(123) expect(classification.responsive.sort()).toEqual(responsiveDefinitions) - expect(classification.static + classification.responsive.length).toBe(122) + expect(classification.static + classification.responsive.length).toBe(128) }) it('classifies the base definition once when options are added', () => { diff --git a/scripts/generate-shadcn-cases.mjs b/scripts/generate-shadcn-cases.mjs index 78b5b9d7..cf9dbb4d 100644 --- a/scripts/generate-shadcn-cases.mjs +++ b/scripts/generate-shadcn-cases.mjs @@ -10,6 +10,13 @@ const catalogPath = path.join( const casesRoot = path.join(root, 'benchmarks/conformance/cases') const coverageRoot = path.join(root, 'benchmarks/conformance') const catalog = JSON.parse(await readFile(catalogPath, 'utf8')) +const handAuthoredCases = new Set([ + 'chart-bar-multiple', + 'chart-pie-donut-text', + 'chart-radar-multiple', + 'chart-radial-text', + 'chart-tooltip-advanced', +]) let nextCaseNumber = Math.max( 126, @@ -25,7 +32,7 @@ for (const entry of catalog.cases) { nextCaseNumber += 1 } const caseNumber = Number(entry.localCaseId.match(/^(\d+)-/u)?.[1] ?? 0) - if (caseNumber < 127) continue + if (handAuthoredCases.has(entry.name)) continue const id = entry.localCaseId const directory = path.join(casesRoot, id) generatedCount += 1 @@ -54,16 +61,24 @@ async function syncDefinitionCoverage() { 'definition-coverage-roadmap.json', ) const roadmap = JSON.parse(await readFile(roadmapPath, 'utf8')) - const generatedEntries = catalog.cases - .filter((entry) => Number(entry.localCaseId?.match(/^(\d+)-/u)?.[1]) >= 127) - .map(coverageEntry) + const generatedEntries = [ + coverageEntry({ + family: 'dashboard', + localCaseId: '127-shadcn-dashboard', + name: 'dashboard', + }), + ...catalog.cases.map(coverageEntry), + ] const generatedIds = new Set(generatedEntries.map((entry) => entry.id)) const retainedCases = roadmap.cases.filter( (entry) => !generatedIds.has(entry.id), ) - const insertionIndex = retainedCases.findIndex((entry) => - entry.id.startsWith('bar-'), - ) + const insertionIndex = + retainedCases.findIndex((entry) => entry.id === '126-drillable-sunburst') + + 1 + if (insertionIndex === 0) { + throw new Error('Could not locate catalog case 126-drillable-sunburst.') + } retainedCases.splice(insertionIndex, 0, ...generatedEntries) roadmap.cases = retainedCases await writeFile(roadmapPath, `${JSON.stringify(roadmap, null, 2)}\n`) @@ -75,7 +90,7 @@ async function syncDefinitionCoverage() { audit, generatedIds, generatedEntries.map(auditRow).join('\n'), - '126-shadcn-tooltip-advanced', + '126-drillable-sunburst', ) audit = audit .replace( @@ -118,7 +133,7 @@ async function syncDefinitionCoverage() { overview, generatedIds, generatedEntries.map(overviewRow).join('\n'), - '126-shadcn-tooltip-advanced', + '126-drillable-sunburst', ) overview = overview .replace( @@ -181,7 +196,8 @@ function overviewRow(entry) { const metadata = catalog.cases.find( (candidate) => candidate.localCaseId === entry.id, ) - return `| [${entry.id} — ${officialTitle(metadata.name)}](./cases/${entry.id}/tanstack.ts) | Definition now | \`current-definition-api\` | \`tanstack.ts\`, \`case.json\` |` + const title = metadata ? officialTitle(metadata.name) : 'Dashboard' + return `| [${entry.id} — ${title}](./cases/${entry.id}/tanstack.ts) | Definition now | \`current-definition-api\` | \`tanstack.ts\`, \`case.json\` |` } function replaceGeneratedRows(source, generatedIds, rows, afterId) { @@ -194,6 +210,7 @@ function replaceGeneratedRows(source, generatedIds, rows, afterId) { const index = retained.findIndex((line) => line.includes(`./cases/${afterId}/`), ) + if (index === -1) throw new Error(`Could not locate coverage row ${afterId}.`) retained.splice(index + 1, 0, rows) return retained.join('\n') } diff --git a/scripts/measure-bundles.mjs b/scripts/measure-bundles.mjs index e32f5bc8..8921fbde 100644 --- a/scripts/measure-bundles.mjs +++ b/scripts/measure-bundles.mjs @@ -1626,7 +1626,7 @@ const entries = [ lockedBudgeted( 'React compact-scale line consumer', 'benchmarks/entries/charts-react-compact-line.ts', - 27.05, + 27.2, { external: ['react', 'react/jsx-runtime', 'react-dom'], rendererBoundary: 'svg', @@ -1688,7 +1688,7 @@ const entries = [ budgeted( 'Motion SVG renderer', 'benchmarks/entries/charts-motion-svg-renderer.ts', - 19.65, + 20.7, { rendererBoundary: 'svg', inputBoundary: { @@ -1794,7 +1794,7 @@ const entries = [ budgeted( 'Stats parity surface', 'benchmarks/entries/charts-stats-parity.ts', - 51.25, + 51.4, ), locked( 'Custom-scale line scene', @@ -1845,12 +1845,12 @@ const entries = [ budgeted( 'Direct D3 quadtree + TanStack DOM host', 'benchmarks/entries/charts-d3-quadtree-dom.ts', - 35.4, + 35.5, ), budgeted( 'Direct D3 Delaunay + TanStack DOM host', 'benchmarks/entries/charts-d3-delaunay-dom.ts', - 40.7, + 40.75, ), measured('D3 array numeric kernel', 'benchmarks/entries/d3-array-kernel.ts'), measured( @@ -2054,7 +2054,7 @@ const entries = [ budgeted( 'React Stats parity surface', 'benchmarks/entries/charts-react-stats-parity.tsx', - 52.1, + 52.3, { external: ['react', 'react/jsx-runtime', 'react-dom'] }, ), measured('Plot renderer integration', 'benchmarks/entries/plot-renderer.ts'),

D{)He;^s1!2W>@Zh}|#1Z`(@q99V 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-line-linear.png b/benchmarks/conformance/shadcn/reference/chart-line-linear.png new file mode 100644 index 0000000000000000000000000000000000000000..8769a60d97d521e8519d26eba930a10a1f897f97 GIT binary patch literal 21449 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-line-multiple.png b/benchmarks/conformance/shadcn/reference/chart-line-multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..65ada71dab451b110ba1b5344a4186b2f9e20edb GIT binary patch literal 28641 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-pie-donut-text.png b/benchmarks/conformance/shadcn/reference/chart-pie-donut-text.png new file mode 100644 index 0000000000000000000000000000000000000000..56403b147c2ed8379ded76a227f0b785cb726a1d GIT binary patch literal 22369 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-pie-donut.png b/benchmarks/conformance/shadcn/reference/chart-pie-donut.png new file mode 100644 index 0000000000000000000000000000000000000000..638f0d046e71ed410025fbcd589bfb6a8162bb1c GIT binary patch literal 19285 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-pie-interactive.png b/benchmarks/conformance/shadcn/reference/chart-pie-interactive.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef41bbed3e3027a21a60fa00bf1ac34463c1cb7 GIT binary patch literal 19906 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 literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-pie-label-custom.png b/benchmarks/conformance/shadcn/reference/chart-pie-label-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..78fa426996fef590d811a7506a7aaf588f6437f0 GIT binary patch literal 20642 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 M{X$6XKC#9B0tC-c7ytkO literal 0 HcmV?d00001 diff --git a/benchmarks/conformance/shadcn/reference/chart-pie-label-list.png b/benchmarks/conformance/shadcn/reference/chart-pie-label-list.png new file mode 100644 index 0000000000000000000000000000000000000000..2891231c45888f0b28d50d6834b039d2925bc2c2 GIT binary patch literal 21590 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 BD?^i}$9$MaZ3cqPQ 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ξySfgCZh2?&_8aA*cqtVyjp^ zJ0jIQPS&QLvU0S2&OajV&>8E7%z%(X>0oUr@gS`7j+JVY!`X!C1-^2$F`KlE>0gw3 zm2}hUR;_)V6Fk-!0#NfKhU?vLr#cCVrbC6cCH*D_10YSNs+G^W_3K3b^mSIObF{SS z`+bZPhzHQSm}aTV(q-Pcbj#uCM+yiVJ6oUomAS-E90pe-n{7I&Db z-slE7KNj*eL$fM z5WD?DEfq;ahXBvvfs5(6ep@B3HgfGrzIoC@V8Z<-O@X^H2W#&Rc);5E;^N7+)mzrW z=T802cy?<-e{S9|PeYUfAQF!evHB^EFVp3S7j>vg!RHNEy0jRMalL-W1uCQD1f#gs zn;(j^iL<0hV4sz~9#!y(0lQ&JE{rOtEb+a=LULFh+JwyhBtFGGz}bp2Q}5TKr4@Tl zr`;}W+(#8)5zCZt+gM2)tdf4K%Rid{fAQ>n-4o@-Sibi`1pO@Yxj@xO z8$w5uLAIWrQ!rYGID>ZAuI(FGTJ<71(=9)RpOyWA)7SQkIJQ4KK-aWb@4f6?Sop`m zOjP_A$M>4SK{gy0Bu@y27a3=#vkW)Iu-ZWLh$G9I>0lvx|Id%BUon4yBO8Y;7mfK8xLe7$cM%jZ8k9i}@y0 z7Z*sRqW5bM<*`tA!fQ6>dng_X7Nbs+o5yQXnk@3+1Xo~dIh%V|j@;8cjEM`2{i^8?J`h2h@7uF}}Z~g?s=&t_U zgRgF#4Hre<2zx`d?CdgJAk_-7ZDtX?0vizZ2wU$D?;%)T>oXnh?rtr4U$xi58JW&w z3d1M*pX$7Qy?uq7xX=Cb-BV2R(?tLLmGpxJrqH0GMI@8s@0VH|gHp{dmSw;I7qJtC~!bVh7L0!9>s%girqE1|ut zX5L)yn^Oti6!olxon^5ra$u6*&F+()k2cSI?!CCsGcK9k_oeo1|LbPwz7l6B52KAce4qovLYMak=)gP`V#8rRV_T9^K*e}w8bcD!o;=l z(sJ_c{11*WABn zz2Un`${dRPpqs{@=k2p$7G-Spmcw(!`HU7VW?`&pAOCC19_DqZ7lHSN zRs|ebWUD~#Y{jqNL&5W7t#Rf!MsmXAn`86v{ksf16s^jVv_D6m{anL#0<74PxD29$ zQQ1_y1-@>?(VH@bx@}I+zZTDQXLpYJgn72tzHTrLTjDq+V8;C{_D)b@{}npLZnflj zPneaX$Ww>k$e&$+y#P0cRN|0%An4vo+}8~~u4k4JR(IGHe}WIyRMIwROj>n2GM}vz zR^@m<#U>7*2unc z=H58>hZ4=MlR_f0p7_uj=TL@*qxkyAMQ+xC5#>9}XWl*&(J>bC{IBG1c&xcONlzO! z<`RWwdEN4vnOQH)>pI%0kbK74RGK_Nv?IbUiZ@YoZj2^bKkDA;JoWbBkNg2A+@{L) zszv1-R^9K8{Bor^TiR}0qvf8{$1NK%i8P7anErM3v#!EK9Wuh*;f-;E>SexiG#f0E z30d7-EnV>I4nC+Fvw4nWD2$q}Fl^AJ-rSzxC{fRKbq~L5^T@FIotPqN`7 zE7y&P&)20Hej4q3i83S|T9xOAoL*Y%F_zbp*HnoIH>5+r1E6p!?m+9Qr;Xx2zg6}U zaZQf)5@~WvnWDMU9aR=c17E5F;_?VLtog~~{|T4*|D_|2{~tyBfB0FUYpR->;Fw;v zoP~|8ud53Rh2qsVb&Tn7jxcgV;Di{VwXcl2q9jPp)-oexd(Qx~g}WadQ!7=eC@UA% zZa^1PG|G&(_wWE=>!%3S24EfICl~{kHehnP0G4$CA@%FmuO&jsf5gV-UhrDaxKEhn zR+tVNfCE9m%B=LcGUE9^y#QiBpW4-_b$qI94Kof{f1w2^7 z&Do|V+kU_f_XM=$$Vj4#%{-+{e|!o92)hi|yKO+8m<8u-1yuGcJvF}Sn~d&5yZTc?MZMh zyIb+#1~7-Y#{t#YeLw`)?B@FfuYR0cm6#N zJ7zvq!A{y4-0uXemi2E_J@K5}NWfsh7Ltaov(;_cNqA2?O|shfwzRZ}hmhW~WO%0? zh6mC`xqa01Hcc<14S;K)Ap=iJ%gP)h5P(egdD-@?U4{B=16c$YFr@%Q@yBktzS|=z z3b1jM=?x%BZ6!|#{bW+8thyzp10IYNOLi-!|4pO=11NuAS*R7JM!Z#UCcL=2~^7a5PklY5c-*U;wZx0UJgE_hFYl zwQQ802y3LTH1Yt@FrPS2*+S$*l~@++!Q(DiV@k~L@raIAqtX;MkvFIXgxZnw3yT_#hIq&fCa>8?So z_~1E<*J+L>BvQ+da`oi5?wB+V( zm2`PUgvHqJ4VWe@(??kw6l?O9w9`e*Xx65qQ7y;f3_Vy8 za^B)Hdd-haHxGN@LPRDHm7ZFOZD}S11QsgpJ0N5MrnFB~elTI~2pM`1wVSSW?28ve#BUKS{{lSwu%;gL z;a41j(v!)*g^FjL8#SsiX0w*NRUF!^eFqyQfHpk?Cq*a;y zgi?>@`H%8LS2Zi(*NDHCY;8P%Vf>zGZjNsrOO51YaeS0IATYQPDs1Xtb5j` z>qU32udizwYkk710JZl;(p7TTn`M=Msj5BsYqmI-8)HS**3X|m|4XG+Wd-9Ltq~Sm zExt5FSE;sdmB#|oDD2+(lW>*FoKv$;@81@wNe<^7Atv$k8GNLr#0zk!VN$q4Vp{L^ z^HXXLkiOFGwK&dLOvA>5J|To^kCBwwl~=3p5J#{yWa=eIuyECny-r~cI0Sa;A41^P zs&S%lY;(1)53plOM#V<8>h+|~4QxBB&4+C>1NSX?1Fz8G_54h*Xs;3{eZFoLQE@Hh zqw)zF=qxvRx@Zj6b(Y@tf#=oH*s(Vx51hF^3q&9@GBWJ@1y7WOD|ERf^7is9&UG7H znUA;rsAU{i+)H$gz*BV;3-cN)NU=FHv+yzM6k=GDWm)a{6m5lP$0~cq_t!o!RG5%E zESRV6FLYvrL2dYBm?_hTm&*flzrI>3%qTz4+l5b-g(q4!YG9Y2=WXD`K7f)WK*P~v zmNWHdK#XO#^h2`Jd`w&CX|db{9w- z>d+>eqJKUDmuJS*`=(j%zAg{v$d#FtGh3l;Mq`xR-VxkmIzqonyB}67l8gOFj6NSE zEOg+U9Pf12T?#?ha_JaAR$9D1Bj^8YE@*8N(n; zxOTHvt*wd3&>TMOl}4j*#9&XMKe-eUJt_%^$D_aVQdFrVWeR7CYP;a8LV)+wXXv