tempest-react-sdk 0.24.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -4
- package/bin/lib/alias/collect.mjs +94 -0
- package/bin/lib/alias/collect.test.mjs +95 -0
- package/bin/lib/alias/discover.mjs +77 -0
- package/bin/lib/alias/discover.test.mjs +189 -0
- package/bin/lib/alias/index.mjs +88 -0
- package/bin/lib/alias/index.test.mjs +138 -0
- package/bin/lib/alias/rewrite-css.mjs +76 -0
- package/bin/lib/alias/rewrite-css.test.mjs +85 -0
- package/bin/lib/alias/rewrite.mjs +141 -0
- package/bin/lib/alias/rewrite.test.mjs +148 -0
- package/bin/lib/alias/specifier.mjs +49 -0
- package/bin/lib/alias/specifier.test.mjs +85 -0
- package/bin/lib/alias/tsconfig.mjs +116 -0
- package/bin/lib/alias/typescript.mjs +23 -0
- package/bin/lib/icons/generate.mjs +156 -0
- package/bin/lib/icons/generate.test.mjs +125 -0
- package/bin/tempest.mjs +158 -13
- package/dist/audio/use-audio.cjs +1 -1
- package/dist/audio/use-audio.cjs.map +1 -1
- package/dist/audio/use-audio.js +12 -12
- package/dist/audio/use-audio.js.map +1 -1
- package/dist/charts/AreaChart.cjs +1 -1
- package/dist/charts/AreaChart.cjs.map +1 -1
- package/dist/charts/AreaChart.js +7 -7
- package/dist/charts/AreaChart.js.map +1 -1
- package/dist/charts/BarChart.cjs +1 -1
- package/dist/charts/BarChart.cjs.map +1 -1
- package/dist/charts/BarChart.js +7 -7
- package/dist/charts/BarChart.js.map +1 -1
- package/dist/charts/LineChart.cjs +1 -1
- package/dist/charts/LineChart.cjs.map +1 -1
- package/dist/charts/LineChart.js +6 -6
- package/dist/charts/LineChart.js.map +1 -1
- package/dist/charts/PieChart.cjs +1 -1
- package/dist/charts/PieChart.cjs.map +1 -1
- package/dist/charts/PieChart.js +6 -6
- package/dist/charts/PieChart.js.map +1 -1
- package/dist/charts/RadarChart.cjs +1 -1
- package/dist/charts/RadarChart.cjs.map +1 -1
- package/dist/charts/RadarChart.js +6 -6
- package/dist/charts/RadarChart.js.map +1 -1
- package/dist/charts/palette.cjs +1 -1
- package/dist/charts/palette.cjs.map +1 -1
- package/dist/charts/palette.js +19 -2
- package/dist/charts/palette.js.map +1 -1
- package/dist/charts/use-chart-colors.cjs +2 -0
- package/dist/charts/use-chart-colors.cjs.map +1 -0
- package/dist/charts/use-chart-colors.js +29 -0
- package/dist/charts/use-chart-colors.js.map +1 -0
- package/dist/charts.cjs +1 -1
- package/dist/charts.d.ts +61 -10
- package/dist/charts.js +8 -7
- package/dist/components/AvatarGroup/AvatarGroup.cjs +2 -0
- package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -0
- package/dist/components/AvatarGroup/AvatarGroup.js +39 -0
- package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -0
- package/dist/components/AvatarGroup/AvatarGroup.module.cjs +2 -0
- package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -0
- package/dist/components/AvatarGroup/AvatarGroup.module.js +16 -0
- package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -0
- package/dist/components/ClickOutside/ClickOutside.cjs +1 -1
- package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.js +3 -1
- package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
- package/dist/components/DataTable/DataTable.cjs +1 -1
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.js +21 -23
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/Kanban/Kanban.cjs +2 -0
- package/dist/components/Kanban/Kanban.cjs.map +1 -0
- package/dist/components/Kanban/Kanban.js +102 -0
- package/dist/components/Kanban/Kanban.js.map +1 -0
- package/dist/components/Kanban/Kanban.module.cjs +2 -0
- package/dist/components/Kanban/Kanban.module.cjs.map +1 -0
- package/dist/components/Kanban/Kanban.module.js +19 -0
- package/dist/components/Kanban/Kanban.module.js.map +1 -0
- package/dist/components/Lightbox/Lightbox.cjs +2 -0
- package/dist/components/Lightbox/Lightbox.cjs.map +1 -0
- package/dist/components/Lightbox/Lightbox.js +148 -0
- package/dist/components/Lightbox/Lightbox.js.map +1 -0
- package/dist/components/Lightbox/Lightbox.module.cjs +2 -0
- package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -0
- package/dist/components/Lightbox/Lightbox.module.js +21 -0
- package/dist/components/Lightbox/Lightbox.module.js.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.cjs +2 -0
- package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.js +83 -0
- package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.cjs +2 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.js +21 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -0
- package/dist/components/NotificationCenter/use-notification-inbox.cjs +2 -0
- package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -0
- package/dist/components/NotificationCenter/use-notification-inbox.js +63 -0
- package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -0
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.js +17 -17
- package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.cjs +2 -0
- package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -0
- package/dist/components/SignaturePad/SignaturePad.js +115 -0
- package/dist/components/SignaturePad/SignaturePad.js.map +1 -0
- package/dist/components/SignaturePad/SignaturePad.module.cjs +2 -0
- package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -0
- package/dist/components/SignaturePad/SignaturePad.module.js +11 -0
- package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -0
- package/dist/components/Stepper/Stepper.cjs +1 -1
- package/dist/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.js +43 -19
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/components/Stepper/Stepper.module.cjs +1 -1
- package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.module.js +6 -3
- package/dist/components/Stepper/Stepper.module.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +26 -20
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/TreeView/TreeView.cjs +2 -0
- package/dist/components/TreeView/TreeView.cjs.map +1 -0
- package/dist/components/TreeView/TreeView.js +124 -0
- package/dist/components/TreeView/TreeView.js.map +1 -0
- package/dist/components/TreeView/TreeView.module.cjs +2 -0
- package/dist/components/TreeView/TreeView.module.cjs.map +1 -0
- package/dist/components/TreeView/TreeView.module.js +17 -0
- package/dist/components/TreeView/TreeView.module.js.map +1 -0
- package/dist/components/VirtualTable/VirtualTable.cjs +2 -0
- package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -0
- package/dist/components/VirtualTable/VirtualTable.js +116 -0
- package/dist/components/VirtualTable/VirtualTable.js.map +1 -0
- package/dist/components/VirtualTable/VirtualTable.module.cjs +2 -0
- package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -0
- package/dist/components/VirtualTable/VirtualTable.module.js +20 -0
- package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -0
- package/dist/components/Wizard/Wizard.cjs +2 -0
- package/dist/components/Wizard/Wizard.cjs.map +1 -0
- package/dist/components/Wizard/Wizard.js +111 -0
- package/dist/components/Wizard/Wizard.js.map +1 -0
- package/dist/components/Wizard/Wizard.module.cjs +2 -0
- package/dist/components/Wizard/Wizard.module.cjs.map +1 -0
- package/dist/components/Wizard/Wizard.module.js +10 -0
- package/dist/components/Wizard/Wizard.module.js.map +1 -0
- package/dist/geo/use-position-tracker.cjs +1 -1
- package/dist/geo/use-position-tracker.cjs.map +1 -1
- package/dist/geo/use-position-tracker.js +3 -1
- package/dist/geo/use-position-tracker.js.map +1 -1
- package/dist/hooks/use-async.cjs +1 -1
- package/dist/hooks/use-async.cjs.map +1 -1
- package/dist/hooks/use-async.js +3 -1
- package/dist/hooks/use-async.js.map +1 -1
- package/dist/hooks/use-click-outside.cjs +1 -1
- package/dist/hooks/use-click-outside.cjs.map +1 -1
- package/dist/hooks/use-click-outside.js +3 -1
- package/dist/hooks/use-click-outside.js.map +1 -1
- package/dist/hooks/use-deep-memo.cjs.map +1 -1
- package/dist/hooks/use-deep-memo.js.map +1 -1
- package/dist/hooks/use-event-listener.cjs +1 -1
- package/dist/hooks/use-event-listener.cjs.map +1 -1
- package/dist/hooks/use-event-listener.js +3 -1
- package/dist/hooks/use-event-listener.js.map +1 -1
- package/dist/hooks/use-interval.cjs +1 -1
- package/dist/hooks/use-interval.cjs.map +1 -1
- package/dist/hooks/use-interval.js +3 -1
- package/dist/hooks/use-interval.js.map +1 -1
- package/dist/hooks/use-is-first-render.cjs.map +1 -1
- package/dist/hooks/use-is-first-render.js.map +1 -1
- package/dist/hooks/use-long-press-handlers.cjs +1 -1
- package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
- package/dist/hooks/use-long-press-handlers.js +25 -23
- package/dist/hooks/use-long-press-handlers.js.map +1 -1
- package/dist/hooks/use-long-press.cjs +1 -1
- package/dist/hooks/use-long-press.cjs.map +1 -1
- package/dist/hooks/use-long-press.js +3 -1
- package/dist/hooks/use-long-press.js.map +1 -1
- package/dist/hooks/use-online.cjs +1 -1
- package/dist/hooks/use-online.cjs.map +1 -1
- package/dist/hooks/use-online.js +6 -4
- package/dist/hooks/use-online.js.map +1 -1
- package/dist/hooks/use-previous.cjs.map +1 -1
- package/dist/hooks/use-previous.js.map +1 -1
- package/dist/hooks/use-service-worker-update.cjs +1 -1
- package/dist/hooks/use-service-worker-update.cjs.map +1 -1
- package/dist/hooks/use-service-worker-update.js +3 -1
- package/dist/hooks/use-service-worker-update.js.map +1 -1
- package/dist/hooks/use-sortable.cjs +2 -0
- package/dist/hooks/use-sortable.cjs.map +1 -0
- package/dist/hooks/use-sortable.js +169 -0
- package/dist/hooks/use-sortable.js.map +1 -0
- package/dist/hooks/use-stable-callback.cjs.map +1 -1
- package/dist/hooks/use-stable-callback.js.map +1 -1
- package/dist/hooks/use-timeout.cjs +1 -1
- package/dist/hooks/use-timeout.cjs.map +1 -1
- package/dist/hooks/use-timeout.js +3 -1
- package/dist/hooks/use-timeout.js.map +1 -1
- package/dist/icons/Icon.cjs +2 -0
- package/dist/icons/Icon.cjs.map +1 -0
- package/dist/icons/Icon.js +24 -0
- package/dist/icons/Icon.js.map +1 -0
- package/dist/icons/IconProvider.cjs +2 -0
- package/dist/icons/IconProvider.cjs.map +1 -0
- package/dist/icons/IconProvider.js +24 -0
- package/dist/icons/IconProvider.js.map +1 -0
- package/dist/icons/generated/aliases.cjs +2 -0
- package/dist/icons/generated/aliases.cjs.map +1 -0
- package/dist/icons/generated/aliases.js +255 -0
- package/dist/icons/generated/aliases.js.map +1 -0
- package/dist/icons/generated/icon-names.cjs +2 -0
- package/dist/icons/generated/icon-names.cjs.map +1 -0
- package/dist/icons/generated/icon-names.js +6 -0
- package/dist/icons/generated/icon-names.js.map +1 -0
- package/dist/icons/generated/loaders.cjs +2 -0
- package/dist/icons/generated/loaders.cjs.map +1 -0
- package/dist/icons/generated/loaders.js +32 -0
- package/dist/icons/generated/loaders.js.map +1 -0
- package/dist/icons/generated/shard-a.cjs +2 -0
- package/dist/icons/generated/shard-a.cjs.map +1 -0
- package/dist/icons/generated/shard-a.js +114 -0
- package/dist/icons/generated/shard-a.js.map +1 -0
- package/dist/icons/generated/shard-b.cjs +2 -0
- package/dist/icons/generated/shard-b.cjs.map +1 -0
- package/dist/icons/generated/shard-b.js +156 -0
- package/dist/icons/generated/shard-b.js.map +1 -0
- package/dist/icons/generated/shard-c.cjs +2 -0
- package/dist/icons/generated/shard-c.cjs.map +1 -0
- package/dist/icons/generated/shard-c.js +269 -0
- package/dist/icons/generated/shard-c.js.map +1 -0
- package/dist/icons/generated/shard-d.cjs +2 -0
- package/dist/icons/generated/shard-d.cjs.map +1 -0
- package/dist/icons/generated/shard-d.js +62 -0
- package/dist/icons/generated/shard-d.js.map +1 -0
- package/dist/icons/generated/shard-e.cjs +2 -0
- package/dist/icons/generated/shard-e.cjs.map +1 -0
- package/dist/icons/generated/shard-e.js +32 -0
- package/dist/icons/generated/shard-e.js.map +1 -0
- package/dist/icons/generated/shard-f.cjs +2 -0
- package/dist/icons/generated/shard-f.cjs.map +1 -0
- package/dist/icons/generated/shard-f.js +139 -0
- package/dist/icons/generated/shard-f.js.map +1 -0
- package/dist/icons/generated/shard-g.cjs +2 -0
- package/dist/icons/generated/shard-g.cjs.map +1 -0
- package/dist/icons/generated/shard-g.js +61 -0
- package/dist/icons/generated/shard-g.js.map +1 -0
- package/dist/icons/generated/shard-h.cjs +2 -0
- package/dist/icons/generated/shard-h.cjs.map +1 -0
- package/dist/icons/generated/shard-h.js +63 -0
- package/dist/icons/generated/shard-h.js.map +1 -0
- package/dist/icons/generated/shard-i.cjs +2 -0
- package/dist/icons/generated/shard-i.cjs.map +1 -0
- package/dist/icons/generated/shard-i.js +30 -0
- package/dist/icons/generated/shard-i.js.map +1 -0
- package/dist/icons/generated/shard-j.cjs +2 -0
- package/dist/icons/generated/shard-j.cjs.map +1 -0
- package/dist/icons/generated/shard-j.js +10 -0
- package/dist/icons/generated/shard-j.js.map +1 -0
- package/dist/icons/generated/shard-k.cjs +2 -0
- package/dist/icons/generated/shard-k.cjs.map +1 -0
- package/dist/icons/generated/shard-k.js +16 -0
- package/dist/icons/generated/shard-k.js.map +1 -0
- package/dist/icons/generated/shard-l.cjs +2 -0
- package/dist/icons/generated/shard-l.cjs.map +1 -0
- package/dist/icons/generated/shard-l.js +88 -0
- package/dist/icons/generated/shard-l.js.map +1 -0
- package/dist/icons/generated/shard-m.cjs +2 -0
- package/dist/icons/generated/shard-m.cjs.map +1 -0
- package/dist/icons/generated/shard-m.js +140 -0
- package/dist/icons/generated/shard-m.js.map +1 -0
- package/dist/icons/generated/shard-n.cjs +2 -0
- package/dist/icons/generated/shard-n.cjs.map +1 -0
- package/dist/icons/generated/shard-n.js +24 -0
- package/dist/icons/generated/shard-n.js.map +1 -0
- package/dist/icons/generated/shard-o.cjs +2 -0
- package/dist/icons/generated/shard-o.cjs.map +1 -0
- package/dist/icons/generated/shard-o.js +17 -0
- package/dist/icons/generated/shard-o.js.map +1 -0
- package/dist/icons/generated/shard-p.cjs +2 -0
- package/dist/icons/generated/shard-p.cjs.map +1 -0
- package/dist/icons/generated/shard-p.js +115 -0
- package/dist/icons/generated/shard-p.js.map +1 -0
- package/dist/icons/generated/shard-q.cjs +2 -0
- package/dist/icons/generated/shard-q.cjs.map +1 -0
- package/dist/icons/generated/shard-q.js +10 -0
- package/dist/icons/generated/shard-q.js.map +1 -0
- package/dist/icons/generated/shard-r.cjs +2 -0
- package/dist/icons/generated/shard-r.cjs.map +1 -0
- package/dist/icons/generated/shard-r.js +77 -0
- package/dist/icons/generated/shard-r.js.map +1 -0
- package/dist/icons/generated/shard-s.cjs +2 -0
- package/dist/icons/generated/shard-s.cjs.map +1 -0
- package/dist/icons/generated/shard-s.js +255 -0
- package/dist/icons/generated/shard-s.js.map +1 -0
- package/dist/icons/generated/shard-t.cjs +2 -0
- package/dist/icons/generated/shard-t.cjs.map +1 -0
- package/dist/icons/generated/shard-t.js +109 -0
- package/dist/icons/generated/shard-t.js.map +1 -0
- package/dist/icons/generated/shard-u.cjs +2 -0
- package/dist/icons/generated/shard-u.cjs.map +1 -0
- package/dist/icons/generated/shard-u.js +49 -0
- package/dist/icons/generated/shard-u.js.map +1 -0
- package/dist/icons/generated/shard-v.cjs +2 -0
- package/dist/icons/generated/shard-v.cjs.map +1 -0
- package/dist/icons/generated/shard-v.js +30 -0
- package/dist/icons/generated/shard-v.js.map +1 -0
- package/dist/icons/generated/shard-w.cjs +2 -0
- package/dist/icons/generated/shard-w.cjs.map +1 -0
- package/dist/icons/generated/shard-w.js +48 -0
- package/dist/icons/generated/shard-w.js.map +1 -0
- package/dist/icons/generated/shard-x.cjs +2 -0
- package/dist/icons/generated/shard-x.cjs.map +1 -0
- package/dist/icons/generated/shard-x.js +10 -0
- package/dist/icons/generated/shard-x.js.map +1 -0
- package/dist/icons/generated/shard-z.cjs +2 -0
- package/dist/icons/generated/shard-z.cjs.map +1 -0
- package/dist/icons/generated/shard-z.js +25 -0
- package/dist/icons/generated/shard-z.js.map +1 -0
- package/dist/icons/icon-context.cjs +2 -0
- package/dist/icons/icon-context.cjs.map +1 -0
- package/dist/icons/icon-context.js +13 -0
- package/dist/icons/icon-context.js.map +1 -0
- package/dist/icons/is-icon-name.cjs +2 -0
- package/dist/icons/is-icon-name.cjs.map +1 -0
- package/dist/icons/is-icon-name.js +10 -0
- package/dist/icons/is-icon-name.js.map +1 -0
- package/dist/icons/shard-cache.cjs +2 -0
- package/dist/icons/shard-cache.cjs.map +1 -0
- package/dist/icons/shard-cache.js +41 -0
- package/dist/icons/shard-cache.js.map +1 -0
- package/dist/icons/use-icon.cjs +2 -0
- package/dist/icons/use-icon.cjs.map +1 -0
- package/dist/icons/use-icon.js +20 -0
- package/dist/icons/use-icon.js.map +1 -0
- package/dist/icons-virtual.d.ts +22 -0
- package/dist/icons.cjs +1 -0
- package/dist/icons.d.ts +220 -0
- package/dist/icons.js +9 -0
- package/dist/offline/create-offline-sync.cjs +1 -1
- package/dist/offline/create-offline-sync.cjs.map +1 -1
- package/dist/offline/create-offline-sync.js +8 -2
- package/dist/offline/create-offline-sync.js.map +1 -1
- package/dist/offline/use-offline-sync.cjs +1 -1
- package/dist/offline/use-offline-sync.cjs.map +1 -1
- package/dist/offline/use-offline-sync.js +3 -1
- package/dist/offline/use-offline-sync.js.map +1 -1
- package/dist/push/use-push-subscription.cjs +1 -1
- package/dist/push/use-push-subscription.cjs.map +1 -1
- package/dist/push/use-push-subscription.js +3 -1
- package/dist/push/use-push-subscription.js.map +1 -1
- package/dist/sse/use-event-stream.cjs +1 -1
- package/dist/sse/use-event-stream.cjs.map +1 -1
- package/dist/sse/use-event-stream.js +3 -1
- package/dist/sse/use-event-stream.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tempest-react-sdk.cjs +1 -1
- package/dist/tempest-react-sdk.d.ts +1187 -2
- package/dist/tempest-react-sdk.js +261 -246
- package/dist/theme/ThemeProvider.cjs +1 -1
- package/dist/theme/ThemeProvider.cjs.map +1 -1
- package/dist/theme/ThemeProvider.js +6 -2
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/apply-theme.cjs +2 -0
- package/dist/theme/apply-theme.cjs.map +1 -0
- package/dist/theme/apply-theme.js +24 -0
- package/dist/theme/apply-theme.js.map +1 -0
- package/dist/theme/color.cjs +2 -0
- package/dist/theme/color.cjs.map +1 -0
- package/dist/theme/color.js +161 -0
- package/dist/theme/color.js.map +1 -0
- package/dist/theme/create-theme.cjs +5 -0
- package/dist/theme/create-theme.cjs.map +1 -0
- package/dist/theme/create-theme.js +141 -0
- package/dist/theme/create-theme.js.map +1 -0
- package/dist/theme/theme-presets.cjs +2 -0
- package/dist/theme/theme-presets.cjs.map +1 -0
- package/dist/theme/theme-presets.js +82 -0
- package/dist/theme/theme-presets.js.map +1 -0
- package/dist/utilities.css +432 -0
- package/dist/utils/compare-values.cjs +2 -0
- package/dist/utils/compare-values.cjs.map +1 -0
- package/dist/utils/compare-values.js +8 -0
- package/dist/utils/compare-values.js.map +1 -0
- package/dist/vision/use-camera-stream.cjs +1 -1
- package/dist/vision/use-camera-stream.cjs.map +1 -1
- package/dist/vision/use-camera-stream.js +3 -1
- package/dist/vision/use-camera-stream.js.map +1 -1
- package/dist/vite/create-vite-config.cjs +1 -1
- package/dist/vite/create-vite-config.cjs.map +1 -1
- package/dist/vite/create-vite-config.js +30 -22
- package/dist/vite/create-vite-config.js.map +1 -1
- package/dist/vite/tempest-icons.cjs +9 -0
- package/dist/vite/tempest-icons.cjs.map +1 -0
- package/dist/vite/tempest-icons.js +99 -0
- package/dist/vite/tempest-icons.js.map +1 -0
- package/dist/vite.cjs +1 -1
- package/dist/vite.d.ts +79 -0
- package/dist/vite.js +6 -5
- package/dist/ws/use-web-socket.cjs +1 -1
- package/dist/ws/use-web-socket.cjs.map +1 -1
- package/dist/ws/use-web-socket.js +3 -1
- package/dist/ws/use-web-socket.js.map +1 -1
- package/package.json +14 -4
- package/template/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PieChart.js","names":[],"sources":["../../src/charts/PieChart.tsx"],"sourcesContent":["import { Cell, Legend, Pie, PieChart as RPieChart, ResponsiveContainer, Tooltip } from \"recharts\";\nimport { cn } from \"@/utils/cn\";\nimport {
|
|
1
|
+
{"version":3,"file":"PieChart.js","names":[],"sources":["../../src/charts/PieChart.tsx"],"sourcesContent":["import { Cell, Legend, Pie, PieChart as RPieChart, ResponsiveContainer, Tooltip } from \"recharts\";\nimport { cn } from \"@/utils/cn\";\nimport { useChartColors } from \"./use-chart-colors\";\nimport { toTooltipFormatter } from \"./types\";\nimport type { PieChartProps } from \"./types\";\n\n/**\n * PieChart — themed wrapper over recharts `PieChart`.\n *\n * Renders one slice per row, reading the numeric value from `category` and the\n * label from `index`. Each slice is colored from `colors` (cycling\n * the `--tempest-chart-*` theme tokens by default). When `donut` is set the pie gets a\n * non-zero inner radius. When `width` is provided the chart renders at that\n * fixed size without a ResponsiveContainer; otherwise it fills its parent.\n */\nexport function PieChart({\n data,\n category,\n index,\n colors,\n height = 300,\n width,\n donut = false,\n showLegend = true,\n showTooltip = true,\n valueFormatter,\n className,\n}: PieChartProps) {\n const palette = useChartColors(colors);\n const chart = (\n <RPieChart width={width} height={height}>\n {showTooltip ? <Tooltip formatter={toTooltipFormatter(valueFormatter)} /> : null}\n {showLegend ? <Legend /> : null}\n <Pie\n data={data}\n dataKey={category}\n nameKey={index}\n innerRadius={donut ? \"60%\" : 0}\n outerRadius=\"80%\"\n >\n {data.map((row, i) => (\n <Cell key={`${String(row[index])}-${i}`} fill={palette[i % palette.length]} />\n ))}\n </Pie>\n </RPieChart>\n );\n\n return (\n <div className={cn(className)}>\n {width !== undefined ? (\n chart\n ) : (\n <ResponsiveContainer width=\"100%\" height={height}>\n {chart}\n </ResponsiveContainer>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;AAeA,SAAgB,EAAS,EACrB,SACA,aACA,UACA,WACA,YAAS,KACT,UACA,WAAQ,IACR,gBAAa,IACb,iBAAc,IACd,mBACA,gBACc;CACd,IAAM,IAAU,EAAe,CAAM,GAC/B,IACF,kBAAC,GAAD;EAAkB;EAAe;YAAjC;GACK,IAAc,kBAAC,GAAD,EAAS,WAAW,EAAmB,CAAc,EAAI,CAAA,IAAI;GAC3E,IAAa,kBAAC,GAAD,CAAS,CAAA,IAAI;GAC3B,kBAAC,GAAD;IACU;IACN,SAAS;IACT,SAAS;IACT,aAAa,IAAQ,QAAQ;IAC7B,aAAY;cAEX,EAAK,KAAK,GAAK,MACZ,kBAAC,GAAD,EAAyC,MAAM,EAAQ,IAAI,EAAQ,QAAU,GAAlE,GAAG,OAAO,EAAI,EAAM,EAAE,GAAG,GAAyC,CAChF;GACA,CAAA;EACE;;CAGf,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,CAAS;YACvB,MAAU,KAAA,IAGP,kBAAC,GAAD;GAAqB,OAAM;GAAe;aACrC;EACgB,CAAA,IAJrB;CAMH,CAAA;AAEb"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../utils/cn.cjs"),t=require("./
|
|
1
|
+
const e=require("../utils/cn.cjs"),t=require("./use-chart-colors.cjs"),n=require("./types.cjs");let r=require("react/jsx-runtime"),i=require("recharts");function a({data:a,index:o,categories:s,colors:c,height:l=300,width:u,showLegend:d=!0,showTooltip:f=!0,valueFormatter:p,className:m}){let h=t.useChartColors(c),g=(0,r.jsxs)(i.RadarChart,{data:a,width:u,height:l,children:[(0,r.jsx)(i.PolarGrid,{}),(0,r.jsx)(i.PolarAngleAxis,{dataKey:o}),(0,r.jsx)(i.PolarRadiusAxis,{}),f?(0,r.jsx)(i.Tooltip,{formatter:n.toTooltipFormatter(p)}):null,d?(0,r.jsx)(i.Legend,{}):null,s.map((e,t)=>{let n=h[t%h.length];return(0,r.jsx)(i.Radar,{dataKey:e,stroke:n,fill:n,fillOpacity:.3},e)})]});return(0,r.jsx)(`div`,{className:e.cn(m),children:u===void 0?(0,r.jsx)(i.ResponsiveContainer,{width:`100%`,height:l,children:g}):g})}exports.RadarChart=a;
|
|
2
2
|
//# sourceMappingURL=RadarChart.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadarChart.cjs","names":[],"sources":["../../src/charts/RadarChart.tsx"],"sourcesContent":["import {\n Legend,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n RadarChart as RRadarChart,\n Radar,\n ResponsiveContainer,\n Tooltip,\n} from \"recharts\";\nimport { cn } from \"@/utils/cn\";\nimport {
|
|
1
|
+
{"version":3,"file":"RadarChart.cjs","names":[],"sources":["../../src/charts/RadarChart.tsx"],"sourcesContent":["import {\n Legend,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n RadarChart as RRadarChart,\n Radar,\n ResponsiveContainer,\n Tooltip,\n} from \"recharts\";\nimport { cn } from \"@/utils/cn\";\nimport { useChartColors } from \"./use-chart-colors\";\nimport { toTooltipFormatter } from \"./types\";\nimport type { CartesianChartProps } from \"./types\";\n\n/**\n * RadarChart — themed wrapper over recharts `RadarChart`.\n *\n * Plots one radar polygon per entry in `categories`, colored from `colors`\n * (cycling the `--tempest-chart-*` theme tokens by default). `index` drives the angle\n * axis. When `width` is provided the chart renders at that fixed size without a\n * ResponsiveContainer; otherwise it fills its parent.\n */\nexport function RadarChart({\n data,\n index,\n categories,\n colors,\n height = 300,\n width,\n showLegend = true,\n showTooltip = true,\n valueFormatter,\n className,\n}: CartesianChartProps) {\n const palette = useChartColors(colors);\n const chart = (\n <RRadarChart data={data} width={width} height={height}>\n <PolarGrid />\n <PolarAngleAxis dataKey={index} />\n <PolarRadiusAxis />\n {showTooltip ? <Tooltip formatter={toTooltipFormatter(valueFormatter)} /> : null}\n {showLegend ? <Legend /> : null}\n {categories.map((category, i) => {\n const color = palette[i % palette.length];\n return (\n <Radar\n key={category}\n dataKey={category}\n stroke={color}\n fill={color}\n fillOpacity={0.3}\n />\n );\n })}\n </RRadarChart>\n );\n\n return (\n <div className={cn(className)}>\n {width !== undefined ? (\n chart\n ) : (\n <ResponsiveContainer width=\"100%\" height={height}>\n {chart}\n </ResponsiveContainer>\n )}\n </div>\n );\n}\n"],"mappings":"yJAuBA,SAAgB,EAAW,CACvB,OACA,QACA,aACA,SACA,SAAS,IACT,QACA,aAAa,GACb,cAAc,GACd,iBACA,aACoB,CACpB,IAAM,EAAU,EAAA,eAAe,CAAM,EAC/B,GACF,EAAA,EAAA,KAAA,CAAC,EAAA,WAAD,CAAmB,OAAa,QAAe,kBAA/C,EACI,EAAA,EAAA,IAAA,CAAC,EAAA,UAAD,CAAY,CAAA,GACZ,EAAA,EAAA,IAAA,CAAC,EAAA,eAAD,CAAgB,QAAS,CAAQ,CAAA,GACjC,EAAA,EAAA,IAAA,CAAC,EAAA,gBAAD,CAAkB,CAAA,EACjB,GAAc,EAAA,EAAA,IAAA,CAAC,EAAA,QAAD,CAAS,UAAW,EAAA,mBAAmB,CAAc,CAAI,CAAA,EAAI,KAC3E,GAAa,EAAA,EAAA,IAAA,CAAC,EAAA,OAAD,CAAS,CAAA,EAAI,KAC1B,EAAW,KAAK,EAAU,IAAM,CAC7B,IAAM,EAAQ,EAAQ,EAAI,EAAQ,QAClC,OACI,EAAA,EAAA,IAAA,CAAC,EAAA,MAAD,CAEI,QAAS,EACT,OAAQ,EACR,KAAM,EACN,YAAa,EAChB,EALQ,CAKR,CAET,CAAC,CACQ,IAGjB,OACI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,CAAS,WACvB,IAAU,IAAA,IAGP,EAAA,EAAA,IAAA,CAAC,EAAA,oBAAD,CAAqB,MAAM,OAAe,kBACrC,CACgB,CAAA,EAJrB,CAMH,CAAA,CAEb"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { cn as e } from "../utils/cn.js";
|
|
2
|
-
import {
|
|
2
|
+
import { useChartColors as t } from "./use-chart-colors.js";
|
|
3
3
|
import { toTooltipFormatter as n } from "./types.js";
|
|
4
4
|
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
5
|
import { Legend as a, PolarAngleAxis as o, PolarGrid as s, PolarRadiusAxis as c, Radar as l, RadarChart as u, ResponsiveContainer as d, Tooltip as f } from "recharts";
|
|
6
6
|
//#region src/charts/RadarChart.tsx
|
|
7
|
-
function p({ data: p, index: m, categories: h, colors: g
|
|
8
|
-
let C = /* @__PURE__ */ i(u, {
|
|
7
|
+
function p({ data: p, index: m, categories: h, colors: g, height: _ = 300, width: v, showLegend: y = !0, showTooltip: b = !0, valueFormatter: x, className: S }) {
|
|
8
|
+
let C = t(g), w = /* @__PURE__ */ i(u, {
|
|
9
9
|
data: p,
|
|
10
10
|
width: v,
|
|
11
11
|
height: _,
|
|
@@ -16,7 +16,7 @@ function p({ data: p, index: m, categories: h, colors: g = t, height: _ = 300, w
|
|
|
16
16
|
b ? /* @__PURE__ */ r(f, { formatter: n(x) }) : null,
|
|
17
17
|
y ? /* @__PURE__ */ r(a, {}) : null,
|
|
18
18
|
h.map((e, t) => {
|
|
19
|
-
let n =
|
|
19
|
+
let n = C[t % C.length];
|
|
20
20
|
return /* @__PURE__ */ r(l, {
|
|
21
21
|
dataKey: e,
|
|
22
22
|
stroke: n,
|
|
@@ -31,8 +31,8 @@ function p({ data: p, index: m, categories: h, colors: g = t, height: _ = 300, w
|
|
|
31
31
|
children: v === void 0 ? /* @__PURE__ */ r(d, {
|
|
32
32
|
width: "100%",
|
|
33
33
|
height: _,
|
|
34
|
-
children:
|
|
35
|
-
}) :
|
|
34
|
+
children: w
|
|
35
|
+
}) : w
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadarChart.js","names":[],"sources":["../../src/charts/RadarChart.tsx"],"sourcesContent":["import {\n Legend,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n RadarChart as RRadarChart,\n Radar,\n ResponsiveContainer,\n Tooltip,\n} from \"recharts\";\nimport { cn } from \"@/utils/cn\";\nimport {
|
|
1
|
+
{"version":3,"file":"RadarChart.js","names":[],"sources":["../../src/charts/RadarChart.tsx"],"sourcesContent":["import {\n Legend,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n RadarChart as RRadarChart,\n Radar,\n ResponsiveContainer,\n Tooltip,\n} from \"recharts\";\nimport { cn } from \"@/utils/cn\";\nimport { useChartColors } from \"./use-chart-colors\";\nimport { toTooltipFormatter } from \"./types\";\nimport type { CartesianChartProps } from \"./types\";\n\n/**\n * RadarChart — themed wrapper over recharts `RadarChart`.\n *\n * Plots one radar polygon per entry in `categories`, colored from `colors`\n * (cycling the `--tempest-chart-*` theme tokens by default). `index` drives the angle\n * axis. When `width` is provided the chart renders at that fixed size without a\n * ResponsiveContainer; otherwise it fills its parent.\n */\nexport function RadarChart({\n data,\n index,\n categories,\n colors,\n height = 300,\n width,\n showLegend = true,\n showTooltip = true,\n valueFormatter,\n className,\n}: CartesianChartProps) {\n const palette = useChartColors(colors);\n const chart = (\n <RRadarChart data={data} width={width} height={height}>\n <PolarGrid />\n <PolarAngleAxis dataKey={index} />\n <PolarRadiusAxis />\n {showTooltip ? <Tooltip formatter={toTooltipFormatter(valueFormatter)} /> : null}\n {showLegend ? <Legend /> : null}\n {categories.map((category, i) => {\n const color = palette[i % palette.length];\n return (\n <Radar\n key={category}\n dataKey={category}\n stroke={color}\n fill={color}\n fillOpacity={0.3}\n />\n );\n })}\n </RRadarChart>\n );\n\n return (\n <div className={cn(className)}>\n {width !== undefined ? (\n chart\n ) : (\n <ResponsiveContainer width=\"100%\" height={height}>\n {chart}\n </ResponsiveContainer>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;AAuBA,SAAgB,EAAW,EACvB,SACA,UACA,eACA,WACA,YAAS,KACT,UACA,gBAAa,IACb,iBAAc,IACd,mBACA,gBACoB;CACpB,IAAM,IAAU,EAAe,CAAM,GAC/B,IACF,kBAAC,GAAD;EAAmB;EAAa;EAAe;YAA/C;GACI,kBAAC,GAAD,CAAY,CAAA;GACZ,kBAAC,GAAD,EAAgB,SAAS,EAAQ,CAAA;GACjC,kBAAC,GAAD,CAAkB,CAAA;GACjB,IAAc,kBAAC,GAAD,EAAS,WAAW,EAAmB,CAAc,EAAI,CAAA,IAAI;GAC3E,IAAa,kBAAC,GAAD,CAAS,CAAA,IAAI;GAC1B,EAAW,KAAK,GAAU,MAAM;IAC7B,IAAM,IAAQ,EAAQ,IAAI,EAAQ;IAClC,OACI,kBAAC,GAAD;KAEI,SAAS;KACT,QAAQ;KACR,MAAM;KACN,aAAa;IAChB,GALQ,CAKR;GAET,CAAC;EACQ;;CAGjB,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,CAAS;YACvB,MAAU,KAAA,IAGP,kBAAC,GAAD;GAAqB,OAAM;GAAe;aACrC;EACgB,CAAA,IAJrB;CAMH,CAAA;AAEb"}
|
package/dist/charts/palette.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=[`#2563eb`,`#16a34a`,`#f59e0b`,`#7c3aed`,`#ec4899`,`#06b6d4`];exports.DEFAULT_CHART_COLORS=e;
|
|
1
|
+
var e=[`#2563eb`,`#16a34a`,`#f59e0b`,`#7c3aed`,`#ec4899`,`#06b6d4`],t=8;function n(t){if(typeof window>`u`||typeof document>`u`)return e;let n=t??document.documentElement;if(!n)return e;let r=window.getComputedStyle(n),i=[],a=Number.parseInt(r.getPropertyValue(`--tempest-chart-count`).trim(),10),o=Number.isFinite(a)&&a>0?Math.min(a,8):8;for(let e=1;e<=o;e+=1){let t=r.getPropertyValue(`--tempest-chart-${e}`).trim();if(!t)break;i.push(t)}return i.length>0?i:e}function r(e,t,n=e===`grid`?`#e4e7ec`:`#667085`){if(typeof window>`u`||typeof document>`u`)return n;let r=t??document.documentElement;return r&&window.getComputedStyle(r).getPropertyValue(`--tempest-chart-${e}`).trim()||n}exports.CHART_COLOR_TOKEN_COUNT=t,exports.DEFAULT_CHART_COLORS=e,exports.resolveChartChrome=r,exports.resolveChartColors=n;
|
|
2
2
|
//# sourceMappingURL=palette.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.cjs","names":[],"sources":["../../src/charts/palette.ts"],"sourcesContent":["/**\n *
|
|
1
|
+
{"version":3,"file":"palette.cjs","names":[],"sources":["../../src/charts/palette.ts"],"sourcesContent":["/**\n * Series colors for Tempest charts, resolved from the theme tokens.\n *\n * Recharts sets colors as SVG presentation attributes (`fill=\"…\"`), where\n * `var(--token)` is **not** substituted — browsers only resolve custom properties\n * in CSS declarations. So the tokens are read from the computed style and handed\n * over as literal colors, which is what keeps a re-theme (and dark mode)\n * reflected in the charts.\n */\n\n/**\n * Fallback palette: six visually distinct hex colors (blue, green, amber,\n * violet, pink, cyan) in cycle order.\n *\n * Used when the `--tempest-chart-*` tokens cannot be read — no stylesheet\n * imported, a non-browser environment (tests, build scripts), or a host page that\n * dropped the tokens. Exported so callers can start from it and pass a tweaked\n * array to any chart's `colors` prop.\n */\nexport const DEFAULT_CHART_COLORS: string[] = [\n \"#2563eb\", // blue\n \"#16a34a\", // green\n \"#f59e0b\", // amber\n \"#7c3aed\", // violet\n \"#ec4899\", // pink\n \"#06b6d4\", // cyan\n];\n\n/** How many `--tempest-chart-N` tokens the SDK ships. */\nexport const CHART_COLOR_TOKEN_COUNT = 8;\n\n/**\n * Read `--tempest-chart-1` … `--tempest-chart-8` into a color array.\n *\n * Respects `--tempest-chart-count` when the theme declares one (`createTheme`\n * writes it), so a six-color brand palette is read as six and not padded with the\n * SDK's leftover `-7`/`-8` defaults. Otherwise it walks the tokens and stops at\n * the first unset one. Returns {@link DEFAULT_CHART_COLORS} when nothing is\n * resolvable.\n *\n * @param element - Element to resolve the tokens against. Default `<html>`; pass\n * a subtree root when a section carries a scoped theme.\n * @returns Literal color strings in cycle order.\n */\nexport function resolveChartColors(element?: Element | null): string[] {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return DEFAULT_CHART_COLORS;\n }\n\n const target = element ?? document.documentElement;\n if (!target) return DEFAULT_CHART_COLORS;\n\n const styles = window.getComputedStyle(target);\n const resolved: string[] = [];\n const declared = Number.parseInt(styles.getPropertyValue(\"--tempest-chart-count\").trim(), 10);\n const limit =\n Number.isFinite(declared) && declared > 0\n ? Math.min(declared, CHART_COLOR_TOKEN_COUNT)\n : CHART_COLOR_TOKEN_COUNT;\n\n for (let index = 1; index <= limit; index += 1) {\n const value = styles.getPropertyValue(`--tempest-chart-${index}`).trim();\n if (!value) break;\n resolved.push(value);\n }\n\n return resolved.length > 0 ? resolved : DEFAULT_CHART_COLORS;\n}\n\n/**\n * Read one piece of chart chrome (`--tempest-chart-grid` / `--tempest-chart-axis`).\n *\n * @param part - Which chrome token to read.\n * @param element - Element to resolve against. Default `<html>`.\n * @param fallback - Value returned when the token is unset.\n * @returns The resolved color, or `fallback`.\n */\nexport function resolveChartChrome(\n part: \"grid\" | \"axis\",\n element?: Element | null,\n fallback = part === \"grid\" ? \"#e4e7ec\" : \"#667085\",\n): string {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return fallback;\n const target = element ?? document.documentElement;\n if (!target) return fallback;\n const value = window\n .getComputedStyle(target)\n .getPropertyValue(`--tempest-chart-${part}`)\n .trim();\n return value || fallback;\n}\n"],"mappings":"AAmBA,IAAa,EAAiC,CAC1C,UACA,UACA,UACA,UACA,UACA,SACJ,EAGa,EAA0B,EAevC,SAAgB,EAAmB,EAAoC,CACnE,GAAI,OAAO,OAAW,KAAe,OAAO,SAAa,IACrD,OAAO,EAGX,IAAM,EAAS,GAAW,SAAS,gBACnC,GAAI,CAAC,EAAQ,OAAO,EAEpB,IAAM,EAAS,OAAO,iBAAiB,CAAM,EACvC,EAAqB,CAAC,EACtB,EAAW,OAAO,SAAS,EAAO,iBAAiB,uBAAuB,CAAC,CAAC,KAAK,EAAG,EAAE,EACtF,EACF,OAAO,SAAS,CAAQ,GAAK,EAAW,EAClC,KAAK,IAAI,EAAA,CAAiC,EAAA,EAGpD,IAAK,IAAI,EAAQ,EAAG,GAAS,EAAO,GAAS,EAAG,CAC5C,IAAM,EAAQ,EAAO,iBAAiB,mBAAmB,GAAO,CAAC,CAAC,KAAK,EACvE,GAAI,CAAC,EAAO,MACZ,EAAS,KAAK,CAAK,CACvB,CAEA,OAAO,EAAS,OAAS,EAAI,EAAW,CAC5C,CAUA,SAAgB,EACZ,EACA,EACA,EAAW,IAAS,OAAS,UAAY,UACnC,CACN,GAAI,OAAO,OAAW,KAAe,OAAO,SAAa,IAAa,OAAO,EAC7E,IAAM,EAAS,GAAW,SAAS,gBAMnC,OALK,GACS,OACT,iBAAiB,CAAM,CAAC,CACxB,iBAAiB,mBAAmB,GAAM,CAAC,CAC3C,KACE,GALa,CAMxB"}
|
package/dist/charts/palette.js
CHANGED
|
@@ -6,8 +6,25 @@ var e = [
|
|
|
6
6
|
"#7c3aed",
|
|
7
7
|
"#ec4899",
|
|
8
8
|
"#06b6d4"
|
|
9
|
-
];
|
|
9
|
+
], t = 8;
|
|
10
|
+
function n(t) {
|
|
11
|
+
if (typeof window > "u" || typeof document > "u") return e;
|
|
12
|
+
let n = t ?? document.documentElement;
|
|
13
|
+
if (!n) return e;
|
|
14
|
+
let r = window.getComputedStyle(n), i = [], a = Number.parseInt(r.getPropertyValue("--tempest-chart-count").trim(), 10), o = Number.isFinite(a) && a > 0 ? Math.min(a, 8) : 8;
|
|
15
|
+
for (let e = 1; e <= o; e += 1) {
|
|
16
|
+
let t = r.getPropertyValue(`--tempest-chart-${e}`).trim();
|
|
17
|
+
if (!t) break;
|
|
18
|
+
i.push(t);
|
|
19
|
+
}
|
|
20
|
+
return i.length > 0 ? i : e;
|
|
21
|
+
}
|
|
22
|
+
function r(e, t, n = e === "grid" ? "#e4e7ec" : "#667085") {
|
|
23
|
+
if (typeof window > "u" || typeof document > "u") return n;
|
|
24
|
+
let r = t ?? document.documentElement;
|
|
25
|
+
return r && window.getComputedStyle(r).getPropertyValue(`--tempest-chart-${e}`).trim() || n;
|
|
26
|
+
}
|
|
10
27
|
//#endregion
|
|
11
|
-
export { e as DEFAULT_CHART_COLORS };
|
|
28
|
+
export { t as CHART_COLOR_TOKEN_COUNT, e as DEFAULT_CHART_COLORS, r as resolveChartChrome, n as resolveChartColors };
|
|
12
29
|
|
|
13
30
|
//# sourceMappingURL=palette.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.js","names":[],"sources":["../../src/charts/palette.ts"],"sourcesContent":["/**\n *
|
|
1
|
+
{"version":3,"file":"palette.js","names":[],"sources":["../../src/charts/palette.ts"],"sourcesContent":["/**\n * Series colors for Tempest charts, resolved from the theme tokens.\n *\n * Recharts sets colors as SVG presentation attributes (`fill=\"…\"`), where\n * `var(--token)` is **not** substituted — browsers only resolve custom properties\n * in CSS declarations. So the tokens are read from the computed style and handed\n * over as literal colors, which is what keeps a re-theme (and dark mode)\n * reflected in the charts.\n */\n\n/**\n * Fallback palette: six visually distinct hex colors (blue, green, amber,\n * violet, pink, cyan) in cycle order.\n *\n * Used when the `--tempest-chart-*` tokens cannot be read — no stylesheet\n * imported, a non-browser environment (tests, build scripts), or a host page that\n * dropped the tokens. Exported so callers can start from it and pass a tweaked\n * array to any chart's `colors` prop.\n */\nexport const DEFAULT_CHART_COLORS: string[] = [\n \"#2563eb\", // blue\n \"#16a34a\", // green\n \"#f59e0b\", // amber\n \"#7c3aed\", // violet\n \"#ec4899\", // pink\n \"#06b6d4\", // cyan\n];\n\n/** How many `--tempest-chart-N` tokens the SDK ships. */\nexport const CHART_COLOR_TOKEN_COUNT = 8;\n\n/**\n * Read `--tempest-chart-1` … `--tempest-chart-8` into a color array.\n *\n * Respects `--tempest-chart-count` when the theme declares one (`createTheme`\n * writes it), so a six-color brand palette is read as six and not padded with the\n * SDK's leftover `-7`/`-8` defaults. Otherwise it walks the tokens and stops at\n * the first unset one. Returns {@link DEFAULT_CHART_COLORS} when nothing is\n * resolvable.\n *\n * @param element - Element to resolve the tokens against. Default `<html>`; pass\n * a subtree root when a section carries a scoped theme.\n * @returns Literal color strings in cycle order.\n */\nexport function resolveChartColors(element?: Element | null): string[] {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return DEFAULT_CHART_COLORS;\n }\n\n const target = element ?? document.documentElement;\n if (!target) return DEFAULT_CHART_COLORS;\n\n const styles = window.getComputedStyle(target);\n const resolved: string[] = [];\n const declared = Number.parseInt(styles.getPropertyValue(\"--tempest-chart-count\").trim(), 10);\n const limit =\n Number.isFinite(declared) && declared > 0\n ? Math.min(declared, CHART_COLOR_TOKEN_COUNT)\n : CHART_COLOR_TOKEN_COUNT;\n\n for (let index = 1; index <= limit; index += 1) {\n const value = styles.getPropertyValue(`--tempest-chart-${index}`).trim();\n if (!value) break;\n resolved.push(value);\n }\n\n return resolved.length > 0 ? resolved : DEFAULT_CHART_COLORS;\n}\n\n/**\n * Read one piece of chart chrome (`--tempest-chart-grid` / `--tempest-chart-axis`).\n *\n * @param part - Which chrome token to read.\n * @param element - Element to resolve against. Default `<html>`.\n * @param fallback - Value returned when the token is unset.\n * @returns The resolved color, or `fallback`.\n */\nexport function resolveChartChrome(\n part: \"grid\" | \"axis\",\n element?: Element | null,\n fallback = part === \"grid\" ? \"#e4e7ec\" : \"#667085\",\n): string {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return fallback;\n const target = element ?? document.documentElement;\n if (!target) return fallback;\n const value = window\n .getComputedStyle(target)\n .getPropertyValue(`--tempest-chart-${part}`)\n .trim();\n return value || fallback;\n}\n"],"mappings":";AAmBA,IAAa,IAAiC;CAC1C;CACA;CACA;CACA;CACA;CACA;AACJ,GAGa,IAA0B;AAevC,SAAgB,EAAmB,GAAoC;CACnE,IAAI,OAAO,SAAW,OAAe,OAAO,WAAa,KACrD,OAAO;CAGX,IAAM,IAAS,KAAW,SAAS;CACnC,IAAI,CAAC,GAAQ,OAAO;CAEpB,IAAM,IAAS,OAAO,iBAAiB,CAAM,GACvC,IAAqB,CAAC,GACtB,IAAW,OAAO,SAAS,EAAO,iBAAiB,uBAAuB,CAAC,CAAC,KAAK,GAAG,EAAE,GACtF,IACF,OAAO,SAAS,CAAQ,KAAK,IAAW,IAClC,KAAK,IAAI,GAAA,CAAiC,IAAA;CAGpD,KAAK,IAAI,IAAQ,GAAG,KAAS,GAAO,KAAS,GAAG;EAC5C,IAAM,IAAQ,EAAO,iBAAiB,mBAAmB,GAAO,CAAC,CAAC,KAAK;EACvE,IAAI,CAAC,GAAO;EACZ,EAAS,KAAK,CAAK;CACvB;CAEA,OAAO,EAAS,SAAS,IAAI,IAAW;AAC5C;AAUA,SAAgB,EACZ,GACA,GACA,IAAW,MAAS,SAAS,YAAY,WACnC;CACN,IAAI,OAAO,SAAW,OAAe,OAAO,WAAa,KAAa,OAAO;CAC7E,IAAM,IAAS,KAAW,SAAS;CAMnC,OALK,KACS,OACT,iBAAiB,CAAM,CAAC,CACxB,iBAAiB,mBAAmB,GAAM,CAAC,CAC3C,KACE,KALa;AAMxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./palette.cjs");let t=require("react");function n(n,r){let[i,a]=(0,t.useState)(()=>n||e.resolveChartColors(r));return(0,t.useEffect)(()=>{if(n||typeof window>`u`||typeof MutationObserver>`u`)return;let t=r??document.documentElement;if(!t)return;let i=()=>a(e.resolveChartColors(t));i();let o=new Set([t]),s=t.ownerDocument?.documentElement;s&&o.add(s);let c=new MutationObserver(i);for(let e of o)c.observe(e,{attributes:!0,attributeFilter:[`data-tempest-theme`,`class`,`style`]});return()=>c.disconnect()},[n,r]),n??i}exports.useChartColors=n;
|
|
2
|
+
//# sourceMappingURL=use-chart-colors.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chart-colors.cjs","names":[],"sources":["../../src/charts/use-chart-colors.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport { resolveChartColors } from \"./palette\";\n\n/**\n * Theme-aware series colors for a chart.\n *\n * Resolves the `--tempest-chart-*` tokens on mount and again whenever the theme\n * attribute flips, so switching to dark re-colors the series instead of leaving\n * light-theme colors on a dark canvas. Passing `explicit` short-circuits the\n * whole thing — an explicit `colors` prop always wins and no observer is set up.\n *\n * @param explicit - Colors passed by the caller. When present, returned as-is.\n * @param element - Element to resolve tokens against. Default `<html>`.\n * @returns Colors in cycle order.\n *\n * @example\n * ```tsx\n * function Sales({ data }: { data: ChartDatum[] }) {\n * const colors = useChartColors();\n * return <BarChart data={data} colors={colors} />;\n * }\n * ```\n */\nexport function useChartColors(explicit?: string[], element?: Element | null): string[] {\n const [resolved, setResolved] = useState<string[]>(() =>\n explicit ? explicit : resolveChartColors(element),\n );\n\n useEffect(() => {\n if (explicit) return;\n if (typeof window === \"undefined\" || typeof MutationObserver === \"undefined\") return;\n\n const target = element ?? document.documentElement;\n if (!target) return;\n\n const sync = (): void => setResolved(resolveChartColors(target));\n sync();\n\n const roots = new Set<Element>([target]);\n const documentRoot = target.ownerDocument?.documentElement;\n if (documentRoot) roots.add(documentRoot);\n\n const observer = new MutationObserver(sync);\n for (const root of roots) {\n observer.observe(root, {\n attributes: true,\n attributeFilter: [\"data-tempest-theme\", \"class\", \"style\"],\n });\n }\n\n return () => observer.disconnect();\n }, [explicit, element]);\n\n return explicit ?? resolved;\n}\n"],"mappings":"wDAwBA,SAAgB,EAAe,EAAqB,EAAoC,CACpF,GAAM,CAAC,EAAU,IAAA,EAAA,EAAA,SAAA,KACb,GAAsB,EAAA,mBAAmB,CAAO,CACpD,EA2BA,OAzBA,EAAA,EAAA,UAAA,KAAgB,CAEZ,GADI,GACA,OAAO,OAAW,KAAe,OAAO,iBAAqB,IAAa,OAE9E,IAAM,EAAS,GAAW,SAAS,gBACnC,GAAI,CAAC,EAAQ,OAEb,IAAM,MAAmB,EAAY,EAAA,mBAAmB,CAAM,CAAC,EAC/D,EAAK,EAEL,IAAM,EAAQ,IAAI,IAAa,CAAC,CAAM,CAAC,EACjC,EAAe,EAAO,eAAe,gBACvC,GAAc,EAAM,IAAI,CAAY,EAExC,IAAM,EAAW,IAAI,iBAAiB,CAAI,EAC1C,IAAK,IAAM,KAAQ,EACf,EAAS,QAAQ,EAAM,CACnB,WAAY,GACZ,gBAAiB,CAAC,qBAAsB,QAAS,OAAO,CAC5D,CAAC,EAGL,UAAa,EAAS,WAAW,CACrC,EAAG,CAAC,EAAU,CAAO,CAAC,EAEf,GAAY,CACvB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { resolveChartColors as e } from "./palette.js";
|
|
2
|
+
import { useEffect as t, useState as n } from "react";
|
|
3
|
+
//#region src/charts/use-chart-colors.ts
|
|
4
|
+
function r(r, i) {
|
|
5
|
+
let [a, o] = n(() => r || e(i));
|
|
6
|
+
return t(() => {
|
|
7
|
+
if (r || typeof window > "u" || typeof MutationObserver > "u") return;
|
|
8
|
+
let t = i ?? document.documentElement;
|
|
9
|
+
if (!t) return;
|
|
10
|
+
let n = () => o(e(t));
|
|
11
|
+
n();
|
|
12
|
+
let a = /* @__PURE__ */ new Set([t]), s = t.ownerDocument?.documentElement;
|
|
13
|
+
s && a.add(s);
|
|
14
|
+
let c = new MutationObserver(n);
|
|
15
|
+
for (let e of a) c.observe(e, {
|
|
16
|
+
attributes: !0,
|
|
17
|
+
attributeFilter: [
|
|
18
|
+
"data-tempest-theme",
|
|
19
|
+
"class",
|
|
20
|
+
"style"
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
return () => c.disconnect();
|
|
24
|
+
}, [r, i]), r ?? a;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { r as useChartColors };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=use-chart-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chart-colors.js","names":[],"sources":["../../src/charts/use-chart-colors.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport { resolveChartColors } from \"./palette\";\n\n/**\n * Theme-aware series colors for a chart.\n *\n * Resolves the `--tempest-chart-*` tokens on mount and again whenever the theme\n * attribute flips, so switching to dark re-colors the series instead of leaving\n * light-theme colors on a dark canvas. Passing `explicit` short-circuits the\n * whole thing — an explicit `colors` prop always wins and no observer is set up.\n *\n * @param explicit - Colors passed by the caller. When present, returned as-is.\n * @param element - Element to resolve tokens against. Default `<html>`.\n * @returns Colors in cycle order.\n *\n * @example\n * ```tsx\n * function Sales({ data }: { data: ChartDatum[] }) {\n * const colors = useChartColors();\n * return <BarChart data={data} colors={colors} />;\n * }\n * ```\n */\nexport function useChartColors(explicit?: string[], element?: Element | null): string[] {\n const [resolved, setResolved] = useState<string[]>(() =>\n explicit ? explicit : resolveChartColors(element),\n );\n\n useEffect(() => {\n if (explicit) return;\n if (typeof window === \"undefined\" || typeof MutationObserver === \"undefined\") return;\n\n const target = element ?? document.documentElement;\n if (!target) return;\n\n const sync = (): void => setResolved(resolveChartColors(target));\n sync();\n\n const roots = new Set<Element>([target]);\n const documentRoot = target.ownerDocument?.documentElement;\n if (documentRoot) roots.add(documentRoot);\n\n const observer = new MutationObserver(sync);\n for (const root of roots) {\n observer.observe(root, {\n attributes: true,\n attributeFilter: [\"data-tempest-theme\", \"class\", \"style\"],\n });\n }\n\n return () => observer.disconnect();\n }, [explicit, element]);\n\n return explicit ?? resolved;\n}\n"],"mappings":";;;AAwBA,SAAgB,EAAe,GAAqB,GAAoC;CACpF,IAAM,CAAC,GAAU,KAAe,QAC5B,KAAsB,EAAmB,CAAO,CACpD;CA2BA,OAzBA,QAAgB;EAEZ,IADI,KACA,OAAO,SAAW,OAAe,OAAO,mBAAqB,KAAa;EAE9E,IAAM,IAAS,KAAW,SAAS;EACnC,IAAI,CAAC,GAAQ;EAEb,IAAM,UAAmB,EAAY,EAAmB,CAAM,CAAC;EAC/D,EAAK;EAEL,IAAM,oBAAQ,IAAI,IAAa,CAAC,CAAM,CAAC,GACjC,IAAe,EAAO,eAAe;EAC3C,AAAI,KAAc,EAAM,IAAI,CAAY;EAExC,IAAM,IAAW,IAAI,iBAAiB,CAAI;EAC1C,KAAK,IAAM,KAAQ,GACf,EAAS,QAAQ,GAAM;GACnB,YAAY;GACZ,iBAAiB;IAAC;IAAsB;IAAS;GAAO;EAC5D,CAAC;EAGL,aAAa,EAAS,WAAW;CACrC,GAAG,CAAC,GAAU,CAAO,CAAC,GAEf,KAAY;AACvB"}
|
package/dist/charts.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./charts/palette.cjs"),t=require("./charts/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./charts/palette.cjs"),t=require("./charts/use-chart-colors.cjs"),n=require("./charts/AreaChart.cjs"),r=require("./charts/BarChart.cjs"),i=require("./charts/LineChart.cjs"),a=require("./charts/PieChart.cjs"),o=require("./charts/RadarChart.cjs");exports.AreaChart=n.AreaChart,exports.BarChart=r.BarChart,exports.CHART_COLOR_TOKEN_COUNT=e.CHART_COLOR_TOKEN_COUNT,exports.DEFAULT_CHART_COLORS=e.DEFAULT_CHART_COLORS,exports.LineChart=i.LineChart,exports.PieChart=a.PieChart,exports.RadarChart=o.RadarChart,exports.resolveChartChrome=e.resolveChartChrome,exports.resolveChartColors=e.resolveChartColors,exports.useChartColors=t.useChartColors;
|
package/dist/charts.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { JSX } from 'react';
|
|
|
4
4
|
* AreaChart — themed wrapper over recharts `AreaChart`.
|
|
5
5
|
*
|
|
6
6
|
* Plots one filled area per entry in `categories`, colored from `colors`
|
|
7
|
-
* (cycling
|
|
7
|
+
* (cycling the `--tempest-chart-*` theme tokens by default). When `stack` is set, all
|
|
8
8
|
* areas share a stackId. When `width` is provided the chart renders at that
|
|
9
9
|
* fixed size without a ResponsiveContainer; otherwise it fills its parent.
|
|
10
10
|
*/
|
|
@@ -14,7 +14,7 @@ export declare function AreaChart({ data, index, categories, colors, height, wid
|
|
|
14
14
|
* BarChart — themed wrapper over recharts `BarChart`.
|
|
15
15
|
*
|
|
16
16
|
* Plots one bar series per entry in `categories`, colored from `colors`
|
|
17
|
-
* (cycling
|
|
17
|
+
* (cycling the `--tempest-chart-*` theme tokens by default). When `stack` is set, all
|
|
18
18
|
* bars share a stackId. When `width` is provided the chart renders at that
|
|
19
19
|
* fixed size without a ResponsiveContainer; otherwise it fills its parent.
|
|
20
20
|
*/
|
|
@@ -57,6 +57,9 @@ export declare interface CartesianChartProps {
|
|
|
57
57
|
className?: string;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/** How many `--tempest-chart-N` tokens the SDK ships. */
|
|
61
|
+
export declare const CHART_COLOR_TOKEN_COUNT = 8;
|
|
62
|
+
|
|
60
63
|
/**
|
|
61
64
|
* Tabular data consumed by every chart: an array of rows, where each row maps a
|
|
62
65
|
* column key to a string (label) or number (value).
|
|
@@ -64,12 +67,13 @@ export declare interface CartesianChartProps {
|
|
|
64
67
|
export declare type ChartData = Array<Record<string, string | number>>;
|
|
65
68
|
|
|
66
69
|
/**
|
|
67
|
-
*
|
|
70
|
+
* Fallback palette: six visually distinct hex colors (blue, green, amber,
|
|
71
|
+
* violet, pink, cyan) in cycle order.
|
|
68
72
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
+
* Used when the `--tempest-chart-*` tokens cannot be read — no stylesheet
|
|
74
|
+
* imported, a non-browser environment (tests, build scripts), or a host page that
|
|
75
|
+
* dropped the tokens. Exported so callers can start from it and pass a tweaked
|
|
76
|
+
* array to any chart's `colors` prop.
|
|
73
77
|
*/
|
|
74
78
|
export declare const DEFAULT_CHART_COLORS: string[];
|
|
75
79
|
|
|
@@ -77,7 +81,7 @@ export declare const DEFAULT_CHART_COLORS: string[];
|
|
|
77
81
|
* LineChart — themed wrapper over recharts `LineChart`.
|
|
78
82
|
*
|
|
79
83
|
* Plots one line per entry in `categories`, colored from `colors` (cycling
|
|
80
|
-
*
|
|
84
|
+
* the `--tempest-chart-*` theme tokens by default). `stack` is accepted for API parity
|
|
81
85
|
* but does not visually stack lines. When `width` is provided the chart renders
|
|
82
86
|
* at that fixed size without a ResponsiveContainer; otherwise it fills its
|
|
83
87
|
* parent.
|
|
@@ -89,7 +93,7 @@ export declare function LineChart({ data, index, categories, colors, height, wid
|
|
|
89
93
|
*
|
|
90
94
|
* Renders one slice per row, reading the numeric value from `category` and the
|
|
91
95
|
* label from `index`. Each slice is colored from `colors` (cycling
|
|
92
|
-
*
|
|
96
|
+
* the `--tempest-chart-*` theme tokens by default). When `donut` is set the pie gets a
|
|
93
97
|
* non-zero inner radius. When `width` is provided the chart renders at that
|
|
94
98
|
* fixed size without a ResponsiveContainer; otherwise it fills its parent.
|
|
95
99
|
*/
|
|
@@ -130,10 +134,57 @@ export declare interface PieChartProps {
|
|
|
130
134
|
* RadarChart — themed wrapper over recharts `RadarChart`.
|
|
131
135
|
*
|
|
132
136
|
* Plots one radar polygon per entry in `categories`, colored from `colors`
|
|
133
|
-
* (cycling
|
|
137
|
+
* (cycling the `--tempest-chart-*` theme tokens by default). `index` drives the angle
|
|
134
138
|
* axis. When `width` is provided the chart renders at that fixed size without a
|
|
135
139
|
* ResponsiveContainer; otherwise it fills its parent.
|
|
136
140
|
*/
|
|
137
141
|
export declare function RadarChart({ data, index, categories, colors, height, width, showLegend, showTooltip, valueFormatter, className, }: CartesianChartProps): JSX.Element;
|
|
138
142
|
|
|
143
|
+
/**
|
|
144
|
+
* Read one piece of chart chrome (`--tempest-chart-grid` / `--tempest-chart-axis`).
|
|
145
|
+
*
|
|
146
|
+
* @param part - Which chrome token to read.
|
|
147
|
+
* @param element - Element to resolve against. Default `<html>`.
|
|
148
|
+
* @param fallback - Value returned when the token is unset.
|
|
149
|
+
* @returns The resolved color, or `fallback`.
|
|
150
|
+
*/
|
|
151
|
+
export declare function resolveChartChrome(part: "grid" | "axis", element?: Element | null, fallback?: string): string;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Read `--tempest-chart-1` … `--tempest-chart-8` into a color array.
|
|
155
|
+
*
|
|
156
|
+
* Respects `--tempest-chart-count` when the theme declares one (`createTheme`
|
|
157
|
+
* writes it), so a six-color brand palette is read as six and not padded with the
|
|
158
|
+
* SDK's leftover `-7`/`-8` defaults. Otherwise it walks the tokens and stops at
|
|
159
|
+
* the first unset one. Returns {@link DEFAULT_CHART_COLORS} when nothing is
|
|
160
|
+
* resolvable.
|
|
161
|
+
*
|
|
162
|
+
* @param element - Element to resolve the tokens against. Default `<html>`; pass
|
|
163
|
+
* a subtree root when a section carries a scoped theme.
|
|
164
|
+
* @returns Literal color strings in cycle order.
|
|
165
|
+
*/
|
|
166
|
+
export declare function resolveChartColors(element?: Element | null): string[];
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Theme-aware series colors for a chart.
|
|
170
|
+
*
|
|
171
|
+
* Resolves the `--tempest-chart-*` tokens on mount and again whenever the theme
|
|
172
|
+
* attribute flips, so switching to dark re-colors the series instead of leaving
|
|
173
|
+
* light-theme colors on a dark canvas. Passing `explicit` short-circuits the
|
|
174
|
+
* whole thing — an explicit `colors` prop always wins and no observer is set up.
|
|
175
|
+
*
|
|
176
|
+
* @param explicit - Colors passed by the caller. When present, returned as-is.
|
|
177
|
+
* @param element - Element to resolve tokens against. Default `<html>`.
|
|
178
|
+
* @returns Colors in cycle order.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```tsx
|
|
182
|
+
* function Sales({ data }: { data: ChartDatum[] }) {
|
|
183
|
+
* const colors = useChartColors();
|
|
184
|
+
* return <BarChart data={data} colors={colors} />;
|
|
185
|
+
* }
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
export declare function useChartColors(explicit?: string[], element?: Element | null): string[];
|
|
189
|
+
|
|
139
190
|
export { }
|
package/dist/charts.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
1
|
+
import { CHART_COLOR_TOKEN_COUNT as e, DEFAULT_CHART_COLORS as t, resolveChartChrome as n, resolveChartColors as r } from "./charts/palette.js";
|
|
2
|
+
import { useChartColors as i } from "./charts/use-chart-colors.js";
|
|
3
|
+
import { AreaChart as a } from "./charts/AreaChart.js";
|
|
4
|
+
import { BarChart as o } from "./charts/BarChart.js";
|
|
5
|
+
import { LineChart as s } from "./charts/LineChart.js";
|
|
6
|
+
import { PieChart as c } from "./charts/PieChart.js";
|
|
7
|
+
import { RadarChart as l } from "./charts/RadarChart.js";
|
|
8
|
+
export { a as AreaChart, o as BarChart, e as CHART_COLOR_TOKEN_COUNT, t as DEFAULT_CHART_COLORS, s as LineChart, c as PieChart, l as RadarChart, n as resolveChartChrome, r as resolveChartColors, i as useChartColors };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../../utils/cn.cjs"),t=require("../Avatar/Avatar.cjs"),n=require("./AvatarGroup.module.cjs");let r=require("react/jsx-runtime");function i({items:i,max:a=4,size:o=`md`,label:s,onOverflowClick:c,className:l}){let u=Math.max(0,a),d=i.slice(0,u),f=i.length-d.length;return(0,r.jsxs)(`div`,{role:`group`,"aria-label":s,className:e.cn(n.default.group,n.default[o],l),children:[d.map((e,i)=>(0,r.jsx)(`span`,{className:n.default.slot,children:(0,r.jsx)(t.Avatar,{src:e.src,name:e.name,alt:e.name,size:o})},`${e.name}-${i}`)),f>0?(0,r.jsx)(`span`,{className:n.default.slot,children:c?(0,r.jsxs)(`button`,{type:`button`,className:e.cn(n.default.overflow,n.default.overflowButton),"aria-label":`${f} more`,onClick:c,children:[`+`,f]}):(0,r.jsxs)(`span`,{className:n.default.overflow,"aria-label":`${f} more`,children:[`+`,f]})}):null]})}exports.AvatarGroup=i;
|
|
2
|
+
//# sourceMappingURL=AvatarGroup.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarGroup.cjs","names":[],"sources":["../../../src/components/AvatarGroup/AvatarGroup.tsx"],"sourcesContent":["import { cn } from \"@/utils/cn\";\nimport { Avatar } from \"../Avatar\";\nimport type { AvatarSize } from \"../Avatar\";\nimport styles from \"./AvatarGroup.module.css\";\n\n/** One participant of the group. */\nexport interface AvatarGroupItem {\n /** Image URL. Falls back to initials from `name`. */\n src?: string;\n /** Full name — drives the initials and the accessible label. */\n name: string;\n}\n\nexport interface AvatarGroupProps {\n items: AvatarGroupItem[];\n /** How many avatars to show before collapsing into `+N`. Default `4`. */\n max?: number;\n size?: AvatarSize;\n /** Accessible name of the group, e.g. `\"Participantes\"`. */\n label?: string;\n /**\n * Called when the `+N` chip is activated — a natural hook for \"see all\n * participants\". Without it the chip is plain text and not focusable.\n */\n onOverflowClick?: () => void;\n className?: string;\n}\n\n/**\n * Overlapping row of avatars with a `+N` overflow chip — participants of a\n * meeting, assignees of a task, members of a team.\n *\n * The whole row is one `role=\"group\"` with a single accessible name, and each\n * avatar's name is exposed as its label. That is deliberate: announcing seven\n * separate images with no relation between them is noise, and the overflow chip\n * carries the remaining count so the total is never hidden from a screen reader.\n *\n * @example\n * ```tsx\n * <AvatarGroup\n * label=\"Participantes\"\n * max={3}\n * items={[\n * { name: \"Ada Lovelace\", src: ada },\n * { name: \"Grace Hopper\" },\n * { name: \"Alan Turing\" },\n * { name: \"Edsger Dijkstra\" },\n * ]}\n * onOverflowClick={() => setDrawerOpen(true)}\n * />\n * ```\n */\nexport function AvatarGroup({\n items,\n max = 4,\n size = \"md\",\n label,\n onOverflowClick,\n className,\n}: AvatarGroupProps) {\n const limit = Math.max(0, max);\n const visible = items.slice(0, limit);\n const overflow = items.length - visible.length;\n\n return (\n <div role=\"group\" aria-label={label} className={cn(styles.group, styles[size], className)}>\n {visible.map((item, index) => (\n <span key={`${item.name}-${index}`} className={styles.slot}>\n <Avatar src={item.src} name={item.name} alt={item.name} size={size} />\n </span>\n ))}\n\n {overflow > 0 ? (\n <span className={styles.slot}>\n {onOverflowClick ? (\n <button\n type=\"button\"\n className={cn(styles.overflow, styles.overflowButton)}\n aria-label={`${overflow} more`}\n onClick={onOverflowClick}\n >\n +{overflow}\n </button>\n ) : (\n <span className={styles.overflow} aria-label={`${overflow} more`}>\n +{overflow}\n </span>\n )}\n </span>\n ) : null}\n </div>\n );\n}\n"],"mappings":"iJAoDA,SAAgB,EAAY,CACxB,QACA,MAAM,EACN,OAAO,KACP,QACA,kBACA,aACiB,CACjB,IAAM,EAAQ,KAAK,IAAI,EAAG,CAAG,EACvB,EAAU,EAAM,MAAM,EAAG,CAAK,EAC9B,EAAW,EAAM,OAAS,EAAQ,OAExC,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,KAAK,QAAQ,aAAY,EAAO,UAAW,EAAA,GAAG,EAAA,QAAO,MAAO,EAAA,QAAO,GAAO,CAAS,WAAxF,CACK,EAAQ,KAAK,EAAM,KAChB,EAAA,EAAA,IAAA,CAAC,OAAD,CAAoC,UAAW,EAAA,QAAO,eAClD,EAAA,EAAA,IAAA,CAAC,EAAA,OAAD,CAAQ,IAAK,EAAK,IAAK,KAAM,EAAK,KAAM,IAAK,EAAK,KAAY,MAAO,CAAA,CACnE,EAFK,GAAG,EAAK,KAAK,GAAG,GAErB,CACT,EAEA,EAAW,GACR,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,cACnB,GACG,EAAA,EAAA,KAAA,CAAC,SAAD,CACI,KAAK,SACL,UAAW,EAAA,GAAG,EAAA,QAAO,SAAU,EAAA,QAAO,cAAc,EACpD,aAAY,GAAG,EAAS,OACxB,QAAS,WAJb,CAKC,IACK,CACE,KAER,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,SAAU,aAAY,GAAG,EAAS,gBAA1D,CAAkE,IAC5D,CACA,GAER,CAAA,EACN,IACH,GAEb"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { Avatar as t } from "../Avatar/Avatar.js";
|
|
3
|
+
import n from "./AvatarGroup.module.js";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/AvatarGroup/AvatarGroup.tsx
|
|
6
|
+
function a({ items: a, max: o = 4, size: s = "md", label: c, onOverflowClick: l, className: u }) {
|
|
7
|
+
let d = Math.max(0, o), f = a.slice(0, d), p = a.length - f.length;
|
|
8
|
+
return /* @__PURE__ */ i("div", {
|
|
9
|
+
role: "group",
|
|
10
|
+
"aria-label": c,
|
|
11
|
+
className: e(n.group, n[s], u),
|
|
12
|
+
children: [f.map((e, i) => /* @__PURE__ */ r("span", {
|
|
13
|
+
className: n.slot,
|
|
14
|
+
children: /* @__PURE__ */ r(t, {
|
|
15
|
+
src: e.src,
|
|
16
|
+
name: e.name,
|
|
17
|
+
alt: e.name,
|
|
18
|
+
size: s
|
|
19
|
+
})
|
|
20
|
+
}, `${e.name}-${i}`)), p > 0 ? /* @__PURE__ */ r("span", {
|
|
21
|
+
className: n.slot,
|
|
22
|
+
children: l ? /* @__PURE__ */ i("button", {
|
|
23
|
+
type: "button",
|
|
24
|
+
className: e(n.overflow, n.overflowButton),
|
|
25
|
+
"aria-label": `${p} more`,
|
|
26
|
+
onClick: l,
|
|
27
|
+
children: ["+", p]
|
|
28
|
+
}) : /* @__PURE__ */ i("span", {
|
|
29
|
+
className: n.overflow,
|
|
30
|
+
"aria-label": `${p} more`,
|
|
31
|
+
children: ["+", p]
|
|
32
|
+
})
|
|
33
|
+
}) : null]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { a as AvatarGroup };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=AvatarGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarGroup.js","names":[],"sources":["../../../src/components/AvatarGroup/AvatarGroup.tsx"],"sourcesContent":["import { cn } from \"@/utils/cn\";\nimport { Avatar } from \"../Avatar\";\nimport type { AvatarSize } from \"../Avatar\";\nimport styles from \"./AvatarGroup.module.css\";\n\n/** One participant of the group. */\nexport interface AvatarGroupItem {\n /** Image URL. Falls back to initials from `name`. */\n src?: string;\n /** Full name — drives the initials and the accessible label. */\n name: string;\n}\n\nexport interface AvatarGroupProps {\n items: AvatarGroupItem[];\n /** How many avatars to show before collapsing into `+N`. Default `4`. */\n max?: number;\n size?: AvatarSize;\n /** Accessible name of the group, e.g. `\"Participantes\"`. */\n label?: string;\n /**\n * Called when the `+N` chip is activated — a natural hook for \"see all\n * participants\". Without it the chip is plain text and not focusable.\n */\n onOverflowClick?: () => void;\n className?: string;\n}\n\n/**\n * Overlapping row of avatars with a `+N` overflow chip — participants of a\n * meeting, assignees of a task, members of a team.\n *\n * The whole row is one `role=\"group\"` with a single accessible name, and each\n * avatar's name is exposed as its label. That is deliberate: announcing seven\n * separate images with no relation between them is noise, and the overflow chip\n * carries the remaining count so the total is never hidden from a screen reader.\n *\n * @example\n * ```tsx\n * <AvatarGroup\n * label=\"Participantes\"\n * max={3}\n * items={[\n * { name: \"Ada Lovelace\", src: ada },\n * { name: \"Grace Hopper\" },\n * { name: \"Alan Turing\" },\n * { name: \"Edsger Dijkstra\" },\n * ]}\n * onOverflowClick={() => setDrawerOpen(true)}\n * />\n * ```\n */\nexport function AvatarGroup({\n items,\n max = 4,\n size = \"md\",\n label,\n onOverflowClick,\n className,\n}: AvatarGroupProps) {\n const limit = Math.max(0, max);\n const visible = items.slice(0, limit);\n const overflow = items.length - visible.length;\n\n return (\n <div role=\"group\" aria-label={label} className={cn(styles.group, styles[size], className)}>\n {visible.map((item, index) => (\n <span key={`${item.name}-${index}`} className={styles.slot}>\n <Avatar src={item.src} name={item.name} alt={item.name} size={size} />\n </span>\n ))}\n\n {overflow > 0 ? (\n <span className={styles.slot}>\n {onOverflowClick ? (\n <button\n type=\"button\"\n className={cn(styles.overflow, styles.overflowButton)}\n aria-label={`${overflow} more`}\n onClick={onOverflowClick}\n >\n +{overflow}\n </button>\n ) : (\n <span className={styles.overflow} aria-label={`${overflow} more`}>\n +{overflow}\n </span>\n )}\n </span>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;AAoDA,SAAgB,EAAY,EACxB,UACA,SAAM,GACN,UAAO,MACP,UACA,oBACA,gBACiB;CACjB,IAAM,IAAQ,KAAK,IAAI,GAAG,CAAG,GACvB,IAAU,EAAM,MAAM,GAAG,CAAK,GAC9B,IAAW,EAAM,SAAS,EAAQ;CAExC,OACI,kBAAC,OAAD;EAAK,MAAK;EAAQ,cAAY;EAAO,WAAW,EAAG,EAAO,OAAO,EAAO,IAAO,CAAS;YAAxF,CACK,EAAQ,KAAK,GAAM,MAChB,kBAAC,QAAD;GAAoC,WAAW,EAAO;aAClD,kBAAC,GAAD;IAAQ,KAAK,EAAK;IAAK,MAAM,EAAK;IAAM,KAAK,EAAK;IAAY;GAAO,CAAA;EACnE,GAFK,GAAG,EAAK,KAAK,GAAG,GAErB,CACT,GAEA,IAAW,IACR,kBAAC,QAAD;GAAM,WAAW,EAAO;aACnB,IACG,kBAAC,UAAD;IACI,MAAK;IACL,WAAW,EAAG,EAAO,UAAU,EAAO,cAAc;IACpD,cAAY,GAAG,EAAS;IACxB,SAAS;cAJb,CAKC,KACK,CACE;QAER,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAU,cAAY,GAAG,EAAS;cAA1D,CAAkE,KAC5D,CACA;;EAER,CAAA,IACN,IACH;;AAEb"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=`tempest_group_qCSYk`,t=`tempest_slot_KyJQJ`,n=`tempest_xs_PPTP5`,r=`tempest_sm_ptoRA`,i=`tempest_md_YbE61`,a=`tempest_lg_oAEMY`,o=`tempest_xl_78RZG`,s=`tempest_overflow_JZIo-`,c=`tempest_overflowButton_hSf-2`,l={group:e,slot:t,xs:n,sm:r,md:i,lg:a,xl:o,overflow:s,overflowButton:c};exports.default=l,exports.group=e,exports.lg=a,exports.md=i,exports.overflow=s,exports.overflowButton=c,exports.slot=t,exports.sm=r,exports.xl=o,exports.xs=n;
|
|
2
|
+
//# sourceMappingURL=AvatarGroup.module.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarGroup.module.cjs","names":[],"sources":["../../../src/components/AvatarGroup/AvatarGroup.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n align-items: center;\n}\n\n/**\n * Each slot pulls the next avatar over the previous one. The overlap is a\n * fraction of the avatar size so every size keeps the same proportion.\n */\n.slot {\n display: inline-flex;\n border-radius: var(--tempest-radius-full);\n box-shadow: 0 0 0 2px var(--tempest-bg);\n}\n\n.slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -10px);\n}\n\n.xs .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -8px);\n}\n\n.sm .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -10px);\n}\n\n.md .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -12px);\n}\n\n.lg .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -16px);\n}\n\n.xl .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -22px);\n}\n\n.overflow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 40px;\n height: 40px;\n border: 0;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface-3);\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n font-weight: var(--tempest-weight-medium);\n font-variant-numeric: tabular-nums;\n}\n\n.xs .overflow {\n width: 24px;\n height: 24px;\n font-size: var(--tempest-text-2xs);\n}\n\n.sm .overflow {\n width: 32px;\n height: 32px;\n}\n\n.lg .overflow {\n width: 56px;\n height: 56px;\n font-size: var(--tempest-text-sm);\n}\n\n.xl .overflow {\n width: 80px;\n height: 80px;\n font-size: var(--tempest-text-base);\n}\n\n.overflowButton {\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.overflowButton:hover {\n background-color: var(--tempest-border-strong);\n color: var(--tempest-text);\n}\n\n.overflowButton:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .overflowButton {\n transition: none;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/components/AvatarGroup/AvatarGroup.module.css
|
|
2
|
+
var e = "tempest_group_qCSYk", t = "tempest_slot_KyJQJ", n = "tempest_xs_PPTP5", r = "tempest_sm_ptoRA", i = "tempest_md_YbE61", a = "tempest_lg_oAEMY", o = "tempest_xl_78RZG", s = "tempest_overflow_JZIo-", c = "tempest_overflowButton_hSf-2", l = {
|
|
3
|
+
group: e,
|
|
4
|
+
slot: t,
|
|
5
|
+
xs: n,
|
|
6
|
+
sm: r,
|
|
7
|
+
md: i,
|
|
8
|
+
lg: a,
|
|
9
|
+
xl: o,
|
|
10
|
+
overflow: s,
|
|
11
|
+
overflowButton: c
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { l as default, e as group, a as lg, i as md, s as overflow, c as overflowButton, t as slot, r as sm, o as xl, n as xs };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=AvatarGroup.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarGroup.module.js","names":[],"sources":["../../../src/components/AvatarGroup/AvatarGroup.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n align-items: center;\n}\n\n/**\n * Each slot pulls the next avatar over the previous one. The overlap is a\n * fraction of the avatar size so every size keeps the same proportion.\n */\n.slot {\n display: inline-flex;\n border-radius: var(--tempest-radius-full);\n box-shadow: 0 0 0 2px var(--tempest-bg);\n}\n\n.slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -10px);\n}\n\n.xs .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -8px);\n}\n\n.sm .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -10px);\n}\n\n.md .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -12px);\n}\n\n.lg .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -16px);\n}\n\n.xl .slot + .slot {\n margin-inline-start: var(--tempest-avatar-overlap, -22px);\n}\n\n.overflow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 40px;\n height: 40px;\n border: 0;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface-3);\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n font-weight: var(--tempest-weight-medium);\n font-variant-numeric: tabular-nums;\n}\n\n.xs .overflow {\n width: 24px;\n height: 24px;\n font-size: var(--tempest-text-2xs);\n}\n\n.sm .overflow {\n width: 32px;\n height: 32px;\n}\n\n.lg .overflow {\n width: 56px;\n height: 56px;\n font-size: var(--tempest-text-sm);\n}\n\n.xl .overflow {\n width: 80px;\n height: 80px;\n font-size: var(--tempest-text-base);\n}\n\n.overflowButton {\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.overflowButton:hover {\n background-color: var(--tempest-border-strong);\n color: var(--tempest-text);\n}\n\n.overflowButton:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .overflowButton {\n transition: none;\n }\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let e=require("react"),t=require("react/jsx-runtime");function n({onOutside:n,children:r,...i}){let a=(0,e.useRef)(null),o=(0,e.useRef)(n);return
|
|
1
|
+
let e=require("react"),t=require("react/jsx-runtime");function n({onOutside:n,children:r,...i}){let a=(0,e.useRef)(null),o=(0,e.useRef)(n);return(0,e.useEffect)(()=>{o.current=n},[n]),(0,e.useEffect)(()=>{if(typeof document>`u`)return;function e(e){let t=a.current,n=e.target;t&&n&&!t.contains(n)&&o.current(e)}return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[]),(0,t.jsx)(`div`,{ref:a,...i,children:r})}exports.ClickOutside=n;
|
|
2
2
|
//# sourceMappingURL=ClickOutside.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClickOutside.cjs","names":[],"sources":["../../../src/components/ClickOutside/ClickOutside.tsx"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\n\nexport interface ClickOutsideProps extends HTMLAttributes<HTMLDivElement> {\n /** Called when a pointer event lands outside the wrapped subtree. */\n onOutside: (event: MouseEvent | TouchEvent) => void;\n /** Content wrapped by the outside-click boundary. */\n children: ReactNode;\n}\n\n/**\n * Wraps its children in a `<div>` and invokes `onOutside` whenever a\n * `mousedown` or `touchstart` event occurs outside that subtree.\n *\n * Useful for dismissing popovers, dropdowns and menus on outside interaction.\n * Listeners are attached to `document` on mount and removed on unmount.\n *\n * @param props - The click-outside props, plus any `<div>` attributes.\n * @returns The wrapper element containing the children.\n */\nexport function ClickOutside({ onOutside, children, ...props }: ClickOutsideProps): ReactNode {\n const ref = useRef<HTMLDivElement>(null);\n const handlerRef = useRef(onOutside);\n handlerRef.current = onOutside;\n\n useEffect(() => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n function handle(event: MouseEvent | TouchEvent): void {\n const node = ref.current;\n const target = event.target as Node | null;\n if (node && target && !node.contains(target)) {\n handlerRef.current(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handle);\n document.addEventListener(\"touchstart\", handle);\n return () => {\n document.removeEventListener(\"mousedown\", handle);\n document.removeEventListener(\"touchstart\", handle);\n };\n }, []);\n\n return (\n <div ref={ref} {...props}>\n {children}\n </div>\n );\n}\n"],"mappings":"sDAmBA,SAAgB,EAAa,CAAE,YAAW,WAAU,GAAG,GAAuC,CAC1F,IAAM,GAAA,EAAA,EAAA,OAAA,CAA6B,IAAI,EACjC,GAAA,EAAA,EAAA,OAAA,CAAoB,CAAS,
|
|
1
|
+
{"version":3,"file":"ClickOutside.cjs","names":[],"sources":["../../../src/components/ClickOutside/ClickOutside.tsx"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\n\nexport interface ClickOutsideProps extends HTMLAttributes<HTMLDivElement> {\n /** Called when a pointer event lands outside the wrapped subtree. */\n onOutside: (event: MouseEvent | TouchEvent) => void;\n /** Content wrapped by the outside-click boundary. */\n children: ReactNode;\n}\n\n/**\n * Wraps its children in a `<div>` and invokes `onOutside` whenever a\n * `mousedown` or `touchstart` event occurs outside that subtree.\n *\n * Useful for dismissing popovers, dropdowns and menus on outside interaction.\n * Listeners are attached to `document` on mount and removed on unmount.\n *\n * @param props - The click-outside props, plus any `<div>` attributes.\n * @returns The wrapper element containing the children.\n */\nexport function ClickOutside({ onOutside, children, ...props }: ClickOutsideProps): ReactNode {\n const ref = useRef<HTMLDivElement>(null);\n const handlerRef = useRef(onOutside);\n useEffect(() => {\n handlerRef.current = onOutside;\n }, [onOutside]);\n\n useEffect(() => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n function handle(event: MouseEvent | TouchEvent): void {\n const node = ref.current;\n const target = event.target as Node | null;\n if (node && target && !node.contains(target)) {\n handlerRef.current(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handle);\n document.addEventListener(\"touchstart\", handle);\n return () => {\n document.removeEventListener(\"mousedown\", handle);\n document.removeEventListener(\"touchstart\", handle);\n };\n }, []);\n\n return (\n <div ref={ref} {...props}>\n {children}\n </div>\n );\n}\n"],"mappings":"sDAmBA,SAAgB,EAAa,CAAE,YAAW,WAAU,GAAG,GAAuC,CAC1F,IAAM,GAAA,EAAA,EAAA,OAAA,CAA6B,IAAI,EACjC,GAAA,EAAA,EAAA,OAAA,CAAoB,CAAS,EA0BnC,OAzBA,EAAA,EAAA,UAAA,KAAgB,CACZ,EAAW,QAAU,CACzB,EAAG,CAAC,CAAS,CAAC,GAEd,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,SAAa,IACpB,OAGJ,SAAS,EAAO,EAAsC,CAClD,IAAM,EAAO,EAAI,QACX,EAAS,EAAM,OACjB,GAAQ,GAAU,CAAC,EAAK,SAAS,CAAM,GACvC,EAAW,QAAQ,CAAK,CAEhC,CAIA,OAFA,SAAS,iBAAiB,YAAa,CAAM,EAC7C,SAAS,iBAAiB,aAAc,CAAM,MACjC,CACT,SAAS,oBAAoB,YAAa,CAAM,EAChD,SAAS,oBAAoB,aAAc,CAAM,CACrD,CACJ,EAAG,CAAC,CAAC,GAGD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,GAAI,EACd,UACA,CAAA,CAEb"}
|
|
@@ -3,7 +3,9 @@ import { jsx as n } from "react/jsx-runtime";
|
|
|
3
3
|
//#region src/components/ClickOutside/ClickOutside.tsx
|
|
4
4
|
function r({ onOutside: r, children: i, ...a }) {
|
|
5
5
|
let o = t(null), s = t(r);
|
|
6
|
-
return
|
|
6
|
+
return e(() => {
|
|
7
|
+
s.current = r;
|
|
8
|
+
}, [r]), e(() => {
|
|
7
9
|
if (typeof document > "u") return;
|
|
8
10
|
function e(e) {
|
|
9
11
|
let t = o.current, n = e.target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClickOutside.js","names":[],"sources":["../../../src/components/ClickOutside/ClickOutside.tsx"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\n\nexport interface ClickOutsideProps extends HTMLAttributes<HTMLDivElement> {\n /** Called when a pointer event lands outside the wrapped subtree. */\n onOutside: (event: MouseEvent | TouchEvent) => void;\n /** Content wrapped by the outside-click boundary. */\n children: ReactNode;\n}\n\n/**\n * Wraps its children in a `<div>` and invokes `onOutside` whenever a\n * `mousedown` or `touchstart` event occurs outside that subtree.\n *\n * Useful for dismissing popovers, dropdowns and menus on outside interaction.\n * Listeners are attached to `document` on mount and removed on unmount.\n *\n * @param props - The click-outside props, plus any `<div>` attributes.\n * @returns The wrapper element containing the children.\n */\nexport function ClickOutside({ onOutside, children, ...props }: ClickOutsideProps): ReactNode {\n const ref = useRef<HTMLDivElement>(null);\n const handlerRef = useRef(onOutside);\n handlerRef.current = onOutside;\n\n useEffect(() => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n function handle(event: MouseEvent | TouchEvent): void {\n const node = ref.current;\n const target = event.target as Node | null;\n if (node && target && !node.contains(target)) {\n handlerRef.current(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handle);\n document.addEventListener(\"touchstart\", handle);\n return () => {\n document.removeEventListener(\"mousedown\", handle);\n document.removeEventListener(\"touchstart\", handle);\n };\n }, []);\n\n return (\n <div ref={ref} {...props}>\n {children}\n </div>\n );\n}\n"],"mappings":";;;AAmBA,SAAgB,EAAa,EAAE,cAAW,aAAU,GAAG,KAAuC;CAC1F,IAAM,IAAM,EAAuB,IAAI,GACjC,IAAa,EAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"ClickOutside.js","names":[],"sources":["../../../src/components/ClickOutside/ClickOutside.tsx"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\n\nexport interface ClickOutsideProps extends HTMLAttributes<HTMLDivElement> {\n /** Called when a pointer event lands outside the wrapped subtree. */\n onOutside: (event: MouseEvent | TouchEvent) => void;\n /** Content wrapped by the outside-click boundary. */\n children: ReactNode;\n}\n\n/**\n * Wraps its children in a `<div>` and invokes `onOutside` whenever a\n * `mousedown` or `touchstart` event occurs outside that subtree.\n *\n * Useful for dismissing popovers, dropdowns and menus on outside interaction.\n * Listeners are attached to `document` on mount and removed on unmount.\n *\n * @param props - The click-outside props, plus any `<div>` attributes.\n * @returns The wrapper element containing the children.\n */\nexport function ClickOutside({ onOutside, children, ...props }: ClickOutsideProps): ReactNode {\n const ref = useRef<HTMLDivElement>(null);\n const handlerRef = useRef(onOutside);\n useEffect(() => {\n handlerRef.current = onOutside;\n }, [onOutside]);\n\n useEffect(() => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n function handle(event: MouseEvent | TouchEvent): void {\n const node = ref.current;\n const target = event.target as Node | null;\n if (node && target && !node.contains(target)) {\n handlerRef.current(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handle);\n document.addEventListener(\"touchstart\", handle);\n return () => {\n document.removeEventListener(\"mousedown\", handle);\n document.removeEventListener(\"touchstart\", handle);\n };\n }, []);\n\n return (\n <div ref={ref} {...props}>\n {children}\n </div>\n );\n}\n"],"mappings":";;;AAmBA,SAAgB,EAAa,EAAE,cAAW,aAAU,GAAG,KAAuC;CAC1F,IAAM,IAAM,EAAuB,IAAI,GACjC,IAAa,EAAO,CAAS;CA0BnC,OAzBA,QAAgB;EACZ,EAAW,UAAU;CACzB,GAAG,CAAC,CAAS,CAAC,GAEd,QAAgB;EACZ,IAAI,OAAO,WAAa,KACpB;EAGJ,SAAS,EAAO,GAAsC;GAClD,IAAM,IAAO,EAAI,SACX,IAAS,EAAM;GACrB,AAAI,KAAQ,KAAU,CAAC,EAAK,SAAS,CAAM,KACvC,EAAW,QAAQ,CAAK;EAEhC;EAIA,OAFA,SAAS,iBAAiB,aAAa,CAAM,GAC7C,SAAS,iBAAiB,cAAc,CAAM,SACjC;GAET,AADA,SAAS,oBAAoB,aAAa,CAAM,GAChD,SAAS,oBAAoB,cAAc,CAAM;EACrD;CACJ,GAAG,CAAC,CAAC,GAGD,kBAAC,OAAD;EAAU;EAAK,GAAI;EACd;CACA,CAAA;AAEb"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../../utils/cn.cjs"),t=require("../../hooks/use-pagination.cjs"),n=require("../Pagination/Pagination.cjs"),r=require("../SearchBar/SearchBar.cjs"),i=require("../Table/Table.cjs"),a=require("./DataTable.module.cjs");let
|
|
1
|
+
const e=require("../../utils/cn.cjs"),t=require("../../hooks/use-pagination.cjs"),n=require("../Pagination/Pagination.cjs"),r=require("../SearchBar/SearchBar.cjs"),i=require("../Table/Table.cjs"),a=require("../../utils/compare-values.cjs"),o=require("./DataTable.module.cjs");let s=require("react"),c=require("react/jsx-runtime");function l({data:l,columns:u,pageSize:d=10,searchable:f=!1,searchKeys:p,initialSort:m,rowKey:h=(e,t)=>t,emptyMessage:g,className:_,...v}){let[y,b]=(0,s.useState)(``),[x,S]=(0,s.useState)(m??null),{page:C,setPage:w}=t.usePagination(1,d),T=(0,s.useMemo)(()=>p&&p.length>0?p:u.filter(e=>{let t=l.find(t=>t[e.key]!=null),n=t?t[e.key]:void 0;return typeof n==`string`||typeof n==`number`}).map(e=>e.key),[p,u,l]),E=(0,s.useMemo)(()=>{let e=y.trim().toLowerCase();return!e||!f?l:l.filter(t=>T.some(n=>{let r=t[n];return r!=null&&String(r).toLowerCase().includes(e)}))},[l,y,f,T]),D=(0,s.useMemo)(()=>{if(!x)return E;let e=x.direction===`asc`?1:-1;return[...E].sort((t,n)=>a.compareValues(t[x.key],n[x.key])*e)},[E,x]),O=Math.max(1,Math.ceil(D.length/d));(0,s.useEffect)(()=>{C>O&&w(O)},[C,O,w]);let k=Math.min(C,O),A=(0,s.useMemo)(()=>{let e=(k-1)*d;return D.slice(e,e+d)},[D,k,d]);function j(e){S(t=>!t||t.key!==e?{key:e,direction:`asc`}:t.direction===`asc`?{key:e,direction:`desc`}:null)}let M=(0,s.useMemo)(()=>u.map(e=>{let t=x?.key===e.key?x?.direction===`asc`?` ▲`:` ▼`:``,n=e.sortable?(0,c.jsxs)(`button`,{type:`button`,className:o.default.sortButton,onClick:()=>j(e.key),"aria-label":`Ordenar por ${typeof e.header==`string`?e.header:String(e.key)}`,children:[e.header,(0,c.jsx)(`span`,{className:o.default.sortIndicator,"aria-hidden":!0,children:t})]}):e.header;return{key:String(e.key),header:n,align:e.align,priority:e.priority,width:e.width,render:e.render?t=>e.render(t):t=>t[e.key]??null}}),[u,x]);return(0,c.jsxs)(`div`,{className:e.cn(o.default.wrapper,_),...v,children:[f&&(0,c.jsx)(r.SearchBar,{value:y,onChange:e=>{b(e),w(1)},wrapperClassName:o.default.search}),(0,c.jsx)(i.Table,{columns:M,data:A,rowKey:(e,t)=>h(e,(k-1)*d+t),emptyMessage:g}),O>1&&(0,c.jsx)(n.Pagination,{page:k,totalPages:O,onPageChange:w,totalItems:D.length})]})}exports.DataTable=l;
|
|
2
2
|
//# sourceMappingURL=DataTable.cjs.map
|