@heyramzi/ui 2.23.0 → 3.0.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/COMPONENTS.md +16 -15
- package/README.md +5 -4
- package/dist/ai/confirmation/index.js +3 -6
- package/dist/canvas/index.js +0 -1
- package/dist/canvas/pen/node-name.svelte.js +25 -0
- package/dist/canvas/ui/tools.js +7 -0
- package/dist/charts/chart-a11y.js +59 -0
- package/dist/charts/dashboard/index.js +0 -3
- package/dist/charts/primitives/chart-utils.js +14 -0
- package/dist/components/chip/index.js +1 -0
- package/dist/components/data-table/menu-key.js +19 -0
- package/dist/components/language-flag/flags.js +5 -0
- package/dist/components/language-flag/index.js +1 -0
- package/dist/components/list-page/index.js +1 -4
- package/dist/components/theme/index.js +0 -1
- package/dist/components/toolbar/index.js +2 -4
- package/dist/components/work-parts/index.js +0 -1
- package/dist/editor/block-move.js +40 -0
- package/dist/editor/doc-blocks.js +4 -3
- package/dist/editor/extensions.js +14 -1
- package/dist/effects/animated-beam/path-calculator.svelte.js +13 -6
- package/dist/effects/border-beam/index.js +2 -0
- package/dist/effects/image-comparison/index.js +1 -0
- package/dist/effects/interactive-hover-button/index.js +1 -0
- package/dist/effects/magic-card/index.js +1 -0
- package/dist/effects/marquee/index.js +1 -0
- package/dist/effects/progressive-blur/index.js +1 -0
- package/dist/effects/spotlight/index.js +1 -0
- package/dist/effects/theme-toggle/index.js +1 -0
- package/dist/inbox/index.js +1 -1
- package/dist/lib/dates.js +41 -0
- package/dist/lib/focus.js +15 -0
- package/dist/lib/panel.js +2 -2
- package/dist/lib/tone.js +13 -1
- package/dist/record/format.js +2 -18
- package/dist/record/logic.js +3 -6
- package/dist/shadcn/alert/alert-variants.js +1 -1
- package/dist/shadcn/attachment/context.js +10 -0
- package/dist/shadcn/dropdown-menu/menu-item.js +1 -1
- package/dist/shadcn/hooks/highlighter.js +58 -5
- package/dist/shadcn/sidebar/constants.js +1 -1
- package/dist/shadcn/sidebar/context.svelte.js +12 -1
- package/dist/slides/deck-controller.svelte.js +3 -20
- package/dist/status/index.js +0 -1
- package/dist/work/dates.js +2 -3
- package/dist/work/detail/detail-types.js +0 -8
- package/dist/work/docs/edited.js +8 -7
- package/dist/work/inbox/inbox-logic.js +5 -20
- package/dist/work/index.js +0 -3
- package/dist/work/kanban-keyboard.js +10 -5
- package/dist/work/time/duration.js +2 -3
- package/package.json +36 -126
- package/scripts/svelte-dts.mjs +62 -0
- package/scripts/sync-shadcn.mjs +3 -1
- package/src/agents/agent-avatar.svelte +24 -12
- package/src/agents/agent-avatar.svelte.d.ts +6 -0
- package/src/agents/agent-avatar.test.ts +40 -0
- package/src/agents/agent-cast.svelte +83 -78
- package/src/agents/agent-cast.svelte.d.ts +20 -0
- package/src/agents/types.ts +1 -0
- package/src/ai/ai-button/AiButton.svelte +21 -10
- package/src/ai/ai-button/AiButton.svelte.d.ts +16 -0
- package/src/ai/ai-button/ai-button.svelte.test.ts +27 -0
- package/src/ai/confirmation/Confirmation.svelte +22 -6
- package/src/ai/confirmation/Confirmation.svelte.d.ts +12 -0
- package/src/ai/confirmation/ConfirmationAction.svelte +10 -3
- package/src/ai/confirmation/ConfirmationAction.svelte.d.ts +8 -0
- package/src/ai/confirmation/ConfirmationActions.svelte.d.ts +9 -0
- package/src/ai/confirmation/{ConfirmationRequest.svelte → ConfirmationState.svelte} +6 -3
- package/src/ai/confirmation/ConfirmationState.svelte.d.ts +10 -0
- package/src/ai/confirmation/ConfirmationTitle.svelte.d.ts +9 -0
- package/src/ai/confirmation/confirmation-context.svelte.ts +2 -2
- package/src/ai/confirmation/confirmation-focus.test.svelte +33 -0
- package/src/ai/confirmation/confirmation-focus.test.svelte.d.ts +8 -0
- package/src/ai/confirmation/confirmation-focus.test.ts +34 -0
- package/src/ai/confirmation/confirmation-parts.test.svelte +17 -0
- package/src/ai/confirmation/confirmation-parts.test.svelte.d.ts +7 -0
- package/src/ai/confirmation/confirmation-parts.test.ts +23 -0
- package/src/ai/confirmation/index.ts +6 -21
- package/src/ai/generation-progress/GenerationProgress.svelte +198 -171
- package/src/ai/generation-progress/GenerationProgress.svelte.d.ts +15 -0
- package/src/ai/generation-progress/generation-progress.test.ts +37 -0
- package/src/ai/loading-state/PixelLoader.svelte +41 -36
- package/src/ai/loading-state/PixelLoader.svelte.d.ts +13 -0
- package/src/ai/prompt-input/PromptInput.svelte +1 -1
- package/src/ai/prompt-input/PromptInput.svelte.d.ts +14 -0
- package/src/ai/prompt-input/PromptInputBody.svelte.d.ts +9 -0
- package/src/ai/prompt-input/PromptInputSubmit.svelte +3 -3
- package/src/ai/prompt-input/PromptInputSubmit.svelte.d.ts +19 -0
- package/src/ai/prompt-input/PromptInputTextarea.svelte +6 -1
- package/src/ai/prompt-input/PromptInputTextarea.svelte.d.ts +14 -0
- package/src/ai/prompt-input/PromptInputToolbar.svelte.d.ts +9 -0
- package/src/ai/prompt-input/prompt-input.test.ts +64 -0
- package/src/ai/reasoning/Reasoning.svelte.d.ts +10 -0
- package/src/ai/reasoning/ReasoningContent.svelte.d.ts +8 -0
- package/src/ai/reasoning/ReasoningTrigger.svelte +2 -1
- package/src/ai/reasoning/ReasoningTrigger.svelte.d.ts +8 -0
- package/src/ai/response/Response.css +23 -19
- package/src/ai/response/Response.svelte.d.ts +11 -0
- package/src/ai/suggestion/Suggestion.svelte.d.ts +10 -0
- package/src/ai/suggestion/Suggestions.svelte +5 -2
- package/src/ai/suggestion/Suggestions.svelte.d.ts +11 -0
- package/src/ai/typing-dots/TypingDots.css +27 -23
- package/src/ai/typing-dots/TypingDots.svelte +32 -12
- package/src/ai/typing-dots/TypingDots.svelte.d.ts +12 -0
- package/src/ai/typing-dots/typing-dots.test.ts +36 -0
- package/src/ai/voice-waveform/VoiceWaveform.css +31 -27
- package/src/ai/voice-waveform/VoiceWaveform.svelte.d.ts +10 -0
- package/src/animations/avatar-group-hover.css +25 -21
- package/src/animations/card-tilt.css +71 -65
- package/src/animations/digit-pop-in.css +49 -40
- package/src/animations/dropdown.css +125 -107
- package/src/animations/input-clear-dissolve.css +69 -59
- package/src/animations/input-shake.css +55 -48
- package/src/animations/learn-more-hover.css +53 -43
- package/src/animations/like-button.css +74 -62
- package/src/animations/modal.css +83 -74
- package/src/animations/page-side-by-side.css +50 -42
- package/src/animations/plus-menu-morph.css +96 -87
- package/src/animations/resize.css +16 -13
- package/src/animations/shimmer-text.css +46 -40
- package/src/animations/spinning-counter.css +50 -43
- package/src/animations/success-check.css +69 -58
- package/src/animations/text-swap.css +35 -31
- package/src/animations/thinking-states.css +61 -54
- package/src/canvas/card/card-frame.svelte.d.ts +14 -0
- package/src/canvas/card/card.css +16 -10
- package/src/canvas/card/resize-handles.svelte.d.ts +11 -0
- package/src/canvas/chrome/chrome-zoom.svelte.d.ts +3 -0
- package/src/canvas/chrome/chrome.css +75 -69
- package/src/canvas/chrome/lock-badge.svelte.d.ts +8 -0
- package/src/canvas/chrome/side-handles.svelte.d.ts +6 -0
- package/src/canvas/chrome/size-chip.svelte.d.ts +3 -0
- package/src/canvas/chrome/snap-guides.svelte +16 -12
- package/src/canvas/chrome/snap-guides.svelte.d.ts +9 -0
- package/src/canvas/components/icons/ToolIcon.svelte.d.ts +8 -0
- package/src/canvas/components/shared/svg/PreviewSvg.svelte +9 -5
- package/src/canvas/components/shared/svg/PreviewSvg.svelte.d.ts +13 -0
- package/src/canvas/components/shared/svg/ShapeOutline.svelte +8 -4
- package/src/canvas/components/shared/svg/ShapeOutline.svelte.d.ts +15 -0
- package/src/canvas/components/shared/svg/StrokeNode.svelte +21 -11
- package/src/canvas/components/shared/svg/StrokeNode.svelte.d.ts +5 -0
- package/src/canvas/components/shared/svg/TextRule.svelte +8 -4
- package/src/canvas/components/shared/svg/TextRule.svelte.d.ts +9 -0
- package/src/canvas/edges/bend-handle.svelte +18 -14
- package/src/canvas/edges/bend-handle.svelte.d.ts +10 -0
- package/src/canvas/edges/edge-gradient.svelte.d.ts +16 -0
- package/src/canvas/edges/gradient-edge.svelte.d.ts +21 -0
- package/src/canvas/index.ts +0 -1
- package/src/canvas/lod/lod-switch.svelte +38 -33
- package/src/canvas/lod/lod-switch.svelte.d.ts +14 -0
- package/src/canvas/pen/PenField.svelte.d.ts +26 -0
- package/src/canvas/pen/PenOverlay.svelte +10 -6
- package/src/canvas/pen/PenOverlay.svelte.d.ts +23 -0
- package/src/canvas/pen/ShapeNode.svelte +6 -0
- package/src/canvas/pen/ShapeNode.svelte.d.ts +5 -0
- package/src/canvas/pen/TextNode.svelte +12 -2
- package/src/canvas/pen/TextNode.svelte.d.ts +5 -0
- package/src/canvas/pen/host-field.test.svelte.d.ts +6 -0
- package/src/canvas/pen/node-name.svelte.ts +32 -0
- package/src/canvas/pen/pen.css +69 -63
- package/src/canvas/screen/GlyphIcon.svelte.d.ts +9 -0
- package/src/canvas/screen/PartView.svelte +25 -25
- package/src/canvas/screen/PartView.svelte.d.ts +17 -0
- package/src/canvas/screen/ScreenBody.svelte +4 -4
- package/src/canvas/screen/ScreenBody.svelte.d.ts +11 -0
- package/src/canvas/screen/ScreenCard.svelte.d.ts +9 -0
- package/src/canvas/screen/screen.css +509 -505
- package/src/canvas/ui/CanvasToolbar.svelte.d.ts +30 -0
- package/src/canvas/ui/FrameLayer.svelte +18 -14
- package/src/canvas/ui/FrameLayer.svelte.d.ts +9 -0
- package/src/canvas/ui/PenLayer.svelte.d.ts +15 -0
- package/src/canvas/ui/StylePanel.svelte +41 -37
- package/src/canvas/ui/StylePanel.svelte.d.ts +32 -0
- package/src/canvas/ui/canvas-grid.svelte.d.ts +11 -0
- package/src/canvas/ui/canvas-ui.css +287 -266
- package/src/canvas/ui/tools.test.ts +39 -0
- package/src/canvas/ui/tools.ts +8 -0
- package/src/charts/README.md +3 -3
- package/src/charts/animated-value.css +6 -2
- package/src/charts/animated-value.svelte.d.ts +24 -0
- package/src/charts/area-chart.css +27 -21
- package/src/charts/area-chart.svelte +45 -20
- package/src/charts/area-chart.svelte.d.ts +60 -0
- package/src/charts/bar-chart.css +112 -102
- package/src/charts/bar-chart.svelte +43 -53
- package/src/charts/bar-chart.svelte.d.ts +64 -0
- package/src/charts/chart-a11y.css +23 -0
- package/src/charts/chart-a11y.test.ts +59 -0
- package/src/charts/chart-a11y.ts +92 -0
- package/src/charts/chart-plot.svelte +106 -0
- package/src/charts/chart-plot.svelte.d.ts +18 -0
- package/src/charts/chart-tokens.css +52 -51
- package/src/charts/charts.css +154 -142
- package/src/charts/crosshair.svelte.d.ts +7 -0
- package/src/charts/dashboard/dashboard-section.svelte +19 -3
- package/src/charts/dashboard/dashboard-section.svelte.d.ts +17 -0
- package/src/charts/dashboard/data-table.svelte +22 -22
- package/src/charts/dashboard/data-table.svelte.d.ts +86 -0
- package/src/charts/dashboard/index.ts +0 -3
- package/src/charts/dashboard/panel-grid.svelte +1 -1
- package/src/charts/dashboard/panel-grid.svelte.d.ts +14 -0
- package/src/charts/dashboard/period-filter.svelte.d.ts +37 -0
- package/src/charts/dashboard/rating-chip.svelte +9 -11
- package/src/charts/dashboard/rating-chip.svelte.d.ts +9 -0
- package/src/charts/dashboard/stat-band.svelte.d.ts +14 -0
- package/src/charts/dashboard/stat-tile.svelte +11 -8
- package/src/charts/dashboard/stat-tile.svelte.d.ts +62 -0
- package/src/charts/donut-chart.css +52 -46
- package/src/charts/donut-chart.svelte.d.ts +39 -0
- package/src/charts/edge-fade.svelte.d.ts +9 -0
- package/src/charts/figure.css +104 -91
- package/src/charts/figure.svelte.d.ts +40 -0
- package/src/charts/gauge-chart.css +74 -70
- package/src/charts/gauge-chart.svelte.d.ts +58 -0
- package/src/charts/hover-focus.svelte.d.ts +14 -0
- package/src/charts/legend.css +112 -108
- package/src/charts/legend.svelte +3 -3
- package/src/charts/legend.svelte.d.ts +30 -0
- package/src/charts/line-chart.css +27 -21
- package/src/charts/line-chart.svelte +64 -47
- package/src/charts/line-chart.svelte.d.ts +53 -0
- package/src/charts/number-chart.css +185 -163
- package/src/charts/number-chart.svelte +8 -4
- package/src/charts/number-chart.svelte.d.ts +58 -0
- package/src/charts/pop-value.svelte.d.ts +9 -0
- package/src/charts/primitives/chart-container.svelte.d.ts +9 -0
- package/src/charts/primitives/chart-style.svelte.d.ts +8 -0
- package/src/charts/primitives/chart-tooltip.svelte +1 -1
- package/src/charts/primitives/chart-tooltip.svelte.d.ts +26 -0
- package/src/charts/primitives/chart-utils.test.ts +17 -0
- package/src/charts/primitives/chart-utils.ts +16 -0
- package/src/charts/reference-line.css +18 -14
- package/src/charts/reference-line.svelte.d.ts +15 -0
- package/src/charts/reveal.svelte.d.ts +9 -0
- package/src/charts/ring-chart.css +82 -78
- package/src/charts/ring-chart.svelte +3 -3
- package/src/charts/ring-chart.svelte.d.ts +41 -0
- package/src/charts/sparkline.css +43 -34
- package/src/charts/sparkline.svelte +52 -8
- package/src/charts/sparkline.svelte.d.ts +51 -0
- package/src/charts/stat-card.css +110 -92
- package/src/charts/stat-card.svelte.d.ts +65 -0
- package/src/charts/time-series-chart.css +24 -19
- package/src/charts/time-series-chart.svelte +51 -14
- package/src/charts/time-series-chart.svelte.d.ts +30 -0
- package/src/charts/trend-pill.css +39 -32
- package/src/charts/trend-pill.svelte.d.ts +14 -0
- package/src/class-tokens.test.ts +34 -0
- package/src/components/chip/count-chip.svelte +35 -0
- package/src/components/chip/count-chip.svelte.d.ts +12 -0
- package/src/components/chip/index.ts +1 -0
- package/src/components/chip/tag-chip.svelte +6 -6
- package/src/components/chip/tag-chip.svelte.d.ts +20 -0
- package/src/components/copy/copy-button.svelte +22 -18
- package/src/components/copy/copy-button.svelte.d.ts +37 -0
- package/src/components/data-table/data-table.ts +1 -1
- package/src/components/data-table/infinite-scroll.svelte.d.ts +37 -0
- package/src/components/data-table/menu-key.ts +22 -0
- package/src/components/data-table/pagination.svelte +36 -11
- package/src/components/data-table/pagination.svelte.d.ts +14 -0
- package/src/components/data-table/row-arrow.svelte.d.ts +6 -0
- package/src/components/data-table/row-context-menu.svelte +10 -10
- package/src/components/data-table/row-context-menu.svelte.d.ts +15 -0
- package/src/components/data-table/sortable-head.svelte +55 -25
- package/src/components/data-table/sortable-head.svelte.d.ts +38 -0
- package/src/components/data-table/table-skeleton.svelte.d.ts +18 -0
- package/src/components/docs/doc-page.svelte +8 -4
- package/src/components/docs/doc-page.svelte.d.ts +34 -0
- package/src/components/docs/on-this-page.svelte +109 -101
- package/src/components/docs/on-this-page.svelte.d.ts +17 -0
- package/src/components/field-row/field-row.svelte.d.ts +16 -0
- package/src/components/hold-to-confirm/hold-to-confirm.svelte +113 -66
- package/src/components/hold-to-confirm/hold-to-confirm.svelte.d.ts +22 -0
- package/src/components/hold-to-confirm/hold-to-confirm.test.ts +105 -0
- package/src/components/language-flag/flags.ts +5 -0
- package/src/components/language-flag/index.ts +1 -0
- package/src/components/language-flag/language-flag.svelte +5 -12
- package/src/components/language-flag/language-flag.svelte.d.ts +11 -0
- package/src/components/list-page/detail-header.svelte.d.ts +15 -0
- package/src/components/list-page/detail-row.svelte.d.ts +9 -0
- package/src/components/list-page/detail-stack.svelte.d.ts +9 -0
- package/src/components/list-page/empty-state.svelte +106 -24
- package/src/components/list-page/empty-state.svelte.d.ts +23 -0
- package/src/components/list-page/filter-item.svelte +1 -1
- package/src/components/list-page/filter-item.svelte.d.ts +10 -0
- package/src/components/list-page/filter-popover.svelte +3 -6
- package/src/components/list-page/filter-popover.svelte.d.ts +20 -0
- package/src/components/list-page/grouped-list.svelte +3 -4
- package/src/components/list-page/grouped-list.svelte.d.ts +49 -0
- package/src/components/list-page/index.ts +1 -4
- package/src/components/list-page/list-page-shell.svelte.d.ts +31 -0
- package/src/components/list-page/master-detail-focus.test.ts +28 -0
- package/src/components/list-page/master-detail.svelte +57 -28
- package/src/components/list-page/master-detail.svelte.d.ts +18 -0
- package/src/components/list-page/master-detail.test.ts +1 -1
- package/src/components/list-page/notice-bar.svelte.d.ts +14 -0
- package/src/components/list-page/prev-next.svelte +7 -7
- package/src/components/list-page/prev-next.svelte.d.ts +14 -0
- package/src/components/list-page/rail-body.svelte.d.ts +8 -0
- package/src/components/list-page/rail-head.svelte.d.ts +10 -0
- package/src/components/list-page/rail-row.svelte.d.ts +18 -0
- package/src/components/mark/mark.svelte +2 -0
- package/src/components/mark/mark.svelte.d.ts +16 -0
- package/src/components/open-in/open-in.svelte +3 -3
- package/src/components/open-in/open-in.svelte.d.ts +35 -0
- package/src/components/picker/mark-picker.svelte +2 -2
- package/src/components/picker/mark-picker.svelte.d.ts +38 -0
- package/src/components/picker/picker.svelte +47 -3
- package/src/components/picker/picker.svelte.d.ts +59 -0
- package/src/components/picker/picker.test.ts +71 -0
- package/src/components/section-card/section-card.svelte.d.ts +13 -0
- package/src/components/section-header/section-header.svelte +2 -6
- package/src/components/section-header/section-header.svelte.d.ts +17 -0
- package/src/components/section-header/section-label.svelte.d.ts +10 -0
- package/src/components/segmented/animated-tabs.svelte.d.ts +61 -0
- package/src/components/segmented/section-runs.svelte.d.ts +23 -0
- package/src/components/segmented/segment.svelte +13 -19
- package/src/components/segmented/segment.svelte.d.ts +30 -0
- package/src/components/segmented/segmented-filter.svelte +4 -5
- package/src/components/segmented/segmented-filter.svelte.d.ts +43 -0
- package/src/components/segmented/segmented-nav.svelte.d.ts +17 -0
- package/src/components/segmented/segmented-overflow.svelte +1 -0
- package/src/components/segmented/segmented-overflow.svelte.d.ts +37 -0
- package/src/components/segmented/segmented-track.svelte +107 -103
- package/src/components/segmented/segmented-track.svelte.d.ts +19 -0
- package/src/components/star-rating-input/star-rating-input.svelte +151 -146
- package/src/components/star-rating-input/star-rating-input.svelte.d.ts +31 -0
- package/src/components/star-rating-input/star-rating-input.test.ts +90 -0
- package/src/components/svg/svg.svelte.d.ts +7 -0
- package/src/components/table-view/table-view.svelte +65 -73
- package/src/components/table-view/table-view.svelte.d.ts +96 -0
- package/src/components/table-view/table-view.test.ts +35 -6
- package/src/components/tags-input/tags-input.svelte +68 -16
- package/src/components/tags-input/tags-input.svelte.d.ts +40 -0
- package/src/components/tags-input/tags-input.test.ts +101 -0
- package/src/components/theme/index.ts +0 -1
- package/src/components/theme/theme-provider.svelte +8 -3
- package/src/components/theme/theme-provider.svelte.d.ts +19 -0
- package/src/components/theme/theme-provider.test.ts +5 -5
- package/src/components/toolbar/index.ts +2 -4
- package/src/components/toolbar/toolbar-search.svelte +4 -0
- package/src/components/toolbar/toolbar-search.svelte.d.ts +11 -0
- package/src/components/toolbar/toolbar.svelte +1 -1
- package/src/components/toolbar/toolbar.svelte.d.ts +47 -0
- package/src/components/toolbar/toolbar.test.ts +7 -0
- package/src/components/work-parts/group-head.svelte +1 -1
- package/src/components/work-parts/group-head.svelte.d.ts +16 -0
- package/src/components/work-parts/index.ts +0 -1
- package/src/components/work-parts/property-row.svelte.d.ts +19 -0
- package/src/components/work-parts/work-card.svelte.d.ts +11 -0
- package/src/components/work-parts/work-well.svelte.d.ts +13 -0
- package/src/css-layers.test.ts +138 -0
- package/src/editor/README.md +1 -1
- package/src/editor/block-move.test.ts +58 -0
- package/src/editor/block-move.ts +52 -0
- package/src/editor/content.css +356 -352
- package/src/editor/doc-blocks.ts +5 -4
- package/src/editor/doc-page.css +328 -324
- package/src/editor/editor-toolbar.svelte +46 -39
- package/src/editor/editor-toolbar.svelte.d.ts +13 -0
- package/src/editor/editor.svelte +218 -157
- package/src/editor/editor.svelte.d.ts +27 -0
- package/src/editor/extensions.ts +18 -2
- package/src/editor/image-align.test.ts +35 -0
- package/src/editor/image-toolbar.svelte +73 -57
- package/src/editor/image-toolbar.svelte.d.ts +11 -0
- package/src/editor/inline-editor.svelte +27 -16
- package/src/editor/inline-editor.svelte.d.ts +40 -0
- package/src/editor/renderer.svelte.d.ts +11 -0
- package/src/editor/slash-menu.svelte +103 -88
- package/src/editor/slash-menu.svelte.d.ts +17 -0
- package/src/effects/animated-beam/AnimatedBeam.svelte.d.ts +4 -0
- package/src/effects/animated-beam/diagrams/BeamSvg.svelte.d.ts +22 -0
- package/src/effects/animated-beam/path-calculator.svelte.ts +19 -5
- package/src/effects/border-beam/BorderBeam.svelte.d.ts +4 -0
- package/src/effects/border-beam/index.ts +10 -0
- package/src/effects/image-comparison/ImageComparison.css +114 -97
- package/src/effects/image-comparison/ImageComparison.svelte.d.ts +44 -0
- package/src/effects/image-comparison/index.ts +4 -0
- package/src/effects/image-reveal/ImageReveal.css +14 -9
- package/src/effects/image-reveal/ImageReveal.svelte.d.ts +11 -0
- package/src/effects/interactive-hover-button/InteractiveHoverButton.svelte +234 -222
- package/src/effects/interactive-hover-button/InteractiveHoverButton.svelte.d.ts +16 -0
- package/src/effects/interactive-hover-button/index.ts +1 -0
- package/src/effects/magic-card/MagicCard.css +49 -45
- package/src/effects/magic-card/MagicCard.svelte.d.ts +15 -0
- package/src/effects/magic-card/index.ts +1 -0
- package/src/effects/marquee/Marquee.css +83 -61
- package/src/effects/marquee/Marquee.svelte +7 -2
- package/src/effects/marquee/Marquee.svelte.d.ts +27 -0
- package/src/effects/marquee/index.ts +1 -0
- package/src/effects/marquee/marquee.test.ts +24 -0
- package/src/effects/progressive-blur/ProgressiveBlur.css +13 -8
- package/src/effects/progressive-blur/ProgressiveBlur.svelte.d.ts +14 -0
- package/src/effects/progressive-blur/index.ts +1 -0
- package/src/effects/reveal/AnimatedGroup.svelte.d.ts +14 -0
- package/src/effects/reveal/InView.svelte.d.ts +12 -0
- package/src/effects/reveal/TextEffect.svelte.d.ts +16 -0
- package/src/effects/reveal/reveal.css +89 -73
- package/src/effects/shader-gradient/ShaderGradient.svelte.d.ts +4 -0
- package/src/effects/spotlight/Spotlight.css +8 -4
- package/src/effects/spotlight/Spotlight.svelte.d.ts +8 -0
- package/src/effects/spotlight/index.ts +1 -0
- package/src/effects/theme-toggle/ThemeToggle.css +165 -160
- package/src/effects/theme-toggle/ThemeToggle.svelte +12 -6
- package/src/effects/theme-toggle/ThemeToggle.svelte.d.ts +24 -0
- package/src/effects/theme-toggle/index.ts +1 -0
- package/src/icon-names.test.ts +88 -0
- package/src/inbox/index.ts +1 -2
- package/src/inbox/thread-inbox.svelte +7 -5
- package/src/inbox/thread-inbox.svelte.d.ts +52 -0
- package/src/lib/dates.test.ts +63 -0
- package/src/lib/dates.ts +63 -0
- package/src/lib/focus.ts +19 -0
- package/src/lib/live-region.svelte +14 -0
- package/src/lib/live-region.svelte.d.ts +5 -0
- package/src/lib/panel.svelte +116 -0
- package/src/lib/panel.svelte.d.ts +30 -0
- package/src/lib/panel.ts +2 -2
- package/src/lib/tone.ts +15 -1
- package/src/modules.test.ts +119 -7
- package/src/onboarding/README.md +2 -2
- package/src/onboarding/onboarding-provider.svelte +1 -1
- package/src/onboarding/onboarding-provider.svelte.d.ts +17 -0
- package/src/onboarding/tour-card.svelte +10 -10
- package/src/onboarding/tour-card.svelte.d.ts +21 -0
- package/src/onboarding/tour-runner.svelte +62 -60
- package/src/onboarding/tour-runner.svelte.d.ts +11 -0
- package/src/panel/side-panel.svelte +8 -13
- package/src/panel/side-panel.svelte.d.ts +48 -0
- package/src/record/field-section.svelte.d.ts +19 -0
- package/src/record/format.ts +3 -15
- package/src/record/info-list.svelte +4 -3
- package/src/record/info-list.svelte.d.ts +25 -0
- package/src/record/logic.ts +2 -6
- package/src/record/next-up.svelte.d.ts +14 -0
- package/src/record/project-list.svelte.d.ts +18 -0
- package/src/record/record-header.svelte.d.ts +27 -0
- package/src/record/record-rail.svelte.d.ts +23 -0
- package/src/record/record-shell.svelte.d.ts +48 -0
- package/src/record/record-stats.svelte +4 -3
- package/src/record/record-stats.svelte.d.ts +10 -0
- package/src/record/record-timeline.svelte +3 -1
- package/src/record/record-timeline.svelte.d.ts +29 -0
- package/src/record/steps-rail.svelte +16 -13
- package/src/record/steps-rail.svelte.d.ts +23 -0
- package/src/record/where-we-are.svelte.d.ts +25 -0
- package/src/shadcn/accordion/accordion-content.svelte.d.ts +4 -0
- package/src/shadcn/accordion/accordion-item.svelte.d.ts +4 -0
- package/src/shadcn/accordion/accordion-trigger.svelte +1 -1
- package/src/shadcn/accordion/accordion-trigger.svelte.d.ts +12 -0
- package/src/shadcn/accordion/accordion.svelte.d.ts +4 -0
- package/src/shadcn/alert/alert-description.svelte.d.ts +5 -0
- package/src/shadcn/alert/alert-title.svelte.d.ts +5 -0
- package/src/shadcn/alert/alert-variants.ts +1 -1
- package/src/shadcn/alert/alert.svelte.d.ts +10 -0
- package/src/shadcn/alert-dialog/alert-dialog-action.svelte.d.ts +4 -0
- package/src/shadcn/alert-dialog/alert-dialog-cancel.svelte.d.ts +4 -0
- package/src/shadcn/alert-dialog/alert-dialog-content.svelte.d.ts +10 -0
- package/src/shadcn/alert-dialog/alert-dialog-description.svelte.d.ts +4 -0
- package/src/shadcn/alert-dialog/alert-dialog-footer.svelte.d.ts +9 -0
- package/src/shadcn/alert-dialog/alert-dialog-header.svelte.d.ts +5 -0
- package/src/shadcn/alert-dialog/alert-dialog-overlay.svelte.d.ts +4 -0
- package/src/shadcn/alert-dialog/alert-dialog-portal.svelte.d.ts +3 -0
- package/src/shadcn/alert-dialog/alert-dialog-title.svelte.d.ts +4 -0
- package/src/shadcn/alert-dialog/alert-dialog-trigger.svelte.d.ts +4 -0
- package/src/shadcn/alert-dialog/alert-dialog.svelte.d.ts +3 -0
- package/src/shadcn/attachment/attachment-action.svelte +7 -0
- package/src/shadcn/attachment/attachment-action.svelte.d.ts +4 -0
- package/src/shadcn/attachment/attachment-actions.svelte.d.ts +5 -0
- package/src/shadcn/attachment/attachment-content.svelte.d.ts +5 -0
- package/src/shadcn/attachment/attachment-description.svelte.d.ts +5 -0
- package/src/shadcn/attachment/attachment-group.svelte.d.ts +5 -0
- package/src/shadcn/attachment/attachment-media.svelte.d.ts +16 -0
- package/src/shadcn/attachment/attachment-title.svelte +3 -0
- package/src/shadcn/attachment/attachment-title.svelte.d.ts +5 -0
- package/src/shadcn/attachment/attachment-trigger.svelte +5 -0
- package/src/shadcn/attachment/attachment-trigger.svelte.d.ts +11 -0
- package/src/shadcn/attachment/attachment.svelte +4 -0
- package/src/shadcn/attachment/attachment.svelte.d.ts +25 -0
- package/src/shadcn/attachment/context.ts +13 -0
- package/src/shadcn/avatar/avatar-badge.svelte.d.ts +5 -0
- package/src/shadcn/avatar/avatar-fallback.svelte.d.ts +4 -0
- package/src/shadcn/avatar/avatar-group-count.svelte.d.ts +5 -0
- package/src/shadcn/avatar/avatar-group.svelte.d.ts +5 -0
- package/src/shadcn/avatar/avatar-image.svelte.d.ts +4 -0
- package/src/shadcn/avatar/avatar.svelte.d.ts +7 -0
- package/src/shadcn/badge/badge.svelte.d.ts +13 -0
- package/src/shadcn/breadcrumb/breadcrumb-ellipsis.svelte +1 -1
- package/src/shadcn/breadcrumb/breadcrumb-ellipsis.svelte.d.ts +5 -0
- package/src/shadcn/breadcrumb/breadcrumb-item.svelte.d.ts +5 -0
- package/src/shadcn/breadcrumb/breadcrumb-link.svelte.d.ts +11 -0
- package/src/shadcn/breadcrumb/breadcrumb-list.svelte.d.ts +5 -0
- package/src/shadcn/breadcrumb/breadcrumb-page.svelte.d.ts +5 -0
- package/src/shadcn/breadcrumb/breadcrumb-separator.svelte +1 -1
- package/src/shadcn/breadcrumb/breadcrumb-separator.svelte.d.ts +5 -0
- package/src/shadcn/breadcrumb/breadcrumb.svelte.d.ts +5 -0
- package/src/shadcn/bubble/bubble-content.svelte.d.ts +11 -0
- package/src/shadcn/bubble/bubble-group.svelte.d.ts +5 -0
- package/src/shadcn/bubble/bubble-reactions.svelte.d.ts +22 -0
- package/src/shadcn/bubble/bubble.svelte +1 -1
- package/src/shadcn/bubble/bubble.svelte.d.ts +22 -0
- package/src/shadcn/button/button.svelte +1 -1
- package/src/shadcn/button/button.svelte.d.ts +33 -0
- package/src/shadcn/calendar/calendar-caption.svelte.d.ts +19 -0
- package/src/shadcn/calendar/calendar-cell.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-day.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-grid-body.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-grid-head.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-grid-row.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-grid.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-head-cell.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-header.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-heading.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-month-select.svelte +1 -1
- package/src/shadcn/calendar/calendar-month-select.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar-month.svelte.d.ts +5 -0
- package/src/shadcn/calendar/calendar-months.svelte.d.ts +5 -0
- package/src/shadcn/calendar/calendar-nav.svelte.d.ts +5 -0
- package/src/shadcn/calendar/calendar-next-button.svelte +1 -1
- package/src/shadcn/calendar/calendar-next-button.svelte.d.ts +8 -0
- package/src/shadcn/calendar/calendar-prev-button.svelte +1 -1
- package/src/shadcn/calendar/calendar-prev-button.svelte.d.ts +8 -0
- package/src/shadcn/calendar/calendar-year-select.svelte +1 -1
- package/src/shadcn/calendar/calendar-year-select.svelte.d.ts +4 -0
- package/src/shadcn/calendar/calendar.svelte.d.ts +21 -0
- package/src/shadcn/card/card-action.svelte.d.ts +5 -0
- package/src/shadcn/card/card-content.svelte.d.ts +5 -0
- package/src/shadcn/card/card-description.svelte.d.ts +5 -0
- package/src/shadcn/card/card-footer.svelte.d.ts +5 -0
- package/src/shadcn/card/card-header.svelte.d.ts +5 -0
- package/src/shadcn/card/card-title.svelte.d.ts +8 -0
- package/src/shadcn/card/card.svelte.d.ts +8 -0
- package/src/shadcn/checkbox/checkbox.svelte +2 -2
- package/src/shadcn/checkbox/checkbox.svelte.d.ts +4 -0
- package/src/shadcn/code-block/code-block-actions.svelte.d.ts +5 -0
- package/src/shadcn/code-block/code-block-content.svelte +1 -1
- package/src/shadcn/code-block/code-block-content.svelte.d.ts +12 -0
- package/src/shadcn/code-block/code-block-copy-button.svelte.d.ts +3 -0
- package/src/shadcn/code-block/code-block-footer.svelte.d.ts +5 -0
- package/src/shadcn/code-block/code-block-header.svelte +1 -1
- package/src/shadcn/code-block/code-block-header.svelte.d.ts +5 -0
- package/src/shadcn/code-block/code-block-line.svelte +1 -1
- package/src/shadcn/code-block/code-block-line.svelte.d.ts +25 -0
- package/src/shadcn/code-block/code-block-title.svelte +1 -1
- package/src/shadcn/code-block/code-block-title.svelte.d.ts +5 -0
- package/src/shadcn/code-block/code-block.svelte +3 -2
- package/src/shadcn/code-block/code-block.svelte.d.ts +18 -0
- package/src/shadcn/collapsible/collapsible-content.svelte.d.ts +4 -0
- package/src/shadcn/collapsible/collapsible-trigger.svelte.d.ts +4 -0
- package/src/shadcn/collapsible/collapsible.svelte.d.ts +4 -0
- package/src/shadcn/command/command-dialog.svelte.d.ts +14 -0
- package/src/shadcn/command/command-empty.svelte.d.ts +4 -0
- package/src/shadcn/command/command-group.svelte.d.ts +7 -0
- package/src/shadcn/command/command-input.svelte +2 -2
- package/src/shadcn/command/command-input.svelte.d.ts +13 -0
- package/src/shadcn/command/command-item.svelte +1 -1
- package/src/shadcn/command/command-item.svelte.d.ts +4 -0
- package/src/shadcn/command/command-link-item.svelte.d.ts +4 -0
- package/src/shadcn/command/command-list.svelte +7 -1
- package/src/shadcn/command/command-list.svelte.d.ts +4 -0
- package/src/shadcn/command/command-loading.svelte.d.ts +4 -0
- package/src/shadcn/command/command-separator.svelte.d.ts +4 -0
- package/src/shadcn/command/command-shortcut.svelte.d.ts +5 -0
- package/src/shadcn/command/command.svelte.d.ts +8 -0
- package/src/shadcn/context-menu/context-menu-checkbox-item.svelte +1 -1
- package/src/shadcn/context-menu/context-menu-checkbox-item.svelte.d.ts +10 -0
- package/src/shadcn/context-menu/context-menu-content.svelte.d.ts +10 -0
- package/src/shadcn/context-menu/context-menu-group-heading.svelte.d.ts +7 -0
- package/src/shadcn/context-menu/context-menu-group.svelte.d.ts +4 -0
- package/src/shadcn/context-menu/context-menu-item.svelte +1 -1
- package/src/shadcn/context-menu/context-menu-item.svelte.d.ts +8 -0
- package/src/shadcn/context-menu/context-menu-label.svelte.d.ts +8 -0
- package/src/shadcn/context-menu/context-menu-portal.svelte.d.ts +3 -0
- package/src/shadcn/context-menu/context-menu-radio-group.svelte.d.ts +4 -0
- package/src/shadcn/context-menu/context-menu-radio-item.svelte +1 -1
- package/src/shadcn/context-menu/context-menu-radio-item.svelte.d.ts +8 -0
- package/src/shadcn/context-menu/context-menu-separator.svelte.d.ts +4 -0
- package/src/shadcn/context-menu/context-menu-shortcut.svelte.d.ts +5 -0
- package/src/shadcn/context-menu/context-menu-sub-content.svelte.d.ts +4 -0
- package/src/shadcn/context-menu/context-menu-sub-trigger.svelte +1 -1
- package/src/shadcn/context-menu/context-menu-sub-trigger.svelte.d.ts +8 -0
- package/src/shadcn/context-menu/context-menu-sub.svelte.d.ts +3 -0
- package/src/shadcn/context-menu/context-menu-trigger.svelte.d.ts +4 -0
- package/src/shadcn/context-menu/context-menu.svelte.d.ts +3 -0
- package/src/shadcn/dialog/dialog-body.svelte.d.ts +5 -0
- package/src/shadcn/dialog/dialog-close.svelte.d.ts +4 -0
- package/src/shadcn/dialog/dialog-content.svelte +3 -4
- package/src/shadcn/dialog/dialog-content.svelte.d.ts +16 -0
- package/src/shadcn/dialog/dialog-description.svelte.d.ts +4 -0
- package/src/shadcn/dialog/dialog-footer.svelte.d.ts +15 -0
- package/src/shadcn/dialog/dialog-header.svelte.d.ts +5 -0
- package/src/shadcn/dialog/dialog-overlay.svelte.d.ts +4 -0
- package/src/shadcn/dialog/dialog-portal.svelte.d.ts +3 -0
- package/src/shadcn/dialog/dialog-title.svelte.d.ts +4 -0
- package/src/shadcn/dialog/dialog-trigger.svelte.d.ts +4 -0
- package/src/shadcn/dialog/dialog.svelte.d.ts +3 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-checkbox-item.svelte +2 -2
- package/src/shadcn/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
- package/src/shadcn/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-sub-trigger.svelte +1 -1
- package/src/shadcn/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
- package/src/shadcn/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
- package/src/shadcn/dropdown-menu/menu-item.ts +1 -1
- package/src/shadcn/empty/empty-content.svelte.d.ts +5 -0
- package/src/shadcn/empty/empty-description.svelte.d.ts +5 -0
- package/src/shadcn/empty/empty-header.svelte.d.ts +5 -0
- package/src/shadcn/empty/empty-media.svelte.d.ts +16 -0
- package/src/shadcn/empty/empty-title.svelte.d.ts +5 -0
- package/src/shadcn/empty/empty.svelte.d.ts +5 -0
- package/src/shadcn/field/field-content.svelte.d.ts +5 -0
- package/src/shadcn/field/field-description.svelte.d.ts +5 -0
- package/src/shadcn/field/field-error.svelte +1 -1
- package/src/shadcn/field/field-error.svelte.d.ts +12 -0
- package/src/shadcn/field/field-group.svelte.d.ts +5 -0
- package/src/shadcn/field/field-label.svelte.d.ts +10 -0
- package/src/shadcn/field/field-legend.svelte.d.ts +8 -0
- package/src/shadcn/field/field-separator.svelte.d.ts +9 -0
- package/src/shadcn/field/field-set.svelte.d.ts +5 -0
- package/src/shadcn/field/field-title.svelte.d.ts +5 -0
- package/src/shadcn/field/field.svelte +1 -1
- package/src/shadcn/field/field.svelte.d.ts +17 -0
- package/src/shadcn/field/simple-field.svelte.d.ts +15 -0
- package/src/shadcn/hooks/highlighter.ts +51 -2
- package/src/shadcn/hover-card/hover-card-content.svelte.d.ts +10 -0
- package/src/shadcn/hover-card/hover-card-portal.svelte.d.ts +3 -0
- package/src/shadcn/hover-card/hover-card-trigger.svelte.d.ts +4 -0
- package/src/shadcn/hover-card/hover-card.svelte.d.ts +3 -0
- package/src/shadcn/input/input.svelte.d.ts +13 -0
- package/src/shadcn/input/secret-input.svelte +3 -3
- package/src/shadcn/input/secret-input.svelte.d.ts +9 -0
- package/src/shadcn/input-otp/input-otp-group.svelte.d.ts +5 -0
- package/src/shadcn/input-otp/input-otp-separator.svelte.d.ts +5 -0
- package/src/shadcn/input-otp/input-otp-slot.svelte.d.ts +4 -0
- package/src/shadcn/input-otp/input-otp.svelte.d.ts +4 -0
- package/src/shadcn/kbd/kbd-group.svelte.d.ts +5 -0
- package/src/shadcn/kbd/kbd.svelte.d.ts +5 -0
- package/src/shadcn/label/label.svelte.d.ts +4 -0
- package/src/shadcn/marker/marker-content.svelte.d.ts +5 -0
- package/src/shadcn/marker/marker-icon.svelte.d.ts +5 -0
- package/src/shadcn/marker/marker.svelte.d.ts +21 -0
- package/src/shadcn/message/message-avatar.svelte.d.ts +5 -0
- package/src/shadcn/message/message-content.svelte.d.ts +5 -0
- package/src/shadcn/message/message-footer.svelte.d.ts +5 -0
- package/src/shadcn/message/message-group.svelte.d.ts +5 -0
- package/src/shadcn/message/message-header.svelte.d.ts +5 -0
- package/src/shadcn/message/message.svelte.d.ts +8 -0
- package/src/shadcn/message-scroller/message-scroller-button.svelte +13 -1
- package/src/shadcn/message-scroller/message-scroller-button.svelte.d.ts +9 -0
- package/src/shadcn/message-scroller/message-scroller-content.svelte.d.ts +4 -0
- package/src/shadcn/message-scroller/message-scroller-item.svelte.d.ts +4 -0
- package/src/shadcn/message-scroller/message-scroller-provider.svelte.d.ts +4 -0
- package/src/shadcn/message-scroller/message-scroller-viewport.svelte.d.ts +4 -0
- package/src/shadcn/message-scroller/message-scroller.svelte.d.ts +4 -0
- package/src/shadcn/popover/popover-close.svelte.d.ts +4 -0
- package/src/shadcn/popover/popover-content.svelte.d.ts +10 -0
- package/src/shadcn/popover/popover-description.svelte.d.ts +5 -0
- package/src/shadcn/popover/popover-header.svelte.d.ts +5 -0
- package/src/shadcn/popover/popover-portal.svelte.d.ts +3 -0
- package/src/shadcn/popover/popover-title.svelte.d.ts +5 -0
- package/src/shadcn/popover/popover-trigger.svelte.d.ts +4 -0
- package/src/shadcn/popover/popover.svelte.d.ts +3 -0
- package/src/shadcn/progress/progress.svelte.d.ts +10 -0
- package/src/shadcn/radio-group/radio-group-item.svelte +1 -1
- package/src/shadcn/radio-group/radio-group-item.svelte.d.ts +4 -0
- package/src/shadcn/radio-group/radio-group.svelte.d.ts +4 -0
- package/src/shadcn/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
- package/src/shadcn/scroll-area/scroll-area.svelte +1 -0
- package/src/shadcn/scroll-area/scroll-area.svelte.d.ts +11 -0
- package/src/shadcn/select/select-content.svelte.d.ts +11 -0
- package/src/shadcn/select/select-group-heading.svelte.d.ts +10 -0
- package/src/shadcn/select/select-group.svelte.d.ts +4 -0
- package/src/shadcn/select/select-item.svelte +1 -1
- package/src/shadcn/select/select-item.svelte.d.ts +4 -0
- package/src/shadcn/select/select-label.svelte.d.ts +6 -0
- package/src/shadcn/select/select-portal.svelte.d.ts +3 -0
- package/src/shadcn/select/select-scroll-down-button.svelte +1 -1
- package/src/shadcn/select/select-scroll-down-button.svelte.d.ts +4 -0
- package/src/shadcn/select/select-scroll-up-button.svelte +1 -1
- package/src/shadcn/select/select-scroll-up-button.svelte.d.ts +4 -0
- package/src/shadcn/select/select-separator.svelte.d.ts +4 -0
- package/src/shadcn/select/select-trigger.svelte +1 -0
- package/src/shadcn/select/select-trigger.svelte.d.ts +8 -0
- package/src/shadcn/select/select.svelte.d.ts +3 -0
- package/src/shadcn/separator/separator.svelte.d.ts +4 -0
- package/src/shadcn/sheet/sheet-body.svelte.d.ts +5 -0
- package/src/shadcn/sheet/sheet-close.svelte.d.ts +4 -0
- package/src/shadcn/sheet/sheet-content.svelte +5 -7
- package/src/shadcn/sheet/sheet-content.svelte.d.ts +21 -0
- package/src/shadcn/sheet/sheet-description.svelte.d.ts +4 -0
- package/src/shadcn/sheet/sheet-footer.svelte.d.ts +12 -0
- package/src/shadcn/sheet/sheet-header.svelte.d.ts +5 -0
- package/src/shadcn/sheet/sheet-overlay.svelte.d.ts +4 -0
- package/src/shadcn/sheet/sheet-portal.svelte.d.ts +3 -0
- package/src/shadcn/sheet/sheet-title.svelte.d.ts +4 -0
- package/src/shadcn/sheet/sheet-trigger.svelte.d.ts +4 -0
- package/src/shadcn/sheet/sheet.css +47 -43
- package/src/shadcn/sheet/sheet.svelte.d.ts +3 -0
- package/src/shadcn/sidebar/constants.ts +1 -1
- package/src/shadcn/sidebar/context.svelte.ts +16 -1
- package/src/shadcn/sidebar/sidebar-content.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-footer.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-group-action.svelte.d.ts +11 -0
- package/src/shadcn/sidebar/sidebar-group-content.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-group-label.svelte.d.ts +11 -0
- package/src/shadcn/sidebar/sidebar-group.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-header.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-input.svelte.d.ts +11 -0
- package/src/shadcn/sidebar/sidebar-inset.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-menu-action.svelte.d.ts +12 -0
- package/src/shadcn/sidebar/sidebar-menu-badge.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-menu-button.svelte.d.ts +31 -0
- package/src/shadcn/sidebar/sidebar-menu-item.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-menu-skeleton.svelte.d.ts +8 -0
- package/src/shadcn/sidebar/sidebar-menu-sub-button.svelte.d.ts +13 -0
- package/src/shadcn/sidebar/sidebar-menu-sub-item.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-menu-sub.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-menu.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-provider.svelte +3 -0
- package/src/shadcn/sidebar/sidebar-provider.svelte.d.ts +9 -0
- package/src/shadcn/sidebar/sidebar-rail.svelte.d.ts +5 -0
- package/src/shadcn/sidebar/sidebar-separator.svelte.d.ts +13 -0
- package/src/shadcn/sidebar/sidebar-trigger.svelte +3 -1
- package/src/shadcn/sidebar/sidebar-trigger.svelte.d.ts +8 -0
- package/src/shadcn/sidebar/sidebar.svelte +3 -0
- package/src/shadcn/sidebar/sidebar.svelte.d.ts +10 -0
- package/src/shadcn/sidebar/sidebar.test.ts +69 -0
- package/src/shadcn/skeleton/skeleton-delay.svelte.d.ts +20 -0
- package/src/shadcn/skeleton/skeleton.svelte.d.ts +5 -0
- package/src/shadcn/slider/slider.svelte.d.ts +11 -0
- package/src/shadcn/sonner/sonner.svelte +4 -4
- package/src/shadcn/sonner/sonner.svelte.d.ts +4 -0
- package/src/shadcn/spinner/spinner.svelte.d.ts +4 -0
- package/src/shadcn/switch/switch.svelte.d.ts +8 -0
- package/src/shadcn/table/table-body.svelte.d.ts +5 -0
- package/src/shadcn/table/table-caption.svelte.d.ts +5 -0
- package/src/shadcn/table/table-cell.svelte +16 -12
- package/src/shadcn/table/table-cell.svelte.d.ts +9 -0
- package/src/shadcn/table/table-footer.svelte.d.ts +5 -0
- package/src/shadcn/table/table-head.svelte.d.ts +5 -0
- package/src/shadcn/table/table-header.svelte.d.ts +5 -0
- package/src/shadcn/table/table-row.svelte.d.ts +5 -0
- package/src/shadcn/table/table.svelte.d.ts +5 -0
- package/src/shadcn/tabs/tabs-content.svelte.d.ts +4 -0
- package/src/shadcn/tabs/tabs-list.svelte.d.ts +8 -0
- package/src/shadcn/tabs/tabs-trigger.svelte.d.ts +4 -0
- package/src/shadcn/tabs/tabs.svelte.d.ts +4 -0
- package/src/shadcn/textarea/textarea.svelte.d.ts +5 -0
- package/src/shadcn/toggle/toggle.svelte.d.ts +10 -0
- package/src/shadcn/toggle-group/toggle-group-item.svelte.d.ts +6 -0
- package/src/shadcn/toggle-group/toggle-group.svelte.d.ts +15 -0
- package/src/shadcn/tooltip/tooltip-content.svelte.d.ts +11 -0
- package/src/shadcn/tooltip/tooltip-portal.svelte.d.ts +4 -0
- package/src/shadcn/tooltip/tooltip-provider.svelte.d.ts +4 -0
- package/src/shadcn/tooltip/tooltip-trigger.svelte.d.ts +4 -0
- package/src/shadcn/tooltip/tooltip.svelte.d.ts +4 -0
- package/src/shadcn/trace/trace-collapsible-content.svelte.d.ts +4 -0
- package/src/shadcn/trace/trace-collapsible-trigger.svelte +2 -2
- package/src/shadcn/trace/trace-collapsible-trigger.svelte.d.ts +4 -0
- package/src/shadcn/trace/trace-collapsible.svelte.d.ts +4 -0
- package/src/shadcn/trace/trace-description.svelte +1 -1
- package/src/shadcn/trace/trace-description.svelte.d.ts +5 -0
- package/src/shadcn/trace/trace-icon.svelte.d.ts +5 -0
- package/src/shadcn/trace/trace-line.svelte +1 -1
- package/src/shadcn/trace/trace-line.svelte.d.ts +9 -0
- package/src/shadcn/trace/trace-title.svelte.d.ts +5 -0
- package/src/shadcn/trace/trace.svelte.d.ts +5 -0
- package/src/slides/Controls.svelte +96 -92
- package/src/slides/Controls.svelte.d.ts +10 -0
- package/src/slides/Deck.svelte +65 -58
- package/src/slides/Deck.svelte.d.ts +5 -0
- package/src/slides/Fragment.svelte +25 -21
- package/src/slides/Fragment.svelte.d.ts +15 -0
- package/src/slides/Overview.svelte +65 -60
- package/src/slides/Overview.svelte.d.ts +8 -0
- package/src/slides/Presenter.svelte +146 -139
- package/src/slides/Presenter.svelte.d.ts +8 -0
- package/src/slides/README.md +1 -1
- package/src/slides/Slide.svelte +68 -63
- package/src/slides/Slide.svelte.d.ts +18 -0
- package/src/slides/SlideList.svelte.d.ts +9 -0
- package/src/slides/deck-controller.svelte.ts +3 -22
- package/src/slides/deck-keys.test.ts +49 -0
- package/src/slides/theme.css +197 -176
- package/src/slides/types.ts +2 -1
- package/src/status/index.ts +0 -1
- package/src/status/status-badge.svelte +7 -5
- package/src/status/status-badge.svelte.d.ts +28 -0
- package/src/status/status-badge.test.ts +44 -0
- package/src/status/status-dot.svelte +54 -49
- package/src/status/status-dot.svelte.d.ts +16 -0
- package/src/status/status-icon.svelte +19 -6
- package/src/status/status-icon.svelte.d.ts +14 -0
- package/src/status/status-pill.svelte +2 -8
- package/src/status/status-pill.svelte.d.ts +13 -0
- package/src/test-setup.test.ts +5 -0
- package/src/thread/thread-body.svelte.d.ts +9 -0
- package/src/thread/thread-events.svelte.d.ts +8 -0
- package/src/thread/thread-focus.svelte.test.ts +90 -0
- package/src/thread/thread.svelte +73 -21
- package/src/thread/thread.svelte.d.ts +40 -0
- package/src/tokens/base.css +47 -45
- package/src/tokens/design.css +8 -0
- package/src/tokens/index.css +3 -0
- package/src/triage/triage-plan.svelte +42 -9
- package/src/triage/triage-plan.svelte.d.ts +28 -0
- package/src/triage/triage-queue.svelte +61 -23
- package/src/triage/triage-queue.svelte.d.ts +41 -0
- package/src/triage/triage-task.svelte +11 -3
- package/src/triage/triage-task.svelte.d.ts +22 -0
- package/src/triage/triage.svelte.test.ts +130 -0
- package/src/work/README.md +8 -8
- package/src/work/dates.ts +3 -3
- package/src/work/detail/detail-types.ts +1 -29
- package/src/work/detail/task-chip.svelte.d.ts +10 -0
- package/src/work/detail/task-detail.svelte +18 -17
- package/src/work/detail/task-detail.svelte.d.ts +36 -0
- package/src/work/docs/doc-editor-page.svelte +20 -16
- package/src/work/docs/doc-editor-page.svelte.d.ts +31 -0
- package/src/work/docs/doc-menu.svelte +46 -39
- package/src/work/docs/doc-menu.svelte.d.ts +35 -0
- package/src/work/docs/edited-chip.svelte +9 -9
- package/src/work/docs/edited-chip.svelte.d.ts +26 -0
- package/src/work/docs/edited.ts +4 -7
- package/src/work/gantt/gantt-bar.svelte +87 -78
- package/src/work/gantt/gantt-bar.svelte.d.ts +29 -0
- package/src/work/gantt/gantt-grid.svelte +30 -26
- package/src/work/gantt/gantt-grid.svelte.d.ts +14 -0
- package/src/work/gantt/gantt-group-row.svelte +12 -8
- package/src/work/gantt/gantt-group-row.svelte.d.ts +12 -0
- package/src/work/gantt/gantt-header.svelte +2 -4
- package/src/work/gantt/gantt-header.svelte.d.ts +17 -0
- package/src/work/gantt/gantt-task-row.svelte +43 -36
- package/src/work/gantt/gantt-task-row.svelte.d.ts +53 -0
- package/src/work/gantt/gantt.css +14 -10
- package/src/work/gantt/gantt.test.ts +14 -2
- package/src/work/inbox/inbox-card.svelte +17 -25
- package/src/work/inbox/inbox-card.svelte.d.ts +22 -0
- package/src/work/inbox/inbox-draft.svelte +3 -3
- package/src/work/inbox/inbox-draft.svelte.d.ts +18 -0
- package/src/work/inbox/inbox-logic.ts +4 -16
- package/src/work/inbox/inbox-trace.svelte.d.ts +11 -0
- package/src/work/index.ts +1 -27
- package/src/work/kanban-board.svelte +103 -66
- package/src/work/kanban-board.svelte.d.ts +107 -0
- package/src/work/kanban-board.svelte.test.ts +89 -0
- package/src/work/kanban-column-head.svelte.d.ts +40 -0
- package/src/work/kanban-column.svelte +45 -43
- package/src/work/kanban-column.svelte.d.ts +20 -0
- package/src/work/kanban-fold-chevron.svelte +15 -11
- package/src/work/kanban-fold-chevron.svelte.d.ts +8 -0
- package/src/work/kanban-hidden-rail.svelte +2 -1
- package/src/work/kanban-hidden-rail.svelte.d.ts +39 -0
- package/src/work/kanban-keyboard.ts +8 -6
- package/src/work/task-gantt.svelte +18 -4
- package/src/work/task-gantt.svelte.d.ts +85 -0
- package/src/work/task-list.svelte +166 -116
- package/src/work/task-list.svelte.d.ts +81 -0
- package/src/work/task-list.svelte.test.ts +113 -0
- package/src/work/time/duration.ts +2 -3
- package/src/work/time/time-chip.svelte +2 -4
- package/src/work/time/time-chip.svelte.d.ts +14 -0
- package/src/work/time/time-dot.svelte +30 -25
- package/src/work/time/time-dot.svelte.d.ts +9 -0
- package/src/work/time/time-ring.svelte +15 -11
- package/src/work/time/time-ring.svelte.d.ts +18 -0
- package/src/work/time/time-tracker.svelte +49 -44
- package/src/work/time/time-tracker.svelte.d.ts +59 -0
- package/dist/ai/index.js +0 -44
- package/dist/ai/thinking-dots/index.js +0 -3
- package/dist/components/icon/index.js +0 -1
- package/dist/components/locale-switch/index.js +0 -1
- package/dist/icons/trades.js +0 -49
- package/dist/index.js +0 -18
- package/dist/record/demo-data.js +0 -485
- package/dist/status/pill-tint.js +0 -13
- package/dist/test-setup.js +0 -30
- package/dist/work/presets/sales.js +0 -39
- package/src/agents/demo.svelte +0 -137
- package/src/ai/confirmation/ConfirmationAccepted.svelte +0 -23
- package/src/ai/confirmation/ConfirmationFailed.svelte +0 -23
- package/src/ai/confirmation/ConfirmationRejected.svelte +0 -23
- package/src/ai/index.ts +0 -111
- package/src/ai/thinking-dots/ThinkingDots.svelte +0 -42
- package/src/ai/thinking-dots/index.ts +0 -5
- package/src/charts/dashboard/dashboard-empty.svelte +0 -55
- package/src/charts/dashboard/data-panel.svelte +0 -81
- package/src/charts/dashboard/data-sort-head.svelte +0 -102
- package/src/components/icon/icon.svelte +0 -23
- package/src/components/icon/index.ts +0 -1
- package/src/components/list-page/detail-empty.svelte +0 -45
- package/src/components/list-page/detail-panel.svelte +0 -82
- package/src/components/list-page/rail-empty.svelte +0 -44
- package/src/components/locale-switch/index.ts +0 -1
- package/src/components/locale-switch/locale-switch.svelte +0 -59
- package/src/components/work-parts/count-chip.svelte +0 -20
- package/src/design/index.css +0 -215
- package/src/design/polish.css +0 -150
- package/src/icons/TradeIcon.svelte +0 -16
- package/src/icons/trades.ts +0 -89
- package/src/index.ts +0 -53
- package/src/onboarding/demo.svelte +0 -105
- package/src/record/demo-data.ts +0 -352
- package/src/record/record-demo.svelte +0 -342
- package/src/slides/demo-slides.svelte +0 -382
- package/src/slides/demo.svelte +0 -180
- package/src/status/pill-tint.ts +0 -16
- package/src/test-setup.ts +0 -34
- package/src/work/demo.svelte +0 -553
- package/src/work/detail/detail-demo.svelte +0 -255
- package/src/work/detail/task-property.svelte +0 -17
- package/src/work/detail/task-thread.svelte +0 -221
- package/src/work/docs/docs-demo.svelte +0 -227
- package/src/work/presets/sales.ts +0 -16
package/COMPONENTS.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Every component in `@heyramzi/ui`, one line each. Import a component from its subpath, e.g.
|
|
4
4
|
`import { Button } from "@heyramzi/ui/shadcn/button"`.
|
|
5
5
|
|
|
6
|
-
The style layer lives in [`src/tokens
|
|
6
|
+
The style layer lives in [`src/tokens`](./src/tokens) and the motion CSS in
|
|
7
7
|
[`src/animations`](./src/animations). Components that already exist in
|
|
8
8
|
[shadcn-svelte](https://shadcn-svelte.com) are linked there from the root README.
|
|
9
9
|
|
|
@@ -64,31 +64,31 @@ Generic pieces built on the primitives, imported from `@heyramzi/ui/components/<
|
|
|
64
64
|
- `copy` — CopyButton, copyText, copyRichText, htmlToPlainText, Copied
|
|
65
65
|
- `data-table` — SortableHead, Pagination, InfiniteScroll, RowContextMenu, TableSkeleton, and the sort, page and filter helpers
|
|
66
66
|
- `hold-to-confirm` — HoldToConfirm, press and hold to confirm
|
|
67
|
-
- `
|
|
68
|
-
- `
|
|
69
|
-
- `
|
|
70
|
-
- `toolbar` — Toolbar: one row at any width; search, tabs and the view switch fold into menus in a narrow pane
|
|
71
|
-
- `locale-switch` — LocaleSwitch, a language switch on SegmentedFilter
|
|
67
|
+
- `language-flag` — LanguageFlag, LANGUAGE_FLAGS (code to `/flags/*.svg`, also a SegmentedFilter option's `image`)
|
|
68
|
+
- `list-page` — ListPageShell, MasterDetail, GroupedList, RailRow and the rest of the master-detail page kit, DetailPanel, ToolbarSearch, toolbarTriggerClass, NoticeBar, EmptyState, FilterPopover, setSectionHost
|
|
69
|
+
- `toolbar` — Toolbar: one row at any width; search, tabs and the view switch fold into menus in a narrow pane. Its search box is `list-page`'s ToolbarSearch
|
|
72
70
|
- `mark` — Mark, a logo or photo glyph with an initial fallback
|
|
73
71
|
- `open-in` — OpenIn, a link out to a tool that takes the tool's name, label and mark as a prop
|
|
74
72
|
- `picker` — Picker, MarkPicker, pickerTriggerClass, a command palette at popover scale
|
|
75
73
|
- `docs` — DocPage, OnThisPage, ScrollSpy: one page anatomy for documentation, an icon, title and summary header, a reading column and a contents rail that becomes a bar on a narrow pane
|
|
76
74
|
- `section-card` — SectionCard, a card with a fixed-height header, an h3 title, optional actions and a line under it
|
|
77
|
-
- `section-header` — SectionHeader, a section label with a count chip, a line of description and actions
|
|
75
|
+
- `section-header` — SectionHeader, a section label with a count chip, a line of description and actions; SectionLabel, the label alone
|
|
78
76
|
- `field-row` — FieldRow, a labelled control with its action button at the control's height
|
|
79
77
|
- `table-view` — TableView, a read-only table from columns and rows: numeric columns, footer row, custom cell; opt-in: `bare`, sortable heads (`column.sortable`, bind `sort`; the caller orders `rows`), `rowHref` (a real link over the row; `onRowLink` opens in place on a plain click), `onRowClick`, `selectable` + bind `selected`, `rowMenu` (context-menu items), `group` (a `null` key sits with no header) + `groupHeader` + `collapsible`, `subRow` + `expanded`, `loading` (skeleton rows in the frame), `empty`, `trailing`, `head`, and per-column `hideBelow`, `sticky`, `interactive`, `class`
|
|
80
78
|
- `segmented` — AnimatedTabs (pill or underline), SegmentedFilter, SegmentedNav, SectionRuns, one bordered track with a sliding pill, a badge note and an overflow menu
|
|
81
|
-
- `theme` — ThemeProvider, mode, userPrefersMode, setMode, toggleMode, resetMode: the one light and dark system (mode-watcher, optional peer). Mount `<ThemeProvider initial
|
|
79
|
+
- `theme` — ThemeProvider, mode, userPrefersMode, setMode, toggleMode, resetMode: the one light and dark system (mode-watcher, optional peer). Mount `<ThemeProvider initial onModeChange themeColors modeStorageKey />` once; flip with `toggleMode()`, read `mode.current`. Pair with `revealTheme(event, toggleMode)` from `@heyramzi/ui/lib/theme-transition.js` for the wipe
|
|
82
80
|
- `star-rating-input` — StarRatingInput
|
|
83
81
|
- `svg` — Svg, an SVG file imported with `?raw`
|
|
84
82
|
|
|
85
83
|
## Effects (`src/effects`)
|
|
86
84
|
|
|
87
|
-
|
|
85
|
+
Named exports from `@heyramzi/ui/effects/<name>`, e.g.
|
|
86
|
+
`import { Marquee } from "@heyramzi/ui/effects/marquee"`.
|
|
88
87
|
|
|
88
|
+
- `interactive-hover-button` — InteractiveHoverButton, a dot that grows into the fill
|
|
89
89
|
- `animated-beam` — AnimatedBeam, AnimatedBeamProps, AnchorPosition
|
|
90
|
-
- `border-beam` — BorderBeam
|
|
91
|
-
- `image-comparison` — ImageComparison, a before/after wipe with a bindable position, side badges and a hint sweep
|
|
90
|
+
- `border-beam` — BorderBeam, sizePresets, sizeThemePresets, themeColors and their types
|
|
91
|
+
- `image-comparison` — ImageComparison, ComparisonImage, a before/after wipe with a bindable position, side badges and a hint sweep
|
|
92
92
|
- `image-reveal` — ImageReveal, ImageRevealProps, ImageRevealHandle
|
|
93
93
|
- `magnetic` — magnetic
|
|
94
94
|
- `magic-card` — MagicCard. Props: `glow`, `radius`, `class`, `contentClass`; the glow colour is `--magic-card-glow` set on `class`.
|
|
@@ -97,7 +97,7 @@ Generic pieces built on the primitives, imported from `@heyramzi/ui/components/<
|
|
|
97
97
|
- `reveal` — InView, AnimatedGroup, TextEffect, observeInView, RevealPreset, RevealPer
|
|
98
98
|
- `shader-gradient` — ShaderGradient, ShaderGradientProps, ShaderGradientUniforms
|
|
99
99
|
- `spotlight` — Spotlight
|
|
100
|
-
- `theme-toggle` — ThemeToggle
|
|
100
|
+
- `theme-toggle` — ThemeToggle. Props: `isDark`, `mode` (`light`, `dark`, `system`; swaps in the Monitor icon), `onToggle`, `variant` (`outline`, `ghost`, `inverted`, `slide`; `inverted` boolean is an alias; `slide` is a pill with a moving thumb, coloured by `--theme-toggle-thumb-light`, `--theme-toggle-thumb-dark`, `--theme-toggle-track`, `--theme-toggle-glow` and friends set on `class`), `size`, `label`, `title`, `skipTransition`, `class`. `revealTheme(event, apply, { skip, duration, easing })` is the circular wipe on its own: `import { revealTheme } from "@heyramzi/ui/lib/theme-transition.js"` (every `./lib` subpath ends in `.js`, though the source is `.ts`).
|
|
101
101
|
|
|
102
102
|
## Animations (`src/animations`)
|
|
103
103
|
|
|
@@ -121,16 +121,17 @@ Generic pieces built on the primitives, imported from `@heyramzi/ui/components/<
|
|
|
121
121
|
|
|
122
122
|
## AI and chat (`src/ai`)
|
|
123
123
|
|
|
124
|
+
Imported from `@heyramzi/ui/ai/<name>`, e.g. `import { AiButton } from "@heyramzi/ui/ai/ai-button"`.
|
|
125
|
+
|
|
124
126
|
- `ai-button` — AiButton
|
|
125
|
-
- `confirmation` — Confirmation, ConfirmationTitle,
|
|
127
|
+
- `confirmation` — Confirmation, ConfirmationTitle, ConfirmationState (`when` names the kind it shows), ConfirmationActions, ConfirmationAction, type ConfirmationKind
|
|
126
128
|
- `generation-progress` — GenerationProgress
|
|
127
129
|
- `loading-state` — PixelLoader
|
|
128
130
|
- `prompt-input` — PromptInput, PromptInputBody, PromptInputToolbar, PromptInputTextarea, PromptInputSubmit
|
|
129
131
|
- `reasoning` — Reasoning, ReasoningTrigger, ReasoningContent
|
|
130
132
|
- `response` — Response
|
|
131
133
|
- `suggestion` — Suggestion, Suggestions
|
|
132
|
-
- `
|
|
133
|
-
- `typing-dots` — TypingDots
|
|
134
|
+
- `typing-dots` — TypingDots. A `label` makes it a `role="status"` line
|
|
134
135
|
- `voice-waveform` — VoiceWaveform
|
|
135
136
|
|
|
136
137
|
## Record (`src/record`)
|
package/README.md
CHANGED
|
@@ -81,13 +81,14 @@ runes only.
|
|
|
81
81
|
|
|
82
82
|
## Using a component
|
|
83
83
|
|
|
84
|
-
Import from
|
|
84
|
+
Import a named export from its subpath. There's no package root and no default export, and
|
|
85
|
+
each name has exactly one path:
|
|
85
86
|
|
|
86
87
|
```svelte
|
|
87
88
|
<script lang="ts">
|
|
88
89
|
import { Button } from "@heyramzi/ui/shadcn/button";
|
|
89
90
|
import { Card, CardHeader, CardTitle, CardContent } from "@heyramzi/ui/shadcn/card";
|
|
90
|
-
import Marquee from "@heyramzi/ui/effects/marquee
|
|
91
|
+
import { Marquee } from "@heyramzi/ui/effects/marquee";
|
|
91
92
|
</script>
|
|
92
93
|
```
|
|
93
94
|
|
|
@@ -99,14 +100,14 @@ Many components take their content through snippets, so you keep full control:
|
|
|
99
100
|
|
|
100
101
|
## Sound
|
|
101
102
|
|
|
102
|
-
`@heyramzi/ui/lib/sound` gives the kit's controls interaction sounds from
|
|
103
|
+
`@heyramzi/ui/lib/sound.js` gives the kit's controls interaction sounds from
|
|
103
104
|
[cuelume](https://cuelume.dev). They're off until the person turns them on, and the choice is
|
|
104
105
|
saved in their browser. Start it once in the root layout:
|
|
105
106
|
|
|
106
107
|
```svelte
|
|
107
108
|
<script lang="ts">
|
|
108
109
|
import { onMount } from "svelte";
|
|
109
|
-
import { startSound } from "@heyramzi/ui/lib/sound";
|
|
110
|
+
import { startSound } from "@heyramzi/ui/lib/sound.js";
|
|
110
111
|
|
|
111
112
|
onMount(() => startSound());
|
|
112
113
|
</script>
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import Confirmation from "../../../src/ai/confirmation/Confirmation.svelte";
|
|
2
2
|
import ConfirmationTitle from "../../../src/ai/confirmation/ConfirmationTitle.svelte";
|
|
3
|
-
import
|
|
4
|
-
import ConfirmationAccepted from "../../../src/ai/confirmation/ConfirmationAccepted.svelte";
|
|
5
|
-
import ConfirmationRejected from "../../../src/ai/confirmation/ConfirmationRejected.svelte";
|
|
6
|
-
import ConfirmationFailed from "../../../src/ai/confirmation/ConfirmationFailed.svelte";
|
|
3
|
+
import ConfirmationState from "../../../src/ai/confirmation/ConfirmationState.svelte";
|
|
7
4
|
import ConfirmationActions from "../../../src/ai/confirmation/ConfirmationActions.svelte";
|
|
8
5
|
import ConfirmationAction from "../../../src/ai/confirmation/ConfirmationAction.svelte";
|
|
9
|
-
export { Confirmation, ConfirmationTitle,
|
|
6
|
+
export { Confirmation, ConfirmationTitle, ConfirmationState, ConfirmationActions, ConfirmationAction,
|
|
10
7
|
//
|
|
11
|
-
Confirmation as Root, ConfirmationTitle as Title,
|
|
8
|
+
Confirmation as Root, ConfirmationTitle as Title, ConfirmationState as State, ConfirmationActions as Actions, ConfirmationAction as Action };
|
package/dist/canvas/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// Svelte components are imported by path, like "@heyramzi/ui/canvas/ui/canvas-grid.svelte".
|
|
3
3
|
export * from "./types.js";
|
|
4
4
|
export * from "./plugin.js";
|
|
5
|
-
export { tryCatch, tryCatchAsync } from "../lib/result.js";
|
|
6
5
|
export * from "./ops/ops.js";
|
|
7
6
|
export * from "./headless/alignment.js";
|
|
8
7
|
export * from "./headless/canvas-cleanup.js";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// A pen node's accessible name. Svelte Flow puts `ariaLabel` on the focusable node wrapper,
|
|
2
|
+
// so the name has to live on the node object and follow its words as they're edited.
|
|
3
|
+
import { useSvelteFlow } from "@xyflow/svelte";
|
|
4
|
+
import { untrack } from "svelte";
|
|
5
|
+
const cap = (word) => word.charAt(0).toUpperCase() + word.slice(1);
|
|
6
|
+
/** "Idea" for a text, "Rectangle: Idea" for a labelled shape, "Pen stroke" for a drawing. */
|
|
7
|
+
export function penNodeName(kind, data) {
|
|
8
|
+
if (kind === "text") return data.text?.trim() || "Empty text";
|
|
9
|
+
if (kind === "stroke") return `${cap(data.tool ?? "pen")} stroke`;
|
|
10
|
+
const shape = cap(data.shape ?? "shape");
|
|
11
|
+
const label = data.label?.trim();
|
|
12
|
+
return label ? `${shape}: ${label}` : shape;
|
|
13
|
+
}
|
|
14
|
+
/** Keeps node `id`'s ariaLabel equal to `name()`. Call it from a node component. */
|
|
15
|
+
export function useNodeName(id, name) {
|
|
16
|
+
const { getNode, updateNode } = useSvelteFlow();
|
|
17
|
+
$effect(() => {
|
|
18
|
+
const nodeId = id();
|
|
19
|
+
const label = name();
|
|
20
|
+
// untrack: updateNode reads the node list, and tracking it would rerun this on every write.
|
|
21
|
+
untrack(() => {
|
|
22
|
+
if (getNode(nodeId)?.ariaLabel !== label) updateNode(nodeId, { ariaLabel: label });
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
package/dist/canvas/ui/tools.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// The tool bar's tools, their keys and the shortcut list the help panel renders.
|
|
2
2
|
// Pure data and two lookups, so the keyboard, the bar and the panel can't disagree.
|
|
3
|
+
import { isEditingTarget } from "../editor/keymap.js";
|
|
3
4
|
import { PEN_DEFAULTS } from "../pen/types.js";
|
|
4
5
|
/** Every tool with its single-letter key. Shapes share one bar button but keep a key each. */
|
|
5
6
|
export const TOOLS = [
|
|
@@ -53,6 +54,12 @@ const TOOL_BY_KEY = new Map(TOOLS.map((tool) => [tool.key.toLowerCase(), tool.id
|
|
|
53
54
|
export function toolForKey(key) {
|
|
54
55
|
return TOOL_BY_KEY.get(key.toLowerCase()) ?? null;
|
|
55
56
|
}
|
|
57
|
+
/** The tool a key press picks: the tooltip's bare letter, never with a modifier or while a field has focus. */
|
|
58
|
+
export function resolveToolKey(event) {
|
|
59
|
+
if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return null;
|
|
60
|
+
if (isEditingTarget(event.target)) return null;
|
|
61
|
+
return toolForKey(event.key);
|
|
62
|
+
}
|
|
56
63
|
export function keyForTool(tool) {
|
|
57
64
|
return TOOLS.find((entry) => entry.id === tool)?.key ?? "";
|
|
58
65
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** Builds the table and summary every cartesian chart hands to ChartPlot. A missing value reads `empty`. */
|
|
2
|
+
export function chartTable(data, x, series, format, { xLabel = "", empty = "No data" } = {}) {
|
|
3
|
+
const xs = data.map(x);
|
|
4
|
+
const rows = data.map((d, i) => ({
|
|
5
|
+
x: xs[i],
|
|
6
|
+
cells: series.map((s) => {
|
|
7
|
+
const n = numeric(s.value(d));
|
|
8
|
+
return n == null ? empty : (s.format ?? format)(n);
|
|
9
|
+
})
|
|
10
|
+
}));
|
|
11
|
+
const lines = series.map((s) => seriesLine(s.label, data.map((d) => numeric(s.value(d))), s.format ?? format));
|
|
12
|
+
const range = xs.length === 0 ? "No data" : xs.length === 1 ? xs[0] : `${xs[0]} to ${xs.at(-1)}`;
|
|
13
|
+
return {
|
|
14
|
+
xLabel,
|
|
15
|
+
columns: series.map((s) => s.label),
|
|
16
|
+
rows,
|
|
17
|
+
summary: xs.length === 0 ? "No data." : [`${range}.`, ...lines].join(" ")
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function numeric(v) {
|
|
21
|
+
if (v == null) return null;
|
|
22
|
+
const n = Number(v);
|
|
23
|
+
return Number.isFinite(n) ? n : null;
|
|
24
|
+
}
|
|
25
|
+
function seriesLine(label, values, format) {
|
|
26
|
+
const nums = values.filter((n) => n != null);
|
|
27
|
+
if (nums.length === 0) return `${label}: no data.`;
|
|
28
|
+
let low = nums[0];
|
|
29
|
+
let high = nums[0];
|
|
30
|
+
for (const n of nums) {
|
|
31
|
+
if (n < low) low = n;
|
|
32
|
+
if (n > high) high = n;
|
|
33
|
+
}
|
|
34
|
+
const ends = `first ${format(nums[0])}, last ${format(nums[nums.length - 1])}`;
|
|
35
|
+
return `${label}: ${ends}, low ${format(low)}, high ${format(high)}.`;
|
|
36
|
+
}
|
|
37
|
+
/** What one row reads as when the arrow keys land on it, like "Mar: Revenue $4,100, Cost $2,100". */
|
|
38
|
+
export function rowSummary(table, i) {
|
|
39
|
+
const row = table.rows[i];
|
|
40
|
+
if (!row) return "";
|
|
41
|
+
return `${row.x}: ${table.columns.map((c, j) => `${c} ${row.cells[j]}`).join(", ")}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The point a key moves to from `at`, where -1 is none yet. `undefined` means the key isn't the
|
|
45
|
+
* plot's, and `null` means Escape cleared the point.
|
|
46
|
+
*/
|
|
47
|
+
export function nextPoint(key, at, count) {
|
|
48
|
+
if (count === 0) return undefined;
|
|
49
|
+
switch (key) {
|
|
50
|
+
case "ArrowRight":
|
|
51
|
+
case "ArrowDown": return at < 0 ? 0 : Math.min(at + 1, count - 1);
|
|
52
|
+
case "ArrowLeft":
|
|
53
|
+
case "ArrowUp": return at < 0 ? count - 1 : Math.max(at - 1, 0);
|
|
54
|
+
case "Home": return 0;
|
|
55
|
+
case "End": return count - 1;
|
|
56
|
+
case "Escape": return at < 0 ? undefined : null;
|
|
57
|
+
default: return undefined;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
export { default as DataPanel } from "../../../src/charts/dashboard/data-panel.svelte";
|
|
2
|
-
export { default as DataSortHead } from "../../../src/charts/dashboard/data-sort-head.svelte";
|
|
3
1
|
export { default as DataTable } from "../../../src/charts/dashboard/data-table.svelte";
|
|
4
2
|
export { default as RatingChip } from "../../../src/charts/dashboard/rating-chip.svelte";
|
|
5
|
-
export { default as DashboardEmpty } from "../../../src/charts/dashboard/dashboard-empty.svelte";
|
|
6
3
|
export { default as DashboardSection } from "../../../src/charts/dashboard/dashboard-section.svelte";
|
|
7
4
|
export { default as PanelGrid } from "../../../src/charts/dashboard/panel-grid.svelte";
|
|
8
5
|
export { default as PeriodFilter } from "../../../src/charts/dashboard/period-filter.svelte";
|
|
@@ -13,6 +13,20 @@ export function getPayloadConfigFromPayload(config, item, key) {
|
|
|
13
13
|
}
|
|
14
14
|
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
15
15
|
}
|
|
16
|
+
const compact = new Intl.NumberFormat(undefined, {
|
|
17
|
+
notation: "compact",
|
|
18
|
+
maximumFractionDigits: 1
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* An axis tick formatter. "1,000,000" overflows the 48px gutter and the gap between ticks, so a
|
|
22
|
+
* label over 6 characters falls back to "1M"; the tooltip keeps the full value.
|
|
23
|
+
*/
|
|
24
|
+
export function valueTick(format) {
|
|
25
|
+
return (v) => {
|
|
26
|
+
const full = format(v);
|
|
27
|
+
return full.length > 6 && Number.isFinite(v) ? compact.format(v) : full;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
16
30
|
const chartContextKey = Symbol("chart-context");
|
|
17
31
|
export function setChartContext(value) {
|
|
18
32
|
return setContext(chartContextKey, value);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shift+F10 or the ContextMenu key sends Bits UI's ContextMenu the `contextmenu` event Safari
|
|
3
|
+
* never fires for a key. Preventing the key stops Chrome sending a second one.
|
|
4
|
+
*/
|
|
5
|
+
export function openMenuFromKey(event) {
|
|
6
|
+
const menuKey = event.key === "ContextMenu" || event.shiftKey && event.key === "F10";
|
|
7
|
+
if (!menuKey || event.defaultPrevented) return;
|
|
8
|
+
event.preventDefault();
|
|
9
|
+
const row = event.currentTarget;
|
|
10
|
+
const box = row.getBoundingClientRect();
|
|
11
|
+
row.dispatchEvent(new MouseEvent("contextmenu", {
|
|
12
|
+
bubbles: true,
|
|
13
|
+
cancelable: true,
|
|
14
|
+
clientX: box.left + 16,
|
|
15
|
+
clientY: box.top + box.height
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
/** What a row with a menu tells a screen reader about the keys that open it. */
|
|
19
|
+
export const MENU_KEYS = "Shift+F10 ContextMenu";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { default as DetailEmpty } from "../../../src/components/list-page/detail-empty.svelte";
|
|
2
1
|
export { default as DetailHeader } from "../../../src/components/list-page/detail-header.svelte";
|
|
3
|
-
export { default as DetailPanel } from "../../../src/
|
|
2
|
+
export { default as DetailPanel } from "../../../src/lib/panel.svelte";
|
|
4
3
|
export { default as DetailRow } from "../../../src/components/list-page/detail-row.svelte";
|
|
5
4
|
export { default as DetailStack } from "../../../src/components/list-page/detail-stack.svelte";
|
|
6
5
|
export { default as EmptyState } from "../../../src/components/list-page/empty-state.svelte";
|
|
@@ -9,10 +8,8 @@ export { default as PrevNext } from "../../../src/components/list-page/prev-next
|
|
|
9
8
|
export { stepTo } from "./step.js";
|
|
10
9
|
export { default as NoticeBar } from "../../../src/components/list-page/notice-bar.svelte";
|
|
11
10
|
export { default as RailBody } from "../../../src/components/list-page/rail-body.svelte";
|
|
12
|
-
export { default as RailEmpty } from "../../../src/components/list-page/rail-empty.svelte";
|
|
13
11
|
export { default as RailHead } from "../../../src/components/list-page/rail-head.svelte";
|
|
14
12
|
export { default as RailRow } from "../../../src/components/list-page/rail-row.svelte";
|
|
15
|
-
export { default as SectionLabel } from "../../../src/components/section-header/section-label.svelte";
|
|
16
13
|
export { queueRailClass, queueRailWidth } from "./queue-rail.js";
|
|
17
14
|
export { default as FilterPopover } from "../../../src/components/list-page/filter-popover.svelte";
|
|
18
15
|
export { filterSectionClass } from "./filter-section.js";
|
|
@@ -3,5 +3,4 @@
|
|
|
3
3
|
* layout, or the no-flash script never runs.
|
|
4
4
|
*/
|
|
5
5
|
export { default as ThemeProvider } from "../../../src/components/theme/theme-provider.svelte";
|
|
6
|
-
export { revealTheme } from "../../lib/theme-transition.js";
|
|
7
6
|
export { mode, resetMode, setMode, systemPrefersMode, toggleMode, userPrefersMode } from "mode-watcher";
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* One toolbar row for a list page
|
|
3
|
-
*
|
|
2
|
+
* One toolbar row for a list page: search, tabs and a view switch inline, folded into menus when
|
|
3
|
+
* narrow, never wrapping. `ToolbarSearch` lives in list-page.
|
|
4
4
|
*/
|
|
5
5
|
export { default as Toolbar } from "../../../src/components/toolbar/toolbar.svelte";
|
|
6
|
-
export { default as ToolbarSearch } from "../../../src/components/toolbar/toolbar-search.svelte";
|
|
7
|
-
export { toolbarTriggerClass } from "./toolbar-trigger.js";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export { default as CountChip } from "../../../src/components/work-parts/count-chip.svelte";
|
|
2
1
|
export { default as GroupHead } from "../../../src/components/work-parts/group-head.svelte";
|
|
3
2
|
export { default as PropertyRow } from "../../../src/components/work-parts/property-row.svelte";
|
|
4
3
|
export { default as WorkCard } from "../../../src/components/work-parts/work-card.svelte";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Extension } from "@tiptap/core";
|
|
2
|
+
import { Fragment } from "@tiptap/pm/model";
|
|
3
|
+
import { NodeSelection, Selection, TextSelection } from "@tiptap/pm/state";
|
|
4
|
+
/**
|
|
5
|
+
* Swaps the top-level block holding the selection with its neighbour, the same block the drag
|
|
6
|
+
* handle moves. Null at the top or bottom of the document.
|
|
7
|
+
*/
|
|
8
|
+
export function moveBlock(state, dir) {
|
|
9
|
+
const { selection, doc } = state;
|
|
10
|
+
const index = selection.$from.index(0);
|
|
11
|
+
const other = index + dir;
|
|
12
|
+
if (other < 0 || other >= doc.childCount) return null;
|
|
13
|
+
const node = doc.child(index);
|
|
14
|
+
const start = selection.$from.posAtIndex(index, 0);
|
|
15
|
+
const neighbour = doc.child(other);
|
|
16
|
+
const from = dir === 1 ? start : start - neighbour.nodeSize;
|
|
17
|
+
const to = from + node.nodeSize + neighbour.nodeSize;
|
|
18
|
+
const pair = dir === 1 ? [neighbour, node] : [node, neighbour];
|
|
19
|
+
const tr = state.tr.replaceWith(from, to, Fragment.fromArray(pair));
|
|
20
|
+
const moved = dir === 1 ? from + neighbour.nodeSize : from;
|
|
21
|
+
const shift = moved - start;
|
|
22
|
+
const next = selection instanceof NodeSelection ? NodeSelection.create(tr.doc, selection.from + shift) : selection instanceof TextSelection ? TextSelection.create(tr.doc, selection.anchor + shift, selection.head + shift) : Selection.near(tr.doc.resolve(selection.head + shift));
|
|
23
|
+
return tr.setSelection(next).scrollIntoView();
|
|
24
|
+
}
|
|
25
|
+
/** Alt+Shift+Up and Down: the keyboard way to do what the drag handle does. */
|
|
26
|
+
export const BlockMove = Extension.create({
|
|
27
|
+
name: "blockMove",
|
|
28
|
+
addKeyboardShortcuts() {
|
|
29
|
+
const run = (dir) => () => {
|
|
30
|
+
const tr = moveBlock(this.editor.state, dir);
|
|
31
|
+
if (!tr) return false;
|
|
32
|
+
this.editor.view.dispatch(tr);
|
|
33
|
+
return true;
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
"Alt-Shift-ArrowUp": run(-1),
|
|
37
|
+
"Alt-Shift-ArrowDown": run(1)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
});
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { Extension } from "@tiptap/core";
|
|
6
6
|
import { Plugin, PluginKey } from "@tiptap/pm/state";
|
|
7
7
|
import { Decoration, DecorationSet } from "@tiptap/pm/view";
|
|
8
|
+
import { copyText } from "../components/copy/clipboard.js";
|
|
8
9
|
import { anchorIds } from "./anchors.js";
|
|
9
10
|
const LINK_ICON = `<svg width="12" height="12" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M240 88.23a54.43 54.43 0 0 1-16 37L189.25 160a54.27 54.27 0 0 1-38.63 16h-.05A54.63 54.63 0 0 1 96 119.84a8 8 0 0 1 16 .45A38.62 38.62 0 0 0 150.58 160a38.4 38.4 0 0 0 27.31-11.31l34.75-34.75a38.63 38.63 0 0 0-54.63-54.63l-11 11A8 8 0 0 1 135.7 59l11-11a54.65 54.65 0 0 1 77.3 0A54.86 54.86 0 0 1 240 88.23ZM109 185.66l-11 11A38.41 38.41 0 0 1 70.6 208a38.63 38.63 0 0 1-27.29-65.94L78 107.31a38.63 38.63 0 0 1 54.63 0 8 8 0 0 0 11.31-11.31 54.65 54.65 0 0 0-77.3 0L32 130.75A54.62 54.62 0 0 0 70.56 224a54.28 54.28 0 0 0 38.64-16l11-11a8 8 0 0 0-11.2-11.34Z"/></svg>`;
|
|
10
11
|
const anchorsKey = new PluginKey("headingAnchors");
|
|
@@ -14,7 +15,7 @@ export const HeadingAnchors = Extension.create({
|
|
|
14
15
|
addOptions() {
|
|
15
16
|
return {
|
|
16
17
|
label: "Copy link",
|
|
17
|
-
|
|
18
|
+
onCopy: undefined
|
|
18
19
|
};
|
|
19
20
|
},
|
|
20
21
|
addProseMirrorPlugins() {
|
|
@@ -48,10 +49,10 @@ export const HeadingAnchors = Extension.create({
|
|
|
48
49
|
button.addEventListener("click", () => {
|
|
49
50
|
const { origin, pathname, search } = window.location;
|
|
50
51
|
const url = `${origin}${pathname}${search}#${id}`;
|
|
51
|
-
void
|
|
52
|
+
void copyText(url);
|
|
52
53
|
button.dataset.copied = "true";
|
|
53
54
|
setTimeout(() => delete button.dataset.copied, 1400);
|
|
54
|
-
options.
|
|
55
|
+
options.onCopy?.(url, id);
|
|
55
56
|
});
|
|
56
57
|
return button;
|
|
57
58
|
}, {
|
|
@@ -6,6 +6,7 @@ import { DragHandle } from "@tiptap/extension-drag-handle";
|
|
|
6
6
|
import { TaskItem, TaskList } from "@tiptap/extension-list";
|
|
7
7
|
import { Table, TableCell, TableHeader, TableRow } from "@tiptap/extension-table";
|
|
8
8
|
import { BlockIdExtension } from "./block-id.js";
|
|
9
|
+
import { BlockMove } from "./block-move.js";
|
|
9
10
|
import { CodeBlockChrome, HeadingAnchors } from "./doc-blocks.js";
|
|
10
11
|
const CmsBlock = TiptapNode.create({
|
|
11
12
|
name: "cmsBlock",
|
|
@@ -114,6 +115,17 @@ function dedupeExtensions(extensions) {
|
|
|
114
115
|
});
|
|
115
116
|
}
|
|
116
117
|
const DRAG_DOTS = `<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><circle cx="2.5" cy="2.5" r="1" fill="currentColor"/><circle cx="2.5" cy="6" r="1" fill="currentColor"/><circle cx="2.5" cy="9.5" r="1" fill="currentColor"/><circle cx="6" cy="2.5" r="1" fill="currentColor"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="9.5" r="1" fill="currentColor"/></svg>`;
|
|
118
|
+
/** The stock Image has no align, so the image toolbar's choice was dropped. content.css reads data-align. */
|
|
119
|
+
const AlignedImage = Image.extend({ addAttributes() {
|
|
120
|
+
return {
|
|
121
|
+
...this.parent?.(),
|
|
122
|
+
align: {
|
|
123
|
+
default: null,
|
|
124
|
+
parseHTML: (el) => el.getAttribute("data-align"),
|
|
125
|
+
renderHTML: (attrs) => attrs.align ? { "data-align": attrs.align } : {}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
} });
|
|
117
129
|
function dragHandle() {
|
|
118
130
|
return DragHandle.configure({ render() {
|
|
119
131
|
const el = document.createElement("div");
|
|
@@ -142,7 +154,7 @@ export function buildExtensions({ preset, placeholder, blockIds, anchors = false
|
|
|
142
154
|
...full ? [
|
|
143
155
|
CmsBlock,
|
|
144
156
|
Youtube,
|
|
145
|
-
|
|
157
|
+
AlignedImage.configure({ inline: false }),
|
|
146
158
|
TaskList,
|
|
147
159
|
TaskItem.configure({ nested: true }),
|
|
148
160
|
Table.configure({ resizable: false }),
|
|
@@ -154,6 +166,7 @@ export function buildExtensions({ preset, placeholder, blockIds, anchors = false
|
|
|
154
166
|
...anchors ? [HeadingAnchors.configure(anchors)] : [],
|
|
155
167
|
Placeholder.configure({ placeholder }),
|
|
156
168
|
dragHandle(),
|
|
169
|
+
BlockMove,
|
|
157
170
|
...blockIds ? [BlockIdExtension] : []
|
|
158
171
|
]);
|
|
159
172
|
}
|
|
@@ -15,14 +15,21 @@ export function usePathCalculator() {
|
|
|
15
15
|
const containerRect = containerRef.getBoundingClientRect();
|
|
16
16
|
const rectA = fromRef.getBoundingClientRect();
|
|
17
17
|
const rectB = toRef.getBoundingClientRect();
|
|
18
|
+
// A scaled ancestor shrinks every rect, but the SVG draws in the container's own pixels.
|
|
19
|
+
// Divide the scale out, or the beams stop short of their nodes.
|
|
20
|
+
const scaleX = containerRef.offsetWidth ? containerRect.width / containerRef.offsetWidth : 1;
|
|
21
|
+
const scaleY = containerRef.offsetHeight ? containerRect.height / containerRef.offsetHeight : 1;
|
|
22
|
+
const local = (rect) => new DOMRect((rect.left - containerRect.left) / scaleX, (rect.top - containerRect.top) / scaleY, rect.width / scaleX, rect.height / scaleY);
|
|
23
|
+
const a = local(rectA);
|
|
24
|
+
const b = local(rectB);
|
|
18
25
|
svgDimensions = {
|
|
19
|
-
width: containerRect.width,
|
|
20
|
-
height: containerRect.height
|
|
26
|
+
width: containerRect.width / scaleX,
|
|
27
|
+
height: containerRect.height / scaleY
|
|
21
28
|
};
|
|
22
|
-
const startX = anchorX(
|
|
23
|
-
const startY =
|
|
24
|
-
const endX = anchorX(
|
|
25
|
-
const endY =
|
|
29
|
+
const startX = anchorX(a, 0, fromAnchor, startXOffset);
|
|
30
|
+
const startY = a.top + a.height / 2 + startYOffset;
|
|
31
|
+
const endX = anchorX(b, 0, toAnchor, endXOffset);
|
|
32
|
+
const endY = b.top + b.height / 2 + endYOffset;
|
|
26
33
|
// A cubic with horizontal handles, not a quadratic through a raised midpoint.
|
|
27
34
|
// The quadratic put its single control point at `midY` minus `curvature`, which for a fan into one node lands past the far end:
|
|
28
35
|
// the top beam dove below the hub and crossed the middle beam before arriving, and three beams bundled into a lens for the last stretch.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ImageComparison } from "../../../src/effects/image-comparison/ImageComparison.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as InteractiveHoverButton } from "../../../src/effects/interactive-hover-button/InteractiveHoverButton.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as MagicCard } from "../../../src/effects/magic-card/MagicCard.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Marquee } from "../../../src/effects/marquee/Marquee.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ProgressiveBlur } from "../../../src/effects/progressive-blur/ProgressiveBlur.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Spotlight } from "../../../src/effects/spotlight/Spotlight.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ThemeToggle } from "../../../src/effects/theme-toggle/ThemeToggle.svelte";
|
package/dist/inbox/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { default as ThreadInbox } from "../../src/inbox/thread-inbox.svelte";
|
|
2
2
|
export { NO_FILTER, actorNames, entryLine, filterThreads, inboxKeyOf, isPending, resolveInboxLabels, snoozeChoices, subjectTypes, threadsOf } from "./logic.js";
|
|
3
3
|
export { ALL, DEFAULT_INBOX_LABELS } from "./types.js";
|
|
4
|
-
// The approval card a pinned proposal is drawn with
|
|
4
|
+
// The approval card a pinned proposal is drawn with. Its `proposal` types come from `./work/inbox`.
|
|
5
5
|
export { default as InboxCard } from "../../src/work/inbox/inbox-card.svelte";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** "Oct 23" in the caller's locale. */
|
|
2
|
+
export function shortDate(at, { locale, timeZone, year } = {}) {
|
|
3
|
+
return new Intl.DateTimeFormat(locale, {
|
|
4
|
+
month: "short",
|
|
5
|
+
day: "numeric",
|
|
6
|
+
year: year ? "numeric" : undefined,
|
|
7
|
+
timeZone
|
|
8
|
+
}).format(new Date(at));
|
|
9
|
+
}
|
|
10
|
+
const UNITS = [
|
|
11
|
+
[31536e3, "year"],
|
|
12
|
+
[2592e3, "month"],
|
|
13
|
+
[604800, "week"],
|
|
14
|
+
[86400, "day"],
|
|
15
|
+
[3600, "hour"],
|
|
16
|
+
[60, "minute"]
|
|
17
|
+
];
|
|
18
|
+
/** "3 days ago", "in 2 weeks", "now": the largest whole unit between `at` and `now`. */
|
|
19
|
+
export function relativeTime(at, now = Date.now(), { locale, style = "long" } = {}) {
|
|
20
|
+
const seconds = Math.round((new Date(at).getTime() - new Date(now).getTime()) / 1e3);
|
|
21
|
+
const age = Math.abs(seconds);
|
|
22
|
+
const rtf = new Intl.RelativeTimeFormat(locale, {
|
|
23
|
+
numeric: "auto",
|
|
24
|
+
style
|
|
25
|
+
});
|
|
26
|
+
for (const [size, unit] of UNITS) {
|
|
27
|
+
if (age >= size) return rtf.format(Math.round(seconds / size), unit);
|
|
28
|
+
}
|
|
29
|
+
return rtf.format(0, "second");
|
|
30
|
+
}
|
|
31
|
+
/** The calendar day of a moment as `YYYY-MM-DD`, in the given zone or the viewer's own. Today by default. */
|
|
32
|
+
export function localDay(at = new Date(), timeZone) {
|
|
33
|
+
const parts = new Intl.DateTimeFormat("en-US", {
|
|
34
|
+
year: "numeric",
|
|
35
|
+
month: "2-digit",
|
|
36
|
+
day: "2-digit",
|
|
37
|
+
timeZone
|
|
38
|
+
}).formatToParts(new Date(at));
|
|
39
|
+
const part = (type) => parts.find((p) => p.type === type)?.value ?? "";
|
|
40
|
+
return `${part("year")}-${part("month")}-${part("day")}`;
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { tick } from "svelte";
|
|
2
|
+
/**
|
|
3
|
+
* Focuses the first target that takes focus, a selector under root or an element, once Svelte
|
|
4
|
+
* has rendered. A moved keyed item or opened pane is a new node.
|
|
5
|
+
*/
|
|
6
|
+
export async function focusAfterRender(root, ...targets) {
|
|
7
|
+
await tick();
|
|
8
|
+
for (const target of targets) {
|
|
9
|
+
const el = typeof target === "string" ? root?.querySelector(target) : target;
|
|
10
|
+
if (!el?.isConnected) continue;
|
|
11
|
+
el.focus();
|
|
12
|
+
if (document.activeElement === el) return el;
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
package/dist/lib/panel.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** The one panel shell: a titled box holding a table, a chart or a stack. */
|
|
2
|
-
//
|
|
3
|
-
//
|
|
2
|
+
// Tokens beside `panel.svelte`, because skeletons and hand-built cards draw this
|
|
3
|
+
// same edge without the panel's header.
|
|
4
4
|
// Dashboards used `Card`, so /ads had a ring and a shadow where /social had a
|
|
5
5
|
// hairline. Flat, one hairline, `rounded-xl`.
|
|
6
6
|
export const panelShellClass = "overflow-hidden rounded-xl border border-border bg-card";
|