@jcsoftdev/ui 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +132 -2
- package/bin/ui-theme.mjs +45 -0
- package/dist/ai/attachment/attachment.d.ts +19 -0
- package/dist/ai/attachment/attachment.js +87 -0
- package/dist/ai/attachment/index.d.ts +1 -0
- package/dist/ai/attachment/index.js +1 -0
- package/dist/ai/chain-of-thought/chain-of-thought.d.ts +21 -0
- package/dist/ai/chain-of-thought/chain-of-thought.js +88 -0
- package/dist/ai/chain-of-thought/index.d.ts +1 -0
- package/dist/ai/chain-of-thought/index.js +1 -0
- package/dist/ai/chat-list/chat-list.d.ts +24 -0
- package/dist/ai/chat-list/chat-list.js +94 -0
- package/dist/ai/chat-list/group.d.ts +12 -0
- package/dist/ai/chat-list/group.js +37 -0
- package/dist/ai/chat-list/index.d.ts +2 -0
- package/dist/ai/chat-list/index.js +7 -0
- package/dist/ai/chat-message/chat-message.d.ts +23 -0
- package/dist/ai/chat-message/chat-message.js +91 -0
- package/dist/ai/chat-message/index.d.ts +1 -0
- package/dist/ai/chat-message/index.js +1 -0
- package/dist/ai/code-block/code-block.d.ts +12 -0
- package/dist/ai/code-block/code-block.js +80 -0
- package/dist/ai/code-block/highlight.d.ts +9 -0
- package/dist/ai/code-block/highlight.js +160 -0
- package/dist/ai/code-block/index.d.ts +2 -0
- package/dist/ai/code-block/index.js +9 -0
- package/dist/ai/conversation/conversation.d.ts +12 -0
- package/dist/ai/conversation/conversation.js +87 -0
- package/dist/ai/conversation/index.d.ts +2 -0
- package/dist/ai/conversation/index.js +15 -0
- package/dist/ai/conversation/stick.d.ts +18 -0
- package/dist/ai/conversation/stick.js +22 -0
- package/dist/ai/index.d.ts +14 -0
- package/dist/ai/index.js +14 -0
- package/dist/ai/internal/disclosure.d.ts +13 -0
- package/dist/ai/internal/disclosure.js +62 -0
- package/dist/ai/internal/icon-action.d.ts +7 -0
- package/dist/ai/internal/icon-action.js +21 -0
- package/dist/ai/internal/keyframes.d.ts +5 -0
- package/dist/ai/internal/keyframes.js +7 -0
- package/dist/ai/internal/use-copy.d.ts +5 -0
- package/dist/ai/internal/use-copy.js +35 -0
- package/dist/ai/loader/index.d.ts +1 -0
- package/dist/ai/loader/index.js +1 -0
- package/dist/ai/loader/loader.d.ts +12 -0
- package/dist/ai/loader/loader.js +41 -0
- package/dist/ai/markdown/index.d.ts +2 -0
- package/dist/ai/markdown/index.js +6 -0
- package/dist/ai/markdown/markdown.d.ts +12 -0
- package/dist/ai/markdown/markdown.js +159 -0
- package/dist/ai/markdown/parse.d.ts +56 -0
- package/dist/ai/markdown/parse.js +229 -0
- package/dist/ai/message-actions/index.d.ts +1 -0
- package/dist/ai/message-actions/index.js +1 -0
- package/dist/ai/message-actions/message-actions.d.ts +15 -0
- package/dist/ai/message-actions/message-actions.js +72 -0
- package/dist/ai/prompt-input/index.d.ts +2 -0
- package/dist/ai/prompt-input/index.js +5 -0
- package/dist/ai/prompt-input/keys.d.ts +8 -0
- package/dist/ai/prompt-input/keys.js +6 -0
- package/dist/ai/prompt-input/prompt-input.d.ts +29 -0
- package/dist/ai/prompt-input/prompt-input.js +110 -0
- package/dist/ai/prompt-suggestion/index.d.ts +1 -0
- package/dist/ai/prompt-suggestion/index.js +1 -0
- package/dist/ai/prompt-suggestion/prompt-suggestion.d.ts +13 -0
- package/dist/ai/prompt-suggestion/prompt-suggestion.js +44 -0
- package/dist/ai/source/index.d.ts +1 -0
- package/dist/ai/source/index.js +1 -0
- package/dist/ai/source/source.d.ts +12 -0
- package/dist/ai/source/source.js +48 -0
- package/dist/ai/text-shimmer/index.d.ts +1 -0
- package/dist/ai/text-shimmer/index.js +1 -0
- package/dist/ai/text-shimmer/text-shimmer.d.ts +11 -0
- package/dist/ai/text-shimmer/text-shimmer.js +28 -0
- package/dist/ai/tool-call/index.d.ts +1 -0
- package/dist/ai/tool-call/index.js +1 -0
- package/dist/ai/tool-call/tool-call.d.ts +18 -0
- package/dist/ai/tool-call/tool-call.js +84 -0
- package/dist/atoms/avatar/avatar.d.ts +11 -0
- package/dist/atoms/avatar/avatar.js +39 -0
- package/dist/atoms/avatar/index.d.ts +1 -0
- package/dist/atoms/avatar/index.js +4 -0
- package/dist/atoms/avatar-group/avatar-group.d.ts +7 -0
- package/dist/atoms/avatar-group/avatar-group.js +8 -0
- package/dist/atoms/avatar-group/index.d.ts +1 -0
- package/dist/atoms/avatar-group/index.js +4 -0
- package/dist/atoms/big-date/big-date.d.ts +7 -0
- package/dist/atoms/big-date/big-date.js +18 -0
- package/dist/atoms/big-date/index.d.ts +1 -0
- package/dist/atoms/big-date/index.js +4 -0
- package/dist/atoms/button/button.d.ts +11 -0
- package/dist/atoms/button/button.js +60 -0
- package/dist/atoms/button/index.d.ts +1 -0
- package/dist/atoms/button/index.js +6 -0
- package/dist/atoms/checkbox/checkbox.d.ts +5 -0
- package/dist/atoms/checkbox/checkbox.js +18 -0
- package/dist/atoms/checkbox/index.d.ts +1 -0
- package/dist/atoms/checkbox/index.js +4 -0
- package/dist/atoms/chip/chip.d.ts +8 -0
- package/dist/atoms/chip/chip.js +28 -0
- package/dist/atoms/chip/index.d.ts +1 -0
- package/dist/atoms/chip/index.js +4 -0
- package/dist/atoms/icon/icon-map.d.ts +42 -0
- package/dist/atoms/icon/icon-map.js +81 -0
- package/dist/atoms/icon/icon.d.ts +12 -0
- package/dist/atoms/icon/icon.js +13 -0
- package/dist/atoms/icon/index.d.ts +2 -0
- package/dist/atoms/icon/index.js +6 -0
- package/dist/atoms/index.d.ts +16 -0
- package/dist/atoms/index.js +16 -0
- package/dist/atoms/led/index.d.ts +1 -0
- package/dist/atoms/led/index.js +4 -0
- package/dist/atoms/led/led.d.ts +9 -0
- package/dist/atoms/led/led.js +23 -0
- package/dist/atoms/number-value/format.d.ts +10 -0
- package/dist/atoms/number-value/format.js +19 -0
- package/dist/atoms/number-value/index.d.ts +2 -0
- package/dist/atoms/number-value/index.js +14 -0
- package/dist/atoms/number-value/number-value.d.ts +18 -0
- package/dist/atoms/number-value/number-value.js +42 -0
- package/dist/atoms/pressable-feedback/index.d.ts +1 -0
- package/dist/atoms/pressable-feedback/index.js +4 -0
- package/dist/atoms/pressable-feedback/pressable-feedback.d.ts +14 -0
- package/dist/atoms/pressable-feedback/pressable-feedback.js +66 -0
- package/dist/atoms/progress/index.d.ts +1 -0
- package/dist/atoms/progress/index.js +5 -0
- package/dist/atoms/progress/progress.d.ts +9 -0
- package/dist/atoms/progress/progress.js +29 -0
- package/dist/atoms/radio-group/index.d.ts +1 -0
- package/dist/atoms/radio-group/index.js +6 -0
- package/dist/atoms/radio-group/radio-group.d.ts +11 -0
- package/dist/atoms/radio-group/radio-group.js +47 -0
- package/dist/atoms/status-dot/index.d.ts +1 -0
- package/dist/atoms/status-dot/index.js +6 -0
- package/dist/atoms/status-dot/status-dot.d.ts +13 -0
- package/dist/atoms/status-dot/status-dot.js +39 -0
- package/dist/atoms/status-pill/index.d.ts +1 -0
- package/dist/atoms/status-pill/index.js +4 -0
- package/dist/atoms/status-pill/status-pill.d.ts +10 -0
- package/dist/atoms/status-pill/status-pill.js +25 -0
- package/dist/atoms/switch/index.d.ts +1 -0
- package/dist/atoms/switch/index.js +4 -0
- package/dist/atoms/switch/switch.d.ts +5 -0
- package/dist/atoms/switch/switch.js +17 -0
- package/dist/atoms/trend-chip/index.d.ts +2 -0
- package/dist/atoms/trend-chip/index.js +12 -0
- package/dist/atoms/trend-chip/trend-chip.d.ts +14 -0
- package/dist/atoms/trend-chip/trend-chip.js +58 -0
- package/dist/atoms/trend-chip/trend.d.ts +8 -0
- package/dist/atoms/trend-chip/trend.js +21 -0
- package/dist/brand/export.d.ts +7 -0
- package/dist/brand/export.js +62 -0
- package/dist/brand/generate.d.ts +65 -0
- package/dist/brand/generate.js +409 -0
- package/dist/brand/glyphs.d.ts +16 -0
- package/dist/brand/glyphs.js +91 -0
- package/dist/brand/index.d.ts +8 -0
- package/dist/brand/index.js +8 -0
- package/dist/brand/initials.d.ts +6 -0
- package/dist/brand/initials.js +41 -0
- package/dist/brand/logo-forge.d.ts +42 -0
- package/dist/brand/logo-forge.js +441 -0
- package/dist/brand/logo-mark.d.ts +8 -0
- package/dist/brand/logo-mark.js +34 -0
- package/dist/brand/palettes.d.ts +23 -0
- package/dist/brand/palettes.js +47 -0
- package/dist/brand/rng.d.ts +5 -0
- package/dist/brand/rng.js +26 -0
- package/dist/calendar/day-chip/day-chip.d.ts +8 -0
- package/dist/calendar/day-chip/day-chip.js +34 -0
- package/dist/calendar/day-chip/index.d.ts +2 -0
- package/dist/calendar/day-chip/index.js +4 -0
- package/dist/calendar/event-block/event-block.d.ts +9 -0
- package/dist/calendar/event-block/event-block.js +74 -0
- package/dist/calendar/event-block/index.d.ts +2 -0
- package/dist/calendar/event-block/index.js +4 -0
- package/dist/calendar/index.d.ts +5 -0
- package/dist/calendar/index.js +5 -0
- package/dist/calendar/internal/date-utils.d.ts +18 -0
- package/dist/calendar/internal/date-utils.js +66 -0
- package/dist/calendar/internal/index.d.ts +3 -0
- package/dist/calendar/internal/index.js +3 -0
- package/dist/calendar/internal/layout.d.ts +14 -0
- package/dist/calendar/internal/layout.js +42 -0
- package/dist/calendar/internal/styles.d.ts +2 -0
- package/dist/calendar/internal/styles.js +4 -0
- package/dist/calendar/internal/types.d.ts +29 -0
- package/dist/calendar/internal/types.js +0 -0
- package/dist/calendar/month-view/index.d.ts +1 -0
- package/dist/calendar/month-view/index.js +4 -0
- package/dist/calendar/month-view/month-view.d.ts +24 -0
- package/dist/calendar/month-view/month-view.js +110 -0
- package/dist/calendar/timeline-view/index.d.ts +1 -0
- package/dist/calendar/timeline-view/index.js +4 -0
- package/dist/calendar/timeline-view/timeline-view.d.ts +19 -0
- package/dist/calendar/timeline-view/timeline-view.js +64 -0
- package/dist/calendar/week-view/index.d.ts +1 -0
- package/dist/calendar/week-view/index.js +4 -0
- package/dist/calendar/week-view/week-view.d.ts +26 -0
- package/dist/calendar/week-view/week-view.js +172 -0
- package/dist/charts/area-chart/area-chart.d.ts +10 -0
- package/dist/charts/area-chart/area-chart.js +14 -0
- package/dist/charts/area-chart/index.d.ts +1 -0
- package/dist/charts/area-chart/index.js +1 -0
- package/dist/charts/bar-chart/bar-chart.d.ts +35 -0
- package/dist/charts/bar-chart/bar-chart.js +29 -0
- package/dist/charts/bar-chart/bar-race-chart.d.ts +41 -0
- package/dist/charts/bar-chart/bar-race-chart.js +252 -0
- package/dist/charts/bar-chart/bar-race.d.ts +23 -0
- package/dist/charts/bar-chart/bar-race.js +42 -0
- package/dist/charts/bar-chart/drilldown-bar-chart.d.ts +18 -0
- package/dist/charts/bar-chart/drilldown-bar-chart.js +69 -0
- package/dist/charts/bar-chart/index.d.ts +4 -0
- package/dist/charts/bar-chart/index.js +4 -0
- package/dist/charts/beeswarm-chart/beeswarm-chart.d.ts +53 -0
- package/dist/charts/beeswarm-chart/beeswarm-chart.js +356 -0
- package/dist/charts/beeswarm-chart/index.d.ts +1 -0
- package/dist/charts/beeswarm-chart/index.js +1 -0
- package/dist/charts/box-plot/box-plot.d.ts +48 -0
- package/dist/charts/box-plot/box-plot.js +330 -0
- package/dist/charts/box-plot/index.d.ts +1 -0
- package/dist/charts/box-plot/index.js +1 -0
- package/dist/charts/bubble-chart/bubble-chart.d.ts +8 -0
- package/dist/charts/bubble-chart/bubble-chart.js +9 -0
- package/dist/charts/bubble-chart/index.d.ts +1 -0
- package/dist/charts/bubble-chart/index.js +1 -0
- package/dist/charts/bubble-map/bubble-map.d.ts +94 -0
- package/dist/charts/bubble-map/bubble-map.js +520 -0
- package/dist/charts/bubble-map/index.d.ts +1 -0
- package/dist/charts/bubble-map/index.js +1 -0
- package/dist/charts/bullet-chart/bullet-chart.d.ts +49 -0
- package/dist/charts/bullet-chart/bullet-chart.js +478 -0
- package/dist/charts/bullet-chart/bullet-layout.d.ts +21 -0
- package/dist/charts/bullet-chart/bullet-layout.js +30 -0
- package/dist/charts/bullet-chart/index.d.ts +2 -0
- package/dist/charts/bullet-chart/index.js +2 -0
- package/dist/charts/candlestick-chart/candlestick-chart.d.ts +59 -0
- package/dist/charts/candlestick-chart/candlestick-chart.js +514 -0
- package/dist/charts/candlestick-chart/index.d.ts +1 -0
- package/dist/charts/candlestick-chart/index.js +1 -0
- package/dist/charts/chart-grid/chart-grid.d.ts +72 -0
- package/dist/charts/chart-grid/chart-grid.js +114 -0
- package/dist/charts/chart-grid/grid-math.d.ts +26 -0
- package/dist/charts/chart-grid/grid-math.js +37 -0
- package/dist/charts/chart-grid/index.d.ts +2 -0
- package/dist/charts/chart-grid/index.js +2 -0
- package/dist/charts/chord-chart/chord-chart.d.ts +59 -0
- package/dist/charts/chord-chart/chord-chart.js +427 -0
- package/dist/charts/chord-chart/index.d.ts +1 -0
- package/dist/charts/chord-chart/index.js +1 -0
- package/dist/charts/choropleth-map/choropleth-drilldown.d.ts +36 -0
- package/dist/charts/choropleth-map/choropleth-drilldown.js +60 -0
- package/dist/charts/choropleth-map/choropleth-map.d.ts +69 -0
- package/dist/charts/choropleth-map/choropleth-map.js +304 -0
- package/dist/charts/choropleth-map/index.d.ts +2 -0
- package/dist/charts/choropleth-map/index.js +2 -0
- package/dist/charts/combo-chart/combo-chart.d.ts +15 -0
- package/dist/charts/combo-chart/combo-chart.js +14 -0
- package/dist/charts/combo-chart/index.d.ts +1 -0
- package/dist/charts/combo-chart/index.js +1 -0
- package/dist/charts/core/a11y.d.ts +4 -0
- package/dist/charts/core/a11y.js +4 -0
- package/dist/charts/core/axes.d.ts +41 -0
- package/dist/charts/core/axes.js +128 -0
- package/dist/charts/core/breadcrumb.d.ts +17 -0
- package/dist/charts/core/breadcrumb.js +43 -0
- package/dist/charts/core/cartesian/annotations.d.ts +10 -0
- package/dist/charts/core/cartesian/annotations.js +139 -0
- package/dist/charts/core/cartesian/axis-stack.d.ts +43 -0
- package/dist/charts/core/cartesian/axis-stack.js +40 -0
- package/dist/charts/core/cartesian/brush.d.ts +31 -0
- package/dist/charts/core/cartesian/brush.js +211 -0
- package/dist/charts/core/cartesian/cartesian-chart.d.ts +8 -0
- package/dist/charts/core/cartesian/cartesian-chart.js +1068 -0
- package/dist/charts/core/cartesian/category-group-axis.d.ts +6 -0
- package/dist/charts/core/cartesian/category-group-axis.js +39 -0
- package/dist/charts/core/cartesian/category-groups.d.ts +15 -0
- package/dist/charts/core/cartesian/category-groups.js +23 -0
- package/dist/charts/core/cartesian/ink-layer.d.ts +63 -0
- package/dist/charts/core/cartesian/ink-layer.js +371 -0
- package/dist/charts/core/cartesian/layout.d.ts +164 -0
- package/dist/charts/core/cartesian/layout.js +550 -0
- package/dist/charts/core/cartesian/marks.d.ts +33 -0
- package/dist/charts/core/cartesian/marks.js +110 -0
- package/dist/charts/core/cartesian/sync-store.d.ts +34 -0
- package/dist/charts/core/cartesian/sync-store.js +61 -0
- package/dist/charts/core/cartesian/sync.d.ts +20 -0
- package/dist/charts/core/cartesian/sync.js +50 -0
- package/dist/charts/core/cartesian/types.d.ts +156 -0
- package/dist/charts/core/cartesian/types.js +0 -0
- package/dist/charts/core/category-axis.d.ts +37 -0
- package/dist/charts/core/category-axis.js +78 -0
- package/dist/charts/core/category-explorer.d.ts +48 -0
- package/dist/charts/core/category-explorer.js +88 -0
- package/dist/charts/core/chart-frame.d.ts +40 -0
- package/dist/charts/core/chart-frame.js +63 -0
- package/dist/charts/core/chart-states.d.ts +16 -0
- package/dist/charts/core/chart-states.js +79 -0
- package/dist/charts/core/chord.d.ts +59 -0
- package/dist/charts/core/chord.js +104 -0
- package/dist/charts/core/color-scale.d.ts +50 -0
- package/dist/charts/core/color-scale.js +59 -0
- package/dist/charts/core/data-table.d.ts +17 -0
- package/dist/charts/core/data-table.js +28 -0
- package/dist/charts/core/distribution/brush.d.ts +44 -0
- package/dist/charts/core/distribution/brush.js +89 -0
- package/dist/charts/core/distribution/dot-stack.d.ts +39 -0
- package/dist/charts/core/distribution/dot-stack.js +40 -0
- package/dist/charts/core/distribution/explorer.d.ts +23 -0
- package/dist/charts/core/distribution/explorer.js +73 -0
- package/dist/charts/core/distribution/geometry.d.ts +38 -0
- package/dist/charts/core/distribution/geometry.js +37 -0
- package/dist/charts/core/distribution/index.d.ts +11 -0
- package/dist/charts/core/distribution/index.js +11 -0
- package/dist/charts/core/distribution/labels.d.ts +28 -0
- package/dist/charts/core/distribution/labels.js +29 -0
- package/dist/charts/core/distribution/layout.d.ts +103 -0
- package/dist/charts/core/distribution/layout.js +183 -0
- package/dist/charts/core/distribution/marks.d.ts +57 -0
- package/dist/charts/core/distribution/marks.js +269 -0
- package/dist/charts/core/distribution/observations.d.ts +19 -0
- package/dist/charts/core/distribution/observations.js +46 -0
- package/dist/charts/core/distribution/point-index.d.ts +20 -0
- package/dist/charts/core/distribution/point-index.js +47 -0
- package/dist/charts/core/distribution/points.d.ts +15 -0
- package/dist/charts/core/distribution/points.js +18 -0
- package/dist/charts/core/distribution/stats.d.ts +132 -0
- package/dist/charts/core/distribution/stats.js +281 -0
- package/dist/charts/core/distribution/use-legend.d.ts +31 -0
- package/dist/charts/core/distribution/use-legend.js +43 -0
- package/dist/charts/core/distribution/xy-points.d.ts +109 -0
- package/dist/charts/core/distribution/xy-points.js +968 -0
- package/dist/charts/core/downsample.d.ts +21 -0
- package/dist/charts/core/downsample.js +65 -0
- package/dist/charts/core/drawing-height.d.ts +14 -0
- package/dist/charts/core/drawing-height.js +11 -0
- package/dist/charts/core/export-menu.d.ts +20 -0
- package/dist/charts/core/export-menu.js +52 -0
- package/dist/charts/core/export.d.ts +45 -0
- package/dist/charts/core/export.js +162 -0
- package/dist/charts/core/format.d.ts +48 -0
- package/dist/charts/core/format.js +88 -0
- package/dist/charts/core/gantt.d.ts +136 -0
- package/dist/charts/core/gantt.js +362 -0
- package/dist/charts/core/hierarchy-chart.d.ts +76 -0
- package/dist/charts/core/hierarchy-chart.js +158 -0
- package/dist/charts/core/hierarchy.d.ts +118 -0
- package/dist/charts/core/hierarchy.js +229 -0
- package/dist/charts/core/index.d.ts +54 -0
- package/dist/charts/core/index.js +54 -0
- package/dist/charts/core/indicators.d.ts +55 -0
- package/dist/charts/core/indicators.js +125 -0
- package/dist/charts/core/ink.d.ts +127 -0
- package/dist/charts/core/ink.js +178 -0
- package/dist/charts/core/legend.d.ts +23 -0
- package/dist/charts/core/legend.js +79 -0
- package/dist/charts/core/motion.d.ts +33 -0
- package/dist/charts/core/motion.js +81 -0
- package/dist/charts/core/palette.d.ts +38 -0
- package/dist/charts/core/palette.js +52 -0
- package/dist/charts/core/path.d.ts +40 -0
- package/dist/charts/core/path.js +141 -0
- package/dist/charts/core/pattern-defs.d.ts +15 -0
- package/dist/charts/core/pattern-defs.js +83 -0
- package/dist/charts/core/patterns.d.ts +49 -0
- package/dist/charts/core/patterns.js +93 -0
- package/dist/charts/core/plot-overlay.d.ts +36 -0
- package/dist/charts/core/plot-overlay.js +68 -0
- package/dist/charts/core/polar.d.ts +111 -0
- package/dist/charts/core/polar.js +173 -0
- package/dist/charts/core/sankey.d.ts +168 -0
- package/dist/charts/core/sankey.js +354 -0
- package/dist/charts/core/scales/band.d.ts +34 -0
- package/dist/charts/core/scales/band.js +58 -0
- package/dist/charts/core/scales/index.d.ts +4 -0
- package/dist/charts/core/scales/index.js +4 -0
- package/dist/charts/core/scales/linear.d.ts +27 -0
- package/dist/charts/core/scales/linear.js +73 -0
- package/dist/charts/core/scales/log.d.ts +8 -0
- package/dist/charts/core/scales/log.js +30 -0
- package/dist/charts/core/scales/time.d.ts +26 -0
- package/dist/charts/core/scales/time.js +98 -0
- package/dist/charts/core/shape-morph.d.ts +29 -0
- package/dist/charts/core/shape-morph.js +60 -0
- package/dist/charts/core/stack.d.ts +14 -0
- package/dist/charts/core/stack.js +27 -0
- package/dist/charts/core/time-range.d.ts +23 -0
- package/dist/charts/core/time-range.js +27 -0
- package/dist/charts/core/tooltip.d.ts +38 -0
- package/dist/charts/core/tooltip.js +83 -0
- package/dist/charts/core/tree-fit.d.ts +29 -0
- package/dist/charts/core/tree-fit.js +53 -0
- package/dist/charts/core/tree-layout.d.ts +85 -0
- package/dist/charts/core/tree-layout.js +237 -0
- package/dist/charts/core/tree-radial.d.ts +59 -0
- package/dist/charts/core/tree-radial.js +209 -0
- package/dist/charts/core/types.d.ts +106 -0
- package/dist/charts/core/types.js +18 -0
- package/dist/charts/core/unit-glyph.d.ts +40 -0
- package/dist/charts/core/unit-glyph.js +61 -0
- package/dist/charts/core/unit-icons.d.ts +132 -0
- package/dist/charts/core/unit-icons.js +157 -0
- package/dist/charts/core/units.d.ts +101 -0
- package/dist/charts/core/units.js +161 -0
- package/dist/charts/core/use-canvas.d.ts +24 -0
- package/dist/charts/core/use-canvas.js +50 -0
- package/dist/charts/core/use-chart-size.d.ts +19 -0
- package/dist/charts/core/use-chart-size.js +43 -0
- package/dist/charts/core/use-drill.d.ts +26 -0
- package/dist/charts/core/use-drill.js +67 -0
- package/dist/charts/core/use-index-navigation.d.ts +30 -0
- package/dist/charts/core/use-index-navigation.js +47 -0
- package/dist/charts/core/use-pan-zoom.d.ts +56 -0
- package/dist/charts/core/use-pan-zoom.js +163 -0
- package/dist/charts/core/use-series-state.d.ts +13 -0
- package/dist/charts/core/use-series-state.js +26 -0
- package/dist/charts/crossfilter/crossfilter-engine.d.ts +54 -0
- package/dist/charts/crossfilter/crossfilter-engine.js +125 -0
- package/dist/charts/crossfilter/crossfilter.d.ts +140 -0
- package/dist/charts/crossfilter/crossfilter.js +333 -0
- package/dist/charts/crossfilter/index.d.ts +2 -0
- package/dist/charts/crossfilter/index.js +2 -0
- package/dist/charts/donut-chart/center-fit.d.ts +14 -0
- package/dist/charts/donut-chart/center-fit.js +29 -0
- package/dist/charts/donut-chart/donut-chart.d.ts +73 -0
- package/dist/charts/donut-chart/donut-chart.js +639 -0
- package/dist/charts/donut-chart/index.d.ts +1 -0
- package/dist/charts/donut-chart/index.js +1 -0
- package/dist/charts/dumbbell-chart/dumbbell-chart.d.ts +68 -0
- package/dist/charts/dumbbell-chart/dumbbell-chart.js +585 -0
- package/dist/charts/dumbbell-chart/index.d.ts +1 -0
- package/dist/charts/dumbbell-chart/index.js +1 -0
- package/dist/charts/fill-gauge-chart/fill-gauge-chart.d.ts +42 -0
- package/dist/charts/fill-gauge-chart/fill-gauge-chart.js +259 -0
- package/dist/charts/fill-gauge-chart/index.d.ts +1 -0
- package/dist/charts/fill-gauge-chart/index.js +1 -0
- package/dist/charts/funnel-chart/funnel-chart.d.ts +48 -0
- package/dist/charts/funnel-chart/funnel-chart.js +423 -0
- package/dist/charts/funnel-chart/index.d.ts +1 -0
- package/dist/charts/funnel-chart/index.js +1 -0
- package/dist/charts/gantt-chart/gantt-chart.d.ts +120 -0
- package/dist/charts/gantt-chart/gantt-chart.js +1144 -0
- package/dist/charts/gantt-chart/gantt-export.d.ts +26 -0
- package/dist/charts/gantt-chart/gantt-export.js +103 -0
- package/dist/charts/gantt-chart/gantt-marks.d.ts +125 -0
- package/dist/charts/gantt-chart/gantt-marks.js +602 -0
- package/dist/charts/gantt-chart/index.d.ts +1 -0
- package/dist/charts/gantt-chart/index.js +1 -0
- package/dist/charts/gauge-chart/gauge-chart.d.ts +71 -0
- package/dist/charts/gauge-chart/gauge-chart.js +458 -0
- package/dist/charts/gauge-chart/index.d.ts +1 -0
- package/dist/charts/gauge-chart/index.js +1 -0
- package/dist/charts/globe-chart/globe-chart.d.ts +75 -0
- package/dist/charts/globe-chart/globe-chart.js +618 -0
- package/dist/charts/globe-chart/index.d.ts +1 -0
- package/dist/charts/globe-chart/index.js +1 -0
- package/dist/charts/heatmap-chart/calendar-heatmap.d.ts +47 -0
- package/dist/charts/heatmap-chart/calendar-heatmap.js +159 -0
- package/dist/charts/heatmap-chart/calendar-layout.d.ts +27 -0
- package/dist/charts/heatmap-chart/calendar-layout.js +47 -0
- package/dist/charts/heatmap-chart/datetime-columns.d.ts +8 -0
- package/dist/charts/heatmap-chart/datetime-columns.js +29 -0
- package/dist/charts/heatmap-chart/drilldown-heatmap.d.ts +33 -0
- package/dist/charts/heatmap-chart/drilldown-heatmap.js +58 -0
- package/dist/charts/heatmap-chart/heatmap-chart.d.ts +59 -0
- package/dist/charts/heatmap-chart/heatmap-chart.js +127 -0
- package/dist/charts/heatmap-chart/heatmap-grid.d.ts +75 -0
- package/dist/charts/heatmap-chart/heatmap-grid.js +494 -0
- package/dist/charts/heatmap-chart/heatmap-scale.d.ts +19 -0
- package/dist/charts/heatmap-chart/heatmap-scale.js +38 -0
- package/dist/charts/heatmap-chart/hex-layout.d.ts +35 -0
- package/dist/charts/heatmap-chart/hex-layout.js +58 -0
- package/dist/charts/heatmap-chart/index.d.ts +9 -0
- package/dist/charts/heatmap-chart/index.js +12 -0
- package/dist/charts/hex-tile-map/hex-layout.d.ts +40 -0
- package/dist/charts/hex-tile-map/hex-layout.js +96 -0
- package/dist/charts/hex-tile-map/hex-tile-map.d.ts +41 -0
- package/dist/charts/hex-tile-map/hex-tile-map.js +307 -0
- package/dist/charts/hex-tile-map/index.d.ts +2 -0
- package/dist/charts/hex-tile-map/index.js +2 -0
- package/dist/charts/hierarchy-morph/hierarchy-morph.d.ts +47 -0
- package/dist/charts/hierarchy-morph/hierarchy-morph.js +355 -0
- package/dist/charts/hierarchy-morph/index.d.ts +1 -0
- package/dist/charts/hierarchy-morph/index.js +1 -0
- package/dist/charts/histogram/histogram.d.ts +55 -0
- package/dist/charts/histogram/histogram.js +444 -0
- package/dist/charts/histogram/index.d.ts +1 -0
- package/dist/charts/histogram/index.js +1 -0
- package/dist/charts/icicle-chart/icicle-chart.d.ts +41 -0
- package/dist/charts/icicle-chart/icicle-chart.js +360 -0
- package/dist/charts/icicle-chart/index.d.ts +1 -0
- package/dist/charts/icicle-chart/index.js +1 -0
- package/dist/charts/index.d.ts +50 -0
- package/dist/charts/index.js +50 -0
- package/dist/charts/isotype-rows/index.d.ts +1 -0
- package/dist/charts/isotype-rows/index.js +1 -0
- package/dist/charts/isotype-rows/isotype-rows.d.ts +42 -0
- package/dist/charts/isotype-rows/isotype-rows.js +274 -0
- package/dist/charts/line-chart/index.d.ts +2 -0
- package/dist/charts/line-chart/index.js +2 -0
- package/dist/charts/line-chart/line-chart.d.ts +15 -0
- package/dist/charts/line-chart/line-chart.js +19 -0
- package/dist/charts/line-chart/line-drilldown.d.ts +18 -0
- package/dist/charts/line-chart/line-drilldown.js +51 -0
- package/dist/charts/lollipop-chart/index.d.ts +1 -0
- package/dist/charts/lollipop-chart/index.js +1 -0
- package/dist/charts/lollipop-chart/lollipop-chart.d.ts +45 -0
- package/dist/charts/lollipop-chart/lollipop-chart.js +325 -0
- package/dist/charts/maps/data/peru/index.d.ts +2 -0
- package/dist/charts/maps/data/peru/index.js +4 -0
- package/dist/charts/maps/data/world/index.d.ts +2 -0
- package/dist/charts/maps/data/world/index.js +4 -0
- package/dist/charts/maps/geo/build-topology.d.ts +20 -0
- package/dist/charts/maps/geo/build-topology.js +175 -0
- package/dist/charts/maps/geo/cluster.d.ts +22 -0
- package/dist/charts/maps/geo/cluster.js +58 -0
- package/dist/charts/maps/geo/geo-path.d.ts +20 -0
- package/dist/charts/maps/geo/geo-path.js +132 -0
- package/dist/charts/maps/geo/globe.d.ts +72 -0
- package/dist/charts/maps/geo/globe.js +223 -0
- package/dist/charts/maps/geo/index.d.ts +7 -0
- package/dist/charts/maps/geo/index.js +7 -0
- package/dist/charts/maps/geo/map-data-table.d.ts +25 -0
- package/dist/charts/maps/geo/map-data-table.js +99 -0
- package/dist/charts/maps/geo/map-labels.d.ts +33 -0
- package/dist/charts/maps/geo/map-labels.js +30 -0
- package/dist/charts/maps/geo/map-legend.d.ts +19 -0
- package/dist/charts/maps/geo/map-legend.js +70 -0
- package/dist/charts/maps/geo/map-viewport.d.ts +69 -0
- package/dist/charts/maps/geo/map-viewport.js +326 -0
- package/dist/charts/maps/geo/match.d.ts +9 -0
- package/dist/charts/maps/geo/match.js +12 -0
- package/dist/charts/maps/geo/projection.d.ts +47 -0
- package/dist/charts/maps/geo/projection.js +118 -0
- package/dist/charts/maps/geo/pure.d.ts +11 -0
- package/dist/charts/maps/geo/pure.js +11 -0
- package/dist/charts/maps/geo/routes.d.ts +19 -0
- package/dist/charts/maps/geo/routes.js +63 -0
- package/dist/charts/maps/geo/simplify.d.ts +11 -0
- package/dist/charts/maps/geo/simplify.js +49 -0
- package/dist/charts/maps/geo/topojson.d.ts +18 -0
- package/dist/charts/maps/geo/topojson.js +74 -0
- package/dist/charts/maps/geo/types.d.ts +54 -0
- package/dist/charts/maps/geo/types.js +0 -0
- package/dist/charts/maps/geo/use-map-geometry.d.ts +31 -0
- package/dist/charts/maps/geo/use-map-geometry.js +100 -0
- package/dist/charts/maps/geo/use-map-view.d.ts +44 -0
- package/dist/charts/maps/geo/use-map-view.js +199 -0
- package/dist/charts/maps/geo/view.d.ts +30 -0
- package/dist/charts/maps/geo/view.js +55 -0
- package/dist/charts/maps/index.d.ts +1 -0
- package/dist/charts/maps/index.js +1 -0
- package/dist/charts/parliament-chart/index.d.ts +1 -0
- package/dist/charts/parliament-chart/index.js +1 -0
- package/dist/charts/parliament-chart/parliament-chart.d.ts +40 -0
- package/dist/charts/parliament-chart/parliament-chart.js +325 -0
- package/dist/charts/pictogram-chart/index.d.ts +1 -0
- package/dist/charts/pictogram-chart/index.js +1 -0
- package/dist/charts/pictogram-chart/pictogram-chart.d.ts +43 -0
- package/dist/charts/pictogram-chart/pictogram-chart.js +319 -0
- package/dist/charts/pie-chart/index.d.ts +1 -0
- package/dist/charts/pie-chart/index.js +1 -0
- package/dist/charts/pie-chart/pie-chart.d.ts +7 -0
- package/dist/charts/pie-chart/pie-chart.js +9 -0
- package/dist/charts/polar-area-chart/index.d.ts +1 -0
- package/dist/charts/polar-area-chart/index.js +1 -0
- package/dist/charts/polar-area-chart/polar-area-chart.d.ts +46 -0
- package/dist/charts/polar-area-chart/polar-area-chart.js +389 -0
- package/dist/charts/progress-units/index.d.ts +1 -0
- package/dist/charts/progress-units/index.js +1 -0
- package/dist/charts/progress-units/progress-units.d.ts +39 -0
- package/dist/charts/progress-units/progress-units.js +154 -0
- package/dist/charts/radar-chart/index.d.ts +1 -0
- package/dist/charts/radar-chart/index.js +1 -0
- package/dist/charts/radar-chart/radar-chart.d.ts +44 -0
- package/dist/charts/radar-chart/radar-chart.js +434 -0
- package/dist/charts/radial-bar-chart/index.d.ts +1 -0
- package/dist/charts/radial-bar-chart/index.js +1 -0
- package/dist/charts/radial-bar-chart/radial-bar-chart.d.ts +53 -0
- package/dist/charts/radial-bar-chart/radial-bar-chart.js +430 -0
- package/dist/charts/raincloud-chart/index.d.ts +1 -0
- package/dist/charts/raincloud-chart/index.js +1 -0
- package/dist/charts/raincloud-chart/raincloud-chart.d.ts +39 -0
- package/dist/charts/raincloud-chart/raincloud-chart.js +363 -0
- package/dist/charts/range-area-chart/index.d.ts +1 -0
- package/dist/charts/range-area-chart/index.js +1 -0
- package/dist/charts/range-area-chart/range-area-chart.d.ts +52 -0
- package/dist/charts/range-area-chart/range-area-chart.js +414 -0
- package/dist/charts/sankey-chart/alluvial-chart.d.ts +11 -0
- package/dist/charts/sankey-chart/alluvial-chart.js +45 -0
- package/dist/charts/sankey-chart/index.d.ts +2 -0
- package/dist/charts/sankey-chart/index.js +2 -0
- package/dist/charts/sankey-chart/sankey-chart.d.ts +91 -0
- package/dist/charts/sankey-chart/sankey-chart.js +868 -0
- package/dist/charts/scatter-chart/index.d.ts +1 -0
- package/dist/charts/scatter-chart/index.js +1 -0
- package/dist/charts/scatter-chart/scatter-chart.d.ts +7 -0
- package/dist/charts/scatter-chart/scatter-chart.js +9 -0
- package/dist/charts/slope-chart/index.d.ts +2 -0
- package/dist/charts/slope-chart/index.js +2 -0
- package/dist/charts/slope-chart/label-layout.d.ts +10 -0
- package/dist/charts/slope-chart/label-layout.js +35 -0
- package/dist/charts/slope-chart/slope-chart.d.ts +43 -0
- package/dist/charts/slope-chart/slope-chart.js +421 -0
- package/dist/charts/sparkline/index.d.ts +1 -0
- package/dist/charts/sparkline/index.js +1 -0
- package/dist/charts/sparkline/sparkline.d.ts +30 -0
- package/dist/charts/sparkline/sparkline.js +227 -0
- package/dist/charts/stock-chart/index.d.ts +1 -0
- package/dist/charts/stock-chart/index.js +1 -0
- package/dist/charts/stock-chart/stock-chart.d.ts +103 -0
- package/dist/charts/stock-chart/stock-chart.js +552 -0
- package/dist/charts/stock-chart/stock-drawing-layer.d.ts +66 -0
- package/dist/charts/stock-chart/stock-drawing-layer.js +338 -0
- package/dist/charts/stock-chart/stock-drawings.d.ts +68 -0
- package/dist/charts/stock-chart/stock-drawings.js +74 -0
- package/dist/charts/stock-chart/stock-model.d.ts +87 -0
- package/dist/charts/stock-chart/stock-model.js +83 -0
- package/dist/charts/stock-chart/stock-plot.d.ts +84 -0
- package/dist/charts/stock-chart/stock-plot.js +1005 -0
- package/dist/charts/stock-chart/stock-stats.d.ts +49 -0
- package/dist/charts/stock-chart/stock-stats.js +68 -0
- package/dist/charts/stock-chart/stock-transforms.d.ts +19 -0
- package/dist/charts/stock-chart/stock-transforms.js +72 -0
- package/dist/charts/stock-chart/use-stock-stream.d.ts +16 -0
- package/dist/charts/stock-chart/use-stock-stream.js +16 -0
- package/dist/charts/stream-graph/index.d.ts +2 -0
- package/dist/charts/stream-graph/index.js +2 -0
- package/dist/charts/stream-graph/stream-graph.d.ts +38 -0
- package/dist/charts/stream-graph/stream-graph.js +415 -0
- package/dist/charts/stream-graph/stream-layout.d.ts +34 -0
- package/dist/charts/stream-graph/stream-layout.js +89 -0
- package/dist/charts/sunburst-chart/index.d.ts +1 -0
- package/dist/charts/sunburst-chart/index.js +1 -0
- package/dist/charts/sunburst-chart/sunburst-chart.d.ts +44 -0
- package/dist/charts/sunburst-chart/sunburst-chart.js +437 -0
- package/dist/charts/timeline-chart/index.d.ts +2 -0
- package/dist/charts/timeline-chart/index.js +2 -0
- package/dist/charts/timeline-chart/timeline-chart.d.ts +70 -0
- package/dist/charts/timeline-chart/timeline-chart.js +524 -0
- package/dist/charts/timeline-chart/timeline-lanes.d.ts +43 -0
- package/dist/charts/timeline-chart/timeline-lanes.js +65 -0
- package/dist/charts/tree-chart/index.d.ts +3 -0
- package/dist/charts/tree-chart/index.js +3 -0
- package/dist/charts/tree-chart/tree-card.d.ts +37 -0
- package/dist/charts/tree-chart/tree-card.js +94 -0
- package/dist/charts/tree-chart/tree-chart.d.ts +118 -0
- package/dist/charts/tree-chart/tree-chart.js +850 -0
- package/dist/charts/tree-chart/tree-model.d.ts +87 -0
- package/dist/charts/tree-chart/tree-model.js +116 -0
- package/dist/charts/tree-chart/use-tree-transition.d.ts +16 -0
- package/dist/charts/tree-chart/use-tree-transition.js +84 -0
- package/dist/charts/treemap-chart/index.d.ts +1 -0
- package/dist/charts/treemap-chart/index.js +1 -0
- package/dist/charts/treemap-chart/treemap-chart.d.ts +44 -0
- package/dist/charts/treemap-chart/treemap-chart.js +347 -0
- package/dist/charts/violin-chart/index.d.ts +1 -0
- package/dist/charts/violin-chart/index.js +1 -0
- package/dist/charts/violin-chart/violin-chart.d.ts +53 -0
- package/dist/charts/violin-chart/violin-chart.js +406 -0
- package/dist/charts/waffle-chart/index.d.ts +1 -0
- package/dist/charts/waffle-chart/index.js +1 -0
- package/dist/charts/waffle-chart/waffle-chart.d.ts +40 -0
- package/dist/charts/waffle-chart/waffle-chart.js +273 -0
- package/dist/charts/waterfall-chart/index.d.ts +2 -0
- package/dist/charts/waterfall-chart/index.js +2 -0
- package/dist/charts/waterfall-chart/waterfall-chart.d.ts +38 -0
- package/dist/charts/waterfall-chart/waterfall-chart.js +531 -0
- package/dist/charts/waterfall-chart/waterfall-layout.d.ts +51 -0
- package/dist/charts/waterfall-chart/waterfall-layout.js +54 -0
- package/dist/containers/action-bar/action-bar.d.ts +18 -0
- package/dist/containers/action-bar/action-bar.js +63 -0
- package/dist/containers/action-bar/index.d.ts +1 -0
- package/dist/containers/action-bar/index.js +4 -0
- package/dist/containers/banner/banner.d.ts +10 -0
- package/dist/containers/banner/banner.js +49 -0
- package/dist/containers/banner/index.d.ts +1 -0
- package/dist/containers/banner/index.js +1 -0
- package/dist/containers/card/card.d.ts +6 -0
- package/dist/containers/card/card.js +47 -0
- package/dist/containers/card/index.d.ts +1 -0
- package/dist/containers/card/index.js +1 -0
- package/dist/containers/carousel/carousel.d.ts +19 -0
- package/dist/containers/carousel/carousel.js +178 -0
- package/dist/containers/carousel/index.d.ts +2 -0
- package/dist/containers/carousel/index.js +7 -0
- package/dist/containers/carousel/model.d.ts +4 -0
- package/dist/containers/carousel/model.js +22 -0
- package/dist/containers/cell/cell.d.ts +44 -0
- package/dist/containers/cell/cell.js +83 -0
- package/dist/containers/cell/index.d.ts +1 -0
- package/dist/containers/cell/index.js +6 -0
- package/dist/containers/cols/cols.d.ts +15 -0
- package/dist/containers/cols/cols.js +46 -0
- package/dist/containers/cols/index.d.ts +1 -0
- package/dist/containers/cols/index.js +1 -0
- package/dist/containers/comment/comment.d.ts +14 -0
- package/dist/containers/comment/comment.js +44 -0
- package/dist/containers/comment/index.d.ts +1 -0
- package/dist/containers/comment/index.js +1 -0
- package/dist/containers/data-grid/chart-panel.d.ts +24 -0
- package/dist/containers/data-grid/chart-panel.js +114 -0
- package/dist/containers/data-grid/chart-range.d.ts +46 -0
- package/dist/containers/data-grid/chart-range.js +73 -0
- package/dist/containers/data-grid/column-groups.d.ts +15 -0
- package/dist/containers/data-grid/column-groups.js +29 -0
- package/dist/containers/data-grid/column-menu.d.ts +28 -0
- package/dist/containers/data-grid/column-menu.js +361 -0
- package/dist/containers/data-grid/data-grid.d.ts +199 -0
- package/dist/containers/data-grid/data-grid.demos.d.ts +15 -0
- package/dist/containers/data-grid/data-grid.demos.js +578 -0
- package/dist/containers/data-grid/data-grid.fixtures.d.ts +61 -0
- package/dist/containers/data-grid/data-grid.fixtures.js +316 -0
- package/dist/containers/data-grid/data-grid.js +2850 -0
- package/dist/containers/data-grid/data-grid.samples.d.ts +81 -0
- package/dist/containers/data-grid/data-grid.samples.js +345 -0
- package/dist/containers/data-grid/data-source.d.ts +56 -0
- package/dist/containers/data-grid/data-source.js +90 -0
- package/dist/containers/data-grid/fill-series.d.ts +97 -0
- package/dist/containers/data-grid/fill-series.js +168 -0
- package/dist/containers/data-grid/filter-builder-editor.d.ts +18 -0
- package/dist/containers/data-grid/filter-builder-editor.js +207 -0
- package/dist/containers/data-grid/filter-builder.d.ts +47 -0
- package/dist/containers/data-grid/filter-builder.js +227 -0
- package/dist/containers/data-grid/formula-bar.d.ts +18 -0
- package/dist/containers/data-grid/formula-bar.js +68 -0
- package/dist/containers/data-grid/formula-sheet.d.ts +48 -0
- package/dist/containers/data-grid/formula-sheet.js +175 -0
- package/dist/containers/data-grid/formula.d.ts +86 -0
- package/dist/containers/data-grid/formula.js +580 -0
- package/dist/containers/data-grid/grid-edit.d.ts +52 -0
- package/dist/containers/data-grid/grid-edit.js +99 -0
- package/dist/containers/data-grid/grid-toolbar.d.ts +53 -0
- package/dist/containers/data-grid/grid-toolbar.js +266 -0
- package/dist/containers/data-grid/history.d.ts +61 -0
- package/dist/containers/data-grid/history.js +84 -0
- package/dist/containers/data-grid/index.d.ts +18 -0
- package/dist/containers/data-grid/index.js +18 -0
- package/dist/containers/data-grid/labels.d.ts +141 -0
- package/dist/containers/data-grid/labels.js +157 -0
- package/dist/containers/data-grid/model.d.ts +93 -0
- package/dist/containers/data-grid/model.js +481 -0
- package/dist/containers/data-grid/pivot.d.ts +36 -0
- package/dist/containers/data-grid/pivot.js +126 -0
- package/dist/containers/data-grid/range.d.ts +41 -0
- package/dist/containers/data-grid/range.js +78 -0
- package/dist/containers/data-grid/rows.d.ts +26 -0
- package/dist/containers/data-grid/rows.js +67 -0
- package/dist/containers/data-grid/spreadsheet.demos.d.ts +75 -0
- package/dist/containers/data-grid/spreadsheet.demos.js +423 -0
- package/dist/containers/data-grid/tool-panel.d.ts +31 -0
- package/dist/containers/data-grid/tool-panel.js +222 -0
- package/dist/containers/data-grid/tree.d.ts +25 -0
- package/dist/containers/data-grid/tree.js +65 -0
- package/dist/containers/data-grid/types.d.ts +154 -0
- package/dist/containers/data-grid/types.js +0 -0
- package/dist/containers/data-grid/use-data-source.d.ts +31 -0
- package/dist/containers/data-grid/use-data-source.js +77 -0
- package/dist/containers/data-grid/use-grid-layout.d.ts +25 -0
- package/dist/containers/data-grid/use-grid-layout.js +99 -0
- package/dist/containers/data-grid/virtual.d.ts +53 -0
- package/dist/containers/data-grid/virtual.js +90 -0
- package/dist/containers/data-grid/xlsx-export.d.ts +9 -0
- package/dist/containers/data-grid/xlsx-export.js +39 -0
- package/dist/containers/description-list/description-list.d.ts +8 -0
- package/dist/containers/description-list/description-list.js +19 -0
- package/dist/containers/description-list/index.d.ts +1 -0
- package/dist/containers/description-list/index.js +1 -0
- package/dist/containers/facts/facts.d.ts +8 -0
- package/dist/containers/facts/facts.js +20 -0
- package/dist/containers/facts/index.d.ts +1 -0
- package/dist/containers/facts/index.js +1 -0
- package/dist/containers/file-tree/file-tree.d.ts +18 -0
- package/dist/containers/file-tree/file-tree.js +154 -0
- package/dist/containers/file-tree/index.d.ts +2 -0
- package/dist/containers/file-tree/index.js +16 -0
- package/dist/containers/file-tree/model.d.ts +37 -0
- package/dist/containers/file-tree/model.js +83 -0
- package/dist/containers/generic-row/generic-row.d.ts +16 -0
- package/dist/containers/generic-row/generic-row.js +29 -0
- package/dist/containers/generic-row/index.d.ts +1 -0
- package/dist/containers/generic-row/index.js +1 -0
- package/dist/containers/hbars/hbars.d.ts +57 -0
- package/dist/containers/hbars/hbars.js +124 -0
- package/dist/containers/hbars/index.d.ts +1 -0
- package/dist/containers/hbars/index.js +1 -0
- package/dist/containers/highlight-line/highlight-line.d.ts +7 -0
- package/dist/containers/highlight-line/highlight-line.js +14 -0
- package/dist/containers/highlight-line/index.d.ts +1 -0
- package/dist/containers/highlight-line/index.js +1 -0
- package/dist/containers/index.d.ts +26 -0
- package/dist/containers/index.js +26 -0
- package/dist/containers/item-card-group/index.d.ts +1 -0
- package/dist/containers/item-card-group/index.js +6 -0
- package/dist/containers/item-card-group/item-card-group.d.ts +22 -0
- package/dist/containers/item-card-group/item-card-group.js +66 -0
- package/dist/containers/kanban/index.d.ts +2 -0
- package/dist/containers/kanban/index.js +16 -0
- package/dist/containers/kanban/kanban.d.ts +22 -0
- package/dist/containers/kanban/kanban.js +329 -0
- package/dist/containers/kanban/model.d.ts +49 -0
- package/dist/containers/kanban/model.js +77 -0
- package/dist/containers/kpi/index.d.ts +1 -0
- package/dist/containers/kpi/index.js +1 -0
- package/dist/containers/kpi/kpi.d.ts +15 -0
- package/dist/containers/kpi/kpi.js +40 -0
- package/dist/containers/kpi-group/index.d.ts +1 -0
- package/dist/containers/kpi-group/index.js +4 -0
- package/dist/containers/kpi-group/kpi-group.d.ts +25 -0
- package/dist/containers/kpi-group/kpi-group.js +40 -0
- package/dist/containers/page-header/index.d.ts +1 -0
- package/dist/containers/page-header/index.js +1 -0
- package/dist/containers/page-header/page-header.d.ts +17 -0
- package/dist/containers/page-header/page-header.js +42 -0
- package/dist/containers/resizable/index.d.ts +2 -0
- package/dist/containers/resizable/index.js +14 -0
- package/dist/containers/resizable/model.d.ts +18 -0
- package/dist/containers/resizable/model.js +62 -0
- package/dist/containers/resizable/resizable.d.ts +27 -0
- package/dist/containers/resizable/resizable.js +234 -0
- package/dist/containers/scrolly/index.d.ts +2 -0
- package/dist/containers/scrolly/index.js +9 -0
- package/dist/containers/scrolly/scrolly-logic.d.ts +16 -0
- package/dist/containers/scrolly/scrolly-logic.js +29 -0
- package/dist/containers/scrolly/scrolly.d.ts +45 -0
- package/dist/containers/scrolly/scrolly.js +154 -0
- package/dist/containers/settings-layout/index.d.ts +1 -0
- package/dist/containers/settings-layout/index.js +1 -0
- package/dist/containers/settings-layout/settings-layout.d.ts +21 -0
- package/dist/containers/settings-layout/settings-layout.js +71 -0
- package/dist/containers/settings-row/index.d.ts +1 -0
- package/dist/containers/settings-row/index.js +1 -0
- package/dist/containers/settings-row/settings-row.d.ts +10 -0
- package/dist/containers/settings-row/settings-row.js +31 -0
- package/dist/containers/table/index.d.ts +1 -0
- package/dist/containers/table/index.js +1 -0
- package/dist/containers/table/pin.d.ts +33 -0
- package/dist/containers/table/pin.js +56 -0
- package/dist/containers/table/table.d.ts +60 -0
- package/dist/containers/table/table.js +325 -0
- package/dist/containers/timeline/index.d.ts +1 -0
- package/dist/containers/timeline/index.js +6 -0
- package/dist/containers/timeline/timeline.d.ts +25 -0
- package/dist/containers/timeline/timeline.js +56 -0
- package/dist/containers/toolbar/index.d.ts +1 -0
- package/dist/containers/toolbar/index.js +1 -0
- package/dist/containers/toolbar/toolbar.d.ts +7 -0
- package/dist/containers/toolbar/toolbar.js +18 -0
- package/dist/dashboards/data.d.ts +29 -0
- package/dist/dashboards/data.js +42 -0
- package/dist/dashboards/inicio-dashboard.d.ts +1 -0
- package/dist/dashboards/inicio-dashboard.js +200 -0
- package/dist/dashboards/layout.d.ts +33 -0
- package/dist/dashboards/layout.js +55 -0
- package/dist/forms/accent-picker/accent-picker.d.ts +20 -0
- package/dist/forms/accent-picker/accent-picker.js +51 -0
- package/dist/forms/accent-picker/index.d.ts +1 -0
- package/dist/forms/accent-picker/index.js +6 -0
- package/dist/forms/checkbox-button-group/checkbox-button-group.d.ts +16 -0
- package/dist/forms/checkbox-button-group/checkbox-button-group.js +52 -0
- package/dist/forms/checkbox-button-group/index.d.ts +1 -0
- package/dist/forms/checkbox-button-group/index.js +6 -0
- package/dist/forms/dropzone/dropzone.d.ts +19 -0
- package/dist/forms/dropzone/dropzone.js +103 -0
- package/dist/forms/dropzone/index.d.ts +1 -0
- package/dist/forms/dropzone/index.js +6 -0
- package/dist/forms/emoji-picker/emoji-data.d.ts +14 -0
- package/dist/forms/emoji-picker/emoji-data.js +160 -0
- package/dist/forms/emoji-picker/emoji-picker.d.ts +16 -0
- package/dist/forms/emoji-picker/emoji-picker.js +124 -0
- package/dist/forms/emoji-picker/index.d.ts +3 -0
- package/dist/forms/emoji-picker/index.js +9 -0
- package/dist/forms/emoji-picker/model.d.ts +8 -0
- package/dist/forms/emoji-picker/model.js +44 -0
- package/dist/forms/emoji-reaction-button/emoji-reaction-button.d.ts +28 -0
- package/dist/forms/emoji-reaction-button/emoji-reaction-button.js +95 -0
- package/dist/forms/emoji-reaction-button/index.d.ts +1 -0
- package/dist/forms/emoji-reaction-button/index.js +8 -0
- package/dist/forms/field/field.d.ts +16 -0
- package/dist/forms/field/field.js +26 -0
- package/dist/forms/field/index.d.ts +1 -0
- package/dist/forms/field/index.js +4 -0
- package/dist/forms/form-grid/form-grid.d.ts +7 -0
- package/dist/forms/form-grid/form-grid.js +17 -0
- package/dist/forms/form-grid/index.d.ts +1 -0
- package/dist/forms/form-grid/index.js +4 -0
- package/dist/forms/index.d.ts +20 -0
- package/dist/forms/index.js +20 -0
- package/dist/forms/inline-select/index.d.ts +1 -0
- package/dist/forms/inline-select/index.js +6 -0
- package/dist/forms/inline-select/inline-select.d.ts +14 -0
- package/dist/forms/inline-select/inline-select.js +28 -0
- package/dist/forms/input/index.d.ts +1 -0
- package/dist/forms/input/index.js +4 -0
- package/dist/forms/input/input.d.ts +4 -0
- package/dist/forms/input/input.js +17 -0
- package/dist/forms/input-icon/index.d.ts +1 -0
- package/dist/forms/input-icon/index.js +4 -0
- package/dist/forms/input-icon/input-icon.d.ts +7 -0
- package/dist/forms/input-icon/input-icon.js +19 -0
- package/dist/forms/internal/button-option.d.ts +18 -0
- package/dist/forms/internal/button-option.js +29 -0
- package/dist/forms/label/index.d.ts +1 -0
- package/dist/forms/label/index.js +4 -0
- package/dist/forms/label/label.d.ts +4 -0
- package/dist/forms/label/label.js +11 -0
- package/dist/forms/native-select/index.d.ts +1 -0
- package/dist/forms/native-select/index.js +6 -0
- package/dist/forms/native-select/native-select.d.ts +23 -0
- package/dist/forms/native-select/native-select.js +52 -0
- package/dist/forms/number-stepper/index.d.ts +1 -0
- package/dist/forms/number-stepper/index.js +4 -0
- package/dist/forms/number-stepper/number-stepper.d.ts +17 -0
- package/dist/forms/number-stepper/number-stepper.js +108 -0
- package/dist/forms/pin-input/index.d.ts +1 -0
- package/dist/forms/pin-input/index.js +4 -0
- package/dist/forms/pin-input/pin-input.d.ts +16 -0
- package/dist/forms/pin-input/pin-input.js +61 -0
- package/dist/forms/radio-button-group/index.d.ts +1 -0
- package/dist/forms/radio-button-group/index.js +6 -0
- package/dist/forms/radio-button-group/radio-button-group.d.ts +19 -0
- package/dist/forms/radio-button-group/radio-button-group.js +52 -0
- package/dist/forms/rating/index.d.ts +2 -0
- package/dist/forms/rating/index.js +9 -0
- package/dist/forms/rating/model.d.ts +8 -0
- package/dist/forms/rating/model.js +37 -0
- package/dist/forms/rating/rating.d.ts +20 -0
- package/dist/forms/rating/rating.js +114 -0
- package/dist/forms/select/index.d.ts +1 -0
- package/dist/forms/select/index.js +4 -0
- package/dist/forms/select/select.d.ts +8 -0
- package/dist/forms/select/select.js +28 -0
- package/dist/forms/slider/index.d.ts +2 -0
- package/dist/forms/slider/index.js +22 -0
- package/dist/forms/slider/model.d.ts +16 -0
- package/dist/forms/slider/model.js +65 -0
- package/dist/forms/slider/slider.d.ts +43 -0
- package/dist/forms/slider/slider.js +180 -0
- package/dist/forms/textarea/index.d.ts +1 -0
- package/dist/forms/textarea/index.js +4 -0
- package/dist/forms/textarea/textarea.d.ts +4 -0
- package/dist/forms/textarea/textarea.js +17 -0
- package/dist/forms/time-input/index.d.ts +1 -0
- package/dist/forms/time-input/index.js +4 -0
- package/dist/forms/time-input/time-input.d.ts +15 -0
- package/dist/forms/time-input/time-input.js +87 -0
- package/dist/navigation/floating-toc/floating-toc.d.ts +21 -0
- package/dist/navigation/floating-toc/floating-toc.js +86 -0
- package/dist/navigation/floating-toc/index.d.ts +2 -0
- package/dist/navigation/floating-toc/index.js +6 -0
- package/dist/navigation/floating-toc/model.d.ts +13 -0
- package/dist/navigation/floating-toc/model.js +9 -0
- package/dist/navigation/index.d.ts +4 -0
- package/dist/navigation/index.js +4 -0
- package/dist/navigation/segmented/index.d.ts +1 -0
- package/dist/navigation/segmented/index.js +8 -0
- package/dist/navigation/segmented/segmented.d.ts +9 -0
- package/dist/navigation/segmented/segmented.js +33 -0
- package/dist/navigation/stepper/index.d.ts +1 -0
- package/dist/navigation/stepper/index.js +4 -0
- package/dist/navigation/stepper/stepper.d.ts +11 -0
- package/dist/navigation/stepper/stepper.js +58 -0
- package/dist/navigation/tabs/index.d.ts +1 -0
- package/dist/navigation/tabs/index.js +12 -0
- package/dist/navigation/tabs/tabs.d.ts +20 -0
- package/dist/navigation/tabs/tabs.js +44 -0
- package/dist/overlays/context-menu/context-menu.d.ts +40 -0
- package/dist/overlays/context-menu/context-menu.js +201 -0
- package/dist/overlays/context-menu/index.d.ts +1 -0
- package/dist/overlays/context-menu/index.js +20 -0
- package/dist/overlays/dialog/dialog.d.ts +27 -0
- package/dist/overlays/dialog/dialog.js +128 -0
- package/dist/overlays/dialog/index.d.ts +1 -0
- package/dist/overlays/dialog/index.js +20 -0
- package/dist/overlays/drawer/drawer.d.ts +18 -0
- package/dist/overlays/drawer/drawer.js +82 -0
- package/dist/overlays/drawer/index.d.ts +1 -0
- package/dist/overlays/drawer/index.js +14 -0
- package/dist/overlays/dropdown-menu/dropdown-menu.d.ts +19 -0
- package/dist/overlays/dropdown-menu/dropdown-menu.js +72 -0
- package/dist/overlays/dropdown-menu/index.d.ts +1 -0
- package/dist/overlays/dropdown-menu/index.js +20 -0
- package/dist/overlays/focus-return/focus-return.d.ts +30 -0
- package/dist/overlays/focus-return/focus-return.js +36 -0
- package/dist/overlays/focus-return/index.d.ts +1 -0
- package/dist/overlays/focus-return/index.js +12 -0
- package/dist/overlays/hover-card/hover-card.d.ts +28 -0
- package/dist/overlays/hover-card/hover-card.js +133 -0
- package/dist/overlays/hover-card/index.d.ts +1 -0
- package/dist/overlays/hover-card/index.js +10 -0
- package/dist/overlays/index.d.ts +8 -0
- package/dist/overlays/index.js +8 -0
- package/dist/overlays/popover/index.d.ts +1 -0
- package/dist/overlays/popover/index.js +14 -0
- package/dist/overlays/popover/popover.d.ts +10 -0
- package/dist/overlays/popover/popover.js +34 -0
- package/dist/overlays/toaster/index.d.ts +1 -0
- package/dist/overlays/toaster/index.js +5 -0
- package/dist/overlays/toaster/toaster.d.ts +10 -0
- package/dist/overlays/toaster/toaster.js +30 -0
- package/dist/palette/command-palette/command-palette.d.ts +32 -0
- package/dist/palette/command-palette/command-palette.js +95 -0
- package/dist/palette/command-palette/index.d.ts +1 -0
- package/dist/palette/command-palette/index.js +6 -0
- package/dist/palette/index.d.ts +1 -0
- package/dist/palette/index.js +1 -0
- package/dist/rich-text/index.d.ts +2 -0
- package/dist/rich-text/index.js +14 -0
- package/dist/rich-text/rich-text-editor.d.ts +31 -0
- package/dist/rich-text/rich-text-editor.js +364 -0
- package/dist/rich-text/sanitize.d.ts +17 -0
- package/dist/rich-text/sanitize.js +215 -0
- package/dist/shell/app-shell/app-shell.d.ts +24 -0
- package/dist/shell/app-shell/app-shell.js +42 -0
- package/dist/shell/app-shell/index.d.ts +1 -0
- package/dist/shell/app-shell/index.js +10 -0
- package/dist/shell/index.d.ts +3 -0
- package/dist/shell/index.js +3 -0
- package/dist/shell/sidebar/index.d.ts +1 -0
- package/dist/shell/sidebar/index.js +6 -0
- package/dist/shell/sidebar/sidebar.d.ts +48 -0
- package/dist/shell/sidebar/sidebar.js +110 -0
- package/dist/shell/topbar/index.d.ts +1 -0
- package/dist/shell/topbar/index.js +4 -0
- package/dist/shell/topbar/topbar.d.ts +22 -0
- package/dist/shell/topbar/topbar.js +93 -0
- package/dist/showcase/analytics-bento.d.ts +2 -0
- package/dist/showcase/analytics-bento.js +336 -0
- package/dist/showcase/bento.d.ts +43 -0
- package/dist/showcase/bento.js +131 -0
- package/dist/showcase/controls-bento.d.ts +2 -0
- package/dist/showcase/controls-bento.js +264 -0
- package/dist/showcase/dataviz-bento.d.ts +2 -0
- package/dist/showcase/dataviz-bento.js +444 -0
- package/dist/showcase/kit-tiles.d.ts +15 -0
- package/dist/showcase/kit-tiles.js +192 -0
- package/dist/showcase/operations-bento.d.ts +2 -0
- package/dist/showcase/operations-bento.js +450 -0
- package/dist/showcase/shell.d.ts +8 -0
- package/dist/showcase/shell.js +115 -0
- package/dist/states/empty-state/empty-state.d.ts +11 -0
- package/dist/states/empty-state/empty-state.js +22 -0
- package/dist/states/empty-state/index.d.ts +1 -0
- package/dist/states/empty-state/index.js +1 -0
- package/dist/states/error-state/error-state.d.ts +12 -0
- package/dist/states/error-state/error-state.js +42 -0
- package/dist/states/error-state/index.d.ts +1 -0
- package/dist/states/error-state/index.js +1 -0
- package/dist/states/forbidden-state/forbidden-state.d.ts +8 -0
- package/dist/states/forbidden-state/forbidden-state.js +21 -0
- package/dist/states/forbidden-state/index.d.ts +1 -0
- package/dist/states/forbidden-state/index.js +1 -0
- package/dist/states/index.d.ts +5 -0
- package/dist/states/index.js +5 -0
- package/dist/states/offline-banner/index.d.ts +1 -0
- package/dist/states/offline-banner/index.js +1 -0
- package/dist/states/offline-banner/offline-banner.d.ts +10 -0
- package/dist/states/offline-banner/offline-banner.js +24 -0
- package/dist/states/skeleton/index.d.ts +1 -0
- package/dist/states/skeleton/index.js +1 -0
- package/dist/states/skeleton/skeleton.d.ts +12 -0
- package/dist/states/skeleton/skeleton.js +35 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.js +86 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/reduced-motion.d.ts +2 -0
- package/dist/utils/reduced-motion.js +18 -0
- package/dist/xlsx/crc32.d.ts +4 -0
- package/dist/xlsx/crc32.js +19 -0
- package/dist/xlsx/index.d.ts +3 -0
- package/dist/xlsx/index.js +21 -0
- package/dist/xlsx/xlsx.d.ts +42 -0
- package/dist/xlsx/xlsx.js +242 -0
- package/dist/xlsx/zip.d.ts +16 -0
- package/dist/xlsx/zip.js +98 -0
- package/package.json +116 -4
- package/scripts/build-theme.mjs +423 -0
- package/src/ai/attachment/attachment.tsx +111 -0
- package/src/ai/attachment/index.ts +1 -0
- package/src/ai/chain-of-thought/chain-of-thought.tsx +120 -0
- package/src/ai/chain-of-thought/index.ts +1 -0
- package/src/ai/chat-list/chat-list.tsx +124 -0
- package/src/ai/chat-list/group.ts +48 -0
- package/src/ai/chat-list/index.ts +2 -0
- package/src/ai/chat-message/chat-message.tsx +116 -0
- package/src/ai/chat-message/index.ts +1 -0
- package/src/ai/code-block/code-block.tsx +91 -0
- package/src/ai/code-block/highlight.ts +195 -0
- package/src/ai/code-block/index.ts +8 -0
- package/src/ai/conversation/conversation.tsx +97 -0
- package/src/ai/conversation/index.ts +9 -0
- package/src/ai/conversation/stick.ts +40 -0
- package/src/ai/index.ts +14 -0
- package/src/ai/internal/disclosure.tsx +65 -0
- package/src/ai/internal/icon-action.tsx +25 -0
- package/src/ai/internal/keyframes.tsx +13 -0
- package/src/ai/internal/use-copy.ts +38 -0
- package/src/ai/loader/index.ts +1 -0
- package/src/ai/loader/loader.tsx +60 -0
- package/src/ai/markdown/index.ts +2 -0
- package/src/ai/markdown/markdown.tsx +211 -0
- package/src/ai/markdown/parse.ts +276 -0
- package/src/ai/message-actions/index.ts +1 -0
- package/src/ai/message-actions/message-actions.tsx +85 -0
- package/src/ai/prompt-input/index.ts +2 -0
- package/src/ai/prompt-input/keys.ts +11 -0
- package/src/ai/prompt-input/prompt-input.tsx +148 -0
- package/src/ai/prompt-suggestion/index.ts +1 -0
- package/src/ai/prompt-suggestion/prompt-suggestion.tsx +54 -0
- package/src/ai/source/index.ts +1 -0
- package/src/ai/source/source.tsx +73 -0
- package/src/ai/text-shimmer/index.ts +1 -0
- package/src/ai/text-shimmer/text-shimmer.tsx +42 -0
- package/src/ai/tool-call/index.ts +1 -0
- package/src/ai/tool-call/tool-call.tsx +108 -0
- package/src/atoms/avatar/avatar.tsx +51 -0
- package/src/atoms/avatar/index.ts +1 -0
- package/src/atoms/avatar-group/avatar-group.tsx +16 -0
- package/src/atoms/avatar-group/index.ts +1 -0
- package/src/atoms/big-date/big-date.tsx +23 -0
- package/src/atoms/big-date/index.ts +1 -0
- package/src/atoms/button/button.tsx +76 -0
- package/src/atoms/button/index.ts +6 -0
- package/src/atoms/checkbox/checkbox.tsx +23 -0
- package/src/atoms/checkbox/index.ts +1 -0
- package/src/atoms/chip/chip.tsx +41 -0
- package/src/atoms/chip/index.ts +1 -0
- package/src/atoms/icon/icon-map.ts +83 -0
- package/src/atoms/icon/icon.tsx +23 -0
- package/src/atoms/icon/index.ts +2 -0
- package/src/atoms/index.ts +16 -0
- package/src/atoms/led/index.ts +1 -0
- package/src/atoms/led/led.tsx +30 -0
- package/src/atoms/number-value/format.ts +28 -0
- package/src/atoms/number-value/index.ts +8 -0
- package/src/atoms/number-value/number-value.tsx +60 -0
- package/src/atoms/pressable-feedback/index.ts +1 -0
- package/src/atoms/pressable-feedback/pressable-feedback.tsx +79 -0
- package/src/atoms/progress/index.ts +1 -0
- package/src/atoms/progress/progress.tsx +32 -0
- package/src/atoms/radio-group/index.ts +5 -0
- package/src/atoms/radio-group/radio-group.tsx +52 -0
- package/src/atoms/status-dot/index.ts +6 -0
- package/src/atoms/status-dot/status-dot.tsx +52 -0
- package/src/atoms/status-pill/index.ts +1 -0
- package/src/atoms/status-pill/status-pill.tsx +32 -0
- package/src/atoms/switch/index.ts +1 -0
- package/src/atoms/switch/switch.tsx +20 -0
- package/src/atoms/trend-chip/index.ts +8 -0
- package/src/atoms/trend-chip/trend-chip.tsx +73 -0
- package/src/atoms/trend-chip/trend.ts +24 -0
- package/src/brand/export.ts +67 -0
- package/src/brand/generate.ts +531 -0
- package/src/brand/glyphs.ts +113 -0
- package/src/brand/index.ts +8 -0
- package/src/brand/initials.ts +51 -0
- package/src/brand/logo-forge.tsx +523 -0
- package/src/brand/logo-mark.tsx +40 -0
- package/src/brand/palettes.ts +69 -0
- package/src/brand/rng.ts +25 -0
- package/src/calendar/day-chip/day-chip.tsx +34 -0
- package/src/calendar/day-chip/index.ts +2 -0
- package/src/calendar/event-block/event-block.tsx +74 -0
- package/src/calendar/event-block/index.ts +2 -0
- package/src/calendar/index.ts +5 -0
- package/src/calendar/internal/date-utils.ts +78 -0
- package/src/calendar/internal/index.ts +3 -0
- package/src/calendar/internal/layout.ts +60 -0
- package/src/calendar/internal/styles.ts +3 -0
- package/src/calendar/internal/types.ts +32 -0
- package/src/calendar/month-view/index.ts +1 -0
- package/src/calendar/month-view/month-view.tsx +157 -0
- package/src/calendar/timeline-view/index.ts +1 -0
- package/src/calendar/timeline-view/timeline-view.tsx +100 -0
- package/src/calendar/week-view/index.ts +1 -0
- package/src/calendar/week-view/week-view.tsx +216 -0
- package/src/charts/README.md +598 -0
- package/src/charts/area-chart/area-chart.tsx +23 -0
- package/src/charts/area-chart/index.ts +1 -0
- package/src/charts/bar-chart/bar-chart.tsx +68 -0
- package/src/charts/bar-chart/bar-race-chart.tsx +303 -0
- package/src/charts/bar-chart/bar-race.ts +67 -0
- package/src/charts/bar-chart/drilldown-bar-chart.tsx +85 -0
- package/src/charts/bar-chart/index.ts +4 -0
- package/src/charts/beeswarm-chart/beeswarm-chart.tsx +470 -0
- package/src/charts/beeswarm-chart/index.ts +1 -0
- package/src/charts/box-plot/box-plot.tsx +417 -0
- package/src/charts/box-plot/index.ts +1 -0
- package/src/charts/bubble-chart/bubble-chart.tsx +14 -0
- package/src/charts/bubble-chart/index.ts +1 -0
- package/src/charts/bubble-map/bubble-map.tsx +678 -0
- package/src/charts/bubble-map/index.ts +1 -0
- package/src/charts/bullet-chart/bullet-chart.tsx +577 -0
- package/src/charts/bullet-chart/bullet-layout.ts +47 -0
- package/src/charts/bullet-chart/index.ts +2 -0
- package/src/charts/candlestick-chart/candlestick-chart.tsx +608 -0
- package/src/charts/candlestick-chart/index.ts +1 -0
- package/src/charts/chart-grid/chart-grid.tsx +197 -0
- package/src/charts/chart-grid/grid-math.ts +69 -0
- package/src/charts/chart-grid/index.ts +2 -0
- package/src/charts/chord-chart/chord-chart.tsx +551 -0
- package/src/charts/chord-chart/index.ts +1 -0
- package/src/charts/choropleth-map/choropleth-drilldown.tsx +98 -0
- package/src/charts/choropleth-map/choropleth-map.tsx +425 -0
- package/src/charts/choropleth-map/index.ts +2 -0
- package/src/charts/combo-chart/combo-chart.tsx +29 -0
- package/src/charts/combo-chart/index.ts +1 -0
- package/src/charts/core/a11y.ts +2 -0
- package/src/charts/core/axes.tsx +176 -0
- package/src/charts/core/breadcrumb.tsx +68 -0
- package/src/charts/core/cartesian/annotations.tsx +161 -0
- package/src/charts/core/cartesian/axis-stack.ts +88 -0
- package/src/charts/core/cartesian/brush.tsx +241 -0
- package/src/charts/core/cartesian/cartesian-chart.tsx +1239 -0
- package/src/charts/core/cartesian/category-group-axis.tsx +43 -0
- package/src/charts/core/cartesian/category-groups.ts +40 -0
- package/src/charts/core/cartesian/ink-layer.tsx +463 -0
- package/src/charts/core/cartesian/layout.ts +796 -0
- package/src/charts/core/cartesian/marks.tsx +158 -0
- package/src/charts/core/cartesian/sync-store.ts +103 -0
- package/src/charts/core/cartesian/sync.tsx +68 -0
- package/src/charts/core/cartesian/types.ts +169 -0
- package/src/charts/core/category-axis.ts +120 -0
- package/src/charts/core/category-explorer.tsx +132 -0
- package/src/charts/core/chart-frame.tsx +119 -0
- package/src/charts/core/chart-states.tsx +89 -0
- package/src/charts/core/chord.ts +176 -0
- package/src/charts/core/color-scale.ts +117 -0
- package/src/charts/core/data-table.tsx +49 -0
- package/src/charts/core/distribution/brush.ts +151 -0
- package/src/charts/core/distribution/dot-stack.ts +78 -0
- package/src/charts/core/distribution/explorer.tsx +96 -0
- package/src/charts/core/distribution/geometry.ts +76 -0
- package/src/charts/core/distribution/index.ts +11 -0
- package/src/charts/core/distribution/labels.ts +56 -0
- package/src/charts/core/distribution/layout.ts +302 -0
- package/src/charts/core/distribution/marks.tsx +334 -0
- package/src/charts/core/distribution/observations.tsx +61 -0
- package/src/charts/core/distribution/point-index.ts +68 -0
- package/src/charts/core/distribution/points.ts +35 -0
- package/src/charts/core/distribution/stats.ts +426 -0
- package/src/charts/core/distribution/use-legend.tsx +76 -0
- package/src/charts/core/distribution/xy-points.tsx +1202 -0
- package/src/charts/core/downsample.ts +85 -0
- package/src/charts/core/drawing-height.ts +22 -0
- package/src/charts/core/export-menu.tsx +68 -0
- package/src/charts/core/export.ts +217 -0
- package/src/charts/core/format.ts +154 -0
- package/src/charts/core/gantt.ts +531 -0
- package/src/charts/core/hierarchy-chart.tsx +236 -0
- package/src/charts/core/hierarchy.ts +380 -0
- package/src/charts/core/index.ts +54 -0
- package/src/charts/core/indicators.ts +175 -0
- package/src/charts/core/ink.ts +321 -0
- package/src/charts/core/legend.tsx +111 -0
- package/src/charts/core/motion.ts +112 -0
- package/src/charts/core/palette.ts +76 -0
- package/src/charts/core/path.ts +198 -0
- package/src/charts/core/pattern-defs.tsx +87 -0
- package/src/charts/core/patterns.ts +121 -0
- package/src/charts/core/plot-overlay.tsx +106 -0
- package/src/charts/core/polar.ts +316 -0
- package/src/charts/core/sankey.ts +544 -0
- package/src/charts/core/scales/band.ts +90 -0
- package/src/charts/core/scales/index.ts +4 -0
- package/src/charts/core/scales/linear.ts +94 -0
- package/src/charts/core/scales/log.ts +35 -0
- package/src/charts/core/scales/time.ts +136 -0
- package/src/charts/core/shape-morph.ts +101 -0
- package/src/charts/core/stack.ts +41 -0
- package/src/charts/core/time-range.ts +51 -0
- package/src/charts/core/tooltip.tsx +126 -0
- package/src/charts/core/tree-fit.ts +90 -0
- package/src/charts/core/tree-layout.ts +384 -0
- package/src/charts/core/tree-radial.ts +303 -0
- package/src/charts/core/types.ts +105 -0
- package/src/charts/core/unit-glyph.tsx +102 -0
- package/src/charts/core/unit-icons.ts +210 -0
- package/src/charts/core/units.ts +267 -0
- package/src/charts/core/use-canvas.ts +77 -0
- package/src/charts/core/use-chart-size.ts +65 -0
- package/src/charts/core/use-drill.ts +100 -0
- package/src/charts/core/use-index-navigation.ts +68 -0
- package/src/charts/core/use-pan-zoom.ts +219 -0
- package/src/charts/core/use-series-state.ts +40 -0
- package/src/charts/crossfilter/crossfilter-engine.ts +207 -0
- package/src/charts/crossfilter/crossfilter.tsx +494 -0
- package/src/charts/crossfilter/index.ts +2 -0
- package/src/charts/donut-chart/center-fit.ts +53 -0
- package/src/charts/donut-chart/donut-chart.tsx +826 -0
- package/src/charts/donut-chart/index.ts +1 -0
- package/src/charts/dumbbell-chart/dumbbell-chart.tsx +723 -0
- package/src/charts/dumbbell-chart/index.ts +1 -0
- package/src/charts/fill-gauge-chart/fill-gauge-chart.tsx +319 -0
- package/src/charts/fill-gauge-chart/index.ts +1 -0
- package/src/charts/funnel-chart/funnel-chart.tsx +517 -0
- package/src/charts/funnel-chart/index.ts +1 -0
- package/src/charts/gantt-chart/gantt-chart.tsx +1369 -0
- package/src/charts/gantt-chart/gantt-export.ts +139 -0
- package/src/charts/gantt-chart/gantt-marks.tsx +710 -0
- package/src/charts/gantt-chart/index.ts +1 -0
- package/src/charts/gauge-chart/gauge-chart.tsx +594 -0
- package/src/charts/gauge-chart/index.ts +1 -0
- package/src/charts/globe-chart/globe-chart.tsx +744 -0
- package/src/charts/globe-chart/index.ts +1 -0
- package/src/charts/heatmap-chart/calendar-heatmap.tsx +221 -0
- package/src/charts/heatmap-chart/calendar-layout.ts +68 -0
- package/src/charts/heatmap-chart/datetime-columns.ts +38 -0
- package/src/charts/heatmap-chart/drilldown-heatmap.tsx +92 -0
- package/src/charts/heatmap-chart/heatmap-chart.tsx +189 -0
- package/src/charts/heatmap-chart/heatmap-grid.tsx +588 -0
- package/src/charts/heatmap-chart/heatmap-scale.ts +64 -0
- package/src/charts/heatmap-chart/hex-layout.ts +88 -0
- package/src/charts/heatmap-chart/index.ts +9 -0
- package/src/charts/hex-tile-map/hex-layout.ts +147 -0
- package/src/charts/hex-tile-map/hex-tile-map.tsx +361 -0
- package/src/charts/hex-tile-map/index.ts +2 -0
- package/src/charts/hierarchy-morph/hierarchy-morph.tsx +455 -0
- package/src/charts/hierarchy-morph/index.ts +1 -0
- package/src/charts/histogram/histogram.tsx +556 -0
- package/src/charts/histogram/index.ts +1 -0
- package/src/charts/icicle-chart/icicle-chart.tsx +466 -0
- package/src/charts/icicle-chart/index.ts +1 -0
- package/src/charts/index.ts +50 -0
- package/src/charts/isotype-rows/index.ts +1 -0
- package/src/charts/isotype-rows/isotype-rows.tsx +336 -0
- package/src/charts/line-chart/index.ts +2 -0
- package/src/charts/line-chart/line-chart.tsx +36 -0
- package/src/charts/line-chart/line-drilldown.tsx +65 -0
- package/src/charts/lollipop-chart/index.ts +1 -0
- package/src/charts/lollipop-chart/lollipop-chart.tsx +402 -0
- package/src/charts/maps/data/README.md +51 -0
- package/src/charts/maps/data/peru/index.ts +5 -0
- package/src/charts/maps/data/world/index.ts +5 -0
- package/src/charts/maps/geo/build-topology.ts +226 -0
- package/src/charts/maps/geo/cluster.ts +81 -0
- package/src/charts/maps/geo/geo-path.ts +153 -0
- package/src/charts/maps/geo/globe.ts +309 -0
- package/src/charts/maps/geo/index.ts +7 -0
- package/src/charts/maps/geo/map-data-table.tsx +141 -0
- package/src/charts/maps/geo/map-labels.ts +60 -0
- package/src/charts/maps/geo/map-legend.tsx +82 -0
- package/src/charts/maps/geo/map-viewport.tsx +404 -0
- package/src/charts/maps/geo/match.ts +12 -0
- package/src/charts/maps/geo/projection.ts +177 -0
- package/src/charts/maps/geo/pure.ts +12 -0
- package/src/charts/maps/geo/routes.ts +95 -0
- package/src/charts/maps/geo/simplify.ts +57 -0
- package/src/charts/maps/geo/topojson.ts +94 -0
- package/src/charts/maps/geo/types.ts +59 -0
- package/src/charts/maps/geo/use-map-geometry.ts +132 -0
- package/src/charts/maps/geo/use-map-view.ts +253 -0
- package/src/charts/maps/geo/view.ts +100 -0
- package/src/charts/maps/index.ts +1 -0
- package/src/charts/parliament-chart/index.ts +1 -0
- package/src/charts/parliament-chart/parliament-chart.tsx +406 -0
- package/src/charts/pictogram-chart/index.ts +1 -0
- package/src/charts/pictogram-chart/pictogram-chart.tsx +406 -0
- package/src/charts/pie-chart/index.ts +1 -0
- package/src/charts/pie-chart/pie-chart.tsx +16 -0
- package/src/charts/polar-area-chart/index.ts +1 -0
- package/src/charts/polar-area-chart/polar-area-chart.tsx +505 -0
- package/src/charts/progress-units/index.ts +1 -0
- package/src/charts/progress-units/progress-units.tsx +209 -0
- package/src/charts/radar-chart/index.ts +1 -0
- package/src/charts/radar-chart/radar-chart.tsx +550 -0
- package/src/charts/radial-bar-chart/index.ts +1 -0
- package/src/charts/radial-bar-chart/radial-bar-chart.tsx +552 -0
- package/src/charts/raincloud-chart/index.ts +1 -0
- package/src/charts/raincloud-chart/raincloud-chart.tsx +453 -0
- package/src/charts/range-area-chart/index.ts +1 -0
- package/src/charts/range-area-chart/range-area-chart.tsx +516 -0
- package/src/charts/sankey-chart/alluvial-chart.tsx +56 -0
- package/src/charts/sankey-chart/index.ts +2 -0
- package/src/charts/sankey-chart/sankey-chart.tsx +1139 -0
- package/src/charts/scatter-chart/index.ts +1 -0
- package/src/charts/scatter-chart/scatter-chart.tsx +16 -0
- package/src/charts/slope-chart/index.ts +2 -0
- package/src/charts/slope-chart/label-layout.ts +48 -0
- package/src/charts/slope-chart/slope-chart.tsx +484 -0
- package/src/charts/sparkline/index.ts +1 -0
- package/src/charts/sparkline/sparkline.tsx +266 -0
- package/src/charts/stock-chart/index.ts +1 -0
- package/src/charts/stock-chart/stock-chart.tsx +728 -0
- package/src/charts/stock-chart/stock-drawing-layer.tsx +386 -0
- package/src/charts/stock-chart/stock-drawings.ts +121 -0
- package/src/charts/stock-chart/stock-model.ts +167 -0
- package/src/charts/stock-chart/stock-plot.tsx +1133 -0
- package/src/charts/stock-chart/stock-stats.ts +122 -0
- package/src/charts/stock-chart/stock-transforms.ts +86 -0
- package/src/charts/stock-chart/use-stock-stream.ts +28 -0
- package/src/charts/stream-graph/index.ts +2 -0
- package/src/charts/stream-graph/stream-graph.tsx +521 -0
- package/src/charts/stream-graph/stream-layout.ts +131 -0
- package/src/charts/sunburst-chart/index.ts +1 -0
- package/src/charts/sunburst-chart/sunburst-chart.tsx +558 -0
- package/src/charts/timeline-chart/index.ts +2 -0
- package/src/charts/timeline-chart/timeline-chart.tsx +656 -0
- package/src/charts/timeline-chart/timeline-lanes.ts +116 -0
- package/src/charts/tree-chart/index.ts +3 -0
- package/src/charts/tree-chart/tree-card.tsx +132 -0
- package/src/charts/tree-chart/tree-chart.tsx +1071 -0
- package/src/charts/tree-chart/tree-model.ts +217 -0
- package/src/charts/tree-chart/use-tree-transition.ts +116 -0
- package/src/charts/treemap-chart/index.ts +1 -0
- package/src/charts/treemap-chart/treemap-chart.tsx +435 -0
- package/src/charts/violin-chart/index.ts +1 -0
- package/src/charts/violin-chart/violin-chart.tsx +514 -0
- package/src/charts/waffle-chart/index.ts +1 -0
- package/src/charts/waffle-chart/waffle-chart.tsx +354 -0
- package/src/charts/waterfall-chart/index.ts +2 -0
- package/src/charts/waterfall-chart/waterfall-chart.tsx +629 -0
- package/src/charts/waterfall-chart/waterfall-layout.ts +112 -0
- package/src/containers/action-bar/action-bar.tsx +78 -0
- package/src/containers/action-bar/index.ts +1 -0
- package/src/containers/banner/banner.tsx +68 -0
- package/src/containers/banner/index.ts +1 -0
- package/src/containers/card/card.tsx +44 -0
- package/src/containers/card/index.ts +1 -0
- package/src/containers/carousel/carousel.tsx +216 -0
- package/src/containers/carousel/index.ts +2 -0
- package/src/containers/carousel/model.ts +21 -0
- package/src/containers/cell/cell.tsx +127 -0
- package/src/containers/cell/index.ts +8 -0
- package/src/containers/cols/cols.tsx +64 -0
- package/src/containers/cols/index.ts +1 -0
- package/src/containers/comment/comment.tsx +56 -0
- package/src/containers/comment/index.ts +1 -0
- package/src/containers/data-grid/README.md +38 -0
- package/src/containers/data-grid/chart-panel.tsx +141 -0
- package/src/containers/data-grid/chart-range.ts +131 -0
- package/src/containers/data-grid/column-groups.ts +45 -0
- package/src/containers/data-grid/column-menu.tsx +444 -0
- package/src/containers/data-grid/data-grid.demos.tsx +577 -0
- package/src/containers/data-grid/data-grid.fixtures.tsx +358 -0
- package/src/containers/data-grid/data-grid.samples.tsx +441 -0
- package/src/containers/data-grid/data-grid.tsx +3419 -0
- package/src/containers/data-grid/data-source.ts +144 -0
- package/src/containers/data-grid/fill-series.ts +282 -0
- package/src/containers/data-grid/filter-builder-editor.tsx +262 -0
- package/src/containers/data-grid/filter-builder.ts +308 -0
- package/src/containers/data-grid/formula-bar.tsx +80 -0
- package/src/containers/data-grid/formula-sheet.ts +254 -0
- package/src/containers/data-grid/formula.ts +687 -0
- package/src/containers/data-grid/grid-edit.ts +137 -0
- package/src/containers/data-grid/grid-toolbar.tsx +307 -0
- package/src/containers/data-grid/history.ts +137 -0
- package/src/containers/data-grid/index.ts +18 -0
- package/src/containers/data-grid/labels.ts +315 -0
- package/src/containers/data-grid/model.ts +641 -0
- package/src/containers/data-grid/pivot.ts +188 -0
- package/src/containers/data-grid/range.ts +124 -0
- package/src/containers/data-grid/rows.ts +95 -0
- package/src/containers/data-grid/spreadsheet.demos.tsx +520 -0
- package/src/containers/data-grid/tool-panel.tsx +289 -0
- package/src/containers/data-grid/tree.ts +97 -0
- package/src/containers/data-grid/types.ts +166 -0
- package/src/containers/data-grid/use-data-source.ts +124 -0
- package/src/containers/data-grid/use-grid-layout.ts +133 -0
- package/src/containers/data-grid/virtual.ts +158 -0
- package/src/containers/data-grid/xlsx-export.ts +54 -0
- package/src/containers/description-list/description-list.tsx +25 -0
- package/src/containers/description-list/index.ts +1 -0
- package/src/containers/facts/facts.tsx +26 -0
- package/src/containers/facts/index.ts +1 -0
- package/src/containers/file-tree/file-tree.tsx +185 -0
- package/src/containers/file-tree/index.ts +12 -0
- package/src/containers/file-tree/model.ts +111 -0
- package/src/containers/generic-row/generic-row.tsx +41 -0
- package/src/containers/generic-row/index.ts +1 -0
- package/src/containers/hbars/hbars.tsx +204 -0
- package/src/containers/hbars/index.ts +1 -0
- package/src/containers/highlight-line/highlight-line.tsx +17 -0
- package/src/containers/highlight-line/index.ts +1 -0
- package/src/containers/index.ts +26 -0
- package/src/containers/item-card-group/index.ts +5 -0
- package/src/containers/item-card-group/item-card-group.tsx +106 -0
- package/src/containers/kanban/index.ts +14 -0
- package/src/containers/kanban/kanban.tsx +402 -0
- package/src/containers/kanban/model.ts +141 -0
- package/src/containers/kpi/index.ts +1 -0
- package/src/containers/kpi/kpi.tsx +53 -0
- package/src/containers/kpi-group/index.ts +1 -0
- package/src/containers/kpi-group/kpi-group.tsx +71 -0
- package/src/containers/page-header/index.ts +1 -0
- package/src/containers/page-header/page-header.tsx +53 -0
- package/src/containers/resizable/index.ts +9 -0
- package/src/containers/resizable/model.ts +94 -0
- package/src/containers/resizable/resizable.tsx +281 -0
- package/src/containers/scrolly/index.ts +8 -0
- package/src/containers/scrolly/scrolly-logic.ts +41 -0
- package/src/containers/scrolly/scrolly.tsx +206 -0
- package/src/containers/settings-layout/index.ts +1 -0
- package/src/containers/settings-layout/settings-layout.tsx +85 -0
- package/src/containers/settings-row/index.ts +1 -0
- package/src/containers/settings-row/settings-row.tsx +38 -0
- package/src/containers/table/index.ts +1 -0
- package/src/containers/table/pin.ts +91 -0
- package/src/containers/table/table.tsx +406 -0
- package/src/containers/timeline/index.ts +6 -0
- package/src/containers/timeline/timeline.tsx +93 -0
- package/src/containers/toolbar/index.ts +1 -0
- package/src/containers/toolbar/toolbar.tsx +21 -0
- package/src/dashboards/data.ts +40 -0
- package/src/dashboards/inicio-dashboard.tsx +209 -0
- package/src/dashboards/layout.tsx +95 -0
- package/src/forms/accent-picker/accent-picker.tsx +68 -0
- package/src/forms/accent-picker/index.ts +5 -0
- package/src/forms/checkbox-button-group/checkbox-button-group.tsx +66 -0
- package/src/forms/checkbox-button-group/index.ts +5 -0
- package/src/forms/dropzone/dropzone.tsx +127 -0
- package/src/forms/dropzone/index.ts +6 -0
- package/src/forms/emoji-picker/emoji-data.ts +173 -0
- package/src/forms/emoji-picker/emoji-picker.tsx +142 -0
- package/src/forms/emoji-picker/index.ts +3 -0
- package/src/forms/emoji-picker/model.ts +49 -0
- package/src/forms/emoji-reaction-button/emoji-reaction-button.tsx +112 -0
- package/src/forms/emoji-reaction-button/index.ts +7 -0
- package/src/forms/field/field.tsx +53 -0
- package/src/forms/field/index.ts +1 -0
- package/src/forms/form-grid/form-grid.tsx +22 -0
- package/src/forms/form-grid/index.ts +1 -0
- package/src/forms/index.ts +20 -0
- package/src/forms/inline-select/index.ts +5 -0
- package/src/forms/inline-select/inline-select.tsx +41 -0
- package/src/forms/input/index.ts +1 -0
- package/src/forms/input/input.tsx +16 -0
- package/src/forms/input-icon/index.ts +1 -0
- package/src/forms/input-icon/input-icon.tsx +22 -0
- package/src/forms/internal/button-option.tsx +46 -0
- package/src/forms/label/index.ts +1 -0
- package/src/forms/label/label.tsx +11 -0
- package/src/forms/native-select/index.ts +6 -0
- package/src/forms/native-select/native-select.tsx +87 -0
- package/src/forms/number-stepper/index.ts +1 -0
- package/src/forms/number-stepper/number-stepper.tsx +124 -0
- package/src/forms/pin-input/index.ts +1 -0
- package/src/forms/pin-input/pin-input.tsx +79 -0
- package/src/forms/radio-button-group/index.ts +5 -0
- package/src/forms/radio-button-group/radio-button-group.tsx +68 -0
- package/src/forms/rating/index.ts +2 -0
- package/src/forms/rating/model.ts +48 -0
- package/src/forms/rating/rating.tsx +139 -0
- package/src/forms/select/index.ts +1 -0
- package/src/forms/select/select.tsx +29 -0
- package/src/forms/slider/index.ts +17 -0
- package/src/forms/slider/model.ts +89 -0
- package/src/forms/slider/slider.tsx +241 -0
- package/src/forms/textarea/index.ts +1 -0
- package/src/forms/textarea/textarea.tsx +16 -0
- package/src/forms/time-input/index.ts +1 -0
- package/src/forms/time-input/time-input.tsx +116 -0
- package/src/foundations/presets-gallery.mdx +59 -0
- package/src/navigation/floating-toc/floating-toc.tsx +115 -0
- package/src/navigation/floating-toc/index.ts +2 -0
- package/src/navigation/floating-toc/model.ts +23 -0
- package/src/navigation/index.ts +4 -0
- package/src/navigation/segmented/index.ts +6 -0
- package/src/navigation/segmented/segmented.tsx +36 -0
- package/src/navigation/stepper/index.ts +1 -0
- package/src/navigation/stepper/stepper.tsx +60 -0
- package/src/navigation/tabs/index.ts +10 -0
- package/src/navigation/tabs/tabs.tsx +55 -0
- package/src/overlays/context-menu/context-menu.tsx +256 -0
- package/src/overlays/context-menu/index.ts +15 -0
- package/src/overlays/dialog/dialog.tsx +146 -0
- package/src/overlays/dialog/index.ts +12 -0
- package/src/overlays/drawer/drawer.tsx +94 -0
- package/src/overlays/drawer/index.ts +8 -0
- package/src/overlays/dropdown-menu/dropdown-menu.tsx +82 -0
- package/src/overlays/dropdown-menu/index.ts +14 -0
- package/src/overlays/focus-return/focus-return.tsx +60 -0
- package/src/overlays/focus-return/index.ts +7 -0
- package/src/overlays/hover-card/hover-card.tsx +186 -0
- package/src/overlays/hover-card/index.ts +8 -0
- package/src/overlays/index.ts +8 -0
- package/src/overlays/popover/index.ts +8 -0
- package/src/overlays/popover/popover.tsx +35 -0
- package/src/overlays/toaster/index.ts +1 -0
- package/src/overlays/toaster/toaster.tsx +35 -0
- package/src/palette/command-palette/command-palette.tsx +131 -0
- package/src/palette/command-palette/index.ts +5 -0
- package/src/palette/index.ts +1 -0
- package/src/rich-text/index.ts +8 -0
- package/src/rich-text/rich-text-editor.tsx +419 -0
- package/src/rich-text/sanitize.ts +266 -0
- package/src/shell/app-shell/app-shell.tsx +76 -0
- package/src/shell/app-shell/index.ts +6 -0
- package/src/shell/index.ts +3 -0
- package/src/shell/sidebar/index.ts +8 -0
- package/src/shell/sidebar/sidebar.tsx +172 -0
- package/src/shell/topbar/index.ts +1 -0
- package/src/shell/topbar/topbar.tsx +120 -0
- package/src/showcase/analytics-bento.tsx +333 -0
- package/src/showcase/bento.tsx +169 -0
- package/src/showcase/controls-bento.tsx +313 -0
- package/src/showcase/dataviz-bento.tsx +452 -0
- package/src/showcase/kit-tiles.tsx +193 -0
- package/src/showcase/operations-bento.tsx +478 -0
- package/src/showcase/shell.tsx +136 -0
- package/src/states/empty-state/empty-state.tsx +40 -0
- package/src/states/empty-state/index.ts +1 -0
- package/src/states/error-state/error-state.tsx +52 -0
- package/src/states/error-state/index.ts +1 -0
- package/src/states/forbidden-state/forbidden-state.tsx +28 -0
- package/src/states/forbidden-state/index.ts +1 -0
- package/src/states/index.ts +5 -0
- package/src/states/offline-banner/index.ts +1 -0
- package/src/states/offline-banner/offline-banner.tsx +35 -0
- package/src/states/skeleton/index.ts +1 -0
- package/src/states/skeleton/skeleton.tsx +53 -0
- package/src/utils/cn.ts +94 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/reduced-motion.ts +20 -0
- package/src/xlsx/crc32.ts +22 -0
- package/src/xlsx/index.ts +15 -0
- package/src/xlsx/xlsx.ts +390 -0
- package/src/xlsx/zip.ts +117 -0
- package/styles/Theme.kt +246 -0
- package/styles/base.css +45 -0
- package/styles/fonts.css +2 -0
- package/styles/theme.css +272 -0
- package/styles/tokens.css +1109 -0
- package/tokens/default.json +1802 -0
|
@@ -0,0 +1,598 @@
|
|
|
1
|
+
# Charts
|
|
2
|
+
|
|
3
|
+
Our own chart library: pure React + SVG, zero runtime dependencies, themed only through tokens.
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
import { BarChart, LineChart } from "@jcsoftdev/ui/charts";
|
|
7
|
+
import { Sparkline } from "@jcsoftdev/ui/charts/sparkline"; // single entry, tree-shakes
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
| Chart | Folder | Built on |
|
|
11
|
+
| --- | --- | --- |
|
|
12
|
+
| `LineChart` | `line-chart/` | `CartesianChart` (series `kind: "line"`) |
|
|
13
|
+
| `AreaChart` | `area-chart/` | `CartesianChart` (`kind: "area"`) |
|
|
14
|
+
| `BarChart` | `bar-chart/` | `CartesianChart` (`kind: "column"`): ranges, stack groups, patterns, reversed axis, group labels |
|
|
15
|
+
| `DrilldownBarChart` | `bar-chart/` | `BarChart` + `useDrill` + `ChartBreadcrumb` |
|
|
16
|
+
| `BarRaceChart` | `bar-chart/` | `bar-race.ts` rank interpolation, play / pause / scrub |
|
|
17
|
+
| `LollipopChart` | `lollipop-chart/` | stick + dot per category, horizontal or vertical, negatives |
|
|
18
|
+
| `BulletChart` | `bullet-chart/` | `bullet-layout.ts` bands, actual bar, target tick, per-row or shared scale |
|
|
19
|
+
| `ComboChart` | `combo-chart/` | `CartesianChart` (mixed kinds, right axis) |
|
|
20
|
+
| `DonutChart` / `PieChart` | `donut-chart/`, `pie-chart/` | `ChartFrame` + `polar.ts` (rounded arcs, gaps, explode, outside labels, semi variant) |
|
|
21
|
+
| `RadialBarChart` | `radial-bar-chart/` | stroked `arcLine` rings, track, gradient, ring labels |
|
|
22
|
+
| `GaugeChart` | `gauge-chart/` | `arcLine` bands + progress or needle, `useAnimatedNumber` |
|
|
23
|
+
| `RadarChart` | `radar-chart/` | polygon/circle grid, angular hit-testing with `slotAt` |
|
|
24
|
+
| `PolarAreaChart` | `polar-area-chart/` | `arcPath` sectors, radius or area scale |
|
|
25
|
+
| `FunnelChart` | `funnel-chart/` | `funnelStages` geometry (funnel / pyramid, vertical / horizontal) |
|
|
26
|
+
| `Sparkline` | `sparkline/` | scales + paths directly (no frame) |
|
|
27
|
+
| `RangeAreaChart` | `range-area-chart/` | `ChartFrame` + `buildCategoryAxis`: min-max bands with an average line |
|
|
28
|
+
| `StreamGraph` | `stream-graph/` | `streamLayout` (wiggle / silhouette / zero / expand offsets), hover a stream to isolate it |
|
|
29
|
+
| `WaterfallChart` | `waterfall-chart/` | `waterfallLayout` running totals, connectors, up/down/total tokens |
|
|
30
|
+
| `DumbbellChart` | `dumbbell-chart/` | two or more values per row, horizontal or vertical, sortable, change column |
|
|
31
|
+
| `TimelineChart` | `timeline-chart/` | Gantt rows, `assignLanes` stacks overlapping bars, now marker, clock ticks |
|
|
32
|
+
| `CandlestickChart` | `candlestick-chart/` | OHLC candles + volume panel + `ChartBrush` zoom |
|
|
33
|
+
| `StockChart` | `stock-chart/` | candle / OHLC / line / area, range presets (`time-range.ts`), `ChartBrush` navigator, `indicators.ts` overlays and RSI/MACD pane, % comparisons, flags |
|
|
34
|
+
| `GanttChart` | `gantt-chart/` | `gantt.ts` (zoom scale, two-tier header, rows with rollups, orthogonal dependency routes), task tree + timeline in one sticky scroller |
|
|
35
|
+
| `SlopeChart` | `slope-chart/` | two columns, `spreadSlopeLabels` collision avoidance on both sides |
|
|
36
|
+
| `HeatmapChart`, `CalendarHeatmap` | `heatmap-chart/` | `color-scale.ts` + an internal `HeatmapGrid` (`shape="hex"`, `renderer="canvas"`, `Date` columns) |
|
|
37
|
+
| `DrilldownHeatmap` | `heatmap-chart/` | `HeatmapChart` + `ChartBreadcrumb`; each `HeatmapLevel` returns the matrix behind a cell |
|
|
38
|
+
| `ChartGrid` | `chart-grid/` | small multiples (trellis): shared value/x domains, shared legend, columns from the container width |
|
|
39
|
+
| `TreemapChart` | `treemap-chart/` | `hierarchy.ts` (`treemapLayout`, squarified) + `hierarchy-chart.tsx` |
|
|
40
|
+
| `SunburstChart` | `sunburst-chart/` | `hierarchy.ts` (`partitionLayout`, `sectorPath`) + `use-drill.ts`; `half` for a 180 degree fan |
|
|
41
|
+
| `HierarchyMorph` | `hierarchy-morph/` | treemap and sunburst layouts sampled as polygons (`shape-morph.ts`) and blended |
|
|
42
|
+
| `IcicleChart` | `icicle-chart/` | same partition as the sunburst, rectangular |
|
|
43
|
+
| `BoxPlot` | `box-plot/` | `distribution/` (`categoryLayout`, `BoxGlyph`) |
|
|
44
|
+
| `ViolinChart` | `violin-chart/` | `distribution/` (`gaussianKde`, `violinPath`) |
|
|
45
|
+
| `RaincloudChart` | `raincloud-chart/` | `distribution/` (half violin + `BoxGlyph` + jittered rain) |
|
|
46
|
+
| `Histogram` | `histogram/` | `distribution/` (`binEdges`, `binCounts`, `xyLayout`) |
|
|
47
|
+
| `BeeswarmChart` | `beeswarm-chart/` | `distribution/` (`beeswarm` collision layout) |
|
|
48
|
+
| `ScatterChart` | `scatter-chart/` | `XYPointChart` (trend lines, quadrants, time axis, jitter, image markers, canvas renderer) |
|
|
49
|
+
| `BubbleChart` | `bubble-chart/` | `XYPointChart` (`sized`, area-proportional radius, `shading="shaded"` spheres) |
|
|
50
|
+
| `ChoroplethMap` | `choropleth-map/` | `maps/geo/` (`MapViewport`, `useMapGeometry`, `useMapView`) + `heatmapScale` (sequential / diverging / thresholds) |
|
|
51
|
+
| `BubbleMap` | `bubble-map/` | same stage + `clusterPoints`; bubbles and clusters are drawn in screen space |
|
|
52
|
+
| `HexTileMap` | `hex-tile-map/` | own SVG grid (`hex-layout.ts`) + `heatmapScale`, `MapLegend`; no geometry needed |
|
|
53
|
+
| `PictogramChart` | `pictogram-chart/` | unit charts core (`units.ts`, `UnitGlyph`, `useCategoryExplorer`) |
|
|
54
|
+
| `WaffleChart` | `waffle-chart/` | unit charts core (`waffleCounts`, `gridCell`) |
|
|
55
|
+
| `ParliamentChart` | `parliament-chart/` | unit charts core (`parliamentLayout`) |
|
|
56
|
+
| `FillGaugeChart` | `fill-gauge-chart/` | `UNIT_ICONS` shapes as clip paths |
|
|
57
|
+
| `IsotypeRows` | `isotype-rows/` | unit charts core (`unitFractions`, `UnitGlyph`) |
|
|
58
|
+
| `ProgressUnits` | `progress-units/` | unit charts core (`progressFractions`, `UnitGlyph`) |
|
|
59
|
+
| `TreeChart` | `tree-chart/` | `tree-layout.ts` (tidy tree, 4 directions, edge paths), `tree-radial.ts` (radial, dendrogram) + `use-pan-zoom.ts`; HTML card templates, search, lazy children |
|
|
60
|
+
| `ChordChart` | `chord-chart/` | `chord.ts` (groups, ribbons) + `polar.ts` `arcPath`, `useIndexNavigation`, export buttons |
|
|
61
|
+
| `AlluvialChart` | `sankey-chart/` | `SankeyChart` with fixed stage columns (`alluvialGraph`) |
|
|
62
|
+
| `SankeyChart` | `sankey-chart/` | `sankey.ts` (columns by longest path, relaxation, link ordering, cycle breaking) |
|
|
63
|
+
|
|
64
|
+
Everything else lives in `core/` (exported as `@jcsoftdev/ui/charts/core` and re-exported from `@jcsoftdev/ui/charts`).
|
|
65
|
+
Polar and other chart families should be built from these blocks; see "Building a new chart" below.
|
|
66
|
+
|
|
67
|
+
## Data model
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
type XValue = string | number | Date;
|
|
71
|
+
|
|
72
|
+
interface ChartSeries {
|
|
73
|
+
id: string; // stable key, legend toggling
|
|
74
|
+
name: string; // legend, tooltip, data table
|
|
75
|
+
data: ReadonlyArray<number | null>; // one value per category, null = gap
|
|
76
|
+
color?: string; // CSS color; defaults to the palette slot
|
|
77
|
+
dashed?: boolean;
|
|
78
|
+
format?: ValueFormat; // overrides the chart valueFormat
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Cartesian charts take `categories: XValue[]` plus `series`. When every category is a `Date` and no series is a
|
|
83
|
+
column, the x axis becomes a real time scale (`xScale="auto"`); force it with `xScale="band" | "time"`.
|
|
84
|
+
|
|
85
|
+
## Core modules
|
|
86
|
+
|
|
87
|
+
| Module | What it gives you |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| `scales/linear.ts` | `linearScale`, `niceDomain`, `linearTicks`, `tickStep`, `extent`. All scales share `ContinuousScale { domain, range, map, invert, ticks }`. |
|
|
90
|
+
| `scales/log.ts` | `logScale` (base 10, whole decades). |
|
|
91
|
+
| `scales/band.ts` | `bandScale`, `pointScale`: index based (`start(i)`, `center(i)`, `indexAt(px)`, `bandwidth`, `step`). |
|
|
92
|
+
| `scales/time.ts` | `timeScale`, `timeTicks` (day / week-on-Monday / month / year, es-PE labels such as "lun 28", "6 oct", "jul 2026"), `formatDate` ("mar 6 oct 2026"), `shortMonth`, `shortWeekday`. |
|
|
93
|
+
| `format.ts` | `formatNumber` ("12 345.68"), `formatCurrency` ("S/ 1 234.50"), `formatPercent` ("12.5%"), `formatCompact` ("1,2 mil"), `resolveFormat(ValueFormat)`, `resolveAxisFormat` (shorter tick labels). Groups use a no-break space. |
|
|
94
|
+
| `path.ts` | `linePath`, `areaPath` (variable baseline), `curveCommands` (`"linear" \| "smooth"` = monotone cubic, never overshoots), `monotoneTangents`, `roundedRectPath`, `barPath` (rounded at the value end only), `segments`. |
|
|
95
|
+
| `stack.ts` | `stackLayers(series, "normal" \| "percent")`: positives up, negatives down, percent normalised to 0-1. |
|
|
96
|
+
| `palette.ts` | `CHART_PALETTE`, `seriesColor(i, override?)`, `TONE_COLORS` (neutral/accent/danger/warning/success ink + soft). |
|
|
97
|
+
| `use-chart-size.ts` | `useChartSize()` / `useChartWidth()` (ResizeObserver, SSR fallback 640 x 300), `resolveDrawingHeight`, `useIsomorphicLayoutEffect`. |
|
|
98
|
+
| `motion.ts` | `useReducedMotion`, `useEntryAnimation(ref, play, { disabled, replayKey })`, `revealClip`, `fadeIn`, `EASE_OUT`. Web Animations API, skipped under `prefers-reduced-motion`. |
|
|
99
|
+
| `polar.ts` | Angles are radians, 0 at 12 o'clock, clockwise. `polarPoint`, `angleOf`, `normalizeAngle`, `slotAt` (equal slots), `sliceAngles` (proportional slices with a gap), `arcPath` (annular sector, rounded corners clamped to fit), `arcLine` (stroked centre-line arc), `spreadLabels` (vertical label collision avoidance), `funnelStages` (stage geometry and conversion). Unit tested in `test/charts-polar.test.mjs`. |
|
|
100
|
+
| `use-index-navigation.ts` | `useIndexNavigation(count, { wrap })`: hover and keyboard (arrows, Home/End, Escape) share one `active` index, plus the pointer position for the tooltip. Spread `sliderProps` on a `role="slider"` overlay (`pointer-events-none` is fine for polar charts). |
|
|
101
|
+
| `a11y.ts` | `DECORATIVE` (`aria-hidden`) spread for visual-only SVG text and groups. |
|
|
102
|
+
| `motion.ts` (extra) | `useAnimatedNumber(target, { from, duration, disabled })` eases a displayed value; instant under reduced motion. |
|
|
103
|
+
| `use-series-state.ts` | `useSeriesState(initialHidden)`: hidden set, legend highlight, `toggle`. |
|
|
104
|
+
| `chart-frame.tsx` | `ChartFrame`: measures its slot (width and, with `height="fill"`, height), swaps in loading/empty states, places legend / drawing / footer / hidden table (`legendAside` for polar). Render prop `children(width, height)`. |
|
|
105
|
+
| `chart-states.tsx` | `ChartSkeleton` (`shape: "bars" \| "line" \| "ring"`), `ChartEmpty`. |
|
|
106
|
+
| `legend.tsx` | `ChartLegend`: toggle buttons with `aria-pressed`, hover/focus highlight, swatch shapes `line \| dashed \| square \| dot`. The last visible series cannot be hidden. |
|
|
107
|
+
| `tooltip.tsx` | `ChartTooltip`: positioned card with rows (color, name, value, note, emphasis); measures itself and stays inside the container (prefers the left side past 60%, clamps to the edges when neither side fits); moves with a transform. `tooltipLeft` is the pure placement. |
|
|
108
|
+
| `data-table.tsx` | `ChartDataTable`: visually hidden table for screen readers. |
|
|
109
|
+
| `axes.tsx` | `GridLines`, `AxisBottom`, `AxisLeft`, `AxisRight`, `thinTicks`, `estimateTextWidth`. |
|
|
110
|
+
| `category-axis.ts` | `buildCategoryAxis(categories, width, { mode: "point" \| "band" \| "time" })`: positions, ticks, `indexAt`, bandwidth for charts that share a horizontal category/time axis (range area, stream, candlestick). |
|
|
111
|
+
| `plot-overlay.tsx` | `PlotOverlay`: the focusable `role="slider"` layer + pointer hit-testing used by the non-cartesian charts. Props: `indexAt(pointer)`, `keys`, optional `onKey`. |
|
|
112
|
+
| `palette.ts` (direction) | `DIRECTION_COLORS` (`chart-up`, `chart-down`, `chart-total` tokens) and `directionOf(delta)`. |
|
|
113
|
+
| `types.ts` | `XValue`, `ChartSeries`, `ChartAnnotation`, `ValueAxisOptions`, `ChartLabels` + `DEFAULT_LABELS` + `resolveLabels`. |
|
|
114
|
+
| `color-scale.ts` | Token-only color scales as `color-mix()`: `tint(color, %)`, `inkOn(%)` (readable text on a tint), `sequentialColor`, `divergingColor`, `ColorRange` + `rangeIndex` / `rangeColor` (stepped, `tone` aware), `scaleGradient` for legend bars. |
|
|
115
|
+
| `hierarchy.ts` | `buildHierarchy` (sums, drops empty branches, sorts, `branch` index), `ancestors`, `descendants`, `findNode`, `heightOf`; `squarify` and nested `treemapLayout`; `partitionLayout` (spans 0-1), `PartitionView` + `projectSpan` + `interpolateView` (zoom window), `sectorPath` (annular sector, 0 at twelve o'clock). |
|
|
116
|
+
| `use-drill.ts` | `useDrill(data)`: hierarchy + focused node + `drill(id)` / `up()`; `useAnimatedView(view)`: rAF zoom transition, instant under reduced motion. |
|
|
117
|
+
| `hierarchy-chart.tsx` | Shared pieces of the hierarchy charts: `HierarchyLabels` (+ `breadcrumb`, `share`, `drillHint`), `branchColor`, `levelStrength`, `HierarchyHeader` (breadcrumb), `HierarchyLegend`, `HierarchyTable`, `hierarchyKey` (keyboard model), `HIERARCHY_FRAME_CLASS`. |
|
|
118
|
+
| `breadcrumb.tsx` | `ChartBreadcrumb`: drill path, ancestors are buttons, current item has `aria-current`. |
|
|
119
|
+
| `distribution/` | Statistics and geometry for the distribution family; see below. |
|
|
120
|
+
| `units.ts` | Pure unit geometry: `unitCount`/`unitFractions` (23 at 5 per icon = 4 icons + 0.6), `progressFractions` (4.5 of 5 stars), `largestRemainder`/`waffleCounts` (integer cells that add up), `gridCell`, `fitUnitGrid` (largest icons that fit a box), `parliamentRows`/`parliamentLayout` (hemicycle seats, left to right), `assignUnits`. |
|
|
121
|
+
| `shape-morph.ts` | `rectRing`, `sectorRing`, `blendRings`, `ringPath`, `ringCenter`: rectangles and annular sectors as polygons with the same point count, so any blend between them is a point-wise lerp. |
|
|
122
|
+
| `unit-icons.ts` | `UNIT_ICONS` (person, woman, child, heart, tree, house, car, star, drop, clock, pin, scissors, comb, mustache, pole, chair, calendar, bottle, battery, droplet, target, shield; 24 x 24 solid silhouettes), `PICTOGRAM_SILHOUETTES` and `BARBER_SILHOUETTES` (gallery order), `UnitIcon` (a name, a raw path or a `UnitShape` with its own box), `resolveUnitShape`, `UnitCategory`. |
|
|
123
|
+
| `unit-glyph.tsx` | `UnitGlyph` (one icon in a square cell, partial fill clipped, track behind), `popUnits` (staggered entry), `UNIT_FRAME_CLASS` / `UNIT_LEGEND_CLASS` (frame as `@container/units`, legend below under `@sm`). |
|
|
124
|
+
| `category-explorer.tsx` | `useCategoryExplorer` + `CategorySlider`: hover finds the category through `[data-category]`, a pointer-transparent `role="slider"` overlay moves between categories with the keyboard. |
|
|
125
|
+
| `indicators.ts` | Pure, aligned with the input (`null` while warming up), tested in `test/charts-gantt-stock.test.mjs`: `sma`, `ema` (seeded with the SMA, skips leading nulls), `bollinger` (population deviation), `vwap(bars, from)` (anchored), `rsi` (Wilder), `macd` (line, signal, histogram), `rebase` (% change from a base point). |
|
|
126
|
+
| `time-range.ts` | `TimeRangePreset` (`unit: "day" \| "week" \| "month" \| "year" \| "all"`, `count`), `rangeWindow(dates, preset)` (inclusive index window ending at the last date), `shiftDate` (months clamp to the month end). |
|
|
127
|
+
| `gantt.ts` | `GANTT_ZOOMS` (hour / day / week / month / quarter: px per day, header units, snap), `startOf` / `addUnits` (local calendar, weeks start Monday), `ganttDomain`, `ganttScale(domain, zoom, minWidth)` (stretches to fill the pane), `ganttHeader` / `headerCells`, `nonWorkingSpans(domain, workingDays, holidays)`, `snapTime`, `routeDependency` (finish-to-start, right angles, wraps back through the row gutter when the successor starts too early), `roundedPolyline`, `ganttRows(tasks, collapsed)` (depth-first rows, parents roll up dates and duration-weighted progress). Tested in `test/charts-gantt-stock.test.mjs`. |
|
|
128
|
+
| `tree-layout.ts` | Pure, tested in `test/charts-graph.test.mjs`: `treeLayout(root, { direction, siblingGap, levelGap })` (contour packing in the Reingold–Tilford / Walker family: parents centred over children, siblings packed from both ends and averaged so small subtrees spread evenly, one depth band per level), `treeEdgePath` (`curved` / `step` with rounded elbows / `straight`), `treePathToRoot`, `treeKeyMove` (arrow key to parent/child/sibling for each direction), `treeNeighbor`. |
|
|
129
|
+
| `sankey.ts` | Pure, tested in `test/charts-graph.test.mjs`: `sankeyLayout(nodes, links, { width, height, nodeWidth, nodePadding, iterations, align })` (columns by longest path, `justify` sinks, shared scale `ky`, relaxation sweeps with collision resolution, links ordered by the other end), `breakCycles` (weighted Eades–Lin–Smyth order; backward links are reported in `removed` with a reason), `sankeyLinkPath`, `sankeyFlowOf` (everything upstream and downstream of a node). |
|
|
130
|
+
| `tree-radial.ts` | `radialTreeLayout`, `dendrogramLayout`, `radialEdgePath`, `toPolar`: extra layouts returning the same `TreeLayout` (radial nodes carry `angle`, the layout a `center`). Tested in `test/graph-flow-parity.test.mjs`. |
|
|
131
|
+
| `export.ts` / `export-menu.tsx` | `serializeSvg(svg \| svg[])` clones the drawing(s), bakes computed paint (CSS variables, Tailwind classes) into inline style and stacks them vertically; `downloadSvg`, `downloadPng` (canvas, 2x), `exportFileName`, `stackLayout`; `ExportMenu` is the two-button group used by Gantt and Sankey. Browser only, no dependencies. |
|
|
132
|
+
| `chord.ts` | `chordLayout(matrix, { padAngle, startAngle, sortGroups, sortSubgroups })` (groups + chords), `ribbonPath`, `chordsOf`, `groupAt`. Angles follow `polar.ts`. |
|
|
133
|
+
| `sankey.ts` (extra) | `sankeyTraceOf(link)` (whole path through a link), `sankeyDiff(before, after)`, `alluvialGraph({ stages, categories, flows })`; layout options `relax: false` and per-node `column`. |
|
|
134
|
+
| `use-pan-zoom.ts` | `usePanZoom({ minZoom, maxZoom, wheel })`: drag to pan (capture starts after a few pixels so clicks still work), two-pointer pinch, wheel zoom with Ctrl/⌘ by default, `zoomBy`, `wasDrag()`; pure `zoomAround` and `fitView`. |
|
|
135
|
+
| `cartesian/` | `CartesianChart` (the engine), `computeLayout` (pure geometry), `ChartBrush`, marks and annotations. |
|
|
136
|
+
|
|
137
|
+
## Theming
|
|
138
|
+
|
|
139
|
+
Colors only come from CSS variables, applied through `style` (`fill`, `stroke`, `stopColor`) so `var()` resolves; never
|
|
140
|
+
as SVG presentation attributes. Text uses Tailwind token utilities (`fill-ink-3`, `text-[11px]`).
|
|
141
|
+
|
|
142
|
+
- Series 1 is always `var(--accent-word)`, so it follows `data-accent`. Series 2-8 use `--chart-cat-1` ... `--chart-cat-7`.
|
|
143
|
+
- `--chart-up`, `--chart-down`, `--chart-total` are the semantic direction tokens (candles, waterfall, slopes, change columns).
|
|
144
|
+
- `--chart-grid` (gridlines, hover band, empty-state rules) and `--chart-crosshair` are chart-only tokens.
|
|
145
|
+
- All of them are defined in `tokens/default.json` with light and dark values; `pnpm build:styles` regenerates `styles/`.
|
|
146
|
+
|
|
147
|
+
## Interaction and accessibility contract
|
|
148
|
+
|
|
149
|
+
Every chart must keep these, so all families behave the same:
|
|
150
|
+
|
|
151
|
+
- The drawing is `<svg role="img" aria-label={title}>`, and a `ChartDataTable` with the same numbers is rendered (hidden).
|
|
152
|
+
- Visible strings are props (`labels: Partial<ChartLabels>`, English defaults); data formatting is es-PE.
|
|
153
|
+
- Keyboard: the plot overlay is a focusable `role="slider"` whose `aria-valuetext` reads the category and every series
|
|
154
|
+
value. Arrows move, Home/End jump, Escape clears. The brush is its own slider (arrows pan, Shift+arrows resize).
|
|
155
|
+
- Pointer: one transparent overlay owns pointer events; hover state lives in the plot component and marks are
|
|
156
|
+
`memo`ised with stable geometry from `computeLayout`, so hovering only re-renders the crosshair, markers and tooltip.
|
|
157
|
+
- Legend hover/focus dims the other series (`opacity` transition); click toggles them.
|
|
158
|
+
- Entry animation through `useEntryAnimation` (line reveal by a clip rect, bars grow from their baseline with a short
|
|
159
|
+
stagger, labels fade). Nothing animates with `prefers-reduced-motion` or `animate={false}`.
|
|
160
|
+
- `loading` shows `ChartSkeleton`; no finite data shows `ChartEmpty`.
|
|
161
|
+
|
|
162
|
+
## Hierarchy and matrix charts
|
|
163
|
+
|
|
164
|
+
```tsx
|
|
165
|
+
<TreemapChart title="Ventas por categoría" data={{ name: "Octubre", children: [...] }} valueFormat="currency" />
|
|
166
|
+
<SunburstChart title="Servicios" data={tree} levels={3} />
|
|
167
|
+
<IcicleChart title="Ingresos" data={tree} orientation="vertical" />
|
|
168
|
+
<HeatmapChart title="Ocupación" rows={days} columns={hours} values={matrix} scale="diverging" />
|
|
169
|
+
<CalendarHeatmap title="Citas por día" days={[{ date, value }]} ranges={[{ to: 5, label: "0-4" }]} />
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
- Data is a `HierarchyDatum` tree (`name`, `value` on leaves, optional `color`, `children`).
|
|
173
|
+
- Keyboard: arrows move between the children of the open node, Enter opens one, Escape goes up
|
|
174
|
+
(heatmaps: arrows move by row/column, Enter calls `onCellClick`, Escape clears).
|
|
175
|
+
- Drill-down keeps a breadcrumb; sunburst and icicle animate the zoom window with `useAnimatedView`.
|
|
176
|
+
- Colors: each top-level branch of the open node takes a palette slot; depth and sibling rank vary the
|
|
177
|
+
tint. Heatmaps use `color-scale.ts`, so they follow the theme and `data-accent`.
|
|
178
|
+
|
|
179
|
+
### Semi-circle sunburst and the treemap/sunburst morph
|
|
180
|
+
|
|
181
|
+
- `<SunburstChart half />` draws the partition on a 180 degree fan; the center label sits above the baseline and the
|
|
182
|
+
pointer and keyboard behave as in the full disc.
|
|
183
|
+
- `<HierarchyMorph data={tree} />` shows one hierarchy as treemap rectangles or sunburst rings and morphs between them
|
|
184
|
+
(`mode` / `defaultMode` / `onModeChange`, `showSwitch={false}` to drive it from outside). It draws the first
|
|
185
|
+
`levels` (1 or 2) levels; shapes that have no rectangle in the treemap grow out of their parent.
|
|
186
|
+
- Treemap, sunburst and icicle have `Drilldown` stories that report the open node through `onFocusChange`;
|
|
187
|
+
`Nested` (treemap, `depth={3}`) is the market-map layout.
|
|
188
|
+
|
|
189
|
+
## Node-link charts: tree and sankey
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
<TreeChart title="Equipo de la barbería" data={{ name: "Carlos", subtitle: "Dueño", children: [...] }}
|
|
193
|
+
direction="left" edgeStyle="step" initialDepth={2} height="fill" />
|
|
194
|
+
<TreeChart ... renderNode={(node, state) => <MyCard node={node} highlighted={state.highlighted} />} />
|
|
195
|
+
<SankeyChart title="Origen de clientes" nodes={[{ id: "ig", name: "Instagram" }, ...]}
|
|
196
|
+
links={[{ source: "ig", target: "corte", value: 142 }, ...]} columns={["Origen", "Servicio", "Pago"]} />
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
- `TreeChart` draws edges in SVG and nodes as absolutely positioned HTML boxes (`nodeWidth` x `nodeHeight`)
|
|
200
|
+
inside one transformed stage, so templates are ordinary React + Tailwind. The default `TreeCard` has a color
|
|
201
|
+
rail, avatar (image or initials), name, subtitle and badge. Expand/collapse animates with `useTreeTransition`
|
|
202
|
+
(nodes grow out of and fold back into their closest visible ancestor). The view fits the tree and follows the
|
|
203
|
+
container until the user pans or zooms; the fit button (or `0`) returns to following. Keyboard: the explorer
|
|
204
|
+
slider moves by arrows relative to the direction (towards the leaves = first child, across = siblings), Enter
|
|
205
|
+
toggles, `+`/`-` zoom, Home goes to the root; the active node is panned into view.
|
|
206
|
+
- Tree extras: `layout="radial"` (`radialTreeLayout`: root in the centre, one ring per level, leaves share the
|
|
207
|
+
angle, rings pushed out until a ring's boxes fit; edges via `radialEdgePath`) and `layout="dendrogram"`
|
|
208
|
+
(`dendrogramLayout`: every leaf on the last level, parents centred over their first and last child, honours
|
|
209
|
+
`direction`); both default to compact `TreeChip` nodes and the same transitions. `searchable` adds a search box
|
|
210
|
+
(`searchTree` folds accents, every word must match name, subtitle or badge): matches are ringed, Enter / Shift+Enter
|
|
211
|
+
or the arrows step through them, opening closed ancestors, selecting the node and centring it. `selectable` /
|
|
212
|
+
`selectedId` keep the path to the root lit. `showCounts` shows descendants (`TreeNodeState.descendants` for custom
|
|
213
|
+
templates). `groupLeaves={n}` folds runs of `n`+ leaf siblings into a dashed group node (`groupLeaves()` is
|
|
214
|
+
pure). `lazy: true` data plus `loadChildren(node)` fetches children on first expand with a spinner on the toggle
|
|
215
|
+
(`buildTreeModel(data, loaded)`); a rejected promise marks the node and calls `onLoadError`. `edgeColor` is
|
|
216
|
+
`neutral | depth | branch`; with a lit path the other edges fade.
|
|
217
|
+
- `SankeyChart`: hover a node to light its whole flow upstream and downstream, a link to isolate it; the tooltip
|
|
218
|
+
gives the value, share of its source and share of the total. Keyboard: up/down within a column, left/right to
|
|
219
|
+
the nearest node of the next column, Enter steps through the node's flows. Links that close a cycle are left
|
|
220
|
+
out, reported through `onRemovedLinks`, and logged with `console.warn` outside production.
|
|
221
|
+
- Sankey extras: `compare={previousLinks}` turns it into a diff view (`sankeyDiff` merges the periods by pair; the
|
|
222
|
+
layout reserves the larger width, the band is drawn at the current width colored by `--chart-up` /
|
|
223
|
+
`--chart-down`, the previous width stays as a grey ghost, a flow that disappeared is dashed; tooltip and table
|
|
224
|
+
give before, after and change). `pathTracing` makes a link light everything upstream of its source and
|
|
225
|
+
downstream of its target (`sankeyTraceOf`) and lets a click pin the path. `particles` animates dots along the
|
|
226
|
+
bands with SMIL (`animateMotion`), off under `prefers-reduced-motion` and marked `data-export-skip` so exports
|
|
227
|
+
stay static. `exportable` adds SVG / PNG buttons. `relax={false}` and `SankeyNodeInput.column` pin nodes to
|
|
228
|
+
fixed columns in input order, which is what `AlluvialChart` (`stages`, `categories`, `flows[s]` from stage `s`
|
|
229
|
+
to `s + 1`; `alluvialGraph` is the pure conversion) uses.
|
|
230
|
+
- `ChordChart`: `chordLayout(matrix)` (`matrix[i][j]` = flow from `i` to `j`, a group's arc is its row sum, a
|
|
231
|
+
ribbon is `matrix[i][j]` wide at `i` and `matrix[j][i]` at `j`), `ribbonPath`, `chordsOf`, `groupAt`. Hover a
|
|
232
|
+
group to light its ribbons, a ribbon to isolate it; arrows walk the groups (`PlotOverlay`-style hidden slider).
|
|
233
|
+
Names sit around the ring from 420 px, the legend carries them below.
|
|
234
|
+
- Narrow containers: the tree is fitted (and can be zoomed); sankey labels shorten, then hide when the gap
|
|
235
|
+
between columns is under 40 px, and a node legend shows below the drawing until `@lg/chart`.
|
|
236
|
+
|
|
237
|
+
## Responsive: hierarchy and heatmap charts
|
|
238
|
+
|
|
239
|
+
Charts receive the measured width of their container from `ChartFrame`, never the viewport. The hierarchy
|
|
240
|
+
and heatmap charts make the frame a size container (`@container/chart`) so the HTML around the drawing
|
|
241
|
+
reacts with container variants: the legend sits below the drawing in narrow containers and moves above it
|
|
242
|
+
from `@md/chart`. Inside the SVG: labels only render where they fit, column labels thin out, the sunburst and
|
|
243
|
+
icicle drop outer levels before they get too thin, the calendar keeps only the most recent weeks that fit,
|
|
244
|
+
and the tooltip never leaves the frame. Every chart has a `Narrow` story at 320 px.
|
|
245
|
+
|
|
246
|
+
## Fitting the parent: `height="fill"` and `aspectRatio`
|
|
247
|
+
|
|
248
|
+
Every chart adapts to its exact parent, width and height, from the container and never the viewport.
|
|
249
|
+
|
|
250
|
+
```tsx
|
|
251
|
+
<div style={{ width: 560, height: 360 }}>
|
|
252
|
+
<LineChart height="fill" ... /> {/* takes the whole box, legend and brush included */}
|
|
253
|
+
</div>
|
|
254
|
+
<DonutChart aspectRatio={16 / 9} ... /> {/* height follows the measured width */}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
- `height`: a number (pixels, the default of each chart), `"fill"` (the frame measures its slot with a
|
|
258
|
+
`ResizeObserver` and the legend, footer and brush are subtracted by the layout, so the drawing gets what is left),
|
|
259
|
+
or, inside `ChartFrame`, a function of the width (`CalendarHeatmap` uses it: square cells decide the height).
|
|
260
|
+
- `aspectRatio` (width / height) wins over a pixel `height` and is ignored with `"fill"`.
|
|
261
|
+
- `"fill"` needs a parent with a definite height (fixed, flex or grid sized). With none, the drawing falls back to a
|
|
262
|
+
120 px minimum instead of collapsing.
|
|
263
|
+
- `ChartFrame` is `@container/chart` with no padding or margin; `children(width, height)` gets the drawing size
|
|
264
|
+
(the second argument is optional, older charts keep working). The pure rules live in `core/drawing-height.ts`.
|
|
265
|
+
- Row-based charts (`TimelineChart`, `DumbbellChart`, `IsotypeRows`) accept `height="fill"` only: rows stretch to the
|
|
266
|
+
box. `ProgressUnits` is a single row and keeps its `size`.
|
|
267
|
+
- No chart has outer padding: the plot touches the container edges except for axis gutters measured from the actual
|
|
268
|
+
tick labels (plus half of the last x label). Polar charts take `min(width, height)` for the radius; with
|
|
269
|
+
`legendAside` the legend moves beside the drawing from `@lg/chart` (512 px) and sits under it when narrower.
|
|
270
|
+
- Only container variants (`@lg/chart:`, `@md/chart:`, `@sm/units:`) are used in charts. Geometry thresholds in JS
|
|
271
|
+
(`width < 440`, ...) read the measured width. Check the `FillParent` stories (resizable box) and `Narrow` ones.
|
|
272
|
+
|
|
273
|
+
## Gantt and stock charts
|
|
274
|
+
|
|
275
|
+
```tsx
|
|
276
|
+
<GanttChart
|
|
277
|
+
title="Remodelación de la sede San Isidro"
|
|
278
|
+
tasks={[{ id, name, start, end, progress, parentId, milestone, dependencies: ["id"], color, assignee }]}
|
|
279
|
+
defaultZoom="day" // or zoom + onZoomChange
|
|
280
|
+
today={new Date()} // "auto" (default) or false
|
|
281
|
+
editable onTaskChange={(change) => update(change)} // { id, start, end, progress, source }
|
|
282
|
+
holidays={[new Date(2026, 9, 8)]}
|
|
283
|
+
/>
|
|
284
|
+
<StockChart
|
|
285
|
+
title="Precio de la caja de navajas (S/)"
|
|
286
|
+
data={[{ date, open, high, low, close, volume }]}
|
|
287
|
+
ranges={presets} defaultRange="6m"
|
|
288
|
+
overlays={[{ type: "sma", period: 20 }, { type: "bollinger" }, { type: "vwap" }]}
|
|
289
|
+
oscillator={{ type: "rsi" }} // or { type: "macd", fast, slow, signal }
|
|
290
|
+
comparisons={[{ id, name, values }]} flags={[{ date, label: "P", text, tone }]}
|
|
291
|
+
/>
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
- Gantt: the task tree (`role="tree"`, roving focus) and the timeline share one scroller, so vertical scroll is always in
|
|
295
|
+
sync; the header row and the list are `position: sticky` (the Table pinning idea). The divider between them is a
|
|
296
|
+
focusable `role="separator"` (drag or arrows). Ends are instants: a task from Monday to Friday ends on Saturday 00:00
|
|
297
|
+
and is shown ending on Friday. Keyboard: Up/Down rows, Left/Right collapse/expand, Enter toggles; when `editable`,
|
|
298
|
+
Alt+arrows move by the zoom snap, Shift+arrows change the end, `+`/`-` change progress by 10%. Edits are controlled:
|
|
299
|
+
the chart reports them and shows the dragged draft until `tasks` changes. Late links (successor starts before the
|
|
300
|
+
predecessor ends) use the danger token. Default height follows the rows (220-560 px); `"fill"` scrolls rows inside.
|
|
301
|
+
- Gantt extras: `showCriticalPath` runs `criticalPath(tasks)` (forward/backward pass over finish-to-start
|
|
302
|
+
dependencies; tasks without predecessors start at their own date, the rest when their predecessors end, so waiting gaps are ignored; a dependency on a parent
|
|
303
|
+
means all its leaves; cycles are left out) and draws zero-slack tasks and their tight links in the danger tone,
|
|
304
|
+
with the slack of the others in the tooltip. `showBaselines` draws `task.baseline` as a thin bar under the
|
|
305
|
+
actual one and adds baseline and variance to the tooltip. `annotations` are dated lines or bands (`to`) with a
|
|
306
|
+
label, stacked into lanes so labels never overlap. `zoom="year"` shows a whole year (quarters in the header).
|
|
307
|
+
`exportable` adds SVG and PNG buttons that export the header and the timeline (`core/export.ts`).
|
|
308
|
+
- Stock: indicators run on the whole series and are sliced to the window, so the warm-up never shows inside the view;
|
|
309
|
+
VWAP is anchored at the first visible bar. Visible comparisons switch the chart to % change from the first visible
|
|
310
|
+
bar (the main series becomes a line, overlays hide, the type switch is disabled). The price and oscillator panes
|
|
311
|
+
share one crosshair and one keyboard slider; the navigator is `ChartBrush`. `height` covers price and oscillator; the
|
|
312
|
+
navigator is extra, as with the candlestick brush (`"fill"` includes it).
|
|
313
|
+
- Stock types: `seriesType` also takes `"column"`, `"heikin-ashi"` and `"renko"`. The last two transform the data
|
|
314
|
+
(`heikinAshi(data)`, `renko(data, brickSize)` in `stock-transforms.ts`, `renkoBrickSize` defaults to the ATR(14));
|
|
315
|
+
overlays and the oscillator then run on the transformed bars, the hidden data table keeps the raw prices.
|
|
316
|
+
- Streaming: `useStockStream(initial, { maxBars })` returns `{ data, appendData }`; `appendBars` replaces a bar with the
|
|
317
|
+
same date (the forming candle) and appends newer ones. A window that ends at the last bar follows new bars, any other
|
|
318
|
+
window keeps its dates; a different series type or an unrelated dataset resets to `defaultRange`.
|
|
319
|
+
- Drawing tools: `drawingTools={DEFAULT_STOCK_TOOLS}` shows select, trend line, horizontal line, range box, Fibonacci and
|
|
320
|
+
measure. Drawings are `{ id, type, a, b }` with `{ time, price }` anchors, so they survive zoom and new data; the list is
|
|
321
|
+
controlled with `drawings` or `defaultDrawings` and every change reaches `onDrawingsChange(all)`. Select one by clicking it
|
|
322
|
+
and delete it with Supr or the toolbar button. Measure is transient: it shows % change, bars and days between two points.
|
|
323
|
+
Drawings are hidden in % comparison mode.
|
|
324
|
+
- `pinnable` pins a bar's tooltip on click or Enter (several at once, `defaultPinned` / `onPinnedChange` carry times in ms).
|
|
325
|
+
- `stockStats(bars)` is headless: returns, annualized volatility, high/low, best/worst day and maximum drawdown; pair it
|
|
326
|
+
with `onWindowChange({ from, to })` to summarize the visible window.
|
|
327
|
+
|
|
328
|
+
## Bars and relatives
|
|
329
|
+
|
|
330
|
+
```tsx
|
|
331
|
+
<BarChart // floating bars: [start, end] per category
|
|
332
|
+
series={[{ id: "turno", name: "Turno", ranges: [[9, 17], [10, 18]] }]} />
|
|
333
|
+
<BarChart stack="normal" series={[ // grouped stacked: one pile per stackGroup
|
|
334
|
+
{ id: "cortes", name: "Cortes", stackGroup: "ingresos", data },
|
|
335
|
+
{ id: "sueldos", name: "Sueldos", stackGroup: "costos", data },
|
|
336
|
+
]} />
|
|
337
|
+
<BarChart categoryGroups={[{ label: "1.er trimestre", count: 3 }]} categories={months} />
|
|
338
|
+
<BarChart yAxis={{ reversed: true }} /> // bars hang from the top (left-to-right axis flips for horizontal)
|
|
339
|
+
<BarChart series={[{ id: "a", name: "A", data, pattern: "stripes" }]} />
|
|
340
|
+
<BarChart distributed /> // or series[].colors = ["var(--chart-up)", undefined, ...]
|
|
341
|
+
<BarChart categoryLabelRotation={-45} />
|
|
342
|
+
<DrilldownBarChart data={tree} breadcrumbLabel="Ruta" /> // HierarchyDatum; click a bar with a `›`
|
|
343
|
+
<BarRaceChart entities={[{ id, name }]} frames={[{ label: "Sem 1", values: [..] }]} topN={6} />
|
|
344
|
+
<WaterfallChart orientation="horizontal" />
|
|
345
|
+
<DumbbellChart orientation="vertical" measures={[{ name: "Sep" }, { name: "Oct" }, { name: "Meta" }]}
|
|
346
|
+
items={[{ label: "Mateo", values: [42, 38, 35] }]} />
|
|
347
|
+
<LollipopChart items={[{ label, value }]} orientation="vertical" sort="desc" />
|
|
348
|
+
<BulletChart items={[{ label, actual: 78, target: 85, ranges: [60, 80, 100] }]} rangeLabels={["Bajo", "Medio", "Alto"]} />
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
- `CartesianSeries` gained `from` (floating start), `stackGroup` and `pointColors`; `ChartSeries` gained `pattern`;
|
|
352
|
+
`ValueAxisOptions` gained `reversed`; `CartesianChartProps` gained `categoryGroups`, `categoryLabelRotation` and
|
|
353
|
+
`onCategoryClick(index)` (click or Enter on the focused plot). Floating series never stack and are rounded at both ends.
|
|
354
|
+
- Group labels (`CategoryGroupAxis`, `categoryGroupSpans` in `core/cartesian/`) are a second tier under vertical category
|
|
355
|
+
axes; they hide while the plot is zoomed.
|
|
356
|
+
- Patterns (`core/patterns.ts`, `core/pattern-defs.tsx`): `PATTERN_NAMES` (stripes, stripes-reverse, dots, crosshatch,
|
|
357
|
+
grid, zigzag, checks, diamonds, waves) or your own `PatternTile { size, shapes }`. Tiles are drawn in the series color
|
|
358
|
+
over a soft backdrop of the same token, so themes still decide the hue. `ChartPatternDefs` + `patternId` / `patternFill`
|
|
359
|
+
are exported so other charts (donut, area) can use them: render the defs in your `<defs>` and fill with `url(#id)`.
|
|
360
|
+
- Bar race: values move linearly and ranks follow a smoothstep (`raceItems`), so bars glide into place; bars pass over each
|
|
361
|
+
other while swapping. Reduced motion steps frame to frame. The hidden table lists every frame.
|
|
362
|
+
- Bullet: `scale="row"` (default) gives every row its own 0-to-max scale, for mixed units; `"shared"` draws one axis.
|
|
363
|
+
- Dumbbell with `values`: the change compares the first measure with the last; two measures keep the gradient bar, more
|
|
364
|
+
use a neutral bar. Vertical dumbbells put the change above each column.
|
|
365
|
+
|
|
366
|
+
## Annotations (cartesian)
|
|
367
|
+
|
|
368
|
+
```ts
|
|
369
|
+
annotations={[
|
|
370
|
+
{ type: "line", axis: "y", value: 1500, label: "Meta diaria", tone: "success" },
|
|
371
|
+
{ type: "range", axis: "y", from: 0, to: 30, label: "Bajo", tone: "danger" },
|
|
372
|
+
{ type: "line", axis: "x", value: new Date(2026, 9, 8), label: "Feriado" },
|
|
373
|
+
{ type: "range", axis: "x", from: "jue", to: "vie", tone: "warning" },
|
|
374
|
+
]}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
`axis: "y"` is the value axis (drawn vertical in horizontal bar charts), `axis: "x"` the category axis; x values match a
|
|
378
|
+
category (dates by time). `yAxis: "right"` measures against the secondary axis.
|
|
379
|
+
|
|
380
|
+
Marks anchored at a data coordinate (category `x`, value `y`), with an optional `tooltip` sentence shown when the
|
|
381
|
+
pointer is within 14 px (any annotation type accepts `tooltip`, only `point` and `text` are hoverable):
|
|
382
|
+
|
|
383
|
+
```ts
|
|
384
|
+
{ type: "point", x: new Date(2026, 9, 4), y: 2280, label: "Récord", tooltip: "Mejor día del periodo", tone: "success" },
|
|
385
|
+
{ type: "text", x: "dom", y: 900, label: "Domingo corto" },
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
## Cartesian extras
|
|
389
|
+
|
|
390
|
+
| Prop | Where | What |
|
|
391
|
+
| --- | --- | --- |
|
|
392
|
+
| `curve="step" \| "step-before" \| "step-after"` | Line, Area, Combo | Values that hold until they change. `step` switches halfway between samples, `step-after` holds the value until the next sample, `step-before` jumps early. Stacked areas mirror the lower edge. |
|
|
393
|
+
| `syncId` | every cartesian chart | Charts with the same id share the hovered category (crosshair, dots and tooltip) and the brush window. Matching is by category value (dates by time; nearest date when the other chart is sampled differently). Wrap a group in `ChartSyncProvider` to scope it so two groups with the same id never mix. |
|
|
394
|
+
| `onPointClick` | every cartesian chart | `{ index, category, seriesId, value }` for a click, or Enter on the focused plot. `index` is in your original `categories`, whatever the zoom or downsampling. |
|
|
395
|
+
| `transition` | every cartesian chart | Eases line and area paths between updates with the CSS `d` property (live feeds with a fixed point count; browsers without it jump). |
|
|
396
|
+
| `maxPoints` | every cartesian chart | LTTB threshold, 2000 by default, `false` to draw everything. Applies to line and area plots (never bars or horizontal charts): `sharedSampleIndices` picks the union of each series' LTTB points plus the neighbours of every gap, so series stay aligned. Zooming resamples the window; the hidden data table and the brush overview use the reduced data. |
|
|
397
|
+
| `gradient` (LineChart) | Line | Strokes each line from its color towards the next palette color. (On Area/Combo `gradient` is still the fill under the area.) |
|
|
398
|
+
|
|
399
|
+
`downsample(points, threshold)`, `lttbIndices` and `sharedSampleIndices` (core `downsample.ts`) are pure and tested in
|
|
400
|
+
`test/cartesian-parity.test.mjs`, together with the step paths and the sync store.
|
|
401
|
+
|
|
402
|
+
`LineDrilldown` (`line-chart/`) walks a `HierarchyDatum`: the children of the focused node are the points, a node's
|
|
403
|
+
value is its own or the sum of its children, clicking a point with children drills in (`useDrill`) and `ChartBreadcrumb`
|
|
404
|
+
climbs out. It keeps `useDrill`'s rule that only positive values are shown.
|
|
405
|
+
|
|
406
|
+
Value axes: `yAxis` and `rightAxis` are shorthand for the axes with id `"left"` and `"right"`. `axes` declares any number
|
|
407
|
+
of them (`{ id, side?: "left" | "right", color?, ...ValueAxisOptions }`; extra ones default to the right), series pick one
|
|
408
|
+
with `axis: "<id>"` and annotations with `yAxis: "<id>"`. Axes stack outward from the plot on their side, each taking
|
|
409
|
+
the width of its widest tick label (`stackAxes`, tested); an axis no series uses is dropped. `color` tints the labels
|
|
410
|
+
and draws a thin axis line so a reader can tell which scale belongs to which series. The first axis is the primary one
|
|
411
|
+
(gridlines, zero line, bar baseline). Charts with a `syncId` also share the widest left and right margin of the group, so
|
|
412
|
+
their plot areas line up.
|
|
413
|
+
|
|
414
|
+
## Distribution family (`core/distribution/`)
|
|
415
|
+
|
|
416
|
+
```ts
|
|
417
|
+
interface DistributionSeries { // BoxPlot, ViolinChart, RaincloudChart
|
|
418
|
+
id: string; name: string; color?: string; format?: ValueFormat;
|
|
419
|
+
data: ReadonlyArray<ReadonlyArray<number | null>>; // data[i] = raw samples of categories[i]
|
|
420
|
+
}
|
|
421
|
+
// Histogram: { id, name, values: number[] } Beeswarm: { id, name, points: { value, category?, size?, label? }[] }
|
|
422
|
+
// Scatter / Bubble: { id, name, points: { x, y, size?, label? }[] }
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
| Module | What it gives you |
|
|
426
|
+
| --- | --- |
|
|
427
|
+
| `stats.ts` | Pure, tested in `test/charts-distribution.test.mjs`: `quantileSorted` (type 7), `boxStats` (Tukey whiskers, outliers, mean), `standardDeviation`, `silvermanBandwidth`, `gaussianKde`, `normalPdf`, `sturgesBinCount`, `freedmanDiaconisWidth`, `binEdges` (nice widths), `binCounts`, `histogram`, `linearRegression` (slope, intercept, r²), `seededRandom` (stable jitter), `beeswarm` (collision-free offsets, closest free slot to the axis). |
|
|
428
|
+
| `layout.ts` | `categoryLayout` (category axis + value axis, vertical or horizontal, dodged `slot(category, series)`), `xyLayout` (two continuous axes, `inset` for radii), `nearestPoint`, `truncateLabel`, `tooltipFit`. |
|
|
429
|
+
| `marks.tsx` | `CategoryAxes`, `XYAxes`, `BoxGlyph` (`variant: "box" \| "inner"`), `boxTooltipRows`, `boxValueText`, `BoxStatsTable`. |
|
|
430
|
+
| `geometry.ts` | `violinPath` (full or half, either orientation), `toXY`. |
|
|
431
|
+
| `explorer.tsx` | `PlotExplorer`: the focusable `role="slider"` overlay (arrows, Home/End, PageUp/PageDown, Escape) plus pointer picking. |
|
|
432
|
+
| `use-legend.tsx` | `useDistributionLegend`: colors, toggling, highlight and the legend node. |
|
|
433
|
+
| `xy-points.tsx` | `XYPointChart`, the engine behind `ScatterChart` and `BubbleChart`. |
|
|
434
|
+
| `points.ts`, `observations.tsx` | `jitterValues(values, seed, reach)` (deterministic jitter, `reach` may follow a density), `groupSeed`, and `ObservationDots` (raw dots of a box or violin, `coloring: "series" \| "value"`). |
|
|
435
|
+
| `dot-stack.ts` | `packDots`, `fitRadius`, `explodeBins`: row-by-row dot stacks that fit a bin, one shared radius (histogram explode). |
|
|
436
|
+
| `point-index.ts` | `createPointIndex(points, cell)`: uniform-grid index, `nearest(x, y, radius)` in microseconds for 50 000 marks; ties go to the smaller mark. |
|
|
437
|
+
| `../use-canvas.ts` | `useCanvasPaint` (device-pixel-ratio canvas, repaint on deps and theme change), `resolveCssColors` (token / `color-mix()` colors to something a canvas understands). |
|
|
438
|
+
| `labels.ts` | `StatLabels` (median, Q1, mean, outliers, ...) merged with `ChartLabels`; pass Spanish through `labels`. |
|
|
439
|
+
|
|
440
|
+
### Parity features (distribution, scatter, heatmap, trellis)
|
|
441
|
+
|
|
442
|
+
Pure parts are tested in `test/distribution-parity.test.mjs`.
|
|
443
|
+
|
|
444
|
+
- `BoxPlot` / `ViolinChart`: `showPoints` draws every raw sample with seeded `jitter` (0-1, the share of the box or local
|
|
445
|
+
violin width) and `seed`; `pointColor="value"` grades each dot from a pale tint of the series colour to the full colour.
|
|
446
|
+
Violin dots spread by the local density, so they follow the shape. Outlier dots are the same dots when `showPoints` is on.
|
|
447
|
+
- `Histogram`: `exploded` / `defaultExploded` / `onExplodedChange` turn every bin into one dot per observation (dot plot
|
|
448
|
+
on the same bins, one column per bin, staggered pop-in); dot k fills the k-th unit cell of the y axis, so a stack is as
|
|
449
|
+
tall as its count, and the axis stretches when dots would otherwise be taller than the bin is wide.
|
|
450
|
+
`explodeToggle` shows the button (`labels.explode`, `labels.bars` while exploded; `aria-pressed`).
|
|
451
|
+
- `ScatterChart` / `BubbleChart`: `xType="time"` (x in epoch ms, calendar ticks, `formatDate` tooltips), `jitter`
|
|
452
|
+
(pixels, number or `{ x, y }`, tooltips keep the true values), `XYPoint.image` (URL or data URI, clipped to the
|
|
453
|
+
marker, ringed in the series colour), `shading="shaded"` (bubbles only: off-centre radial gradient, a lit sphere).
|
|
454
|
+
- `renderer="canvas"` (scatter, bubble, heatmap): marks are painted on a canvas; axes, tooltip, focus ring and
|
|
455
|
+
keyboard stay SVG/HTML. Scatter hit-testing is a grid index (`createPointIndex`); heatmap hit-testing is cell
|
|
456
|
+
arithmetic (`hexLayout.cellAt` for honeycombs). The hidden data table is capped (500 points, 60 x 40 cells), and the
|
|
457
|
+
heatmap crosshair dimming is skipped. Scatter falls back to SVG when points have images or bubbles are shaded.
|
|
458
|
+
- `HeatmapChart`: `shape="hex"` honeycomb (`hexLayout`, `hexPath`: pointy-top, odd rows shifted half a cell),
|
|
459
|
+
`columns` may be `Date[]`: the header is labelled only at calendar boundaries (`datetimeColumnLabels`).
|
|
460
|
+
`DrilldownHeatmap` takes a root `HeatmapLevel` whose `drill({ row, column, value })` returns the sub-matrix.
|
|
461
|
+
- `ChartGrid`: `panels` (`id`, `title`, `subtitle`, `extent`, `xExtent`) and a render prop `(panel, ctx)`;
|
|
462
|
+
`ctx.valueDomain` / `ctx.xDomain` are the shared domains (`sharedDomain`: union of extents, niced, `includeZero`),
|
|
463
|
+
`ctx.height` (default: about 1.4:1 from the panel width, at least 180), `ctx.tickCount` (the shared domain is niced for it, pass it as `yAxis.tickCount`), `ctx.compact`. Columns come from the measured container width (`gridColumns`, `minPanelWidth`,
|
|
464
|
+
`maxColumns`), never the viewport. `legend` is one shared `ChartLegend`; `syncHover` wraps the grid in a
|
|
465
|
+
`ChartSyncProvider` and exposes `ctx.syncId`: pass it to each chart's `syncId` and every panel shows the real crosshair
|
|
466
|
+
and tooltip of the hovered category.
|
|
467
|
+
|
|
468
|
+
Exploration order is the reading order: boxes/violins category by category, histogram bins left to right, beeswarm
|
|
469
|
+
points row by row, scatter points by x. The tooltip and `aria-valuetext` carry the same numbers.
|
|
470
|
+
|
|
471
|
+
## Responsive: all charts and the distribution family
|
|
472
|
+
|
|
473
|
+
Charts only know the width `ChartFrame` measures, never the viewport:
|
|
474
|
+
|
|
475
|
+
- Tick counts derive from the plot size; crowded category labels are thinned (`thinTicks`), long row labels are
|
|
476
|
+
truncated (`truncateLabel`), and the right margin leaves room for the last tick label.
|
|
477
|
+
- Distribution charts give the frame `@container`; their top legend uses `order-last @md:order-none`, so it sits under
|
|
478
|
+
the plot below 448 px. `tooltipFit(width)` flips the tooltip at the middle and caps it to `50cqw` under 480 px.
|
|
479
|
+
- Bubble labels outside the bubble, trend-line R² labels and quadrant captions hide or truncate when they do not fit.
|
|
480
|
+
- `ChartDataTable` wraps its table in an `sr-only` div: a table ignores `width: 1px`, so a wide one used to overflow.
|
|
481
|
+
|
|
482
|
+
## Building a new chart (polar, heatmap, candlestick, treemap, ...)
|
|
483
|
+
|
|
484
|
+
1. Create `src/charts/<name>/<name>.tsx`, `index.ts` and `<name>.stories.tsx`; add the folder to `src/charts/index.ts`.
|
|
485
|
+
2. Wrap the output in `ChartFrame` with `labels={resolveLabels(props.labels)}`, `loading`, `empty`, a `ChartLegend`
|
|
486
|
+
fed by `useSeriesState`, and a `ChartDataTable`. Pick a skeleton shape (`"ring"` exists for polar charts).
|
|
487
|
+
3. Inside `children(width, height)` (accept `height: number | "fill"` and `aspectRatio` and pass them to the frame), render a separate plot component so `useMemo` can hold the geometry; keep hover state in
|
|
488
|
+
that component and `memo` the marks.
|
|
489
|
+
4. Use `seriesColor(i)` for categorical colors (slices, cells legend) and `TONE_COLORS` for status colors; apply them via
|
|
490
|
+
`style`. Use `resolveFormat` for values and `formatDate` for dates.
|
|
491
|
+
5. Geometry helpers: polar code can reuse `linearScale` for radius, `bandScale` for angular slots, and draw arcs with
|
|
492
|
+
its own small `arcPath` next to `path.ts` (add it there so the next chart can share it).
|
|
493
|
+
6. Reuse `ChartTooltip` (pass container-relative `x`/`y`) and a focusable overlay with `role="slider"` +
|
|
494
|
+
`aria-valuetext` for keyboard exploration.
|
|
495
|
+
7. Animate with `useEntryAnimation`; respect `animate={false}`.
|
|
496
|
+
8. Pure helpers get a case in `test/charts-core.test.mjs`.
|
|
497
|
+
|
|
498
|
+
## Polar charts and narrow containers
|
|
499
|
+
|
|
500
|
+
Polar charts measure the container through `ChartFrame` and degrade by width, with no viewport queries:
|
|
501
|
+
outside labels (donut/pie) and rim labels (polar area) give way to the legend below 420-440 px, radial ring labels
|
|
502
|
+
hide below 360 px, radar axis names shorten, funnel label columns shrink and truncate, and the tooltip flips inside
|
|
503
|
+
the frame. Every polar chart ships a `Narrow` story rendered in a 320 px container.
|
|
504
|
+
8. Pure helpers get a case in `test/charts-core.test.mjs` (hierarchy and matrix layouts: `test/charts-hierarchy.test.mjs`).
|
|
505
|
+
|
|
506
|
+
### Radial charts: shades, fills, updates, drilldown
|
|
507
|
+
|
|
508
|
+
- `monochrome` (`PieChart`, `DonutChart`, `PolarAreaChart`): one hue in shades, darkest on the largest value
|
|
509
|
+
(`monochromeByValue` in `palette.ts`). `true` uses the accent, a string sets the base color.
|
|
510
|
+
- `DonutChart` `fill`: `"gradient"` fades each slice from the hole to the rim; `"pattern"` adds a texture per slice
|
|
511
|
+
(stripes, dots, grid, wide stripes, checks) so color is not the only cue. Image fills are not supported.
|
|
512
|
+
- Data changes ease: slices grow, shrink and appear, and the centre total counts along (not under reduced motion).
|
|
513
|
+
- `DonutChart` drilldown: a datum with `children` opens in the same ring on click or Enter; a breadcrumb (and Escape or
|
|
514
|
+
Backspace) goes back; children default to shades of the parent color. `rootLabel` names the first crumb.
|
|
515
|
+
- `GaugeChart`: `tickMarks` + `minorTicks` draw a dial; `centerContent` replaces the value/caption with your own
|
|
516
|
+
HTML. `FunnelChart`: `tapered` (default) or straight bars, and `neck` for how far the last stage narrows.
|
|
517
|
+
|
|
518
|
+
## Maps
|
|
519
|
+
|
|
520
|
+
```tsx
|
|
521
|
+
import { ChoroplethMap } from "@jcsoftdev/ui/charts/choropleth-map";
|
|
522
|
+
import { peruMap } from "@jcsoftdev/ui/charts/maps/data/peru"; // geometry is a separate module
|
|
523
|
+
|
|
524
|
+
<ChoroplethMap title="Clientes por departamento" map={peruMap} valueName="Clientes"
|
|
525
|
+
data={[{ id: "PE-CUS", value: 520 }, { id: "Arequipa", value: 760 }]} />
|
|
526
|
+
<BubbleMap title="Sedes" map={selectRegions(peruMap, ["PE-LMA", "PE-CAL"])} cluster
|
|
527
|
+
points={[{ id: "mir", name: "Miraflores", lat: -12.12, lon: -77.03, value: 1840, category: "propia" }]} />
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
- Data joins by region id or name (accents and case ignored). `value: null` or a missing region has no data.
|
|
531
|
+
- Geometry is TopoJSON decoded by our own `topologyFeatures`; `maps/data/README.md` has sources, licenses and how it was
|
|
532
|
+
simplified. `selectRegions(map, ids)` restricts a map (the projection re-fits, so it also zooms to those regions).
|
|
533
|
+
- Projections (`maps/geo/projection.ts`): `equirectangular`, `mercator` (clamped to 85.05 deg), `equalEarth`, and `fitted`
|
|
534
|
+
(equirectangular with the standard parallel at the middle of the area, for a country). `fitProjection` scales any of
|
|
535
|
+
them to the exact box of the chart, so a map fills its parent like every other chart (`height="fill"`, `aspectRatio`).
|
|
536
|
+
- Zoom and pan: buttons, wheel (by default `wheelZoom="modifier"` needs Ctrl/Cmd so page scrolling is never trapped), drag,
|
|
537
|
+
two-finger pinch, keys `+` `-` `0` and Shift+arrows. The view is clamped to the map and resets when the box resizes.
|
|
538
|
+
- Keyboard: one focusable `role="slider"` layer; arrows walk the regions (or visible bubbles), Enter fires the click
|
|
539
|
+
callback, the tooltip follows the keyboard selection and the view pans to keep it visible. A hidden data table
|
|
540
|
+
repeats every value.
|
|
541
|
+
- Touch: the map takes the gestures (`touch-action: none`), so on phones scroll the page from outside the map or pass
|
|
542
|
+
`zoomable={false}`.
|
|
543
|
+
- Region labels (`regionLabels`) sit at a point inside each region, only where they fit and do not collide. Bubble and
|
|
544
|
+
cluster sizes are in screen pixels, area proportional between `minRadius` and `maxRadius`.
|
|
545
|
+
- Data table: `dataTable="visible"` swaps the map for a sortable table (name, value, a magnitude bar) and `"toggle"`
|
|
546
|
+
adds a button to switch; the default keeps the table for screen readers only. `MapDataTable` is exported for reuse.
|
|
547
|
+
- Drilldown: `ChoroplethDrilldown` takes a `root` level (`{ id, name, map, data }`) and `resolve(region, path)` returning
|
|
548
|
+
the level to open (or nothing); a breadcrumb goes back up. Only Peru and the world ship geometry, and Peru has
|
|
549
|
+
departments but no provinces, so the story drills world -> Peru.
|
|
550
|
+
- `HexTileMap`: every region is one equal hexagon (`tiles` = `{ id, name, code, row, col }` on an odd-r grid; Peru's 25
|
|
551
|
+
regions are `PERU_HEX_TILES`). Same data joins, scales, legend, tooltip, keyboard and table as `ChoroplethMap`;
|
|
552
|
+
labels show the code and the value where the tile is big enough. The layout math is in `hex-tile-map/hex-layout.ts`.
|
|
553
|
+
- Routes: `BubbleMap routes={[{ id, from, to, value }]}` (`from` / `to` are point ids or `{ lon, lat }`) draws arcs under
|
|
554
|
+
the bubbles; `routeStyle="curve"` is a quadratic arch in screen space (`routeBend`), `"great-circle"` follows the
|
|
555
|
+
shortest path on the globe and splits at the antimeridian (`maps/geo/routes.ts`). Width follows `value`, the dashes
|
|
556
|
+
march from origin to destination unless `animateRoutes={false}` or the user prefers reduced motion, and routes get
|
|
557
|
+
their own hidden table.
|
|
558
|
+
- Pure helpers (`projection.ts`, `topojson.ts`, `simplify.ts`, `build-topology.ts`, `cluster.ts`, `view.ts`) are tested
|
|
559
|
+
in `test/charts-maps.test.mjs`; `check:treeshake` asserts that a chart or one dataset never pulls in the other dataset.
|
|
560
|
+
|
|
561
|
+
## Globe, crossfilter, ruler/ink and scrollytelling
|
|
562
|
+
|
|
563
|
+
- `GlobeChart` (`globe-chart/`): the world as an orthographic globe. Props: `map` (`worldMap`), `data` (choropleth by id or
|
|
564
|
+
name, same scales and legend as `ChoroplethMap`), `points` (`MapPoint`, area-proportional), `routes` (`MapRoute`,
|
|
565
|
+
great-circle arcs lifted over the surface), `graticule`, `initialRotation` or controlled `rotation` +
|
|
566
|
+
`onRotationChange`, `autoRotate` (pauses on hover/focus, off under reduced motion, with a pause button). Drag or use
|
|
567
|
+
the arrow keys (Shift turns more), `0` resets, space pauses the spin. It is a disc that fits the container
|
|
568
|
+
(`height="fill"` too). All math (rotation, horizon clipping of rings and lines, great arcs, invert) is in
|
|
569
|
+
`maps/geo/globe.ts` and tested in `test/globe-parity.test.mjs`. Limits: no zoom, and a polygon that covers the whole
|
|
570
|
+
visible hemisphere without crossing the horizon (e.g. Antarctica, not shipped) is not filled.
|
|
571
|
+
- Crossfilter (`crossfilter/`): `CrossfilterProvider data dimensions` shares one dataset and its filters;
|
|
572
|
+
`useCrossfilter()` exposes `filtered` (feed it to a `DataGrid`), `group`, `bins`, `toggle`, `setRange`, `clear`.
|
|
573
|
+
`CrossfilterBarChart` (click to filter), `CrossfilterHistogram` (drag or click bins) and `CrossfilterScatter`
|
|
574
|
+
(filtered dots in accent, the rest faint; a rectangular brush filters both dimensions: drag a rectangle, click to clear, or focus the brush after the plot: arrows move it, Shift + arrows resize it, Enter applies, Escape clears; a Clear button appears; on touch the plot keeps `touch-action: pan-x pan-y`, so swipes scroll the page and the brush starts only after resting a finger ~350 ms, with a short vibration where supported: `touchDelay` on `CrossfilterScatter` / the `XYBrush`, `0` brushes at once and blocks scroll; mouse and pen drag immediately) each show "filtered of total" and draw the totals as a ghost
|
|
575
|
+
series. A chart's own filter is excluded from its own counts (crossfilter semantics), so it stays stable while you
|
|
576
|
+
brush it. The engine (`crossfilter-engine.ts`) is pure and tested in `test/crossfilter-parity.test.mjs`. The
|
|
577
|
+
histogram brush uses the new cartesian prop `rangeSelect={{ value, onChange }}` (vertical charts, band of category
|
|
578
|
+
indices; no zoom).
|
|
579
|
+
- Ruler and ink: `const ink = useChartInk()`; `<ChartInkToolbar ink={ink} />` and `<LineChart overlay={ink.overlay} />`
|
|
580
|
+
(any vertical `CartesianChart` preset). The ruler reports Δx (time axes in d/h/min, category axes in steps) and Δy
|
|
581
|
+
(value and %); the pen draws a thinned, smoothed, spline path. Marks are stored in data units and drawn inside the
|
|
582
|
+
chart SVG, so `ExportMenu` exports them. Undo, redo and clear are in the toolbar. `CartesianChartProps.overlay` is
|
|
583
|
+
`{ svg(plot), html(plot) }` with `CartesianPlotInfo` (pixel/data conversions) so other tools can reuse it. Pointer
|
|
584
|
+
or keyboard: with the ruler or pen active the plot is focusable (`role="slider"`); arrows move a crosshair (one
|
|
585
|
+
category or a fiftieth of the time window; Shift five times as far), Space or Enter sets a point (ruler: two
|
|
586
|
+
points; pen: Space adds vertices, Enter finishes), Escape cancels. The position is the slider's value text and the
|
|
587
|
+
last measurement is announced in a live region. Downsampled series map x through the original sample indices (and
|
|
588
|
+
real times), so measures are in data units, not samples. Horizontal bars (`orientation="horizontal"`) work too: the
|
|
589
|
+
plot info carries `horizontal: true` (`toX`/`fromX` stay the category axis, now along y; `toY`/`fromY` the value axis,
|
|
590
|
+
now along x), the ruler reports Δ value in value units plus the distance in categories (`deltaValue`,
|
|
591
|
+
`deltaCategory` labels), and the arrows move the value left/right and the category up/down. `plotToPixel`,
|
|
592
|
+
`pixelToPlot` and `plotDomain` in `core/ink.ts` convert for either layout. Math in `core/ink.ts`,
|
|
593
|
+
tests in `test/ink-parity.test.mjs` and `test/ink-keyboard.test.mjs`.
|
|
594
|
+
- `Scrolly` / `ScrollyStep` (`containers/scrolly/`): steps scroll while a sticky `graphic({ step, previous,
|
|
595
|
+
reducedMotion })` follows the one crossing the trigger line (`offset`, default the middle; `root` for an inner scroll
|
|
596
|
+
container). Wide containers (`@3xl`) put the graphic beside the text, narrow ones pin it on top. Steps are plain
|
|
597
|
+
content (`aria-current="step"` on the active one). Pure picking logic in `scrolly-logic.ts`, tested in
|
|
598
|
+
`test/scrolly-parity.test.mjs`.
|