@cardstack/boxel-cli 0.10.0 → 0.10.1-unstable.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/bundled-realms/pretui/README.md +49 -0
- package/bundled-realms/pretui/color/LICENSE +21 -0
- package/bundled-realms/pretui/color/README.md +155 -0
- package/bundled-realms/pretui/color/index.js +78 -0
- package/bundled-realms/pretui/color-engine.ts +1243 -0
- package/bundled-realms/pretui/components/accordion.gts +58 -0
- package/bundled-realms/pretui/components/accordion.md +60 -0
- package/bundled-realms/pretui/components/accordion.usage.gts +129 -0
- package/bundled-realms/pretui/components/action-bar.gts +407 -0
- package/bundled-realms/pretui/components/action-bar.md +48 -0
- package/bundled-realms/pretui/components/action-bar.usage.gts +213 -0
- package/bundled-realms/pretui/components/affix.gts +116 -0
- package/bundled-realms/pretui/components/affix.md +54 -0
- package/bundled-realms/pretui/components/affix.usage.gts +73 -0
- package/bundled-realms/pretui/components/agent-question.gts +116 -0
- package/bundled-realms/pretui/components/agent-question.md +50 -0
- package/bundled-realms/pretui/components/agent-question.usage.gts +22 -0
- package/bundled-realms/pretui/components/ai-instructions.gts +378 -0
- package/bundled-realms/pretui/components/ai-instructions.md +49 -0
- package/bundled-realms/pretui/components/ai-instructions.usage.gts +101 -0
- package/bundled-realms/pretui/components/alert-dialog.gts +223 -0
- package/bundled-realms/pretui/components/alert-dialog.md +76 -0
- package/bundled-realms/pretui/components/alert-dialog.usage.gts +128 -0
- package/bundled-realms/pretui/components/alert.gts +163 -0
- package/bundled-realms/pretui/components/alert.md +57 -0
- package/bundled-realms/pretui/components/alert.usage.gts +99 -0
- package/bundled-realms/pretui/components/amount-input.gts +621 -0
- package/bundled-realms/pretui/components/amount-input.md +63 -0
- package/bundled-realms/pretui/components/amount-input.usage.gts +170 -0
- package/bundled-realms/pretui/components/angle-dial.gts +367 -0
- package/bundled-realms/pretui/components/angle-dial.md +56 -0
- package/bundled-realms/pretui/components/angle-dial.usage.gts +166 -0
- package/bundled-realms/pretui/components/animated-image.gts +291 -0
- package/bundled-realms/pretui/components/animated-image.md +49 -0
- package/bundled-realms/pretui/components/animated-image.usage.gts +127 -0
- package/bundled-realms/pretui/components/app-shell.gts +19 -0
- package/bundled-realms/pretui/components/app-shell.md +43 -0
- package/bundled-realms/pretui/components/app-shell.usage.gts +52 -0
- package/bundled-realms/pretui/components/approval-footer.gts +69 -0
- package/bundled-realms/pretui/components/approval-footer.md +49 -0
- package/bundled-realms/pretui/components/approval-footer.usage.gts +22 -0
- package/bundled-realms/pretui/components/aspect-ratio.gts +328 -0
- package/bundled-realms/pretui/components/aspect-ratio.md +72 -0
- package/bundled-realms/pretui/components/aspect-ratio.usage.gts +174 -0
- package/bundled-realms/pretui/components/asset-grid.gts +542 -0
- package/bundled-realms/pretui/components/asset-grid.md +54 -0
- package/bundled-realms/pretui/components/asset-grid.usage.gts +171 -0
- package/bundled-realms/pretui/components/asset-well.gts +731 -0
- package/bundled-realms/pretui/components/asset-well.md +72 -0
- package/bundled-realms/pretui/components/asset-well.usage.gts +264 -0
- package/bundled-realms/pretui/components/audio-player.gts +152 -0
- package/bundled-realms/pretui/components/audio-player.md +51 -0
- package/bundled-realms/pretui/components/audio-player.usage.gts +118 -0
- package/bundled-realms/pretui/components/autocomplete.gts +1150 -0
- package/bundled-realms/pretui/components/autocomplete.md +67 -0
- package/bundled-realms/pretui/components/autocomplete.usage.gts +339 -0
- package/bundled-realms/pretui/components/avatar-group.gts +30 -0
- package/bundled-realms/pretui/components/avatar-group.md +48 -0
- package/bundled-realms/pretui/components/avatar-group.usage.gts +39 -0
- package/bundled-realms/pretui/components/avatar.gts +134 -0
- package/bundled-realms/pretui/components/avatar.md +69 -0
- package/bundled-realms/pretui/components/avatar.usage.gts +101 -0
- package/bundled-realms/pretui/components/backdrop.gts +179 -0
- package/bundled-realms/pretui/components/backdrop.md +56 -0
- package/bundled-realms/pretui/components/backdrop.usage.gts +223 -0
- package/bundled-realms/pretui/components/background-field.gts +743 -0
- package/bundled-realms/pretui/components/background-field.md +62 -0
- package/bundled-realms/pretui/components/background-field.usage.gts +328 -0
- package/bundled-realms/pretui/components/badge.gts +188 -0
- package/bundled-realms/pretui/components/badge.md +62 -0
- package/bundled-realms/pretui/components/badge.usage.gts +73 -0
- package/bundled-realms/pretui/components/bar-list.gts +255 -0
- package/bundled-realms/pretui/components/bar-list.md +49 -0
- package/bundled-realms/pretui/components/bar-list.usage.gts +129 -0
- package/bundled-realms/pretui/components/board.gts +108 -0
- package/bundled-realms/pretui/components/board.md +54 -0
- package/bundled-realms/pretui/components/board.usage.gts +321 -0
- package/bundled-realms/pretui/components/bottom-nav.gts +217 -0
- package/bundled-realms/pretui/components/bottom-nav.md +64 -0
- package/bundled-realms/pretui/components/bottom-nav.usage.gts +68 -0
- package/bundled-realms/pretui/components/breadcrumb.gts +56 -0
- package/bundled-realms/pretui/components/breadcrumb.md +52 -0
- package/bundled-realms/pretui/components/breadcrumb.usage.gts +24 -0
- package/bundled-realms/pretui/components/broken-link.gts +46 -0
- package/bundled-realms/pretui/components/broken-link.md +50 -0
- package/bundled-realms/pretui/components/broken-link.usage.gts +57 -0
- package/bundled-realms/pretui/components/button-group.gts +246 -0
- package/bundled-realms/pretui/components/button-group.md +46 -0
- package/bundled-realms/pretui/components/button-group.usage.gts +137 -0
- package/bundled-realms/pretui/components/button.examples.gts +67 -0
- package/bundled-realms/pretui/components/button.gts +594 -0
- package/bundled-realms/pretui/components/button.md +81 -0
- package/bundled-realms/pretui/components/button.usage.gts +159 -0
- package/bundled-realms/pretui/components/calendar.gts +457 -0
- package/bundled-realms/pretui/components/calendar.md +57 -0
- package/bundled-realms/pretui/components/calendar.usage.gts +161 -0
- package/bundled-realms/pretui/components/callout.gts +2 -0
- package/bundled-realms/pretui/components/callout.md +40 -0
- package/bundled-realms/pretui/components/callout.usage.gts +48 -0
- package/bundled-realms/pretui/components/card.gts +637 -0
- package/bundled-realms/pretui/components/card.md +105 -0
- package/bundled-realms/pretui/components/card.usage.gts +279 -0
- package/bundled-realms/pretui/components/carousel.gts +583 -0
- package/bundled-realms/pretui/components/carousel.md +53 -0
- package/bundled-realms/pretui/components/carousel.usage.gts +220 -0
- package/bundled-realms/pretui/components/cascader.gts +436 -0
- package/bundled-realms/pretui/components/cascader.md +61 -0
- package/bundled-realms/pretui/components/cascader.usage.gts +79 -0
- package/bundled-realms/pretui/components/channel-slider.gts +251 -0
- package/bundled-realms/pretui/components/channel-slider.md +51 -0
- package/bundled-realms/pretui/components/channel-slider.usage.gts +104 -0
- package/bundled-realms/pretui/components/chart.gts +1011 -0
- package/bundled-realms/pretui/components/chart.md +60 -0
- package/bundled-realms/pretui/components/chart.usage.gts +660 -0
- package/bundled-realms/pretui/components/checkbox-card.gts +82 -0
- package/bundled-realms/pretui/components/checkbox-card.md +73 -0
- package/bundled-realms/pretui/components/checkbox-card.usage.gts +114 -0
- package/bundled-realms/pretui/components/checkbox.examples.gts +61 -0
- package/bundled-realms/pretui/components/checkbox.gts +123 -0
- package/bundled-realms/pretui/components/checkbox.md +55 -0
- package/bundled-realms/pretui/components/checkbox.usage.gts +31 -0
- package/bundled-realms/pretui/components/chip.gts +136 -0
- package/bundled-realms/pretui/components/chip.md +54 -0
- package/bundled-realms/pretui/components/chip.usage.gts +97 -0
- package/bundled-realms/pretui/components/code-block.gts +888 -0
- package/bundled-realms/pretui/components/code-block.md +61 -0
- package/bundled-realms/pretui/components/code-block.usage.gts +374 -0
- package/bundled-realms/pretui/components/collapsed-turn.gts +44 -0
- package/bundled-realms/pretui/components/collapsed-turn.md +48 -0
- package/bundled-realms/pretui/components/collapsed-turn.usage.gts +21 -0
- package/bundled-realms/pretui/components/collapsible.gts +283 -0
- package/bundled-realms/pretui/components/collapsible.md +69 -0
- package/bundled-realms/pretui/components/collapsible.usage.gts +173 -0
- package/bundled-realms/pretui/components/color-area.gts +339 -0
- package/bundled-realms/pretui/components/color-area.md +49 -0
- package/bundled-realms/pretui/components/color-area.usage.gts +72 -0
- package/bundled-realms/pretui/components/color-field.gts +179 -0
- package/bundled-realms/pretui/components/color-field.md +47 -0
- package/bundled-realms/pretui/components/color-field.usage.gts +87 -0
- package/bundled-realms/pretui/components/color-palette.gts +198 -0
- package/bundled-realms/pretui/components/color-palette.md +48 -0
- package/bundled-realms/pretui/components/color-picker.gts +721 -0
- package/bundled-realms/pretui/components/color-picker.md +59 -0
- package/bundled-realms/pretui/components/color-picker.usage.gts +122 -0
- package/bundled-realms/pretui/components/color-stop-editor.gts +184 -0
- package/bundled-realms/pretui/components/color-stop-editor.md +46 -0
- package/bundled-realms/pretui/components/color-stop-editor.usage.gts +75 -0
- package/bundled-realms/pretui/components/combobox.gts +333 -0
- package/bundled-realms/pretui/components/combobox.md +49 -0
- package/bundled-realms/pretui/components/combobox.usage.gts +143 -0
- package/bundled-realms/pretui/components/command-palette.gts +982 -0
- package/bundled-realms/pretui/components/command-palette.md +47 -0
- package/bundled-realms/pretui/components/command-palette.usage.gts +95 -0
- package/bundled-realms/pretui/components/command.gts +2 -0
- package/bundled-realms/pretui/components/command.md +45 -0
- package/bundled-realms/pretui/components/command.usage.gts +58 -0
- package/bundled-realms/pretui/components/compaction-chip.gts +273 -0
- package/bundled-realms/pretui/components/compaction-chip.md +45 -0
- package/bundled-realms/pretui/components/compaction-chip.usage.gts +110 -0
- package/bundled-realms/pretui/components/comparison.gts +223 -0
- package/bundled-realms/pretui/components/comparison.md +46 -0
- package/bundled-realms/pretui/components/comparison.usage.gts +148 -0
- package/bundled-realms/pretui/components/composer.gts +566 -0
- package/bundled-realms/pretui/components/composer.md +59 -0
- package/bundled-realms/pretui/components/composer.usage.gts +173 -0
- package/bundled-realms/pretui/components/compound-field.gts +289 -0
- package/bundled-realms/pretui/components/compound-field.md +66 -0
- package/bundled-realms/pretui/components/compound-field.usage.gts +378 -0
- package/bundled-realms/pretui/components/contact-link.gts +583 -0
- package/bundled-realms/pretui/components/contact-link.md +53 -0
- package/bundled-realms/pretui/components/contact-link.usage.gts +273 -0
- package/bundled-realms/pretui/components/context-menu.gts +811 -0
- package/bundled-realms/pretui/components/context-menu.md +74 -0
- package/bundled-realms/pretui/components/context-menu.usage.gts +244 -0
- package/bundled-realms/pretui/components/copy-button.gts +237 -0
- package/bundled-realms/pretui/components/copy-button.md +71 -0
- package/bundled-realms/pretui/components/copy-button.usage.gts +135 -0
- package/bundled-realms/pretui/components/copy-fit.gts +396 -0
- package/bundled-realms/pretui/components/copy-fit.md +60 -0
- package/bundled-realms/pretui/components/copy-fit.usage.gts +200 -0
- package/bundled-realms/pretui/components/cta-band.gts +285 -0
- package/bundled-realms/pretui/components/cta-band.md +50 -0
- package/bundled-realms/pretui/components/cta-band.usage.gts +208 -0
- package/bundled-realms/pretui/components/cue.gts +180 -0
- package/bundled-realms/pretui/components/cue.md +53 -0
- package/bundled-realms/pretui/components/cue.usage.gts +88 -0
- package/bundled-realms/pretui/components/cursor-trail.gts +221 -0
- package/bundled-realms/pretui/components/cursor-trail.md +56 -0
- package/bundled-realms/pretui/components/cursor-trail.usage.gts +218 -0
- package/bundled-realms/pretui/components/dashboard-grid.gts +939 -0
- package/bundled-realms/pretui/components/dashboard-grid.md +60 -0
- package/bundled-realms/pretui/components/dashboard-grid.usage.gts +307 -0
- package/bundled-realms/pretui/components/dashboard-item.gts +286 -0
- package/bundled-realms/pretui/components/dashboard-item.md +52 -0
- package/bundled-realms/pretui/components/dashboard-item.usage.gts +87 -0
- package/bundled-realms/pretui/components/data-grid.gts +263 -0
- package/bundled-realms/pretui/components/data-grid.md +64 -0
- package/bundled-realms/pretui/components/data-grid.usage.gts +50 -0
- package/bundled-realms/pretui/components/data-table.gts +1618 -0
- package/bundled-realms/pretui/components/data-table.md +104 -0
- package/bundled-realms/pretui/components/data-table.usage.gts +324 -0
- package/bundled-realms/pretui/components/date-picker.gts +98 -0
- package/bundled-realms/pretui/components/date-picker.md +59 -0
- package/bundled-realms/pretui/components/date-picker.usage.gts +66 -0
- package/bundled-realms/pretui/components/date-range-picker.gts +131 -0
- package/bundled-realms/pretui/components/date-range-picker.md +55 -0
- package/bundled-realms/pretui/components/date-range-picker.usage.gts +125 -0
- package/bundled-realms/pretui/components/date-time-picker.gts +227 -0
- package/bundled-realms/pretui/components/date-time-picker.md +60 -0
- package/bundled-realms/pretui/components/date-time-picker.usage.gts +64 -0
- package/bundled-realms/pretui/components/defer.gts +374 -0
- package/bundled-realms/pretui/components/defer.md +61 -0
- package/bundled-realms/pretui/components/defer.usage.gts +174 -0
- package/bundled-realms/pretui/components/delta.gts +45 -0
- package/bundled-realms/pretui/components/delta.md +53 -0
- package/bundled-realms/pretui/components/delta.usage.gts +31 -0
- package/bundled-realms/pretui/components/descriptions.gts +365 -0
- package/bundled-realms/pretui/components/descriptions.md +73 -0
- package/bundled-realms/pretui/components/descriptions.usage.gts +123 -0
- package/bundled-realms/pretui/components/dialog.gts +153 -0
- package/bundled-realms/pretui/components/dialog.md +60 -0
- package/bundled-realms/pretui/components/dialog.usage.gts +86 -0
- package/bundled-realms/pretui/components/diff-block.gts +89 -0
- package/bundled-realms/pretui/components/diff-block.md +51 -0
- package/bundled-realms/pretui/components/diff-block.usage.gts +27 -0
- package/bundled-realms/pretui/components/disclosure.gts +2 -0
- package/bundled-realms/pretui/components/disclosure.md +45 -0
- package/bundled-realms/pretui/components/disclosure.usage.gts +47 -0
- package/bundled-realms/pretui/components/divider.gts +75 -0
- package/bundled-realms/pretui/components/divider.md +49 -0
- package/bundled-realms/pretui/components/divider.usage.gts +98 -0
- package/bundled-realms/pretui/components/doc-report.gts +306 -0
- package/bundled-realms/pretui/components/doc-report.md +45 -0
- package/bundled-realms/pretui/components/doc-report.usage.gts +126 -0
- package/bundled-realms/pretui/components/dock.gts +165 -0
- package/bundled-realms/pretui/components/dock.md +42 -0
- package/bundled-realms/pretui/components/dock.usage.gts +114 -0
- package/bundled-realms/pretui/components/drawer.gts +166 -0
- package/bundled-realms/pretui/components/drawer.md +66 -0
- package/bundled-realms/pretui/components/drawer.usage.gts +111 -0
- package/bundled-realms/pretui/components/dropzone.gts +314 -0
- package/bundled-realms/pretui/components/dropzone.md +56 -0
- package/bundled-realms/pretui/components/dropzone.usage.gts +203 -0
- package/bundled-realms/pretui/components/dueling-picklist.gts +991 -0
- package/bundled-realms/pretui/components/dueling-picklist.md +67 -0
- package/bundled-realms/pretui/components/dueling-picklist.usage.gts +182 -0
- package/bundled-realms/pretui/components/dynamic-island.gts +264 -0
- package/bundled-realms/pretui/components/dynamic-island.md +45 -0
- package/bundled-realms/pretui/components/dynamic-island.usage.gts +195 -0
- package/bundled-realms/pretui/components/easing-curve.gts +629 -0
- package/bundled-realms/pretui/components/easing-curve.md +46 -0
- package/bundled-realms/pretui/components/easing-curve.usage.gts +122 -0
- package/bundled-realms/pretui/components/edit-in-place.gts +559 -0
- package/bundled-realms/pretui/components/edit-in-place.md +63 -0
- package/bundled-realms/pretui/components/edit-in-place.usage.gts +209 -0
- package/bundled-realms/pretui/components/editable.gts +299 -0
- package/bundled-realms/pretui/components/editable.md +79 -0
- package/bundled-realms/pretui/components/editable.usage.gts +68 -0
- package/bundled-realms/pretui/components/email-input.gts +83 -0
- package/bundled-realms/pretui/components/email-input.md +52 -0
- package/bundled-realms/pretui/components/email-input.usage.gts +90 -0
- package/bundled-realms/pretui/components/emoji-button.gts +162 -0
- package/bundled-realms/pretui/components/emoji-button.md +46 -0
- package/bundled-realms/pretui/components/emoji-button.usage.gts +174 -0
- package/bundled-realms/pretui/components/emoji-picker.gts +1396 -0
- package/bundled-realms/pretui/components/emoji-picker.md +53 -0
- package/bundled-realms/pretui/components/emoji-picker.usage.gts +235 -0
- package/bundled-realms/pretui/components/empty-state.gts +162 -0
- package/bundled-realms/pretui/components/empty-state.md +63 -0
- package/bundled-realms/pretui/components/empty-state.usage.gts +113 -0
- package/bundled-realms/pretui/components/empty.gts +2 -0
- package/bundled-realms/pretui/components/empty.md +43 -0
- package/bundled-realms/pretui/components/empty.usage.gts +33 -0
- package/bundled-realms/pretui/components/entity-display.gts +126 -0
- package/bundled-realms/pretui/components/entity-display.md +50 -0
- package/bundled-realms/pretui/components/error-summary.gts +321 -0
- package/bundled-realms/pretui/components/error-summary.md +60 -0
- package/bundled-realms/pretui/components/error-summary.usage.gts +155 -0
- package/bundled-realms/pretui/components/expression-builder.gts +1211 -0
- package/bundled-realms/pretui/components/expression-builder.md +60 -0
- package/bundled-realms/pretui/components/expression-builder.usage.gts +246 -0
- package/bundled-realms/pretui/components/fab.gts +2 -0
- package/bundled-realms/pretui/components/fab.md +38 -0
- package/bundled-realms/pretui/components/fab.usage.gts +38 -0
- package/bundled-realms/pretui/components/feature-voting.gts +365 -0
- package/bundled-realms/pretui/components/feature-voting.md +44 -0
- package/bundled-realms/pretui/components/feature-voting.usage.gts +114 -0
- package/bundled-realms/pretui/components/feed.gts +244 -0
- package/bundled-realms/pretui/components/feed.md +56 -0
- package/bundled-realms/pretui/components/feed.usage.gts +250 -0
- package/bundled-realms/pretui/components/field-error.gts +127 -0
- package/bundled-realms/pretui/components/field-error.md +60 -0
- package/bundled-realms/pretui/components/field-error.usage.gts +146 -0
- package/bundled-realms/pretui/components/field.gts +185 -0
- package/bundled-realms/pretui/components/field.md +60 -0
- package/bundled-realms/pretui/components/field.usage.gts +73 -0
- package/bundled-realms/pretui/components/fieldset.gts +124 -0
- package/bundled-realms/pretui/components/fieldset.md +65 -0
- package/bundled-realms/pretui/components/fieldset.usage.gts +105 -0
- package/bundled-realms/pretui/components/file-trigger.gts +185 -0
- package/bundled-realms/pretui/components/file-trigger.md +53 -0
- package/bundled-realms/pretui/components/file-trigger.usage.gts +121 -0
- package/bundled-realms/pretui/components/file-upload.gts +353 -0
- package/bundled-realms/pretui/components/file-upload.md +63 -0
- package/bundled-realms/pretui/components/file-upload.usage.gts +64 -0
- package/bundled-realms/pretui/components/filmstrip.gts +465 -0
- package/bundled-realms/pretui/components/filmstrip.md +53 -0
- package/bundled-realms/pretui/components/filmstrip.usage.gts +115 -0
- package/bundled-realms/pretui/components/filter-chips.gts +236 -0
- package/bundled-realms/pretui/components/filter-chips.md +58 -0
- package/bundled-realms/pretui/components/filter-chips.usage.gts +102 -0
- package/bundled-realms/pretui/components/filter-set.gts +293 -0
- package/bundled-realms/pretui/components/filter-set.md +60 -0
- package/bundled-realms/pretui/components/filter-set.usage.gts +145 -0
- package/bundled-realms/pretui/components/float-button.gts +339 -0
- package/bundled-realms/pretui/components/float-button.md +69 -0
- package/bundled-realms/pretui/components/float-button.usage.gts +134 -0
- package/bundled-realms/pretui/components/fold.gts +86 -0
- package/bundled-realms/pretui/components/fold.md +54 -0
- package/bundled-realms/pretui/components/fold.usage.gts +19 -0
- package/bundled-realms/pretui/components/form-field.gts +609 -0
- package/bundled-realms/pretui/components/form-field.md +77 -0
- package/bundled-realms/pretui/components/form-field.usage.gts +279 -0
- package/bundled-realms/pretui/components/form-footer.gts +246 -0
- package/bundled-realms/pretui/components/form-footer.md +59 -0
- package/bundled-realms/pretui/components/form-footer.usage.gts +217 -0
- package/bundled-realms/pretui/components/form-layout.gts +130 -0
- package/bundled-realms/pretui/components/form-layout.md +52 -0
- package/bundled-realms/pretui/components/form-layout.usage.gts +200 -0
- package/bundled-realms/pretui/components/form-section.gts +434 -0
- package/bundled-realms/pretui/components/form-section.md +67 -0
- package/bundled-realms/pretui/components/form-section.usage.gts +402 -0
- package/bundled-realms/pretui/components/form.gts +315 -0
- package/bundled-realms/pretui/components/form.md +82 -0
- package/bundled-realms/pretui/components/form.usage.gts +306 -0
- package/bundled-realms/pretui/components/format-bytes.gts +212 -0
- package/bundled-realms/pretui/components/format-bytes.md +47 -0
- package/bundled-realms/pretui/components/format-bytes.usage.gts +274 -0
- package/bundled-realms/pretui/components/format-date.gts +249 -0
- package/bundled-realms/pretui/components/format-date.md +55 -0
- package/bundled-realms/pretui/components/format-date.usage.gts +245 -0
- package/bundled-realms/pretui/components/format-number.gts +138 -0
- package/bundled-realms/pretui/components/format-number.md +51 -0
- package/bundled-realms/pretui/components/format-number.usage.gts +261 -0
- package/bundled-realms/pretui/components/formatted-value.gts +65 -0
- package/bundled-realms/pretui/components/freestyle-usage.gts +311 -0
- package/bundled-realms/pretui/components/freestyle-usage.md +49 -0
- package/bundled-realms/pretui/components/gallery.gts +819 -0
- package/bundled-realms/pretui/components/gallery.md +65 -0
- package/bundled-realms/pretui/components/gallery.usage.gts +212 -0
- package/bundled-realms/pretui/components/gradient-editor.gts +682 -0
- package/bundled-realms/pretui/components/gradient-editor.md +43 -0
- package/bundled-realms/pretui/components/gradient-editor.usage.gts +69 -0
- package/bundled-realms/pretui/components/graph-layout.md +54 -0
- package/bundled-realms/pretui/components/graph-layout.usage.gts +343 -0
- package/bundled-realms/pretui/components/graph-outline.gts +553 -0
- package/bundled-realms/pretui/components/graph-outline.md +50 -0
- package/bundled-realms/pretui/components/graph-outline.usage.gts +88 -0
- package/bundled-realms/pretui/components/grid.gts +68 -0
- package/bundled-realms/pretui/components/grid.md +54 -0
- package/bundled-realms/pretui/components/grid.usage.gts +144 -0
- package/bundled-realms/pretui/components/handle.gts +192 -0
- package/bundled-realms/pretui/components/handle.md +55 -0
- package/bundled-realms/pretui/components/handle.usage.gts +174 -0
- package/bundled-realms/pretui/components/hero-split.gts +307 -0
- package/bundled-realms/pretui/components/hero-split.md +50 -0
- package/bundled-realms/pretui/components/hero-split.usage.gts +200 -0
- package/bundled-realms/pretui/components/hover-actions.gts +485 -0
- package/bundled-realms/pretui/components/hover-actions.md +55 -0
- package/bundled-realms/pretui/components/hover-actions.usage.gts +224 -0
- package/bundled-realms/pretui/components/hover-card.gts +347 -0
- package/bundled-realms/pretui/components/hover-card.md +72 -0
- package/bundled-realms/pretui/components/hover-card.usage.gts +174 -0
- package/bundled-realms/pretui/components/hover-video-player.gts +315 -0
- package/bundled-realms/pretui/components/hover-video-player.md +57 -0
- package/bundled-realms/pretui/components/hover-video-player.usage.gts +152 -0
- package/bundled-realms/pretui/components/icon-button.examples.gts +69 -0
- package/bundled-realms/pretui/components/icon-button.gts +153 -0
- package/bundled-realms/pretui/components/icon-button.md +72 -0
- package/bundled-realms/pretui/components/icon-button.usage.gts +208 -0
- package/bundled-realms/pretui/components/image-cropper.gts +693 -0
- package/bundled-realms/pretui/components/image-cropper.md +52 -0
- package/bundled-realms/pretui/components/image-cropper.usage.gts +108 -0
- package/bundled-realms/pretui/components/image-frame.gts +91 -0
- package/bundled-realms/pretui/components/image-frame.md +42 -0
- package/bundled-realms/pretui/components/image-frame.usage.gts +28 -0
- package/bundled-realms/pretui/components/image.gts +326 -0
- package/bundled-realms/pretui/components/image.md +71 -0
- package/bundled-realms/pretui/components/image.usage.gts +126 -0
- package/bundled-realms/pretui/components/in-view.gts +245 -0
- package/bundled-realms/pretui/components/in-view.md +53 -0
- package/bundled-realms/pretui/components/in-view.usage.gts +264 -0
- package/bundled-realms/pretui/components/indicator.gts +137 -0
- package/bundled-realms/pretui/components/indicator.md +60 -0
- package/bundled-realms/pretui/components/indicator.usage.gts +66 -0
- package/bundled-realms/pretui/components/infinite-scroll.gts +163 -0
- package/bundled-realms/pretui/components/infinite-scroll.md +54 -0
- package/bundled-realms/pretui/components/infinite-scroll.usage.gts +73 -0
- package/bundled-realms/pretui/components/input-group.gts +264 -0
- package/bundled-realms/pretui/components/input-group.md +55 -0
- package/bundled-realms/pretui/components/input-group.usage.gts +283 -0
- package/bundled-realms/pretui/components/input.examples.gts +61 -0
- package/bundled-realms/pretui/components/input.gts +202 -0
- package/bundled-realms/pretui/components/input.md +67 -0
- package/bundled-realms/pretui/components/input.usage.gts +208 -0
- package/bundled-realms/pretui/components/interactive-input.gts +343 -0
- package/bundled-realms/pretui/components/interactive-input.md +45 -0
- package/bundled-realms/pretui/components/interactive-input.usage.gts +98 -0
- package/bundled-realms/pretui/components/item.gts +218 -0
- package/bundled-realms/pretui/components/item.md +66 -0
- package/bundled-realms/pretui/components/item.usage.gts +121 -0
- package/bundled-realms/pretui/components/joystick.gts +381 -0
- package/bundled-realms/pretui/components/joystick.md +52 -0
- package/bundled-realms/pretui/components/joystick.usage.gts +140 -0
- package/bundled-realms/pretui/components/json-editor.gts +1016 -0
- package/bundled-realms/pretui/components/json-editor.md +51 -0
- package/bundled-realms/pretui/components/json-editor.usage.gts +230 -0
- package/bundled-realms/pretui/components/json-tree.gts +596 -0
- package/bundled-realms/pretui/components/json-tree.md +52 -0
- package/bundled-realms/pretui/components/json-tree.usage.gts +217 -0
- package/bundled-realms/pretui/components/jump-chip.gts +230 -0
- package/bundled-realms/pretui/components/jump-chip.md +44 -0
- package/bundled-realms/pretui/components/jump-chip.usage.gts +151 -0
- package/bundled-realms/pretui/components/kbd.gts +60 -0
- package/bundled-realms/pretui/components/kbd.md +50 -0
- package/bundled-realms/pretui/components/kbd.usage.gts +98 -0
- package/bundled-realms/pretui/components/key-value.gts +150 -0
- package/bundled-realms/pretui/components/key-value.md +81 -0
- package/bundled-realms/pretui/components/key-value.usage.gts +125 -0
- package/bundled-realms/pretui/components/known-date.gts +770 -0
- package/bundled-realms/pretui/components/known-date.md +56 -0
- package/bundled-realms/pretui/components/known-date.usage.gts +192 -0
- package/bundled-realms/pretui/components/label.gts +60 -0
- package/bundled-realms/pretui/components/label.md +56 -0
- package/bundled-realms/pretui/components/label.usage.gts +63 -0
- package/bundled-realms/pretui/components/layer-manager.gts +1884 -0
- package/bundled-realms/pretui/components/layer-manager.md +59 -0
- package/bundled-realms/pretui/components/layer-manager.usage.gts +233 -0
- package/bundled-realms/pretui/components/lightbox.gts +461 -0
- package/bundled-realms/pretui/components/lightbox.md +57 -0
- package/bundled-realms/pretui/components/lightbox.usage.gts +180 -0
- package/bundled-realms/pretui/components/line-grid.examples.gts +156 -0
- package/bundled-realms/pretui/components/line-grid.gts +523 -0
- package/bundled-realms/pretui/components/line-grid.md +55 -0
- package/bundled-realms/pretui/components/line-grid.usage.gts +181 -0
- package/bundled-realms/pretui/components/list.gts +679 -0
- package/bundled-realms/pretui/components/list.md +90 -0
- package/bundled-realms/pretui/components/list.usage.gts +203 -0
- package/bundled-realms/pretui/components/loader.gts +2 -0
- package/bundled-realms/pretui/components/loader.md +33 -0
- package/bundled-realms/pretui/components/loader.usage.gts +35 -0
- package/bundled-realms/pretui/components/loading-overlay.gts +120 -0
- package/bundled-realms/pretui/components/loading-overlay.md +68 -0
- package/bundled-realms/pretui/components/loading-overlay.usage.gts +102 -0
- package/bundled-realms/pretui/components/loading-state.gts +124 -0
- package/bundled-realms/pretui/components/loading-state.md +48 -0
- package/bundled-realms/pretui/components/loading-state.usage.gts +16 -0
- package/bundled-realms/pretui/components/lookup.gts +451 -0
- package/bundled-realms/pretui/components/lookup.md +59 -0
- package/bundled-realms/pretui/components/lookup.usage.gts +235 -0
- package/bundled-realms/pretui/components/magnetic.gts +158 -0
- package/bundled-realms/pretui/components/magnetic.md +48 -0
- package/bundled-realms/pretui/components/magnetic.usage.gts +125 -0
- package/bundled-realms/pretui/components/marquee.gts +141 -0
- package/bundled-realms/pretui/components/marquee.md +43 -0
- package/bundled-realms/pretui/components/marquee.usage.gts +116 -0
- package/bundled-realms/pretui/components/masonry.gts +95 -0
- package/bundled-realms/pretui/components/masonry.md +59 -0
- package/bundled-realms/pretui/components/masonry.usage.gts +238 -0
- package/bundled-realms/pretui/components/media-inspector.gts +145 -0
- package/bundled-realms/pretui/components/media-inspector.md +46 -0
- package/bundled-realms/pretui/components/media-inspector.usage.gts +83 -0
- package/bundled-realms/pretui/components/media-player.gts +1133 -0
- package/bundled-realms/pretui/components/media-player.md +74 -0
- package/bundled-realms/pretui/components/media-player.usage.gts +265 -0
- package/bundled-realms/pretui/components/media-viewer.gts +136 -0
- package/bundled-realms/pretui/components/media-viewer.md +47 -0
- package/bundled-realms/pretui/components/media-viewer.usage.gts +70 -0
- package/bundled-realms/pretui/components/mentions.gts +340 -0
- package/bundled-realms/pretui/components/mentions.md +65 -0
- package/bundled-realms/pretui/components/mentions.usage.gts +73 -0
- package/bundled-realms/pretui/components/menu-panel.gts +367 -0
- package/bundled-realms/pretui/components/menu.gts +652 -0
- package/bundled-realms/pretui/components/menu.md +69 -0
- package/bundled-realms/pretui/components/menu.usage.gts +116 -0
- package/bundled-realms/pretui/components/menubar.gts +1200 -0
- package/bundled-realms/pretui/components/menubar.md +49 -0
- package/bundled-realms/pretui/components/menubar.usage.gts +220 -0
- package/bundled-realms/pretui/components/meter.gts +113 -0
- package/bundled-realms/pretui/components/meter.md +50 -0
- package/bundled-realms/pretui/components/meter.usage.gts +50 -0
- package/bundled-realms/pretui/components/modal.gts +2 -0
- package/bundled-realms/pretui/components/modal.md +41 -0
- package/bundled-realms/pretui/components/modal.usage.gts +50 -0
- package/bundled-realms/pretui/components/model-viewer.gts +658 -0
- package/bundled-realms/pretui/components/model-viewer.md +57 -0
- package/bundled-realms/pretui/components/model-viewer.usage.gts +123 -0
- package/bundled-realms/pretui/components/money-input.gts +66 -0
- package/bundled-realms/pretui/components/money-input.md +43 -0
- package/bundled-realms/pretui/components/money-input.usage.gts +293 -0
- package/bundled-realms/pretui/components/morphing-dialog.gts +173 -0
- package/bundled-realms/pretui/components/morphing-dialog.md +46 -0
- package/bundled-realms/pretui/components/morphing-dialog.usage.gts +168 -0
- package/bundled-realms/pretui/components/morphing-popover.gts +245 -0
- package/bundled-realms/pretui/components/morphing-popover.md +47 -0
- package/bundled-realms/pretui/components/morphing-popover.usage.gts +176 -0
- package/bundled-realms/pretui/components/multi-select.gts +392 -0
- package/bundled-realms/pretui/components/multi-select.md +57 -0
- package/bundled-realms/pretui/components/multi-select.usage.gts +97 -0
- package/bundled-realms/pretui/components/native-select.gts +212 -0
- package/bundled-realms/pretui/components/native-select.md +77 -0
- package/bundled-realms/pretui/components/native-select.usage.gts +109 -0
- package/bundled-realms/pretui/components/navigation-menu.gts +351 -0
- package/bundled-realms/pretui/components/navigation-menu.md +65 -0
- package/bundled-realms/pretui/components/navigation-menu.usage.gts +61 -0
- package/bundled-realms/pretui/components/node-canvas.gts +1174 -0
- package/bundled-realms/pretui/components/node-canvas.md +57 -0
- package/bundled-realms/pretui/components/node-canvas.usage.gts +548 -0
- package/bundled-realms/pretui/components/node-card.gts +181 -0
- package/bundled-realms/pretui/components/node-card.md +53 -0
- package/bundled-realms/pretui/components/node-card.usage.gts +156 -0
- package/bundled-realms/pretui/components/notification.gts +242 -0
- package/bundled-realms/pretui/components/notification.md +69 -0
- package/bundled-realms/pretui/components/notification.usage.gts +125 -0
- package/bundled-realms/pretui/components/number-input.gts +191 -0
- package/bundled-realms/pretui/components/number-input.md +54 -0
- package/bundled-realms/pretui/components/number-input.usage.gts +132 -0
- package/bundled-realms/pretui/components/odometer.gts +349 -0
- package/bundled-realms/pretui/components/odometer.md +55 -0
- package/bundled-realms/pretui/components/odometer.usage.gts +258 -0
- package/bundled-realms/pretui/components/onboarding.gts +298 -0
- package/bundled-realms/pretui/components/onboarding.md +48 -0
- package/bundled-realms/pretui/components/onboarding.usage.gts +155 -0
- package/bundled-realms/pretui/components/origin-grid.gts +486 -0
- package/bundled-realms/pretui/components/origin-grid.md +47 -0
- package/bundled-realms/pretui/components/origin-grid.usage.gts +87 -0
- package/bundled-realms/pretui/components/otp-input.gts +289 -0
- package/bundled-realms/pretui/components/otp-input.md +47 -0
- package/bundled-realms/pretui/components/otp-input.usage.gts +131 -0
- package/bundled-realms/pretui/components/page-scaffold.gts +343 -0
- package/bundled-realms/pretui/components/page-scaffold.md +57 -0
- package/bundled-realms/pretui/components/page-scaffold.usage.gts +391 -0
- package/bundled-realms/pretui/components/pagination.gts +150 -0
- package/bundled-realms/pretui/components/pagination.md +56 -0
- package/bundled-realms/pretui/components/pagination.usage.gts +33 -0
- package/bundled-realms/pretui/components/panel-section.gts +301 -0
- package/bundled-realms/pretui/components/panel-section.md +48 -0
- package/bundled-realms/pretui/components/panel-section.usage.gts +137 -0
- package/bundled-realms/pretui/components/panel.gts +158 -0
- package/bundled-realms/pretui/components/panel.md +58 -0
- package/bundled-realms/pretui/components/panel.usage.gts +82 -0
- package/bundled-realms/pretui/components/password-input.gts +329 -0
- package/bundled-realms/pretui/components/password-input.md +58 -0
- package/bundled-realms/pretui/components/password-input.usage.gts +156 -0
- package/bundled-realms/pretui/components/password-strength.gts +485 -0
- package/bundled-realms/pretui/components/password-strength.md +50 -0
- package/bundled-realms/pretui/components/password-strength.usage.gts +34 -0
- package/bundled-realms/pretui/components/path-text.gts +288 -0
- package/bundled-realms/pretui/components/path-text.md +58 -0
- package/bundled-realms/pretui/components/path-text.usage.gts +239 -0
- package/bundled-realms/pretui/components/period-input.gts +1100 -0
- package/bundled-realms/pretui/components/period-input.md +54 -0
- package/bundled-realms/pretui/components/period-input.usage.gts +299 -0
- package/bundled-realms/pretui/components/phone-input.gts +80 -0
- package/bundled-realms/pretui/components/phone-input.md +55 -0
- package/bundled-realms/pretui/components/phone-input.usage.gts +91 -0
- package/bundled-realms/pretui/components/pin-input.gts +2 -0
- package/bundled-realms/pretui/components/pin-input.md +45 -0
- package/bundled-realms/pretui/components/pin-input.usage.gts +39 -0
- package/bundled-realms/pretui/components/pip-scale.gts +717 -0
- package/bundled-realms/pretui/components/pip-scale.md +55 -0
- package/bundled-realms/pretui/components/pip-scale.usage.gts +318 -0
- package/bundled-realms/pretui/components/popconfirm.gts +380 -0
- package/bundled-realms/pretui/components/popconfirm.md +78 -0
- package/bundled-realms/pretui/components/popconfirm.usage.gts +171 -0
- package/bundled-realms/pretui/components/popover.gts +198 -0
- package/bundled-realms/pretui/components/popover.md +57 -0
- package/bundled-realms/pretui/components/popover.usage.gts +106 -0
- package/bundled-realms/pretui/components/popup.gts +85 -0
- package/bundled-realms/pretui/components/popup.md +42 -0
- package/bundled-realms/pretui/components/popup.usage.gts +23 -0
- package/bundled-realms/pretui/components/presence.gts +156 -0
- package/bundled-realms/pretui/components/presence.md +55 -0
- package/bundled-realms/pretui/components/presence.usage.gts +204 -0
- package/bundled-realms/pretui/components/progress-bar.gts +177 -0
- package/bundled-realms/pretui/components/progress-bar.md +63 -0
- package/bundled-realms/pretui/components/progress-bar.usage.gts +172 -0
- package/bundled-realms/pretui/components/progress-radial.gts +67 -0
- package/bundled-realms/pretui/components/progress-radial.md +55 -0
- package/bundled-realms/pretui/components/progress-radial.usage.gts +76 -0
- package/bundled-realms/pretui/components/prompt-library.gts +358 -0
- package/bundled-realms/pretui/components/prompt-library.md +45 -0
- package/bundled-realms/pretui/components/prompt-library.usage.gts +117 -0
- package/bundled-realms/pretui/components/property-row.gts +316 -0
- package/bundled-realms/pretui/components/property-row.md +55 -0
- package/bundled-realms/pretui/components/property-row.usage.gts +146 -0
- package/bundled-realms/pretui/components/property-sheet.gts +133 -0
- package/bundled-realms/pretui/components/property-sheet.md +48 -0
- package/bundled-realms/pretui/components/property-sheet.usage.gts +132 -0
- package/bundled-realms/pretui/components/prose.gts +31 -0
- package/bundled-realms/pretui/components/prose.md +57 -0
- package/bundled-realms/pretui/components/prose.usage.gts +15 -0
- package/bundled-realms/pretui/components/pulsing-border.gts +297 -0
- package/bundled-realms/pretui/components/pulsing-border.md +65 -0
- package/bundled-realms/pretui/components/pulsing-border.usage.gts +253 -0
- package/bundled-realms/pretui/components/qr-code.gts +660 -0
- package/bundled-realms/pretui/components/qr-code.md +58 -0
- package/bundled-realms/pretui/components/qr-code.usage.gts +224 -0
- package/bundled-realms/pretui/components/queued-message.gts +83 -0
- package/bundled-realms/pretui/components/queued-message.md +53 -0
- package/bundled-realms/pretui/components/queued-message.usage.gts +21 -0
- package/bundled-realms/pretui/components/radio-card.gts +88 -0
- package/bundled-realms/pretui/components/radio-card.md +72 -0
- package/bundled-realms/pretui/components/radio-card.usage.gts +148 -0
- package/bundled-realms/pretui/components/radio-group.gts +119 -0
- package/bundled-realms/pretui/components/radio-group.md +46 -0
- package/bundled-realms/pretui/components/radio-group.usage.gts +80 -0
- package/bundled-realms/pretui/components/range-slider.gts +34 -0
- package/bundled-realms/pretui/components/range-slider.md +47 -0
- package/bundled-realms/pretui/components/range-slider.usage.gts +46 -0
- package/bundled-realms/pretui/components/rating.examples.gts +67 -0
- package/bundled-realms/pretui/components/rating.gts +266 -0
- package/bundled-realms/pretui/components/rating.md +55 -0
- package/bundled-realms/pretui/components/rating.usage.gts +96 -0
- package/bundled-realms/pretui/components/readiness-panel.gts +856 -0
- package/bundled-realms/pretui/components/readiness-panel.md +64 -0
- package/bundled-realms/pretui/components/readiness-panel.usage.gts +372 -0
- package/bundled-realms/pretui/components/recommendation.gts +316 -0
- package/bundled-realms/pretui/components/recommendation.md +49 -0
- package/bundled-realms/pretui/components/recommendation.usage.gts +103 -0
- package/bundled-realms/pretui/components/record-detail.gts +1170 -0
- package/bundled-realms/pretui/components/record-detail.md +63 -0
- package/bundled-realms/pretui/components/record-detail.usage.gts +533 -0
- package/bundled-realms/pretui/components/record-face.gts +153 -0
- package/bundled-realms/pretui/components/record-pill.gts +116 -0
- package/bundled-realms/pretui/components/record-pill.md +55 -0
- package/bundled-realms/pretui/components/record-pill.usage.gts +108 -0
- package/bundled-realms/pretui/components/relative-time.gts +88 -0
- package/bundled-realms/pretui/components/relative-time.md +58 -0
- package/bundled-realms/pretui/components/relative-time.usage.gts +89 -0
- package/bundled-realms/pretui/components/reorder.gts +620 -0
- package/bundled-realms/pretui/components/reorder.md +47 -0
- package/bundled-realms/pretui/components/reorder.usage.gts +171 -0
- package/bundled-realms/pretui/components/resizable.gts +2 -0
- package/bundled-realms/pretui/components/resizable.md +37 -0
- package/bundled-realms/pretui/components/resizable.usage.gts +53 -0
- package/bundled-realms/pretui/components/result-card.gts +68 -0
- package/bundled-realms/pretui/components/result-card.md +45 -0
- package/bundled-realms/pretui/components/result-card.usage.gts +29 -0
- package/bundled-realms/pretui/components/result.gts +204 -0
- package/bundled-realms/pretui/components/result.md +67 -0
- package/bundled-realms/pretui/components/result.usage.gts +85 -0
- package/bundled-realms/pretui/components/rule-row.gts +462 -0
- package/bundled-realms/pretui/components/rule-row.md +60 -0
- package/bundled-realms/pretui/components/rule-row.usage.gts +157 -0
- package/bundled-realms/pretui/components/scroll-area.gts +121 -0
- package/bundled-realms/pretui/components/scroll-area.md +59 -0
- package/bundled-realms/pretui/components/scroll-area.usage.gts +175 -0
- package/bundled-realms/pretui/components/scroll-progress.gts +222 -0
- package/bundled-realms/pretui/components/scroll-progress.md +48 -0
- package/bundled-realms/pretui/components/scroll-progress.usage.gts +162 -0
- package/bundled-realms/pretui/components/scroller.gts +323 -0
- package/bundled-realms/pretui/components/scroller.md +44 -0
- package/bundled-realms/pretui/components/scroller.usage.gts +184 -0
- package/bundled-realms/pretui/components/scrub-input.gts +691 -0
- package/bundled-realms/pretui/components/scrub-input.md +61 -0
- package/bundled-realms/pretui/components/scrub-input.usage.gts +275 -0
- package/bundled-realms/pretui/components/search-input.gts +141 -0
- package/bundled-realms/pretui/components/search-input.md +56 -0
- package/bundled-realms/pretui/components/search-input.usage.gts +91 -0
- package/bundled-realms/pretui/components/segmented-control.gts +198 -0
- package/bundled-realms/pretui/components/segmented-control.md +39 -0
- package/bundled-realms/pretui/components/segmented-control.usage.gts +66 -0
- package/bundled-realms/pretui/components/select.examples.gts +80 -0
- package/bundled-realms/pretui/components/select.gts +481 -0
- package/bundled-realms/pretui/components/select.md +71 -0
- package/bundled-realms/pretui/components/select.usage.gts +109 -0
- package/bundled-realms/pretui/components/separator.gts +2 -0
- package/bundled-realms/pretui/components/separator.md +36 -0
- package/bundled-realms/pretui/components/separator.usage.gts +32 -0
- package/bundled-realms/pretui/components/session-prep.gts +164 -0
- package/bundled-realms/pretui/components/session-prep.md +48 -0
- package/bundled-realms/pretui/components/session-prep.usage.gts +122 -0
- package/bundled-realms/pretui/components/sheet-toolbar.gts +130 -0
- package/bundled-realms/pretui/components/sheet-toolbar.md +51 -0
- package/bundled-realms/pretui/components/sheet-toolbar.usage.gts +151 -0
- package/bundled-realms/pretui/components/sheet.gts +1166 -0
- package/bundled-realms/pretui/components/sheet.md +78 -0
- package/bundled-realms/pretui/components/sheet.usage.gts +318 -0
- package/bundled-realms/pretui/components/sidebar.gts +1165 -0
- package/bundled-realms/pretui/components/sidebar.md +88 -0
- package/bundled-realms/pretui/components/sidebar.usage.gts +360 -0
- package/bundled-realms/pretui/components/signature-pad.gts +840 -0
- package/bundled-realms/pretui/components/signature-pad.md +57 -0
- package/bundled-realms/pretui/components/signature-pad.usage.gts +222 -0
- package/bundled-realms/pretui/components/skeleton.gts +46 -0
- package/bundled-realms/pretui/components/skeleton.md +56 -0
- package/bundled-realms/pretui/components/skeleton.usage.gts +56 -0
- package/bundled-realms/pretui/components/skip-link.gts +65 -0
- package/bundled-realms/pretui/components/skip-link.md +49 -0
- package/bundled-realms/pretui/components/skip-link.usage.gts +47 -0
- package/bundled-realms/pretui/components/slide-over.gts +2 -0
- package/bundled-realms/pretui/components/slide-over.md +41 -0
- package/bundled-realms/pretui/components/slide-over.usage.gts +50 -0
- package/bundled-realms/pretui/components/slider.examples.gts +61 -0
- package/bundled-realms/pretui/components/slider.gts +331 -0
- package/bundled-realms/pretui/components/slider.md +59 -0
- package/bundled-realms/pretui/components/slider.usage.gts +99 -0
- package/bundled-realms/pretui/components/sliding-highlight.gts +249 -0
- package/bundled-realms/pretui/components/sliding-highlight.md +58 -0
- package/bundled-realms/pretui/components/sliding-highlight.usage.gts +184 -0
- package/bundled-realms/pretui/components/snackbar.gts +2 -0
- package/bundled-realms/pretui/components/snackbar.md +34 -0
- package/bundled-realms/pretui/components/snackbar.usage.gts +31 -0
- package/bundled-realms/pretui/components/sonner.gts +2 -0
- package/bundled-realms/pretui/components/sonner.md +42 -0
- package/bundled-realms/pretui/components/sonner.usage.gts +43 -0
- package/bundled-realms/pretui/components/sparkline.gts +233 -0
- package/bundled-realms/pretui/components/sparkline.md +58 -0
- package/bundled-realms/pretui/components/sparkline.usage.gts +74 -0
- package/bundled-realms/pretui/components/spinner.gts +57 -0
- package/bundled-realms/pretui/components/spinner.md +49 -0
- package/bundled-realms/pretui/components/spinner.usage.gts +65 -0
- package/bundled-realms/pretui/components/split-panes.gts +69 -0
- package/bundled-realms/pretui/components/split-panes.md +54 -0
- package/bundled-realms/pretui/components/split-panes.usage.gts +171 -0
- package/bundled-realms/pretui/components/spotlight.gts +174 -0
- package/bundled-realms/pretui/components/spotlight.md +51 -0
- package/bundled-realms/pretui/components/spotlight.usage.gts +197 -0
- package/bundled-realms/pretui/components/stack-divider.gts +58 -0
- package/bundled-realms/pretui/components/stack.gts +284 -0
- package/bundled-realms/pretui/components/stack.md +81 -0
- package/bundled-realms/pretui/components/stack.usage.gts +228 -0
- package/bundled-realms/pretui/components/stacking-cards.gts +137 -0
- package/bundled-realms/pretui/components/stacking-cards.md +40 -0
- package/bundled-realms/pretui/components/stacking-cards.usage.gts +124 -0
- package/bundled-realms/pretui/components/stat.gts +216 -0
- package/bundled-realms/pretui/components/stat.md +57 -0
- package/bundled-realms/pretui/components/stat.usage.gts +16 -0
- package/bundled-realms/pretui/components/statement-table.examples.gts +185 -0
- package/bundled-realms/pretui/components/statement-table.gts +792 -0
- package/bundled-realms/pretui/components/statement-table.md +58 -0
- package/bundled-realms/pretui/components/statement-table.usage.gts +252 -0
- package/bundled-realms/pretui/components/status-chip.gts +37 -0
- package/bundled-realms/pretui/components/status-chip.md +48 -0
- package/bundled-realms/pretui/components/status-chip.usage.gts +36 -0
- package/bundled-realms/pretui/components/step-list.gts +624 -0
- package/bundled-realms/pretui/components/step-list.md +50 -0
- package/bundled-realms/pretui/components/step-list.usage.gts +166 -0
- package/bundled-realms/pretui/components/stepper.gts +201 -0
- package/bundled-realms/pretui/components/stepper.md +54 -0
- package/bundled-realms/pretui/components/stepper.usage.gts +103 -0
- package/bundled-realms/pretui/components/steps-with-media.gts +254 -0
- package/bundled-realms/pretui/components/steps-with-media.md +54 -0
- package/bundled-realms/pretui/components/steps-with-media.usage.gts +208 -0
- package/bundled-realms/pretui/components/streaming-text.gts +77 -0
- package/bundled-realms/pretui/components/streaming-text.md +55 -0
- package/bundled-realms/pretui/components/streaming-text.usage.gts +15 -0
- package/bundled-realms/pretui/components/swatch-chip.gts +104 -0
- package/bundled-realms/pretui/components/swatch-chip.md +47 -0
- package/bundled-realms/pretui/components/swatch-chip.usage.gts +21 -0
- package/bundled-realms/pretui/components/swatch.gts +141 -0
- package/bundled-realms/pretui/components/swatch.md +50 -0
- package/bundled-realms/pretui/components/swatch.usage.gts +80 -0
- package/bundled-realms/pretui/components/switch.examples.gts +53 -0
- package/bundled-realms/pretui/components/switch.gts +118 -0
- package/bundled-realms/pretui/components/switch.md +62 -0
- package/bundled-realms/pretui/components/switch.usage.gts +59 -0
- package/bundled-realms/pretui/components/table-of-contents.gts +384 -0
- package/bundled-realms/pretui/components/table-of-contents.md +75 -0
- package/bundled-realms/pretui/components/table-of-contents.usage.gts +270 -0
- package/bundled-realms/pretui/components/table.gts +158 -0
- package/bundled-realms/pretui/components/table.md +80 -0
- package/bundled-realms/pretui/components/table.usage.gts +44 -0
- package/bundled-realms/pretui/components/tabs.gts +117 -0
- package/bundled-realms/pretui/components/tabs.md +58 -0
- package/bundled-realms/pretui/components/tabs.usage.gts +94 -0
- package/bundled-realms/pretui/components/tags-input.gts +52 -0
- package/bundled-realms/pretui/components/tags-input.md +48 -0
- package/bundled-realms/pretui/components/tags-input.usage.gts +56 -0
- package/bundled-realms/pretui/components/task-row.gts +483 -0
- package/bundled-realms/pretui/components/task-row.md +48 -0
- package/bundled-realms/pretui/components/task-row.usage.gts +119 -0
- package/bundled-realms/pretui/components/terminal-animation.gts +355 -0
- package/bundled-realms/pretui/components/terminal-animation.md +49 -0
- package/bundled-realms/pretui/components/terminal-animation.usage.gts +110 -0
- package/bundled-realms/pretui/components/text-effects.gts +339 -0
- package/bundled-realms/pretui/components/text-effects.md +49 -0
- package/bundled-realms/pretui/components/text-effects.usage.gts +192 -0
- package/bundled-realms/pretui/components/text-morph.gts +292 -0
- package/bundled-realms/pretui/components/text-morph.md +45 -0
- package/bundled-realms/pretui/components/text-morph.usage.gts +117 -0
- package/bundled-realms/pretui/components/text-rotate.gts +121 -0
- package/bundled-realms/pretui/components/text-rotate.md +44 -0
- package/bundled-realms/pretui/components/text-rotate.usage.gts +73 -0
- package/bundled-realms/pretui/components/text-scramble.gts +189 -0
- package/bundled-realms/pretui/components/text-scramble.md +42 -0
- package/bundled-realms/pretui/components/text-scramble.usage.gts +80 -0
- package/bundled-realms/pretui/components/text-shimmer.gts +89 -0
- package/bundled-realms/pretui/components/text-shimmer.md +42 -0
- package/bundled-realms/pretui/components/text-shimmer.usage.gts +69 -0
- package/bundled-realms/pretui/components/textarea.gts +112 -0
- package/bundled-realms/pretui/components/textarea.md +51 -0
- package/bundled-realms/pretui/components/textarea.usage.gts +100 -0
- package/bundled-realms/pretui/components/theme-frame.gts +272 -0
- package/bundled-realms/pretui/components/theme-frame.md +48 -0
- package/bundled-realms/pretui/components/thinking.gts +431 -0
- package/bundled-realms/pretui/components/thinking.md +47 -0
- package/bundled-realms/pretui/components/thinking.usage.gts +134 -0
- package/bundled-realms/pretui/components/tilt.gts +194 -0
- package/bundled-realms/pretui/components/tilt.md +50 -0
- package/bundled-realms/pretui/components/tilt.usage.gts +174 -0
- package/bundled-realms/pretui/components/time-input.gts +583 -0
- package/bundled-realms/pretui/components/time-input.md +51 -0
- package/bundled-realms/pretui/components/time-input.usage.gts +110 -0
- package/bundled-realms/pretui/components/timeline.gts +269 -0
- package/bundled-realms/pretui/components/timeline.md +63 -0
- package/bundled-realms/pretui/components/timeline.usage.gts +180 -0
- package/bundled-realms/pretui/components/toast.gts +85 -0
- package/bundled-realms/pretui/components/toast.md +57 -0
- package/bundled-realms/pretui/components/toast.usage.gts +18 -0
- package/bundled-realms/pretui/components/toaster.gts +808 -0
- package/bundled-realms/pretui/components/toaster.md +83 -0
- package/bundled-realms/pretui/components/toaster.usage.gts +256 -0
- package/bundled-realms/pretui/components/toggle-group.gts +435 -0
- package/bundled-realms/pretui/components/toggle-group.md +59 -0
- package/bundled-realms/pretui/components/toggle-group.usage.gts +260 -0
- package/bundled-realms/pretui/components/toggle-matrix.gts +994 -0
- package/bundled-realms/pretui/components/toggle-matrix.md +44 -0
- package/bundled-realms/pretui/components/toggle-matrix.usage.gts +243 -0
- package/bundled-realms/pretui/components/toggle.gts +235 -0
- package/bundled-realms/pretui/components/toggle.md +59 -0
- package/bundled-realms/pretui/components/toggle.usage.gts +244 -0
- package/bundled-realms/pretui/components/token-input.gts +483 -0
- package/bundled-realms/pretui/components/token-input.md +50 -0
- package/bundled-realms/pretui/components/token-input.usage.gts +137 -0
- package/bundled-realms/pretui/components/token.gts +197 -0
- package/bundled-realms/pretui/components/token.md +63 -0
- package/bundled-realms/pretui/components/token.usage.gts +128 -0
- package/bundled-realms/pretui/components/toolbar.gts +62 -0
- package/bundled-realms/pretui/components/toolbar.md +50 -0
- package/bundled-realms/pretui/components/toolbar.usage.gts +78 -0
- package/bundled-realms/pretui/components/tooltip.gts +212 -0
- package/bundled-realms/pretui/components/tooltip.md +53 -0
- package/bundled-realms/pretui/components/tooltip.usage.gts +64 -0
- package/bundled-realms/pretui/components/tour.gts +436 -0
- package/bundled-realms/pretui/components/tour.md +62 -0
- package/bundled-realms/pretui/components/tour.usage.gts +70 -0
- package/bundled-realms/pretui/components/transfer.gts +2 -0
- package/bundled-realms/pretui/components/transfer.md +39 -0
- package/bundled-realms/pretui/components/transfer.usage.gts +52 -0
- package/bundled-realms/pretui/components/transmute.gts +103 -0
- package/bundled-realms/pretui/components/transmute.md +49 -0
- package/bundled-realms/pretui/components/transmute.usage.gts +16 -0
- package/bundled-realms/pretui/components/tree-select.gts +596 -0
- package/bundled-realms/pretui/components/tree-select.md +70 -0
- package/bundled-realms/pretui/components/tree-select.usage.gts +75 -0
- package/bundled-realms/pretui/components/tree.gts +532 -0
- package/bundled-realms/pretui/components/tree.md +68 -0
- package/bundled-realms/pretui/components/tree.usage.gts +278 -0
- package/bundled-realms/pretui/components/trim-bar.gts +611 -0
- package/bundled-realms/pretui/components/trim-bar.md +48 -0
- package/bundled-realms/pretui/components/trim-bar.usage.gts +112 -0
- package/bundled-realms/pretui/components/typewriter.gts +122 -0
- package/bundled-realms/pretui/components/typewriter.md +45 -0
- package/bundled-realms/pretui/components/typewriter.usage.gts +105 -0
- package/bundled-realms/pretui/components/typography.gts +379 -0
- package/bundled-realms/pretui/components/typography.md +77 -0
- package/bundled-realms/pretui/components/typography.usage.gts +52 -0
- package/bundled-realms/pretui/components/url-input.gts +130 -0
- package/bundled-realms/pretui/components/url-input.md +58 -0
- package/bundled-realms/pretui/components/url-input.usage.gts +97 -0
- package/bundled-realms/pretui/components/usage-action.gts +16 -0
- package/bundled-realms/pretui/components/usage-argument.gts +109 -0
- package/bundled-realms/pretui/components/usage-argument.md +44 -0
- package/bundled-realms/pretui/components/usage-array.gts +80 -0
- package/bundled-realms/pretui/components/usage-array.md +47 -0
- package/bundled-realms/pretui/components/usage-bool.gts +62 -0
- package/bundled-realms/pretui/components/usage-bool.md +47 -0
- package/bundled-realms/pretui/components/usage-component-arg.gts +16 -0
- package/bundled-realms/pretui/components/usage-css-variable.gts +56 -0
- package/bundled-realms/pretui/components/usage-css-variable.md +48 -0
- package/bundled-realms/pretui/components/usage-number.gts +127 -0
- package/bundled-realms/pretui/components/usage-number.md +48 -0
- package/bundled-realms/pretui/components/usage-object.gts +58 -0
- package/bundled-realms/pretui/components/usage-object.md +48 -0
- package/bundled-realms/pretui/components/usage-string.gts +89 -0
- package/bundled-realms/pretui/components/usage-string.md +46 -0
- package/bundled-realms/pretui/components/usage-yield.gts +16 -0
- package/bundled-realms/pretui/components/value-input.gts +265 -0
- package/bundled-realms/pretui/components/value-input.md +49 -0
- package/bundled-realms/pretui/components/value-input.usage.gts +176 -0
- package/bundled-realms/pretui/components/video-player.gts +80 -0
- package/bundled-realms/pretui/components/video-player.md +46 -0
- package/bundled-realms/pretui/components/video-player.usage.gts +107 -0
- package/bundled-realms/pretui/components/viewport.gts +520 -0
- package/bundled-realms/pretui/components/viewport.md +55 -0
- package/bundled-realms/pretui/components/visually-hidden.gts +49 -0
- package/bundled-realms/pretui/components/visually-hidden.md +47 -0
- package/bundled-realms/pretui/components/visually-hidden.usage.gts +27 -0
- package/bundled-realms/pretui/components/watermark.gts +141 -0
- package/bundled-realms/pretui/components/watermark.md +58 -0
- package/bundled-realms/pretui/components/watermark.usage.gts +63 -0
- package/bundled-realms/pretui/components/waveform.gts +376 -0
- package/bundled-realms/pretui/components/waveform.md +56 -0
- package/bundled-realms/pretui/components/waveform.usage.gts +131 -0
- package/bundled-realms/pretui/components/wizard.gts +677 -0
- package/bundled-realms/pretui/components/wizard.md +58 -0
- package/bundled-realms/pretui/components/wizard.usage.gts +188 -0
- package/bundled-realms/pretui/components/work-item.gts +207 -0
- package/bundled-realms/pretui/components/work-item.md +58 -0
- package/bundled-realms/pretui/components/work-item.usage.gts +103 -0
- package/bundled-realms/pretui/components/zoomable-frame.gts +541 -0
- package/bundled-realms/pretui/components/zoomable-frame.md +50 -0
- package/bundled-realms/pretui/components/zoomable-frame.usage.gts +175 -0
- package/bundled-realms/pretui/cropper/LICENSE +21 -0
- package/bundled-realms/pretui/cropper/README.md +92 -0
- package/bundled-realms/pretui/cropper/index.js +81 -0
- package/bundled-realms/pretui/data-component.gts +1161 -0
- package/bundled-realms/pretui/demo-design-layers.gts +112 -0
- package/bundled-realms/pretui/demo-design-tools.gts +463 -0
- package/bundled-realms/pretui/demo-design-value.gts +9 -0
- package/bundled-realms/pretui/demo-forms-core.gts +82 -0
- package/bundled-realms/pretui/demo-forms-expression.gts +76 -0
- package/bundled-realms/pretui/demo-forms-record.gts +16 -0
- package/bundled-realms/pretui/demo-foundations-more.gts +10 -0
- package/bundled-realms/pretui/demo-foundations.gts +8 -0
- package/bundled-realms/pretui/demo-ink-feedback.gts +12 -0
- package/bundled-realms/pretui/demo-json.gts +17 -0
- package/bundled-realms/pretui/demo-locations.ts +103 -0
- package/bundled-realms/pretui/demo-media-library.gts +101 -0
- package/bundled-realms/pretui/demo-media.gts +6 -0
- package/bundled-realms/pretui/demo-menu.gts +182 -0
- package/bundled-realms/pretui/demo-motion-core.gts +4 -0
- package/bundled-realms/pretui/demo-motion-pointer.gts +21 -0
- package/bundled-realms/pretui/demo-reading-format.gts +10 -0
- package/bundled-realms/pretui/demo-structure-dashboard.gts +212 -0
- package/bundled-realms/pretui/demo-structure-data.gts +4 -0
- package/bundled-realms/pretui/demo-structure-scroll.gts +19 -0
- package/bundled-realms/pretui/demo-structure.gts +21 -0
- package/bundled-realms/pretui/demo-surfaces-grid.gts +104 -0
- package/bundled-realms/pretui/demo-texture.gts +21 -0
- package/bundled-realms/pretui/docs/catalog-taxonomy.md +200 -0
- package/bundled-realms/pretui/docs/composites.md +13 -0
- package/bundled-realms/pretui/docs/reading.md +12 -0
- package/bundled-realms/pretui/docs/structure.md +8 -0
- package/bundled-realms/pretui/emoji-data/LICENSE +202 -0
- package/bundled-realms/pretui/emoji-data/LICENSE.data +202 -0
- package/bundled-realms/pretui/emoji-data/LICENSE.emojibase +21 -0
- package/bundled-realms/pretui/emoji-data/LICENSE.unicode +39 -0
- package/bundled-realms/pretui/emoji-data/README.md +360 -0
- package/bundled-realms/pretui/emoji-data/data.ts +45 -0
- package/bundled-realms/pretui/emoji-data/engine.ts +465 -0
- package/bundled-realms/pretui/example-gallery.gts +129 -0
- package/bundled-realms/pretui/examples-kit.gts +228 -0
- package/bundled-realms/pretui/examples-listing.gts +51 -0
- package/bundled-realms/pretui/examples.gts +584 -0
- package/bundled-realms/pretui/focus.gts +459 -0
- package/bundled-realms/pretui/gridstack/LICENSE +21 -0
- package/bundled-realms/pretui/gridstack/README.md +103 -0
- package/bundled-realms/pretui/gridstack/index.js +169 -0
- package/bundled-realms/pretui/icon-registry.gts +753 -0
- package/bundled-realms/pretui/index.json +11 -0
- package/bundled-realms/pretui/internal/agentic-chat.gts +101 -0
- package/bundled-realms/pretui/internal/blocks.gts +35 -0
- package/bundled-realms/pretui/internal/choice-cards.gts +258 -0
- package/bundled-realms/pretui/internal/color-fixtures.gts +3 -0
- package/bundled-realms/pretui/internal/composites-fixtures.gts +16 -0
- package/bundled-realms/pretui/internal/corner-mark.gts +83 -0
- package/bundled-realms/pretui/internal/design-tools.gts +881 -0
- package/bundled-realms/pretui/internal/extras.gts +31 -0
- package/bundled-realms/pretui/internal/feedback.gts +27 -0
- package/bundled-realms/pretui/internal/file-intake-fixtures.gts +17 -0
- package/bundled-realms/pretui/internal/file-intake.gts +193 -0
- package/bundled-realms/pretui/internal/forms-core.gts +394 -0
- package/bundled-realms/pretui/internal/forms-expression.gts +837 -0
- package/bundled-realms/pretui/internal/forms-picker-fixtures.gts +10 -0
- package/bundled-realms/pretui/internal/forms-picker.gts +129 -0
- package/bundled-realms/pretui/internal/forms-record.gts +173 -0
- package/bundled-realms/pretui/internal/freestyle.gts +117 -0
- package/bundled-realms/pretui/internal/ink.gts +25 -0
- package/bundled-realms/pretui/internal/json-tree.gts +526 -0
- package/bundled-realms/pretui/internal/keep-style.gts +168 -0
- package/bundled-realms/pretui/internal/media-assets.gts +10 -0
- package/bundled-realms/pretui/internal/media-library.gts +14 -0
- package/bundled-realms/pretui/internal/media-viewer.gts +322 -0
- package/bundled-realms/pretui/internal/media-wave.gts +270 -0
- package/bundled-realms/pretui/internal/menu.gts +522 -0
- package/bundled-realms/pretui/internal/money-fixtures.gts +6 -0
- package/bundled-realms/pretui/internal/money.gts +477 -0
- package/bundled-realms/pretui/internal/motion-core.gts +54 -0
- package/bundled-realms/pretui/internal/motion-pointer.gts +234 -0
- package/bundled-realms/pretui/internal/overlay-confirm.gts +35 -0
- package/bundled-realms/pretui/internal/overlay.gts +291 -0
- package/bundled-realms/pretui/internal/reading-extras.gts +56 -0
- package/bundled-realms/pretui/internal/reading-format.gts +232 -0
- package/bundled-realms/pretui/internal/reading-listing.gts +232 -0
- package/bundled-realms/pretui/internal/structure-chart.gts +414 -0
- package/bundled-realms/pretui/internal/structure-dashboard.gts +503 -0
- package/bundled-realms/pretui/internal/structure-flow.gts +48 -0
- package/bundled-realms/pretui/internal/structure-layout-fixtures.gts +36 -0
- package/bundled-realms/pretui/internal/structure-layout.gts +99 -0
- package/bundled-realms/pretui/internal/structure-morph.gts +140 -0
- package/bundled-realms/pretui/internal/structure-scenes.gts +25 -0
- package/bundled-realms/pretui/internal/structure-scroll.gts +72 -0
- package/bundled-realms/pretui/internal/structure-shell-fixtures.gts +25 -0
- package/bundled-realms/pretui/internal/surfaces-canvas-fixtures.gts +5 -0
- package/bundled-realms/pretui/internal/surfaces-canvas.gts +283 -0
- package/bundled-realms/pretui/internal/texture.gts +81 -0
- package/bundled-realms/pretui/internal/toggle-controls-fixtures.gts +7 -0
- package/bundled-realms/pretui/internal/toggle-controls.gts +81 -0
- package/bundled-realms/pretui/json-model.ts +1981 -0
- package/bundled-realms/pretui/media-chrome/LICENSE +19 -0
- package/bundled-realms/pretui/media-chrome/README.md +111 -0
- package/bundled-realms/pretui/media-chrome/index.js +1647 -0
- package/bundled-realms/pretui/media-examples.gts +315 -0
- package/bundled-realms/pretui/model-viewer/LICENSE +202 -0
- package/{LICENSE → bundled-realms/pretui/model-viewer/LICENSE-gainmap-js} +1 -1
- package/bundled-realms/pretui/model-viewer/LICENSE-lit +28 -0
- package/bundled-realms/pretui/model-viewer/LICENSE-three +21 -0
- package/bundled-realms/pretui/model-viewer/NOTICE +67 -0
- package/bundled-realms/pretui/model-viewer/README.md +122 -0
- package/bundled-realms/pretui/model-viewer/index.js +6413 -0
- package/bundled-realms/pretui/package.json +51 -0
- package/bundled-realms/pretui/photoswipe/LICENSE +21 -0
- package/bundled-realms/pretui/photoswipe/README.md +91 -0
- package/bundled-realms/pretui/photoswipe/index.js +149 -0
- package/bundled-realms/pretui/photoswipe/style.ts +465 -0
- package/bundled-realms/pretui/plot/LICENSE +13 -0
- package/bundled-realms/pretui/plot/LICENSE.d3 +13 -0
- package/bundled-realms/pretui/plot/LICENSE.interval-tree-1d +22 -0
- package/bundled-realms/pretui/plot/LICENSE.isoformat +13 -0
- package/bundled-realms/pretui/plot/README.md +35 -0
- package/bundled-realms/pretui/plot/index.d.ts +31 -0
- package/bundled-realms/pretui/plot/index.js +449 -0
- package/bundled-realms/pretui/pretui-component.gts +1336 -0
- package/bundled-realms/pretui/pretui-css.gts +380 -0
- package/bundled-realms/pretui/pretui-primitives.gts +162 -0
- package/bundled-realms/pretui/qrcode/LICENSE +34 -0
- package/bundled-realms/pretui/qrcode/README.md +87 -0
- package/bundled-realms/pretui/qrcode/index.js +35 -0
- package/bundled-realms/pretui/realm.json +16 -0
- package/bundled-realms/pretui/registry.ts +40 -0
- package/bundled-realms/pretui/sigpad/LICENSE +21 -0
- package/bundled-realms/pretui/sigpad/README.md +103 -0
- package/bundled-realms/pretui/sigpad/index.js +30 -0
- package/bundled-realms/pretui/structure-dashboard-css.ts +166 -0
- package/bundled-realms/pretui/surfaces/README.md +37 -0
- package/bundled-realms/pretui/surfaces/canvas/LICENSE.d3 +168 -0
- package/bundled-realms/pretui/surfaces/canvas/LICENSE.xyflow +21 -0
- package/bundled-realms/pretui/surfaces/canvas/index.js +25420 -0
- package/bundled-realms/pretui/surfaces/grid/LICENSE.tanstack +50 -0
- package/bundled-realms/pretui/surfaces/grid/index.js +21478 -0
- package/bundled-realms/pretui/surfaces/layout/index.js +9036 -0
- package/bundled-realms/pretui/surfaces-canvas-css.ts +1640 -0
- package/bundled-realms/pretui/surfaces-canvas-layout.ts +607 -0
- package/bundled-realms/pretui/tsconfig.json +54 -0
- package/bundled-realms/pretui/wavesurfer/LICENSE +29 -0
- package/bundled-realms/pretui/wavesurfer/README.md +85 -0
- package/bundled-realms/pretui/wavesurfer/index.js +184 -0
- package/bundled-realms/pretui/zxcvbn/LICENSE +21 -0
- package/bundled-realms/pretui/zxcvbn/README.md +192 -0
- package/bundled-realms/pretui/zxcvbn/index.d.ts +28 -0
- package/bundled-realms/pretui/zxcvbn/index.js +5931 -0
- package/bundled-test-harness/index.html +1 -1
- package/bundled-test-harness/tests/index.html +1 -1
- package/dist/api.js +1 -1
- package/dist/index.js +33 -33
- package/package.json +1 -1
- package/src/lib/test-engine.ts +14 -4
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
// Pretui — Sparkline: an inline micro-chart for a Stat or a table cell — line, area or bars, in SVG.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { cached } from '@glimmer/tracking';
|
|
4
|
+
import { htmlSafe } from '@ember/template';
|
|
5
|
+
import { PRETUI_TONES, resolveTone } from '../pretui-primitives';
|
|
6
|
+
import type { PretuiToneArg } from '../pretui-primitives';
|
|
7
|
+
import { TONE_HUES } from '../internal/corner-mark';
|
|
8
|
+
|
|
9
|
+
export type SparklineKind = 'line' | 'area' | 'bar';
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export interface SparklineSignature {
|
|
13
|
+
Args: {
|
|
14
|
+
values: number[];
|
|
15
|
+
/** Required: what the series is ('Revenue, last 12 weeks'). The summary is appended. */
|
|
16
|
+
label: string;
|
|
17
|
+
/** 'line' (default), 'area' or 'bar'. */
|
|
18
|
+
kind?: SparklineKind;
|
|
19
|
+
/** Default 'primary'. Accepts the kit's tone spellings. */
|
|
20
|
+
tone?: PretuiToneArg;
|
|
21
|
+
/** Pixels (default 96 × 24). */
|
|
22
|
+
width?: number;
|
|
23
|
+
height?: number;
|
|
24
|
+
/** Mark the last point with a dot (line and area). */
|
|
25
|
+
showLast?: boolean;
|
|
26
|
+
/** Start the scale at zero rather than the series minimum. */
|
|
27
|
+
zeroBased?: boolean;
|
|
28
|
+
};
|
|
29
|
+
Element: SVGSVGElement;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const NUMBER = new Intl.NumberFormat(undefined, { maximumFractionDigits: 2 });
|
|
33
|
+
|
|
34
|
+
function finite(values: number[] | undefined): number[] {
|
|
35
|
+
return (values ?? []).filter((v) => typeof v === 'number' && Number.isFinite(v));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function round(n: number): number {
|
|
39
|
+
return Math.round(n * 100) / 100;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The spark: a series drawn at the size of a word, next to the number it
|
|
44
|
+
* explains. Chart is the full plot with axes; BarList ranks named rows.
|
|
45
|
+
*
|
|
46
|
+
* It is plain SVG with no engine and no animation. It is `role="img"`, named
|
|
47
|
+
* by `@label` plus a spoken summary ("from 12 to 30, low 8, high 31"), so the
|
|
48
|
+
* shape's meaning reaches a screen reader as words. The stroke scales
|
|
49
|
+
* without distortion (`vector-effect: non-scaling-stroke`), and a series of
|
|
50
|
+
* one value draws a flat line rather than nothing.
|
|
51
|
+
*/
|
|
52
|
+
export class Sparkline extends Component<SparklineSignature> {
|
|
53
|
+
get kind(): SparklineKind {
|
|
54
|
+
let k = this.args.kind;
|
|
55
|
+
return k === 'area' || k === 'bar' ? k : 'line';
|
|
56
|
+
}
|
|
57
|
+
get width(): number {
|
|
58
|
+
return Math.max(8, this.args.width ?? 96);
|
|
59
|
+
}
|
|
60
|
+
get height(): number {
|
|
61
|
+
return Math.max(4, this.args.height ?? 24);
|
|
62
|
+
}
|
|
63
|
+
get values(): number[] {
|
|
64
|
+
return finite(this.args.values);
|
|
65
|
+
}
|
|
66
|
+
get empty(): boolean {
|
|
67
|
+
return this.values.length === 0;
|
|
68
|
+
}
|
|
69
|
+
/** Computed once per render. Bars always include zero: a bar's length
|
|
70
|
+
* encodes its distance from zero, so zero has to be on the scale. */
|
|
71
|
+
@cached
|
|
72
|
+
private get range(): { min: number; max: number } {
|
|
73
|
+
let min = Infinity;
|
|
74
|
+
let max = -Infinity;
|
|
75
|
+
for (let v of this.values) {
|
|
76
|
+
min = Math.min(min, v);
|
|
77
|
+
max = Math.max(max, v);
|
|
78
|
+
}
|
|
79
|
+
if (this.args.zeroBased || this.kind === 'bar') {
|
|
80
|
+
min = Math.min(0, min);
|
|
81
|
+
max = Math.max(0, max);
|
|
82
|
+
}
|
|
83
|
+
return { min, max };
|
|
84
|
+
}
|
|
85
|
+
/** y for a value, with 1px of headroom so the stroke is never clipped. */
|
|
86
|
+
private y(value: number): number {
|
|
87
|
+
let { min, max } = this.range;
|
|
88
|
+
let h = this.height - 2;
|
|
89
|
+
if (max === min) {
|
|
90
|
+
return round(1 + h / 2);
|
|
91
|
+
}
|
|
92
|
+
return round(1 + h - ((value - min) / (max - min)) * h);
|
|
93
|
+
}
|
|
94
|
+
get points(): { x: number; y: number }[] {
|
|
95
|
+
let values = this.values;
|
|
96
|
+
let w = this.width - 2;
|
|
97
|
+
let n = values.length;
|
|
98
|
+
return values.map((v, i) => ({ x: round(1 + (n === 1 ? w / 2 : (i / (n - 1)) * w)), y: this.y(v) }));
|
|
99
|
+
}
|
|
100
|
+
get linePath(): string {
|
|
101
|
+
let pts = this.points;
|
|
102
|
+
if (pts.length === 1) {
|
|
103
|
+
let p = (pts[0] as { x: number; y: number });
|
|
104
|
+
return `M1 ${p.y} L${this.width - 1} ${p.y}`;
|
|
105
|
+
}
|
|
106
|
+
return pts.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x} ${p.y}`).join(' ');
|
|
107
|
+
}
|
|
108
|
+
get areaPath(): string {
|
|
109
|
+
let pts = this.points;
|
|
110
|
+
let base = this.args.zeroBased ? this.y(0) : this.height - 1;
|
|
111
|
+
if (pts.length === 1) {
|
|
112
|
+
let p = (pts[0] as { x: number; y: number });
|
|
113
|
+
return `M1 ${p.y} L${this.width - 1} ${p.y} L${this.width - 1} ${base} L1 ${base} Z`;
|
|
114
|
+
}
|
|
115
|
+
let first = (pts[0] as { x: number; y: number });
|
|
116
|
+
let last = (pts[pts.length - 1] as { x: number; y: number });
|
|
117
|
+
return `${this.linePath} L${last.x} ${base} L${first.x} ${base} Z`;
|
|
118
|
+
}
|
|
119
|
+
get bars(): { x: number; y: number; width: number; height: number }[] {
|
|
120
|
+
let values = this.values;
|
|
121
|
+
let n = values.length;
|
|
122
|
+
let slot = (this.width - 2) / n;
|
|
123
|
+
let gap = Math.min(2, slot * 0.25);
|
|
124
|
+
// every bar stands on zero, up for positive values and down for negative
|
|
125
|
+
let base = this.y(0);
|
|
126
|
+
return values.map((v, i) => {
|
|
127
|
+
let top = this.y(v);
|
|
128
|
+
let y = Math.min(top, base);
|
|
129
|
+
return {
|
|
130
|
+
x: round(1 + i * slot + gap / 2),
|
|
131
|
+
y,
|
|
132
|
+
width: round(Math.max(1, slot - gap)),
|
|
133
|
+
height: round(Math.max(1, Math.abs(base - top))),
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
get last(): { x: number; y: number } | undefined {
|
|
138
|
+
return this.args.showLast && this.kind !== 'bar' ? this.points[this.points.length - 1] : undefined;
|
|
139
|
+
}
|
|
140
|
+
get summary(): string {
|
|
141
|
+
let values = this.values;
|
|
142
|
+
if (!values.length) {
|
|
143
|
+
return 'no data';
|
|
144
|
+
}
|
|
145
|
+
let first = values[0] as number;
|
|
146
|
+
let last = values[values.length - 1] as number;
|
|
147
|
+
let low = Infinity;
|
|
148
|
+
let high = -Infinity;
|
|
149
|
+
for (let v of values) {
|
|
150
|
+
low = Math.min(low, v);
|
|
151
|
+
high = Math.max(high, v);
|
|
152
|
+
}
|
|
153
|
+
let f = (n: number) => NUMBER.format(n);
|
|
154
|
+
return `from ${f(first)} to ${f(last)}, low ${f(low)}, high ${f(high)}`;
|
|
155
|
+
}
|
|
156
|
+
get name(): string {
|
|
157
|
+
return `${this.args.label}: ${this.summary}`;
|
|
158
|
+
}
|
|
159
|
+
get style() {
|
|
160
|
+
let tone = resolveTone(this.args.tone, PRETUI_TONES, 'primary');
|
|
161
|
+
return htmlSafe(`--pretui-sparkline-hue: ${TONE_HUES[tone]}`);
|
|
162
|
+
}
|
|
163
|
+
isKind = (kind: SparklineKind): boolean => this.kind === kind;
|
|
164
|
+
|
|
165
|
+
get viewBox(): string {
|
|
166
|
+
return `0 0 ${this.width} ${this.height}`;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
<template>
|
|
170
|
+
<svg
|
|
171
|
+
class='pretui-sparkline'
|
|
172
|
+
role='img'
|
|
173
|
+
aria-label={{this.name}}
|
|
174
|
+
width={{this.width}}
|
|
175
|
+
height={{this.height}}
|
|
176
|
+
viewBox={{this.viewBox}}
|
|
177
|
+
preserveAspectRatio='none'
|
|
178
|
+
data-kind={{this.kind}}
|
|
179
|
+
style={{this.style}}
|
|
180
|
+
data-test-pretui-sparkline
|
|
181
|
+
...attributes
|
|
182
|
+
>
|
|
183
|
+
{{#unless this.empty}}
|
|
184
|
+
{{#if (this.isKind 'bar')}}
|
|
185
|
+
{{#each this.bars as |bar|}}
|
|
186
|
+
<rect class='pretui-sparkline-bar' x={{bar.x}} y={{bar.y}} width={{bar.width}} height={{bar.height}} rx='1' />
|
|
187
|
+
{{/each}}
|
|
188
|
+
{{else}}
|
|
189
|
+
{{#if (this.isKind 'area')}}
|
|
190
|
+
<path class='pretui-sparkline-area' d={{this.areaPath}} />
|
|
191
|
+
{{/if}}
|
|
192
|
+
<path class='pretui-sparkline-line' d={{this.linePath}} />
|
|
193
|
+
{{#if this.last}}
|
|
194
|
+
<circle class='pretui-sparkline-dot' cx={{this.last.x}} cy={{this.last.y}} r='2' />
|
|
195
|
+
{{/if}}
|
|
196
|
+
{{/if}}
|
|
197
|
+
{{/unless}}
|
|
198
|
+
</svg>
|
|
199
|
+
<style scoped>
|
|
200
|
+
@layer PretComponent {
|
|
201
|
+
.pretui-sparkline {
|
|
202
|
+
display: inline-block;
|
|
203
|
+
vertical-align: middle;
|
|
204
|
+
overflow: visible;
|
|
205
|
+
color: var(--pretui-sparkline-hue, var(--primary));
|
|
206
|
+
}
|
|
207
|
+
.pretui-sparkline-line {
|
|
208
|
+
fill: none;
|
|
209
|
+
stroke: currentColor;
|
|
210
|
+
stroke-width: var(--pretui-sparkline-stroke, 1.5);
|
|
211
|
+
stroke-linecap: round;
|
|
212
|
+
stroke-linejoin: round;
|
|
213
|
+
vector-effect: non-scaling-stroke;
|
|
214
|
+
}
|
|
215
|
+
.pretui-sparkline-area {
|
|
216
|
+
fill: currentColor;
|
|
217
|
+
opacity: var(--pretui-sparkline-fill, 0.16);
|
|
218
|
+
stroke: none;
|
|
219
|
+
}
|
|
220
|
+
.pretui-sparkline-bar {
|
|
221
|
+
fill: currentColor;
|
|
222
|
+
}
|
|
223
|
+
.pretui-sparkline-dot {
|
|
224
|
+
fill: currentColor;
|
|
225
|
+
stroke: var(--card);
|
|
226
|
+
stroke-width: 1;
|
|
227
|
+
vector-effect: non-scaling-stroke;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
</style>
|
|
231
|
+
</template>
|
|
232
|
+
|
|
233
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
**An inline micro-chart**, a series drawn at the size of a word next to the number it explains: orders this week with the last twelve weeks beside it, or a table cell's trend. It comes as a line, an area or bars.
|
|
4
|
+
|
|
5
|
+
Reach for a neighbour when you need more:
|
|
6
|
+
|
|
7
|
+
- **Chart** is the full plot, with axes and a legend.
|
|
8
|
+
- **BarList** ranks named rows.
|
|
9
|
+
- **Stat** is the number the spark sits beside.
|
|
10
|
+
|
|
11
|
+
## The contract
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
@values (number[]), @label (required)
|
|
15
|
+
@kind? ('line' | 'area' | 'bar'; default 'line'), @tone? (default 'primary')
|
|
16
|
+
@width? (96), @height? (24), @showLast?, @zeroBased?
|
|
17
|
+
Element: SVGSVGElement
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Plain SVG, no engine.** Line and area are one path through the points, and bars are one rect per value. Line and area scale from the series minimum to its maximum, or include zero with `@zeroBased`. Bars always include zero and stand on it, up for positive values and down for negative ones, because a bar's length has to encode its distance from zero. The stroke keeps its width when the chart is stretched (`vector-effect: non-scaling-stroke`). There is 1px of headroom so the line is never clipped, and `@showLast` marks the final point.
|
|
21
|
+
|
|
22
|
+
**Degenerate series behave.** One value draws a flat line, an empty series draws nothing, and non-numbers (`NaN`, `Infinity`) are dropped.
|
|
23
|
+
|
|
24
|
+
**No animation.** A spark shows a shape, not a process.
|
|
25
|
+
|
|
26
|
+
## Prior art
|
|
27
|
+
|
|
28
|
+
**Mantine `Sparkline`** takes `data`, `curveType`, `color`, `fillOpacity`, `withGradient` and `trendColors`, and is built on Recharts. **Tremor `SparkAreaChart` / `SparkLineChart` / `SparkBarChart`** also use Recharts. **react-sparklines** is a small SVG library.
|
|
29
|
+
|
|
30
|
+
Where Pretui is better: **it has a name.** The chart is `role="img"`, named by `@label` plus a spoken summary ("from 12 to 41, low 12, high 41"), with the numbers formatted to at most two decimals. Mantine and Tremor render an unnamed SVG that a screen reader skips or reads as "image". **No chart engine** is loaded for a 96px drawing.
|
|
31
|
+
|
|
32
|
+
Where it is thinner: **no curve smoothing**, **no gradient fill**, **no trend-coloured tone** (pick `@tone` yourself), and **no tooltip or hover value**. Use **Chart** when the reader needs to read individual points.
|
|
33
|
+
|
|
34
|
+
## Accessibility
|
|
35
|
+
|
|
36
|
+
No APG pattern. It is an image.
|
|
37
|
+
|
|
38
|
+
- **`role="img"`, named by `@label` and a summary** of the first, last, lowest and highest values. The tests assert the full name, and "no data" for an empty series.
|
|
39
|
+
- **The label is required**, because a spark without one tells a screen reader nothing. Say what the series is and over what period, for example "Orders, last 12 weeks".
|
|
40
|
+
- **The tone is not the meaning.** A red spark still needs its label, and usually the number next to it, to say whether falling is bad.
|
|
41
|
+
|
|
42
|
+
## Theming
|
|
43
|
+
|
|
44
|
+
`--pretui-sparkline-hue` (set from the tone: `--primary` by default, or `--pretui-info`, `--success`, `--warning`, `--destructive`, `--pretui-attention`, `--muted-foreground`), `--pretui-sparkline-stroke` (line width, default 1.5), `--pretui-sparkline-fill` (area opacity, default 0.16) and `--card` (the ring around the last-point dot).
|
|
45
|
+
|
|
46
|
+
Size is an arg, because a spark is sized to its context rather than to the theme.
|
|
47
|
+
|
|
48
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
49
|
+
|
|
50
|
+
## React ecosystem
|
|
51
|
+
|
|
52
|
+
| Agent types | Give them |
|
|
53
|
+
| ----------------------------------------------- | ------------------------------------------ |
|
|
54
|
+
| Mantine `<Sparkline data curveType="linear">` | `<Sparkline @values @label>` |
|
|
55
|
+
| Mantine `fillOpacity` | `@kind='area'` + `--pretui-sparkline-fill` |
|
|
56
|
+
| Tremor `<SparkBarChart>` | `@kind='bar'` |
|
|
57
|
+
| react-sparklines `<Sparklines><SparklinesLine>` | `<Sparkline>` |
|
|
58
|
+
| a hover tooltip per point | **Chart** |
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Pretui — Sparkline usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Sparkline } from './sparkline';
|
|
6
|
+
import type { SparklineKind } from './sparkline';
|
|
7
|
+
import type { PretuiToneArg } from '../pretui-primitives';
|
|
8
|
+
|
|
9
|
+
const ORDERS = [12, 18, 14, 22, 19, 27, 31, 29, 34, 30, 38, 41];
|
|
10
|
+
const KINDS = ['line', 'area', 'bar'];
|
|
11
|
+
const TONES = ['primary', 'success', 'warning', 'danger', 'info', 'neutral'];
|
|
12
|
+
|
|
13
|
+
export class SparklineUsage extends Component {
|
|
14
|
+
orders = ORDERS;
|
|
15
|
+
kinds = KINDS;
|
|
16
|
+
tones = TONES;
|
|
17
|
+
@tracked kind = 'area';
|
|
18
|
+
@tracked tone = 'primary';
|
|
19
|
+
@tracked showLast = true;
|
|
20
|
+
setKind = (v: string) => (this.kind = v);
|
|
21
|
+
setTone = (v: string) => (this.tone = v);
|
|
22
|
+
setShowLast = (v: boolean) => (this.showLast = v);
|
|
23
|
+
get toneArg(): PretuiToneArg {
|
|
24
|
+
return this.tone as PretuiToneArg;
|
|
25
|
+
}
|
|
26
|
+
get kindArg() {
|
|
27
|
+
return this.kind as SparklineKind;
|
|
28
|
+
}
|
|
29
|
+
get usage() {
|
|
30
|
+
return `<Sparkline @values={{this.orders}} @label='Orders, last 12 weeks' @kind='${this.kind}' @tone='${this.tone}'${this.showLast ? ' @showLast={{true}}' : ''} />`;
|
|
31
|
+
}
|
|
32
|
+
<template>
|
|
33
|
+
<FreestyleUsage
|
|
34
|
+
@name='Sparkline'
|
|
35
|
+
@description='An inline micro-chart at the size of a word, next to the number it explains: line, area or bars, in plain SVG with no engine and no animation. It is an image named by its label and a spoken summary, so the shape reaches a screen reader as words. Chart is the full plot.'
|
|
36
|
+
@source={{this.usage}}
|
|
37
|
+
>
|
|
38
|
+
<:example>
|
|
39
|
+
<p class='sp-demo'>
|
|
40
|
+
<span class='sp-demo-num'>41</span> orders this week
|
|
41
|
+
<Sparkline @values={{this.orders}} @label='Orders, last 12 weeks' @kind={{this.kindArg}} @tone={{this.toneArg}} @showLast={{this.showLast}} />
|
|
42
|
+
</p>
|
|
43
|
+
</:example>
|
|
44
|
+
<:api as |Args|>
|
|
45
|
+
<Args.Object @name='values' @required={{true}} @description='number[]; non-numbers are dropped.' />
|
|
46
|
+
<Args.String @name='label' @required={{true}} @description='What the series is. The summary is appended.' />
|
|
47
|
+
<Args.String @name='kind' @value={{this.kind}} @options={{this.kinds}} @defaultValue='line' @onInput={{this.setKind}} />
|
|
48
|
+
<Args.String @name='tone' @value={{this.tone}} @options={{this.tones}} @defaultValue='primary' @onInput={{this.setTone}} />
|
|
49
|
+
<Args.Bool @name='showLast' @value={{this.showLast}} @defaultValue={{false}} @onInput={{this.setShowLast}} />
|
|
50
|
+
<Args.Bool @name='zeroBased' @defaultValue={{false}} @description='Start the scale at zero.' />
|
|
51
|
+
<Args.Number @name='width' @defaultValue={{96}} />
|
|
52
|
+
<Args.Number @name='height' @defaultValue={{24}} />
|
|
53
|
+
</:api>
|
|
54
|
+
</FreestyleUsage>
|
|
55
|
+
<style scoped>
|
|
56
|
+
.sp-demo {
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
gap: var(--space-3, 0.5rem);
|
|
60
|
+
margin: 0;
|
|
61
|
+
font-size: var(--text-ui-md, 0.78rem);
|
|
62
|
+
}
|
|
63
|
+
.sp-demo-num {
|
|
64
|
+
font-family: var(--font-serif);
|
|
65
|
+
font-size: var(--text-heading, 1.1875rem);
|
|
66
|
+
font-variant-numeric: tabular-nums;
|
|
67
|
+
}
|
|
68
|
+
</style>
|
|
69
|
+
</template>
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export const DEMOS_SPARKLINE: Record<string, unknown> = {
|
|
73
|
+
Sparkline: SparklineUsage,
|
|
74
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Pretui — Spinner: an indeterminate busy indicator, sized in pixels.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { htmlSafe } from '@ember/template';
|
|
4
|
+
import type { PretuiSize, PretuiSizeArg } from '../pretui-primitives';
|
|
5
|
+
import { resolvePixelSize } from '../internal/feedback';
|
|
6
|
+
|
|
7
|
+
const SPINNER_PX: Record<PretuiSize, number> = {
|
|
8
|
+
xs: 9,
|
|
9
|
+
s: 11,
|
|
10
|
+
m: 13,
|
|
11
|
+
l: 17,
|
|
12
|
+
xl: 22,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export interface SpinnerSignature {
|
|
16
|
+
Args: {
|
|
17
|
+
/** pixels, or any spelling of the `xs|s|m|l|xl` scale */
|
|
18
|
+
size?: number | PretuiSizeArg;
|
|
19
|
+
};
|
|
20
|
+
Element: HTMLSpanElement;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// `aria-label` deliberately stays a plain attribute above `...attributes`,
|
|
24
|
+
// not an `@arg`: a caller who needs a different accessible name passes
|
|
25
|
+
// `aria-label='…'` and splattributes wins. Promoting it to an arg is the
|
|
26
|
+
// native-attribute-swallowing bug this whole alias pass exists to avoid.
|
|
27
|
+
export class Spinner extends Component<SpinnerSignature> {
|
|
28
|
+
get style() {
|
|
29
|
+
let size = resolvePixelSize(this.args.size, SPINNER_PX);
|
|
30
|
+
return htmlSafe(`width: ${size}px; height: ${size}px`);
|
|
31
|
+
}
|
|
32
|
+
<template>
|
|
33
|
+
<span class='pretui-spinner' role='status' aria-label='Loading' style={{this.style}} data-test-pretui-spinner ...attributes></span>
|
|
34
|
+
<style scoped>
|
|
35
|
+
@layer PretComponent {
|
|
36
|
+
@keyframes pretui-spin {
|
|
37
|
+
to {
|
|
38
|
+
transform: rotate(360deg);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
.pretui-spinner {
|
|
42
|
+
display: inline-block;
|
|
43
|
+
border-radius: 50%;
|
|
44
|
+
border: 1.5px solid color-mix(in oklch, currentColor 25%, transparent);
|
|
45
|
+
border-top-color: currentColor;
|
|
46
|
+
animation: pretui-spin 0.7s linear infinite;
|
|
47
|
+
flex: none;
|
|
48
|
+
}
|
|
49
|
+
@media (prefers-reduced-motion: reduce) {
|
|
50
|
+
.pretui-spinner {
|
|
51
|
+
animation-duration: 2.8s;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
</style>
|
|
56
|
+
</template>
|
|
57
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
The smallest possible "something is happening": a ring that spins, sized in pixels, inheriting the current text colour. Use it inline — inside a **Button**'s busy state, beside a label, in a table cell — where the duration is unknown and there is no room for anything larger. If the operation has a known extent, use **ProgressBar**. If the whole region is loading and you want a shape hint, use **Skeleton**. If you want a labelled loader with an elapsed clock, use **LoadingState**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@size? (13)
|
|
9
|
+
Element: HTMLSpanElement
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
One arg, and it sets `width` and `height` inline. Everything else is inherited.
|
|
13
|
+
|
|
14
|
+
**The ring is `currentColor`.** The border is `color-mix(in srgb, currentColor 25%, transparent)` with `border-top-color: currentColor`, so a Spinner takes the colour of whatever text it sits in — white inside an accent Button, `--muted-foreground` in a table cell — with no tone arg and no variant. That is the reason the component has one argument.
|
|
15
|
+
|
|
16
|
+
`flex: none` means it never shrinks in a flex row, which is the failure mode of hand-rolled spinners next to a long label.
|
|
17
|
+
|
|
18
|
+
`display: inline-block` (not `inline-flex`) keeps it on the text baseline rather than centring it, which matters when it sits mid-sentence.
|
|
19
|
+
|
|
20
|
+
## Prior art
|
|
21
|
+
|
|
22
|
+
**Web Awesome `wa-spinner`** has **zero properties and zero slots** — an SVG with `role="progressbar"` and a localized `aria-label` of "loading", themed entirely through `--track-width`, `--track-color`, `--indicator-color` and `--speed`. That is the closest philosophical match, and its four custom properties are the thing Pretui lacks. **React Spectrum** has no separate spinner; `ProgressCircle isIndeterminate` covers it. **shadcn** has no spinner component at all — the convention is a Lucide `Loader2` icon with `animate-spin`.
|
|
23
|
+
|
|
24
|
+
Pretui's `currentColor` inheritance is a real improvement on Web Awesome's `--indicator-color`: it needs no configuration at every call site to look right, and it _cannot_ be wrong inside a Button that changes tone.
|
|
25
|
+
|
|
26
|
+
Where it is behind: **no speed, thickness or color tokens.** The 1.5px border and 0.7s duration are hard-coded, so a theme cannot make spinners slower or heavier. Web Awesome's `--speed` in particular is the knob a calm theme wants.
|
|
27
|
+
|
|
28
|
+
Note that **Button embeds its own copy of this ring** rather than composing `Spinner` — the same CSS, duplicated. Worth consolidating.
|
|
29
|
+
|
|
30
|
+
## Accessibility
|
|
31
|
+
|
|
32
|
+
No APG pattern. The two legitimate treatments are `role="progressbar"` with no `aria-valuenow` (the indeterminate contract) or `role="status"` for an announced "Loading…".
|
|
33
|
+
|
|
34
|
+
Pretui uses `role="status"` with `aria-label="Loading"`, and that combination has a specific problem:
|
|
35
|
+
|
|
36
|
+
- **`role="status"` is a live region, and this one is created with its content already in place.** A live region must exist in the DOM _before_ its content changes to be announced. A spinner that mounts when a fetch begins will frequently announce nothing at all — the region and its accessible name arrive together, which is exactly the case screen readers skip. `role="progressbar"` with no `aria-valuenow` would be the more honest choice here: it describes the element rather than trying to announce it.
|
|
37
|
+
- **Every spinner on a page announces the same literal "Loading"**, with no way to say what is loading. There is no `@label` arg; you can pass `aria-label` through `...attributes`, and you should.
|
|
38
|
+
- **Nothing announces when loading _finishes_.** The spinner unmounts silently. This is the other half of the pattern and it belongs to the caller — write "Loaded 24 results" into a persistent live region.
|
|
39
|
+
- **Inside a `<Button @busy>`, the button is `disabled`**, so focus is lost from it and the spinner is inside an element removed from the tab order. The busy state is silent to assistive tech in that path.
|
|
40
|
+
- **Reduced motion slows the animation to 2.8s rather than stopping it.** This is a defensible reading — a spinner that does not spin conveys nothing — and is gentler than the common approach of hiding it entirely. It is not a full `prefers-reduced-motion` stop, so a user who cannot tolerate any looping motion is not fully served; a static ring plus text would be.
|
|
41
|
+
- The element is empty, so nothing else is announced.
|
|
42
|
+
|
|
43
|
+
## Theming
|
|
44
|
+
|
|
45
|
+
`currentColor` for both the track (at 25% alpha) and the indicator. That is the entire palette — there are no spinner-specific tokens at all, which is either the cleanest thing about it or the most limiting, depending on what you need.
|
|
46
|
+
|
|
47
|
+
The 1.5px border width, 0.7s duration (2.8s under reduced motion), and the 13px default size are hard-coded. A theme wanting a heavier or slower spinner must fork the component. Since it inherits ink, a theme only needs to ensure `--foreground`, `--muted-foreground` and each Button tone's on-color all read acceptably at 25% alpha — the track is the part that disappears first on low-contrast surfaces.
|
|
48
|
+
|
|
49
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Pretui — Spinner usage page.
|
|
2
|
+
import GlimmerComponent from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Spinner } from './spinner';
|
|
6
|
+
|
|
7
|
+
// ── Spinner ← loading-indicator/usage.gts + circle-spinner/usage.gts ─────
|
|
8
|
+
// Dropped knobs: color (Spinner inherits currentColor — tint the wrapper,
|
|
9
|
+
// shown in the specimen), variant (no theme-variant matrix; currentColor
|
|
10
|
+
// covers it).
|
|
11
|
+
class SpinnerUsage extends GlimmerComponent {
|
|
12
|
+
@tracked size = 20;
|
|
13
|
+
setSize = (v: number | null) => {
|
|
14
|
+
if (v !== null) {
|
|
15
|
+
this.size = v;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
<template>
|
|
19
|
+
<FreestyleUsage
|
|
20
|
+
@name='Spinner'
|
|
21
|
+
@description='Default loading indicator for Boxel components.'
|
|
22
|
+
>
|
|
23
|
+
<:example>
|
|
24
|
+
<Spinner @size={{this.size}} />
|
|
25
|
+
<span class='tint-primary'><Spinner @size={{this.size}} /></span>
|
|
26
|
+
<span class='tint-danger'><Spinner @size={{this.size}} /></span>
|
|
27
|
+
<p class='note'>Stroke color follows currentColor — the tinted
|
|
28
|
+
specimens wrap the spinner in colored text.</p>
|
|
29
|
+
</:example>
|
|
30
|
+
<:api as |Args|>
|
|
31
|
+
<Args.Number
|
|
32
|
+
@name='size'
|
|
33
|
+
@description='Sets height and width for loading indicator icon.'
|
|
34
|
+
@defaultValue={{13}}
|
|
35
|
+
@value={{this.size}}
|
|
36
|
+
@min={{10}}
|
|
37
|
+
@max={{48}}
|
|
38
|
+
@step={{1}}
|
|
39
|
+
@onInput={{this.setSize}}
|
|
40
|
+
/>
|
|
41
|
+
</:api>
|
|
42
|
+
</FreestyleUsage>
|
|
43
|
+
<style scoped>
|
|
44
|
+
.tint-primary {
|
|
45
|
+
color: var(--pretui-primary-ink, var(--boxel-highlight-hover));
|
|
46
|
+
display: inline-flex;
|
|
47
|
+
}
|
|
48
|
+
.tint-danger {
|
|
49
|
+
color: var(--pretui-destructive-ink, var(--boxel-danger));
|
|
50
|
+
display: inline-flex;
|
|
51
|
+
}
|
|
52
|
+
.note {
|
|
53
|
+
flex-basis: 100%;
|
|
54
|
+
text-align: center;
|
|
55
|
+
margin: 0;
|
|
56
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
57
|
+
color: var(--muted-foreground);
|
|
58
|
+
}
|
|
59
|
+
</style>
|
|
60
|
+
</template>
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const DEMOS_SPINNER: Record<string, unknown> = {
|
|
64
|
+
Spinner: SpinnerUsage,
|
|
65
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Pretui — SplitPanes: drag-resizable panes, a thin wrap of boxel-ui ResizablePanelGroup.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { ResizablePanelGroup as BoxelResizablePanelGroup } from '@cardstack/boxel-ui/components';
|
|
4
|
+
|
|
5
|
+
// ── SplitPanes — WRAPS boxel-ui ──────────────────────────────────────────
|
|
6
|
+
// boxel-ui's ResizablePanelGroup drag-resize engine intact: per-panel
|
|
7
|
+
// constraint solving (defaultSize/minSize/maxSize/collapsible, in
|
|
8
|
+
// percent), pointer-captured drag, double-click collapse (reversible via
|
|
9
|
+
// @reverseCollapse). The yielded Panel/Handle pair passes straight
|
|
10
|
+
// through. Handle dress note: boxel's handle declares its own
|
|
11
|
+
// --boxel-panel-resize-handle-* colors FROM --boxel-450 /
|
|
12
|
+
// --boxel-highlight, so the wrapper re-skins one level up — remapping
|
|
13
|
+
// those two channel tokens to the Pretui equivalents for this subtree.
|
|
14
|
+
|
|
15
|
+
export interface SplitPanesSignature {
|
|
16
|
+
Args: {
|
|
17
|
+
/** 'horizontal' (default) lays panes left-to-right */
|
|
18
|
+
orientation?: 'horizontal' | 'vertical';
|
|
19
|
+
/** double-click collapse folds the LAST panel instead of the first */
|
|
20
|
+
reverseCollapse?: boolean;
|
|
21
|
+
onLayoutChange?: (layout: number[]) => void;
|
|
22
|
+
};
|
|
23
|
+
Blocks: {
|
|
24
|
+
/* eslint-disable @typescript-eslint/no-explicit-any -- the yielded
|
|
25
|
+
pair are boxel-ui's curried ResizablePanel / ResizeHandle */
|
|
26
|
+
default: [any, any];
|
|
27
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
28
|
+
};
|
|
29
|
+
Element: HTMLDivElement;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export class SplitPanes extends Component<SplitPanesSignature> {
|
|
33
|
+
get orientation(): 'horizontal' | 'vertical' {
|
|
34
|
+
return this.args.orientation ?? 'horizontal';
|
|
35
|
+
}
|
|
36
|
+
<template>
|
|
37
|
+
<div
|
|
38
|
+
class='pretui-splitpanes'
|
|
39
|
+
data-orientation={{this.orientation}}
|
|
40
|
+
data-test-pretui-split-panes
|
|
41
|
+
...attributes
|
|
42
|
+
>
|
|
43
|
+
<BoxelResizablePanelGroup
|
|
44
|
+
@orientation={{this.orientation}}
|
|
45
|
+
@reverseCollapse={{@reverseCollapse}}
|
|
46
|
+
@onLayoutChange={{@onLayoutChange}}
|
|
47
|
+
as |Panel Handle|
|
|
48
|
+
>
|
|
49
|
+
{{yield Panel Handle}}
|
|
50
|
+
</BoxelResizablePanelGroup>
|
|
51
|
+
</div>
|
|
52
|
+
<style scoped>
|
|
53
|
+
@layer PretComponent {
|
|
54
|
+
/* The group fills its host — give the wrapping context a height.
|
|
55
|
+
Handle idle color rides the Pretui hairline voice; hover snaps to
|
|
56
|
+
primary (both via the remapped --boxel-* channel, see above). */
|
|
57
|
+
.pretui-splitpanes {
|
|
58
|
+
height: 100%;
|
|
59
|
+
min-height: 0;
|
|
60
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
61
|
+
letter-spacing: var(--track-ui, 0.01em);
|
|
62
|
+
color: var(--foreground);
|
|
63
|
+
--boxel-450: var(--muted-foreground);
|
|
64
|
+
--boxel-highlight: var(--primary);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
</style>
|
|
68
|
+
</template>
|
|
69
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
Two or more resizable panes with a draggable divider between them. Use it for a persistent side-by-side arrangement the user should be able to retune — a list beside a detail, an editor beside a preview, a tree beside a canvas. If the second region is transient, use **Drawer** or **Popover**. If the split is fixed, plain CSS grid is lighter. If you need a full canvas workspace, that is **NodeCanvas**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@orientation? 'horizontal' | 'vertical' (default 'horizontal')
|
|
9
|
+
@reverseCollapse?
|
|
10
|
+
@onLayoutChange?(layout: number[])
|
|
11
|
+
<:default as |Panel, Handle|>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`Panel` takes `defaultSize` / `minSize` / `maxSize` / `collapsible`, all in **percent**. `Handle` is placed between panels.
|
|
15
|
+
|
|
16
|
+
Two behaviours worth knowing. **Double-clicking a handle collapses a pane**, and `@reverseCollapse` switches which one — the last instead of the first. And `@onLayoutChange` reports the whole layout as an array of percentages, which is what you persist if you want the split to survive a reload; nothing here stores it for you.
|
|
17
|
+
|
|
18
|
+
## Prior art
|
|
19
|
+
|
|
20
|
+
This is a **thin runtime wrap of boxel-ui's `ResizablePanelGroup`**, per the territory's foundation rule: the machinery is boxel-ui's and only the cloth changes. The engine supplies per-panel constraint solving, pointer-captured drag (so the drag survives the pointer leaving the handle), and the double-click collapse.
|
|
21
|
+
|
|
22
|
+
The dress note is the interesting implementation detail: **boxel-ui's handle declares its own `--boxel-panel-resize-handle-*` colors _from_ `--boxel-450` and `--boxel-highlight`**, so the wrapper cannot repoint the handle tokens directly — it has to remap those two upstream channel tokens for the subtree instead. That is the general shape of the retrofit pattern in this kit: when a token is derived rather than read, you re-skin one level up.
|
|
23
|
+
|
|
24
|
+
Against the field: **`react-resizable-panels`** (which shadcn wraps as `ResizablePanel`) is the reference — `direction`, `defaultSize`/`minSize`/`maxSize`, `collapsible`/`collapsedSize`, `onLayout`, `autoSaveId` for localStorage persistence, and `ResizableHandle withHandle`. **Web Awesome `wa-split-panel`** takes `position`/`position-in-pixels`, `vertical`, `disabled`, `primary`, `snap` and `snap-threshold`. **React Spectrum** has no equivalent.
|
|
25
|
+
|
|
26
|
+
Where Pretui/boxel-ui is comparable or better: percent-based constraints with real solving (Web Awesome's single `position` cannot express a three-pane minimum), and pointer capture done properly.
|
|
27
|
+
|
|
28
|
+
Where it is behind: **no `autoSaveId`** (persistence is entirely yours via `@onLayoutChange`), **no snap points** (Web Awesome's `snap`/`snap-threshold` is the nicest thing in that component), and no visible grip affordance arg equivalent to shadcn's `withHandle`.
|
|
29
|
+
|
|
30
|
+
## Accessibility
|
|
31
|
+
|
|
32
|
+
Governing pattern: **ARIA `separator` with `aria-valuenow`** — a focusable separator is one of the few cases where `separator` is an interactive role. The contract is: `role="separator"` on the handle, `tabindex="0"`, `aria-valuenow`/`aria-valuemin`/`aria-valuemax` describing the position as a percentage, `aria-orientation`, an accessible name (`aria-label` such as "Resize panels"), and **arrow keys moving the divider** — Left/Right for a horizontal split, Up/Down for a vertical one, with Home/End going to the extremes and Enter or F6 toggling collapse.
|
|
33
|
+
|
|
34
|
+
**All of that belongs to boxel-ui's engine, not to this wrapper.** What the engine does today:
|
|
35
|
+
|
|
36
|
+
- **The handle is a native `<button>` named "Resize handle".** Tab reaches it, and double-click collapses the pane.
|
|
37
|
+
- **There is no keyboard resizing and no `aria-valuenow`.** Arrow keys do nothing on the handle, and a screen-reader user is not told where the divider sits. That is a **WCAG 2.1.1 Keyboard** gap for arbitrary resizing, and **WCAG 2.5.7 Dragging Movements** has only the collapse as a single-pointer alternative. The fix belongs in boxel-ui's ResizeHandle.
|
|
38
|
+
- **Name each handle.** The yielded `Handle` splats its attributes after its own label, so `aria-label='Resize the sidebar'` replaces the generic name. In a three-pane layout, "Resize handle" three times is not enough.
|
|
39
|
+
- `@onLayoutChange` fires continuously during a drag; do not put an announcement on it.
|
|
40
|
+
|
|
41
|
+
## Theming
|
|
42
|
+
|
|
43
|
+
Consumed: `--text-ui-md`, `--track-ui`, and the layout tokens.
|
|
44
|
+
|
|
45
|
+
Remapped for the subtree: `--boxel-450` and `--boxel-highlight` → the Pretui handle colors (rest and active). Because the handle's own custom properties are _derived_ from those two, this is the only place a theme can reach the handle — repointing `--boxel-panel-resize-handle-*` directly has no effect.
|
|
46
|
+
|
|
47
|
+
`data-orientation` is reflected on the wrapper for styling hooks. Note the group fills its host, so **the wrapping context must have a height** — a SplitPanes in an auto-height container collapses to nothing, which is the first thing to check when it renders blank.
|
|
48
|
+
|
|
49
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
50
|
+
|
|
51
|
+
## React ecosystem
|
|
52
|
+
|
|
53
|
+
shadcn `Resizable` (`react-resizable-panels`) is this tile (alias stub).
|
|
54
|
+
Ant/Mantine `Splitter` too.
|