basalt-ui 1.28.0 → 1.29.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/AGENTS.md +11 -18
- package/CHANGELOG.md +13 -0
- package/MIGRATING.md +151 -7
- package/README.md +23 -66
- package/agent/rules/basalt-batteries.md +59 -182
- package/agent/rules/basalt-charts.md +56 -75
- package/agent/rules/basalt-controls.md +38 -69
- package/agent/rules/basalt-mantine.md +58 -103
- package/agent/rules/basalt-state.md +42 -60
- package/agent/rules/basalt-tokens.md +46 -67
- package/agent/skills/basalt-app/SKILL.md +2 -0
- package/agent/templates/CLAUDE-block.md.tpl +14 -14
- package/configs/oxlint-plugin.js +70 -167
- package/configs/oxlint-plugin.test.ts +20 -186
- package/configs/oxlint.json +0 -1
- package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
- package/dist/agent/ai-sdk-transport.js +7 -4
- package/dist/agent/coalesce.js +1 -1
- package/dist/agent/merge.js +1 -1
- package/dist/agent/transport.d.ts +13 -2
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.d.ts +12 -1
- package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.js +20 -6
- package/dist/agent-chat/index.d.ts +1 -1
- package/dist/agent-chat/index.d.ts.map +1 -1
- package/dist/agent-chat/relative-time.js +1 -1
- package/dist/agent-chat/thread-detail-panel.js +1 -1
- package/dist/agent-chat/thread-feed-row.d.ts +32 -7
- package/dist/agent-chat/thread-feed-row.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed-row.js +121 -86
- package/dist/agent-chat/thread-feed.d.ts +11 -1
- package/dist/agent-chat/thread-feed.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed.js +10 -6
- package/dist/agent-chat/thread-message.js +1 -1
- package/dist/agent-chat/virtualize.d.ts +39 -0
- package/dist/agent-chat/virtualize.d.ts.map +1 -1
- package/dist/agent-chat/virtualize.js +15 -0
- package/dist/charts/index.d.ts +3 -3
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +8 -4
- package/dist/charts/kinds/BandStrip.js +1 -1
- package/dist/charts/kinds/Bars.d.ts +1 -3
- package/dist/charts/kinds/Bars.d.ts.map +1 -1
- package/dist/charts/kinds/Bars.js +1 -1
- package/dist/charts/kinds/DualPanel.d.ts +3 -1
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/DualPanel.js +1 -1
- package/dist/charts/kinds/StackedArea.js +1 -1
- package/dist/charts/kinds/ZonedLine.d.ts +1 -3
- package/dist/charts/kinds/ZonedLine.d.ts.map +1 -1
- package/dist/charts/primitives/Axes.d.ts +21 -2
- package/dist/charts/primitives/Axes.d.ts.map +1 -1
- package/dist/charts/primitives/Axes.js +34 -2
- package/dist/charts/primitives/ChartCard.d.ts +20 -4
- package/dist/charts/primitives/ChartCard.d.ts.map +1 -1
- package/dist/charts/primitives/ChartCard.js +62 -33
- package/dist/charts/primitives/ChartFrame.d.ts.map +1 -1
- package/dist/charts/primitives/ChartFrame.js +8 -1
- package/dist/charts/primitives/ChartPending.d.ts +12 -6
- package/dist/charts/primitives/ChartPending.d.ts.map +1 -1
- package/dist/charts/primitives/ChartPending.js +1 -1
- package/dist/charts/utils/format.d.ts +5 -92
- package/dist/charts/utils/format.d.ts.map +1 -1
- package/dist/charts/utils/format.js +10 -80
- package/dist/cli/audit-allows.d.ts +24 -0
- package/dist/cli/audit-allows.d.ts.map +1 -0
- package/dist/cli/audit-allows.js +240 -0
- package/dist/cli/check-theme.d.ts +10 -0
- package/dist/cli/check-theme.d.ts.map +1 -0
- package/dist/cli/check-theme.js +139 -0
- package/dist/cli/doctor.d.ts +47 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +197 -0
- package/dist/cli/guard-hook.d.ts +9 -0
- package/dist/cli/guard-hook.d.ts.map +1 -0
- package/dist/cli/guard-hook.js +93 -0
- package/dist/cli/help.d.ts +9 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +53 -0
- package/dist/cli/index.d.ts +360 -270
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +85 -1901
- package/dist/cli/init.d.ts +4 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +165 -0
- package/dist/cli/sync.d.ts +43 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +206 -0
- package/dist/cli/tokens-css.d.ts +51 -0
- package/dist/cli/tokens-css.d.ts.map +1 -0
- package/dist/cli/tokens-css.js +165 -0
- package/dist/commands/define-commands.js +1 -1
- package/dist/commands/define-overlays.js +1 -1
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +6 -0
- package/dist/commands/overlays-mount.d.ts +7 -9
- package/dist/commands/overlays-mount.d.ts.map +1 -1
- package/dist/commands/shell-bridge.d.ts +57 -0
- package/dist/commands/shell-bridge.d.ts.map +1 -0
- package/dist/commands/shell-bridge.js +32 -0
- package/dist/common/errors.d.ts +35 -0
- package/dist/common/errors.d.ts.map +1 -1
- package/dist/common/errors.js +29 -1
- package/dist/common/index.d.ts +2 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +6 -0
- package/dist/common/is-dev.d.ts.map +1 -0
- package/dist/{motion/index.d.ts → common/motion.d.ts} +1 -1
- package/dist/common/motion.d.ts.map +1 -0
- package/dist/common/props.d.ts +1 -1
- package/dist/common/props.d.ts.map +1 -1
- package/dist/common/validate.js +1 -1
- package/dist/content/markdown.d.ts +3 -4
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +1 -4
- package/dist/controls/actions.d.ts +1 -1
- package/dist/controls/actions.d.ts.map +1 -1
- package/dist/controls/panel-row.js +1 -1
- package/dist/controls/range-filter.js +1 -1
- package/dist/dashboard/delta-badge.d.ts +18 -10
- package/dist/dashboard/delta-badge.d.ts.map +1 -1
- package/dist/dashboard/delta-badge.js +33 -1
- package/dist/dashboard/empty-state.d.ts +1 -4
- package/dist/dashboard/empty-state.d.ts.map +1 -1
- package/dist/dashboard/empty-state.js +1 -2
- package/dist/dashboard/index.d.ts +4 -2
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +7 -1
- package/dist/dashboard/query-state.d.ts +4 -13
- package/dist/dashboard/query-state.d.ts.map +1 -1
- package/dist/dashboard/query-state.js +4 -7
- package/dist/{section → dashboard}/section.d.ts +2 -2
- package/dist/{section → dashboard}/section.d.ts.map +1 -1
- package/dist/{section → dashboard}/section.js +2 -2
- package/dist/dashboard/settings-section.d.ts +1 -1
- package/dist/dashboard/settings-section.d.ts.map +1 -1
- package/dist/dashboard/settings-section.js +1 -1
- package/dist/dashboard/stat-card.d.ts +1 -1
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +1 -1
- package/dist/dashboard/widget-header.d.ts.map +1 -0
- package/dist/data/data-table.js +2 -2
- package/dist/data/table.d.ts +1 -1
- package/dist/data/table.d.ts.map +1 -1
- package/dist/data/table.js +2 -16
- package/dist/data/virtual.d.ts +3 -3
- package/dist/dev-dock.d.ts +28 -0
- package/dist/dev-dock.d.ts.map +1 -0
- package/dist/dev-dock.js +85 -0
- package/dist/format/date.d.ts +62 -0
- package/dist/format/date.d.ts.map +1 -0
- package/dist/format/date.js +106 -0
- package/dist/format/index.d.ts +39 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +54 -0
- package/dist/format/measure.d.ts +15 -0
- package/dist/format/measure.d.ts.map +1 -0
- package/dist/format/measure.js +16 -0
- package/dist/format/number.d.ts +69 -0
- package/dist/format/number.d.ts.map +1 -0
- package/dist/format/number.js +62 -0
- package/dist/format/shared.d.ts +27 -0
- package/dist/format/shared.d.ts.map +1 -0
- package/dist/format/shared.js +29 -0
- package/dist/forms/field.d.ts +4 -20
- package/dist/forms/field.d.ts.map +1 -1
- package/dist/forms/field.js +0 -4
- package/dist/forms/form-layout.d.ts +1 -1
- package/dist/forms/form-layout.d.ts.map +1 -1
- package/dist/forms/form-layout.js +1 -1
- package/dist/forms/index.d.ts +1 -1
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -2
- package/dist/forms/use-form-submit.js +1 -1
- package/dist/guard/index.d.ts +2 -9
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +16 -26
- package/dist/guard/types.d.ts +8 -10
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -29
- package/dist/notifications/index.d.ts +5 -5
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +0 -2
- package/dist/notifications/mount-guard.d.ts.map +1 -1
- package/dist/notifications/mount-guard.js +2 -2
- package/dist/provider/connectivity-indicator.d.ts.map +1 -0
- package/dist/{connectivity → provider}/connectivity-provider.d.ts +1 -1
- package/dist/provider/connectivity-provider.d.ts.map +1 -0
- package/dist/{connectivity/types.d.ts → provider/connectivity-types.d.ts} +1 -1
- package/dist/provider/connectivity-types.d.ts.map +1 -0
- package/dist/provider/error-fallback.module.css +21 -0
- package/dist/provider/error-fallback.module.css.d.ts +9 -0
- package/dist/provider/index.d.ts +20 -36
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +42 -32
- package/dist/provider/lab-theme.js +1 -1
- package/dist/provider/use-connectivity.d.ts +3 -0
- package/dist/provider/use-connectivity.d.ts.map +1 -0
- package/dist/query-client.d.ts +63 -0
- package/dist/query-client.d.ts.map +1 -0
- package/dist/query-client.js +33 -0
- package/dist/{query/devtools.d.ts → query-devtools.d.ts} +2 -2
- package/dist/query-devtools.d.ts.map +1 -0
- package/dist/register.d.ts +17 -3
- package/dist/register.d.ts.map +1 -1
- package/dist/router-tanstack/index.d.ts +4 -7
- package/dist/router-tanstack/index.d.ts.map +1 -1
- package/dist/router-tanstack/index.js +1 -9
- package/dist/router-tanstack/nav.d.ts +1 -1
- package/dist/router-tanstack/nav.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.d.ts +3 -6
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.d.ts +1 -1
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/shell/app-breadcrumbs.d.ts +1 -1
- package/dist/shell/app-breadcrumbs.d.ts.map +1 -1
- package/dist/shell/app-main.module.css +11 -0
- package/dist/shell/app-mobile-nav.d.ts +1 -1
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-mobile-nav.js +24 -2
- package/dist/shell/app-sidebar.d.ts +1 -1
- package/dist/shell/app-sidebar.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +31 -2
- package/dist/shell/app-sidebar.module.css +10 -0
- package/dist/shell/index.d.ts +10 -4
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +13 -17
- package/dist/shell/mobile-nav-model.d.ts +1 -1
- package/dist/shell/mobile-nav-model.d.ts.map +1 -1
- package/dist/{nav/types.d.ts → shell/nav-types.d.ts} +1 -1
- package/dist/shell/nav-types.d.ts.map +1 -0
- package/dist/shell/page-aside.d.ts.map +1 -1
- package/dist/shell/page-aside.js +2 -29
- package/dist/shell/page-title.d.ts +14 -0
- package/dist/shell/page-title.d.ts.map +1 -0
- package/dist/shell/page-title.js +25 -0
- package/dist/shell/page-title.module.css +33 -0
- package/dist/shell/page-title.module.css.d.ts +11 -0
- package/dist/shell/sidebar-block-model.d.ts +1 -1
- package/dist/shell/sidebar-block-model.d.ts.map +1 -1
- package/dist/shell/sidebar-blocks.d.ts +1 -1
- package/dist/shell/sidebar-blocks.d.ts.map +1 -1
- package/dist/shell/use-breakpoint.d.ts +11 -0
- package/dist/shell/use-breakpoint.d.ts.map +1 -0
- package/dist/shell/use-breakpoint.js +33 -0
- package/dist/state/fields.d.ts +3 -19
- package/dist/state/fields.d.ts.map +1 -1
- package/dist/state/fields.js +6 -16
- package/dist/styles.css +36 -0
- package/dist/surfaces.d.ts +18 -41
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +46 -59
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/{theme-toggle/index.d.ts → theme/theme-toggle.d.ts} +1 -1
- package/dist/theme/theme-toggle.d.ts.map +1 -0
- package/dist/{theme-toggle/index.js → theme/theme-toggle.js} +1 -1
- package/dist/tokens/index.d.ts +1 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +10 -0
- package/dist/tokens/palette.d.ts +12 -0
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +13 -1
- package/dist/tokens.css +1 -0
- package/llms.txt +9 -24
- package/package.json +12 -16
- package/src/agent/ai-sdk-transport.ts +11 -4
- package/src/agent/coalesce.ts +1 -1
- package/src/agent/merge.ts +1 -1
- package/src/agent/transport.ts +15 -2
- package/src/agent/use-agent-thread-runs.ts +65 -15
- package/src/agent-chat/index.ts +6 -4
- package/src/agent-chat/relative-time.ts +1 -1
- package/src/agent-chat/thread-detail-panel.tsx +1 -1
- package/src/agent-chat/thread-feed-row.tsx +105 -30
- package/src/agent-chat/thread-feed.tsx +51 -25
- package/src/agent-chat/thread-message.tsx +1 -1
- package/src/agent-chat/virtualize.ts +48 -0
- package/src/charts/index.ts +7 -10
- package/src/charts/kinds/BandStrip.tsx +1 -1
- package/src/charts/kinds/Bars.tsx +2 -5
- package/src/charts/kinds/DualPanel.tsx +4 -3
- package/src/charts/kinds/StackedArea.tsx +1 -1
- package/src/charts/kinds/ZonedLine.tsx +1 -4
- package/src/charts/primitives/Axes.tsx +49 -0
- package/src/charts/primitives/ChartCard.tsx +49 -6
- package/src/charts/primitives/ChartFrame.tsx +5 -1
- package/src/charts/primitives/ChartPending.tsx +14 -8
- package/src/charts/utils/format.ts +17 -186
- package/src/cli/audit-allows.ts +371 -0
- package/src/cli/check-theme.ts +197 -0
- package/src/cli/doctor.ts +331 -0
- package/src/cli/guard-hook.ts +115 -0
- package/src/cli/help.ts +101 -0
- package/src/cli/index.ts +269 -3439
- package/src/cli/init.ts +247 -0
- package/src/cli/sync.ts +324 -0
- package/src/cli/tokens-css.ts +252 -0
- package/src/commands/define-commands.ts +1 -1
- package/src/commands/define-overlays.ts +1 -1
- package/src/commands/index.ts +10 -1
- package/src/commands/overlays-mount.tsx +8 -10
- package/src/commands/shell-bridge.ts +86 -0
- package/src/common/errors.ts +70 -0
- package/src/common/index.ts +2 -0
- package/src/common/props.ts +1 -1
- package/src/common/validate.ts +1 -1
- package/src/content/markdown.tsx +4 -8
- package/src/controls/actions.tsx +1 -1
- package/src/controls/panel-row.tsx +1 -1
- package/src/controls/range-filter.tsx +1 -1
- package/src/dashboard/delta-badge.tsx +74 -7
- package/src/dashboard/empty-state.tsx +2 -6
- package/src/dashboard/index.ts +11 -2
- package/src/dashboard/query-state.tsx +5 -18
- package/src/{section → dashboard}/section.tsx +4 -4
- package/src/dashboard/settings-section.tsx +2 -2
- package/src/dashboard/stat-card.tsx +2 -2
- package/src/data/data-table.tsx +3 -3
- package/src/data/table.ts +6 -25
- package/src/data/virtual-list.tsx +1 -1
- package/src/data/virtual.ts +3 -3
- package/src/dev-dock.tsx +159 -0
- package/src/format/date.ts +184 -0
- package/src/format/index.ts +69 -0
- package/src/format/measure.ts +31 -0
- package/src/format/number.ts +129 -0
- package/src/format/shared.ts +63 -0
- package/src/forms/field.ts +4 -24
- package/src/forms/form-layout.tsx +2 -2
- package/src/forms/index.ts +1 -2
- package/src/forms/use-form-submit.ts +1 -1
- package/src/guard/index.ts +30 -56
- package/src/guard/types.ts +7 -10
- package/src/index.ts +38 -29
- package/src/notifications/index.ts +5 -7
- package/src/notifications/mount-guard.ts +7 -9
- package/src/{connectivity → provider}/connectivity-indicator.tsx +1 -1
- package/src/{connectivity → provider}/connectivity-provider.tsx +1 -1
- package/src/provider/error-fallback.module.css +21 -0
- package/src/provider/error-fallback.module.css.d.ts +9 -0
- package/src/provider/index.tsx +71 -71
- package/src/provider/lab-theme.ts +1 -1
- package/src/{connectivity → provider}/use-connectivity.ts +3 -3
- package/src/query-client.ts +100 -0
- package/src/{query/devtools.tsx → query-devtools.tsx} +5 -4
- package/src/register.ts +20 -4
- package/src/router-tanstack/index.ts +4 -15
- package/src/router-tanstack/nav.ts +1 -1
- package/src/router-tanstack/search-store.ts +3 -4
- package/src/router-tanstack/use-nav.ts +1 -1
- package/src/shell/app-breadcrumbs.tsx +1 -1
- package/src/shell/app-main.module.css +11 -0
- package/src/shell/app-mobile-nav.tsx +28 -1
- package/src/shell/app-sidebar.module.css +10 -0
- package/src/shell/app-sidebar.tsx +31 -2
- package/src/shell/index.tsx +23 -28
- package/src/shell/mobile-nav-model.ts +1 -1
- package/src/shell/page-aside.tsx +2 -52
- package/src/shell/page-title.module.css +33 -0
- package/src/shell/page-title.module.css.d.ts +11 -0
- package/src/shell/page-title.tsx +57 -0
- package/src/shell/sidebar-block-model.ts +1 -1
- package/src/shell/sidebar-blocks.tsx +1 -1
- package/src/shell/use-breakpoint.ts +73 -0
- package/src/state/fields.ts +7 -43
- package/src/styles.css +36 -0
- package/src/surfaces.ts +45 -60
- package/src/theme/index.ts +7 -0
- package/src/{theme-toggle/index.tsx → theme/theme-toggle.tsx} +1 -1
- package/src/tokens/index.ts +10 -0
- package/src/tokens/palette.ts +12 -0
- package/dist/connectivity/connectivity-indicator.d.ts.map +0 -1
- package/dist/connectivity/connectivity-provider.d.ts.map +0 -1
- package/dist/connectivity/index.d.ts +0 -14
- package/dist/connectivity/index.d.ts.map +0 -1
- package/dist/connectivity/index.js +0 -8
- package/dist/connectivity/types.d.ts.map +0 -1
- package/dist/connectivity/use-connectivity.d.ts +0 -3
- package/dist/connectivity/use-connectivity.d.ts.map +0 -1
- package/dist/data/index.d.ts +0 -38
- package/dist/data/index.d.ts.map +0 -1
- package/dist/data/index.js +0 -24
- package/dist/motion/index.d.ts.map +0 -1
- package/dist/nav/types.d.ts.map +0 -1
- package/dist/notifications/overlay.d.ts +0 -20
- package/dist/notifications/overlay.d.ts.map +0 -1
- package/dist/notifications/overlay.js +0 -14
- package/dist/query/devtools.d.ts.map +0 -1
- package/dist/query/error-message.d.ts +0 -41
- package/dist/query/error-message.d.ts.map +0 -1
- package/dist/query/error-message.js +0 -30
- package/dist/query/index.d.ts +0 -47
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js +0 -56
- package/dist/router-tanstack/field.d.ts +0 -14
- package/dist/router-tanstack/field.d.ts.map +0 -1
- package/dist/router-tanstack/field.js +0 -4
- package/dist/router-tanstack/multi-search-param-store.d.ts +0 -43
- package/dist/router-tanstack/multi-search-param-store.d.ts.map +0 -1
- package/dist/router-tanstack/multi-search-param-store.js +0 -30
- package/dist/router-tanstack/search-param-store.d.ts +0 -42
- package/dist/router-tanstack/search-param-store.d.ts.map +0 -1
- package/dist/router-tanstack/search-param-store.js +0 -25
- package/dist/section/index.d.ts +0 -2
- package/dist/section/index.d.ts.map +0 -1
- package/dist/section/index.js +0 -4
- package/dist/theme-toggle/index.d.ts.map +0 -1
- package/dist/utils/is-dev.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.d.ts +0 -19
- package/dist/widget-header/delta-badge.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.js +0 -36
- package/dist/widget-header/index.d.ts +0 -3
- package/dist/widget-header/index.d.ts.map +0 -1
- package/dist/widget-header/index.js +0 -8
- package/dist/widget-header/widget-header.d.ts.map +0 -1
- package/src/connectivity/index.ts +0 -19
- package/src/data/index.ts +0 -69
- package/src/notifications/overlay.tsx +0 -66
- package/src/query/error-message.ts +0 -70
- package/src/query/index.ts +0 -97
- package/src/router-tanstack/field.ts +0 -36
- package/src/router-tanstack/multi-search-param-store.ts +0 -106
- package/src/router-tanstack/search-param-store.ts +0 -100
- package/src/section/index.ts +0 -1
- package/src/widget-header/delta-badge.tsx +0 -77
- package/src/widget-header/index.ts +0 -10
- /package/dist/{utils → common}/is-dev.d.ts +0 -0
- /package/dist/{utils → common}/is-dev.js +0 -0
- /package/dist/{motion/index.js → common/motion.js} +0 -0
- /package/dist/{section → dashboard}/section.module.css +0 -0
- /package/dist/{section → dashboard}/section.module.css.d.ts +0 -0
- /package/dist/{widget-header → dashboard}/widget-header.d.ts +0 -0
- /package/dist/{widget-header → dashboard}/widget-header.js +0 -0
- /package/dist/{widget-header → dashboard}/widget-header.module.css +0 -0
- /package/dist/{widget-header → dashboard}/widget-header.module.css.d.ts +0 -0
- /package/dist/{connectivity → provider}/connectivity-indicator.d.ts +0 -0
- /package/dist/{connectivity → provider}/connectivity-indicator.js +0 -0
- /package/dist/{connectivity → provider}/connectivity-provider.js +0 -0
- /package/dist/{connectivity/types.js → provider/connectivity-types.js} +0 -0
- /package/dist/{connectivity → provider}/use-connectivity.js +0 -0
- /package/dist/{query/devtools.js → query-devtools.js} +0 -0
- /package/dist/{nav/types.js → shell/nav-types.js} +0 -0
- /package/src/{utils → common}/is-dev.ts +0 -0
- /package/src/{motion/index.ts → common/motion.ts} +0 -0
- /package/src/{section → dashboard}/section.module.css +0 -0
- /package/src/{section → dashboard}/section.module.css.d.ts +0 -0
- /package/src/{widget-header → dashboard}/widget-header.module.css +0 -0
- /package/src/{widget-header → dashboard}/widget-header.module.css.d.ts +0 -0
- /package/src/{widget-header → dashboard}/widget-header.tsx +0 -0
- /package/src/{connectivity/types.ts → provider/connectivity-types.ts} +0 -0
- /package/src/{nav/types.ts → shell/nav-types.ts} +0 -0
package/dist/query/index.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { QueryClient } from "@tanstack/react-query";
|
|
2
|
-
const BASALT_QUERY_DEFAULTS = {
|
|
3
|
-
staleTime: 3e4,
|
|
4
|
-
gcTime: 5 * 60 * 1e3,
|
|
5
|
-
retry: 2,
|
|
6
|
-
refetchOnWindowFocus: false
|
|
7
|
-
};
|
|
8
|
-
function createBasaltQueryClient(config) {
|
|
9
|
-
return new QueryClient({
|
|
10
|
-
...config,
|
|
11
|
-
defaultOptions: {
|
|
12
|
-
...config?.defaultOptions,
|
|
13
|
-
queries: { ...BASALT_QUERY_DEFAULTS, ...config?.defaultOptions?.queries }
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
async function unwrap(response) {
|
|
18
|
-
const { data, error } = await response;
|
|
19
|
-
if (error) throw error;
|
|
20
|
-
if (data === null)
|
|
21
|
-
throw new Error(
|
|
22
|
-
"unwrap: null data with no error \u2014 check for a 204 response or a transport failure"
|
|
23
|
-
);
|
|
24
|
-
return data;
|
|
25
|
-
}
|
|
26
|
-
import { toErrorMessage, errorStatus } from "./error-message.js";
|
|
27
|
-
import {
|
|
28
|
-
QueryClientProvider,
|
|
29
|
-
QueryErrorResetBoundary,
|
|
30
|
-
useQueryErrorResetBoundary
|
|
31
|
-
} from "@tanstack/react-query";
|
|
32
|
-
import {
|
|
33
|
-
useQuery,
|
|
34
|
-
useSuspenseQuery,
|
|
35
|
-
useMutation,
|
|
36
|
-
useQueryClient,
|
|
37
|
-
useInfiniteQuery,
|
|
38
|
-
queryOptions
|
|
39
|
-
} from "@tanstack/react-query";
|
|
40
|
-
import { BasaltQueryDevtools } from "./devtools.js";
|
|
41
|
-
export {
|
|
42
|
-
BasaltQueryDevtools,
|
|
43
|
-
QueryClientProvider,
|
|
44
|
-
QueryErrorResetBoundary,
|
|
45
|
-
createBasaltQueryClient,
|
|
46
|
-
errorStatus,
|
|
47
|
-
queryOptions,
|
|
48
|
-
toErrorMessage,
|
|
49
|
-
unwrap,
|
|
50
|
-
useInfiniteQuery,
|
|
51
|
-
useMutation,
|
|
52
|
-
useQuery,
|
|
53
|
-
useQueryClient,
|
|
54
|
-
useQueryErrorResetBoundary,
|
|
55
|
-
useSuspenseQuery
|
|
56
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `field.*` — the field vocabulary `createSearchStore` takes, re-exported at the surface a consumer
|
|
3
|
-
* imports it from (`basalt-ui/router-tanstack`, beside the store factory).
|
|
4
|
-
*
|
|
5
|
-
* The builders and their codecs LIVE in `../state` on purpose: a field is declarative data with no
|
|
6
|
-
* router in it, and `createLocalStore` — the router-free lane, published on `basalt-ui/state` —
|
|
7
|
-
* has to build the same fields without pulling in `@tanstack/react-router`. One definition, two
|
|
8
|
-
* surfaces, no second description of the same param.
|
|
9
|
-
*
|
|
10
|
-
* Full field reference: the JSDoc on `field` itself, and `docs/CONTROLS-SPEC.md` §4.
|
|
11
|
-
*/
|
|
12
|
-
export { field } from '../state.js';
|
|
13
|
-
export type { AnyField, BooleanField, EnumField, FieldFallback, FieldHandle, FieldLane, FieldOption, FieldSetOptions, FieldValue, MultiField, NumberField, RangeField, RangeParams, RangePresets, RangeWindow, RangeWindows, RangeValue, ResolvedLane, ResolveLane, SearchValues, StoredValues, StringField, } from '../state.js';
|
|
14
|
-
//# sourceMappingURL=field.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/router-tanstack/field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,EACX,SAAS,EACT,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,UAAU,CAAA"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export type MultiSearchParamStoreOptions<T extends string, P extends string = string> = {
|
|
2
|
-
/** localStorage key (namespaced `basalt:<key>` automatically). */
|
|
3
|
-
key: string;
|
|
4
|
-
/** URL search-param name (e.g. `"tags"`, `"categories"`). */
|
|
5
|
-
param: P;
|
|
6
|
-
/** Allowed values — `as const` for best type inference. Also the canonical sort order. */
|
|
7
|
-
values: readonly T[];
|
|
8
|
-
/** Factory default when nothing is in the URL or localStorage. Default `[]` (unfiltered). */
|
|
9
|
-
fallback?: readonly T[];
|
|
10
|
-
/** Envelope version — bump when `values` change to discard stale localStorage. */
|
|
11
|
-
version?: number;
|
|
12
|
-
};
|
|
13
|
-
export type MultiSearchParamStore<T extends string, P extends string = string> = {
|
|
14
|
-
/**
|
|
15
|
-
* validateSearch — pass directly to `createFileRoute({ validateSearch })`.
|
|
16
|
-
* Falls back to localStorage, then to `fallback`.
|
|
17
|
-
*/
|
|
18
|
-
validateSearch: (search: Record<string, unknown>) => {
|
|
19
|
-
[K in P]: readonly T[];
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* React hook: `const [current, persist] = store.useStore()`.
|
|
23
|
-
* localStorage only — it does NOT read or write the URL.
|
|
24
|
-
*/
|
|
25
|
-
useStore: () => readonly [readonly T[], (next: readonly T[]) => void];
|
|
26
|
-
/** Plain read — for use outside React (tests, guards, fallback reads). */
|
|
27
|
-
readStored: () => readonly T[] | null;
|
|
28
|
-
/**
|
|
29
|
-
* The click-time `search:` thunk for a nav link — `() => ({ [param]: readStored() ?? fallback })`.
|
|
30
|
-
* Pass it BY REFERENCE (`search: store.linkSearch`), never call it; see `createSearchParamStore`
|
|
31
|
-
* for why a module-scope literal silently defeats the store.
|
|
32
|
-
*
|
|
33
|
-
* No dev warning rides on this one, unlike the single-value store: an empty array in the URL is
|
|
34
|
-
* indistinguishable from an absent param here, so a link declaring `{ tags: [] }` restores
|
|
35
|
-
* correctly and there is no broken state to detect.
|
|
36
|
-
*/
|
|
37
|
-
linkSearch: () => {
|
|
38
|
-
[K in P]: readonly T[];
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
/** @deprecated Use `createSearchStore` + `field.multi`. Removed in 1.29.0. */
|
|
42
|
-
export declare function createMultiSearchParamStore<const T extends string, const P extends string>(opts: MultiSearchParamStoreOptions<T, P>): MultiSearchParamStore<T, P>;
|
|
43
|
-
//# sourceMappingURL=multi-search-param-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-search-param-store.d.ts","sourceRoot":"","sources":["../../src/router-tanstack/multi-search-param-store.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACtF,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAA;IACX,6DAA6D;IAC7D,KAAK,EAAE,CAAC,CAAA;IACR,0FAA0F;IAC1F,MAAM,EAAE,SAAS,CAAC,EAAE,CAAA;IACpB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,CAAA;IACvB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAC/E;;;OAGG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;SAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE;KAAE,CAAA;IAC/E;;;OAGG;IACH,QAAQ,EAAE,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;IACrE,0EAA0E;IAC1E,UAAU,EAAE,MAAM,SAAS,CAAC,EAAE,GAAG,IAAI,CAAA;IACrC;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM;SAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE;KAAE,CAAA;CAC7C,CAAA;AAID,8EAA8E;AAC9E,wBAAgB,2BAA2B,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM,EACxF,IAAI,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,GACvC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CA4B7B"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { createPersistedState, field } from "../state.js";
|
|
2
|
-
import { buildSearchStore } from "./search-store.js";
|
|
3
|
-
function createMultiSearchParamStore(opts) {
|
|
4
|
-
const version = opts.version ?? 1;
|
|
5
|
-
const fallback = opts.fallback ?? [];
|
|
6
|
-
const store = buildSearchStore({
|
|
7
|
-
key: opts.key,
|
|
8
|
-
version,
|
|
9
|
-
fields: { [opts.param]: field.multi(opts.values, fallback) },
|
|
10
|
-
legacyValueField: opts.param
|
|
11
|
-
});
|
|
12
|
-
const persisted = createPersistedState({
|
|
13
|
-
key: opts.key,
|
|
14
|
-
version,
|
|
15
|
-
initial: fallback
|
|
16
|
-
});
|
|
17
|
-
const useStore = () => {
|
|
18
|
-
store.markReaderWired();
|
|
19
|
-
return persisted();
|
|
20
|
-
};
|
|
21
|
-
return {
|
|
22
|
-
validateSearch: (search) => store.validateSearch(search),
|
|
23
|
-
useStore,
|
|
24
|
-
readStored: () => store.readStored()[opts.param] ?? null,
|
|
25
|
-
linkSearch: () => store.linkSearch()
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export {
|
|
29
|
-
createMultiSearchParamStore
|
|
30
|
-
};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export type SearchParamStoreOptions<T extends string, P extends string = string> = {
|
|
2
|
-
/** localStorage key (namespaced `basalt:<key>` automatically). */
|
|
3
|
-
key: string;
|
|
4
|
-
/** URL search-param name (e.g. `"range"`, `"tab"`, `"filter"`). */
|
|
5
|
-
param: P;
|
|
6
|
-
/** Allowed values — `as const` for best type inference. */
|
|
7
|
-
values: readonly T[];
|
|
8
|
-
/** Factory default when nothing is in the URL or localStorage. */
|
|
9
|
-
fallback: T;
|
|
10
|
-
/** Envelope version — bump when `values` change to discard stale localStorage. */
|
|
11
|
-
version?: number;
|
|
12
|
-
};
|
|
13
|
-
export type SearchParamStore<T extends string, P extends string = string> = {
|
|
14
|
-
/**
|
|
15
|
-
* validateSearch — pass directly to `createFileRoute({ validateSearch })`.
|
|
16
|
-
* Falls back to localStorage, then to `fallback`.
|
|
17
|
-
*/
|
|
18
|
-
validateSearch: (search: Record<string, unknown>) => {
|
|
19
|
-
[K in P]: T;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* React hook: `const [current, persist] = store.useStore()`.
|
|
23
|
-
* localStorage only — it does NOT read or write the URL. `createSearchStore`'s
|
|
24
|
-
* `field.<name>.use()` is the replacement that does both.
|
|
25
|
-
*/
|
|
26
|
-
useStore: () => readonly [T, (next: T) => void];
|
|
27
|
-
/** Plain read — for use outside React (tests, guards, fallback reads). */
|
|
28
|
-
readStored: () => T | null;
|
|
29
|
-
/**
|
|
30
|
-
* The click-time `search:` thunk for a nav link — `() => ({ [param]: readStored() ?? fallback })`.
|
|
31
|
-
*
|
|
32
|
-
* Pass it BY REFERENCE (`search: store.linkSearch`), never call it: `<Link>` re-evaluates the
|
|
33
|
-
* thunk on every click, so arriving from outside the sub-tree restores the last selection,
|
|
34
|
-
* whereas a value computed once at module scope goes stale immediately and pins the fallback.
|
|
35
|
-
*/
|
|
36
|
-
linkSearch: () => {
|
|
37
|
-
[K in P]: T;
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
/** @deprecated Use `createSearchStore` + `field.enum`. Removed in 1.29.0. */
|
|
41
|
-
export declare function createSearchParamStore<const T extends string, const P extends string>(opts: SearchParamStoreOptions<T, P>): SearchParamStore<T, P>;
|
|
42
|
-
//# sourceMappingURL=search-param-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-param-store.d.ts","sourceRoot":"","sources":["../../src/router-tanstack/search-param-store.ts"],"names":[],"mappings":"AAiCA,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACjF,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAA;IACX,mEAAmE;IACnE,KAAK,EAAE,CAAC,CAAA;IACR,2DAA2D;IAC3D,MAAM,EAAE,SAAS,CAAC,EAAE,CAAA;IACpB,kEAAkE;IAClE,QAAQ,EAAE,CAAC,CAAA;IACX,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAC1E;;;OAGG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;SAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KAAE,CAAA;IACpE;;;;OAIG;IACH,QAAQ,EAAE,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAC/C,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IAC1B;;;;;;OAMG;IACH,UAAU,EAAE,MAAM;SAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KAAE,CAAA;CAClC,CAAA;AAID,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM,EACnF,IAAI,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,GAClC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAwBxB"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { createPersistedState, field } from "../state.js";
|
|
2
|
-
import { buildSearchStore } from "./search-store.js";
|
|
3
|
-
function createSearchParamStore(opts) {
|
|
4
|
-
const version = opts.version ?? 1;
|
|
5
|
-
const store = buildSearchStore({
|
|
6
|
-
key: opts.key,
|
|
7
|
-
version,
|
|
8
|
-
fields: { [opts.param]: field.enum(opts.values, opts.fallback) },
|
|
9
|
-
legacyValueField: opts.param
|
|
10
|
-
});
|
|
11
|
-
const persisted = createPersistedState({ key: opts.key, version, initial: opts.fallback });
|
|
12
|
-
const useStore = () => {
|
|
13
|
-
store.markReaderWired();
|
|
14
|
-
return persisted();
|
|
15
|
-
};
|
|
16
|
-
return {
|
|
17
|
-
validateSearch: (search) => store.validateSearch(search),
|
|
18
|
-
useStore,
|
|
19
|
-
readStored: () => store.readStored()[opts.param] ?? null,
|
|
20
|
-
linkSearch: () => store.linkSearch()
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export {
|
|
24
|
-
createSearchParamStore
|
|
25
|
-
};
|
package/dist/section/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/section/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/section/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme-toggle/index.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAqFlD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAC3C,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAOD,wBAAgB,WAAW,CAAC,EAC1B,SAAe,EACf,UAAgB,EAChB,SAAS,EACT,KAAK,GACN,GAAE,gBAAqB,+BA+DvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-dev.d.ts","sourceRoot":"","sources":["../../src/utils/is-dev.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,wBAAgB,KAAK,IAAI,OAAO,CAE/B"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export type DeltaPolarity = 'up-good' | 'up-bad' | 'neutral';
|
|
2
|
-
export type DeltaBadgeProps = {
|
|
3
|
-
/** Signed delta driving tone (positive/negative/zero) and, by default, the label magnitude. */
|
|
4
|
-
value: number;
|
|
5
|
-
/** Which sign reads as the good verdict. `'up-good'` (default) is today's behaviour — positive
|
|
6
|
-
* success, negative danger. `'up-bad'` inverts it for a metric where a rise is the worse reading.
|
|
7
|
-
* `'neutral'` renders every sign in the faint tint — a change with no verdict attached. Zero is
|
|
8
|
-
* always faint regardless. */
|
|
9
|
-
polarity?: DeltaPolarity;
|
|
10
|
-
/** Formats the value into the label text. Defaults to `${Math.abs(value).toFixed(1)}%`. */
|
|
11
|
-
format?: (value: number) => string;
|
|
12
|
-
/** Render the ▲/▼ direction glyph. Defaults to `true`; a zero value never shows a glyph. */
|
|
13
|
-
withGlyph?: boolean;
|
|
14
|
-
/** Optional comparison timeframe rendered directly after the value in a dimmer shade of the same
|
|
15
|
-
* tone (e.g. `MoM`, `WoW`, `YTD`) — states what the delta is measured against without a hover. */
|
|
16
|
-
period?: string | undefined;
|
|
17
|
-
};
|
|
18
|
-
export declare function DeltaBadge({ value, polarity, format, withGlyph, period, }: DeltaBadgeProps): import("react").JSX.Element;
|
|
19
|
-
//# sourceMappingURL=delta-badge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delta-badge.d.ts","sourceRoot":"","sources":["../../src/widget-header/delta-badge.tsx"],"names":[],"mappings":"AA2BA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAA;IACb;;;kCAG8B;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,4FAA4F;IAC5F,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;sGACkG;IAClG,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B,CAAA;AAWD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAoB,EACpB,MAAsB,EACtB,SAAgB,EAChB,MAAM,GACP,EAAE,eAAe,+BAejB"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { alpha, VX } from "../tokens/index.js";
|
|
3
|
-
import classes from "./widget-header.module.css";
|
|
4
|
-
const defaultFormat = (value) => `${Math.abs(value).toFixed(1)}%`;
|
|
5
|
-
function resolveTone(value, polarity) {
|
|
6
|
-
if (value === 0 || polarity === "neutral") return VX.faint;
|
|
7
|
-
const rose = value > 0;
|
|
8
|
-
const good = polarity === "up-good" ? rose : !rose;
|
|
9
|
-
return good ? VX.status.good : VX.status.bad;
|
|
10
|
-
}
|
|
11
|
-
function DeltaBadge({
|
|
12
|
-
value,
|
|
13
|
-
polarity = "up-good",
|
|
14
|
-
format = defaultFormat,
|
|
15
|
-
withGlyph = true,
|
|
16
|
-
period
|
|
17
|
-
}) {
|
|
18
|
-
const tone = resolveTone(value, polarity);
|
|
19
|
-
const glyph = value > 0 ? "\u25B2" : value < 0 ? "\u25BC" : void 0;
|
|
20
|
-
const showGlyph = withGlyph && glyph !== void 0;
|
|
21
|
-
return /* @__PURE__ */ jsxs(
|
|
22
|
-
"span",
|
|
23
|
-
{
|
|
24
|
-
className: classes.deltaBadge,
|
|
25
|
-
style: { backgroundColor: alpha(tone, 0.13), color: tone },
|
|
26
|
-
children: [
|
|
27
|
-
showGlyph && /* @__PURE__ */ jsx("span", { className: classes.deltaGlyph, children: glyph }),
|
|
28
|
-
format(value),
|
|
29
|
-
period !== void 0 && /* @__PURE__ */ jsx("span", { className: classes.deltaPeriod, children: period })
|
|
30
|
-
]
|
|
31
|
-
}
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
export {
|
|
35
|
-
DeltaBadge
|
|
36
|
-
};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { WidgetHeader, type WidgetHeaderDeltaProps, type WidgetHeaderMetricProps, type WidgetHeaderProps, type WidgetHeaderSlot, type WidgetHeaderTier, type WidgetHeaderTitleProps, } from './widget-header.js';
|
|
2
|
-
export { DeltaBadge, type DeltaBadgeProps, type DeltaPolarity } from './delta-badge.js';
|
|
3
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/widget-header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-header.d.ts","sourceRoot":"","sources":["../../src/widget-header/widget-header.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAGlD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE7D;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEnE,MAAM,MAAM,iBAAiB,GAAG,WAAW,GACzC,eAAe,CAAC,gBAAgB,CAAC,GAAG;IAClC;;;;gDAI4C;IAC5C,IAAI,EAAE,gBAAgB,CAAA;IACtB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;4DACwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;qEACiE;IACjE,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC;4DACwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;yDACqD;IACrD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;2EACuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4FAA4F;IAC5F,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB,CAAA;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,CAAA;AAEpG;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAA;AAE/E;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,iBAAiB,EACjB,OAAO,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CACzE,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,+BA8CnD;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,UAAU,GACX,EAAE,iBAAiB,+BAoDnB"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `./connectivity` — aggregated connectivity monitoring: browser online/offline, React Query
|
|
3
|
-
* onlineManager, SSE EventSource, and health-check pings folded into a single status with
|
|
4
|
-
* per-signal detail.
|
|
5
|
-
*
|
|
6
|
-
* Auto-mounted by BasaltProvider so basic browser detection requires zero consumer setup.
|
|
7
|
-
* SSE and health ping are opt-in via BasaltProvider props.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export { ConnectivityProvider } from './connectivity-provider'
|
|
11
|
-
export { ConnectivityIndicator } from './connectivity-indicator'
|
|
12
|
-
export type { ConnectivityIndicatorProps } from './connectivity-indicator'
|
|
13
|
-
export { useConnectivity } from './use-connectivity'
|
|
14
|
-
export type {
|
|
15
|
-
ConnectivityStatus,
|
|
16
|
-
ConnectivitySnapshot,
|
|
17
|
-
ConnectivityProviderProps,
|
|
18
|
-
ConnectivityOverride,
|
|
19
|
-
} from './types'
|
package/src/data/index.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./data — TanStack Table + Virtual adapter battery for basalt-ui apps.
|
|
3
|
-
*
|
|
4
|
-
* Provides a sortable data table (BasaltDataTable — with opt-in search/facet toolbar, pagination,
|
|
5
|
-
* and column pinning) and a windowed virtual list (BasaltVirtualList), both rendered with Mantine
|
|
6
|
-
* primitives over headless TanStack logic.
|
|
7
|
-
*
|
|
8
|
-
* Optional peers:
|
|
9
|
-
* - @tanstack/react-table >=8 <9 (BasaltDataTable)
|
|
10
|
-
* - @tanstack/react-virtual >=3.13.26 <4 (BasaltVirtualList)
|
|
11
|
-
*
|
|
12
|
-
* BasaltVirtualList itself works on any 3.x; the declared floor is set by ./agent-chat's
|
|
13
|
-
* ThreadTranscript virtualize mode (it calls scrollToEnd/anchorTo, added in virtual-core 3.16.0,
|
|
14
|
-
* first pinned by react-virtual 3.13.26). npm has one peer range per package, so do not lower it.
|
|
15
|
-
*
|
|
16
|
-
* Install with:
|
|
17
|
-
* bun add @tanstack/react-table @tanstack/react-virtual
|
|
18
|
-
*
|
|
19
|
-
* Convenience barrel — pulls both peer groups. Use the fine subpaths
|
|
20
|
-
* (`basalt-ui/data/table`, `basalt-ui/data/virtual`) for per-feature opt-in.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* // Data table:
|
|
24
|
-
* import { BasaltDataTable, createColumnHelper } from 'basalt-ui/data'
|
|
25
|
-
* type Row = { name: string; score: number }
|
|
26
|
-
* const col = createColumnHelper<Row>()
|
|
27
|
-
* const columns = [col.accessor('name', { header: 'Name' }), col.accessor('score', { header: 'Score' })]
|
|
28
|
-
* <BasaltDataTable data={rows} columns={columns} />
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* // Virtual list:
|
|
32
|
-
* import { BasaltVirtualList } from 'basalt-ui/data'
|
|
33
|
-
* const items = Array.from({ length: 10_000 }, (_, i) => ({ id: i, label: `Row ${i}` }))
|
|
34
|
-
* <BasaltVirtualList items={items} height={400} renderItem={(item) => <div>{item.label}</div>} />
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
// ── BasaltDataTable (+ @tanstack/react-table re-exports) ──────────────────────
|
|
38
|
-
export {
|
|
39
|
-
BasaltDataTable,
|
|
40
|
-
type BasaltDataTableProps,
|
|
41
|
-
type BasaltDataTableSlot,
|
|
42
|
-
type DataTableAlign,
|
|
43
|
-
type DataTableColumnId,
|
|
44
|
-
type DataTableColumnPinning,
|
|
45
|
-
type DataTableFacet,
|
|
46
|
-
type DataTableFacetOption,
|
|
47
|
-
createColumnHelper,
|
|
48
|
-
useReactTable,
|
|
49
|
-
flexRender,
|
|
50
|
-
getCoreRowModel,
|
|
51
|
-
getSortedRowModel,
|
|
52
|
-
getFilteredRowModel,
|
|
53
|
-
getPaginationRowModel,
|
|
54
|
-
type ColumnDef,
|
|
55
|
-
type SortingState,
|
|
56
|
-
type ColumnHelper,
|
|
57
|
-
type PaginationState,
|
|
58
|
-
type ColumnPinningState,
|
|
59
|
-
type ColumnFiltersState,
|
|
60
|
-
type RowSelectionState,
|
|
61
|
-
} from './table'
|
|
62
|
-
|
|
63
|
-
// ── BasaltVirtualList ─────────────────────────────────────────────────────────
|
|
64
|
-
export {
|
|
65
|
-
BasaltVirtualList,
|
|
66
|
-
type BasaltVirtualListHandle,
|
|
67
|
-
type BasaltVirtualListProps,
|
|
68
|
-
type BasaltVirtualListSlot,
|
|
69
|
-
} from './virtual'
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BasaltNotifications — thin wrapper around Mantine `<Notifications />` with basalt defaults.
|
|
3
|
-
*
|
|
4
|
-
* Mount this inside BasaltProvider (typically in main.tsx, after BasaltProvider):
|
|
5
|
-
*
|
|
6
|
-
* ```tsx
|
|
7
|
-
* <BasaltProvider ...>
|
|
8
|
-
* <BasaltNotifications />
|
|
9
|
-
* <App />
|
|
10
|
-
* </BasaltProvider>
|
|
11
|
-
* ```
|
|
12
|
-
*
|
|
13
|
-
* It is NOT auto-mounted from BasaltProvider to keep @mantine/notifications out of the root barrel.
|
|
14
|
-
* This is an opt-in component — only add it when the app uses the notifications battery.
|
|
15
|
-
*
|
|
16
|
-
* NOTE: The composable `<BasaltOverlays>` (which will bundle notifications + modals + commands
|
|
17
|
-
* into a single mount point) arrives with the ./commands battery. For now, mount
|
|
18
|
-
* `<BasaltNotifications />` directly.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* import { BasaltNotifications } from 'basalt-ui/notifications'
|
|
22
|
-
* import { BasaltProvider } from 'basalt-ui'
|
|
23
|
-
*
|
|
24
|
-
* createRoot(root).render(
|
|
25
|
-
* <BasaltProvider>
|
|
26
|
-
* <BasaltNotifications />
|
|
27
|
-
* <App />
|
|
28
|
-
* </BasaltProvider>
|
|
29
|
-
* )
|
|
30
|
-
*/
|
|
31
|
-
import { Notifications } from '@mantine/notifications'
|
|
32
|
-
import { useNotificationsMountGuard } from './mount-guard'
|
|
33
|
-
|
|
34
|
-
export type BasaltNotificationsProps = {
|
|
35
|
-
/** Toast position. Default: 'bottom-right'. */
|
|
36
|
-
position?:
|
|
37
|
-
| 'top-left'
|
|
38
|
-
| 'top-right'
|
|
39
|
-
| 'top-center'
|
|
40
|
-
| 'bottom-left'
|
|
41
|
-
| 'bottom-right'
|
|
42
|
-
| 'bottom-center'
|
|
43
|
-
/** Auto-close delay (ms). Default: 4000. */
|
|
44
|
-
autoClose?: number | false
|
|
45
|
-
/** Max visible toasts. Default: 5. */
|
|
46
|
-
limit?: number
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Mounts the Mantine Notifications overlay with basalt defaults.
|
|
51
|
-
* Render ONE instance per app — typically inside BasaltProvider, before the router.
|
|
52
|
-
*
|
|
53
|
-
* @example
|
|
54
|
-
* <BasaltProvider>
|
|
55
|
-
* <BasaltNotifications position="bottom-right" limit={5} />
|
|
56
|
-
* <RouterProvider router={router} />
|
|
57
|
-
* </BasaltProvider>
|
|
58
|
-
*/
|
|
59
|
-
export function BasaltNotifications({
|
|
60
|
-
position = 'bottom-right',
|
|
61
|
-
autoClose = 4000,
|
|
62
|
-
limit = 5,
|
|
63
|
-
}: BasaltNotificationsProps) {
|
|
64
|
-
useNotificationsMountGuard()
|
|
65
|
-
return <Notifications position={position} autoClose={autoClose} limit={limit} />
|
|
66
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Transport-agnostic error decoding. Deliberately a standalone module with NO
|
|
3
|
-
* `@tanstack/react-query` import — `dashboard/query-state.tsx` renders server messages and must
|
|
4
|
-
* not drag the query peer into the root barrel's graph to do it.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The HTTP status behind a thrown envelope (Eden Treaty's `{ status, value }`, a `Response`-shaped
|
|
9
|
-
* throw), when there is one. Use it to BRANCH — 404 → "not found" copy — rather than to build a
|
|
10
|
-
* message; `toErrorMessage` already folds the status into its text when the body says nothing.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* if (errorStatus(err) === 404) return <EmptyState title="Gone" />
|
|
14
|
-
*/
|
|
15
|
-
export function errorStatus(err: unknown): number | undefined {
|
|
16
|
-
if (err === null || typeof err !== 'object') return undefined
|
|
17
|
-
const status = (err as { status?: unknown }).status
|
|
18
|
-
return typeof status === 'number' ? status : undefined
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/** Strings that technically decoded but tell a reader nothing. `JSON.stringify` produces most. */
|
|
22
|
-
const UNUSABLE = new Set(['', '{}', '[]', 'null', 'undefined', '[object Object]'])
|
|
23
|
-
|
|
24
|
-
function decode(err: unknown): string {
|
|
25
|
-
if (err instanceof Error) return err.message
|
|
26
|
-
if (typeof err === 'string') return err
|
|
27
|
-
if (typeof err === 'object' && err !== null) {
|
|
28
|
-
const obj = err as Record<string, unknown>
|
|
29
|
-
if (typeof obj['message'] === 'string') return obj['message']
|
|
30
|
-
// Eden-style { value: ... } or { status, value } envelopes — unwrap one level.
|
|
31
|
-
if ('value' in obj) return decode(obj['value'])
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
return JSON.stringify(err) ?? ''
|
|
35
|
-
} catch {
|
|
36
|
-
return String(err)
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Extract a human-readable message from an unknown thrown value (e.g. the raw Eden envelope
|
|
42
|
-
* thrown by `unwrap`). Removes the 8-line three-branch boilerplate consumers duplicate.
|
|
43
|
-
*
|
|
44
|
-
* Resolution order:
|
|
45
|
-
* 1. `Error` instance → err.message
|
|
46
|
-
* 2. `{ message: string }` → message (Eden / Elysia error shape)
|
|
47
|
-
* 3. `{ value: ... }` → recursively (Eden nested value envelope)
|
|
48
|
-
* 4. plain string → itself
|
|
49
|
-
* 5. anything else → `JSON.stringify`
|
|
50
|
-
*
|
|
51
|
-
* **If that yields nothing a human can read** (`''`, `'{}'`, `'[]'`, `'null'`, `'undefined'`,
|
|
52
|
-
* `'[object Object]'` — the shapes `JSON.stringify` produces for an opaque envelope) the `fallback`
|
|
53
|
-
* is returned instead, with `(HTTP <status>)` appended when the envelope carries one. Without that
|
|
54
|
-
* guard the caller renders a literal `{}` at the user, or — for `toErrorMessage(undefined)` —
|
|
55
|
-
* the actual value `undefined`, since `JSON.stringify(undefined)` is not a string at all.
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* try {
|
|
59
|
-
* await unwrap(api.resource.post({ body }))
|
|
60
|
-
* } catch (e) {
|
|
61
|
-
* toast(toErrorMessage(e, 'Could not create share')) // → "slug already in use"
|
|
62
|
-
* // → "Could not create share (HTTP 502)"
|
|
63
|
-
* }
|
|
64
|
-
*/
|
|
65
|
-
export function toErrorMessage(err: unknown, fallback = 'The request failed.'): string {
|
|
66
|
-
const message = decode(err).trim()
|
|
67
|
-
if (!UNUSABLE.has(message)) return message
|
|
68
|
-
const status = errorStatus(err)
|
|
69
|
-
return status === undefined ? fallback : `${fallback} (HTTP ${status})`
|
|
70
|
-
}
|