@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,58 @@
|
|
|
1
|
+
// Pretui — Accordion: disclosure panels with animated expand and collapse, a thin wrap of boxel-ui Accordion.
|
|
2
|
+
import type { TemplateOnlyComponent } from '@ember/component/template-only';
|
|
3
|
+
import { Accordion as BoxelAccordion } from '@cardstack/boxel-ui/components';
|
|
4
|
+
|
|
5
|
+
// ── Accordion — WRAPS boxel-ui ───────────────────────────────────────────
|
|
6
|
+
// boxel-ui's disclosure engine is the value: the grid-template-rows
|
|
7
|
+
// 0fr→1fr height transition, ARIA region wiring, inert-when-closed
|
|
8
|
+
// content. The wrapper feeds Pretui cloth through the --boxel-accordion-*
|
|
9
|
+
// knob channel plus the semantic tokens the engine already reads
|
|
10
|
+
// (--border, --radius, --ring). State stays with the consumer — boxel's
|
|
11
|
+
// controlled @isOpen/@onClick per item — so single- or multi-open policy
|
|
12
|
+
// is yours; the yielded contextual A.Item is boxel-ui's AccordionItem
|
|
13
|
+
// passed straight through (blocks <:title>/<:content>).
|
|
14
|
+
|
|
15
|
+
export interface AccordionSignature {
|
|
16
|
+
Args: {
|
|
17
|
+
/** draw the rounded container border around the group */
|
|
18
|
+
displayContainer?: boolean;
|
|
19
|
+
};
|
|
20
|
+
Blocks: {
|
|
21
|
+
/* eslint-disable @typescript-eslint/no-explicit-any -- the yielded
|
|
22
|
+
contextual hash carries boxel-ui's AccordionItem; its signature
|
|
23
|
+
type is not exported from the components barrel */
|
|
24
|
+
default: [{ Item: any }];
|
|
25
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
26
|
+
};
|
|
27
|
+
Element: HTMLDivElement;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export const Accordion: TemplateOnlyComponent<AccordionSignature> = <template>
|
|
31
|
+
<div class='pretui-accordion' data-test-pretui-accordion ...attributes>
|
|
32
|
+
<BoxelAccordion @displayContainer={{@displayContainer}} as |A|>
|
|
33
|
+
{{yield A}}
|
|
34
|
+
</BoxelAccordion>
|
|
35
|
+
</div>
|
|
36
|
+
<style scoped>
|
|
37
|
+
@layer PretComponent {
|
|
38
|
+
/* Pretui dress via the token channel. The engine reads --ring for the
|
|
39
|
+
trigger focus outline and var(--radius) for the container corner;
|
|
40
|
+
both are mapped to the Pretui equivalents here. Title voice: body
|
|
41
|
+
size, 600 weight — the Panel header voice, not boxel's 700. */
|
|
42
|
+
.pretui-accordion {
|
|
43
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
44
|
+
letter-spacing: var(--track-ui, 0.01em);
|
|
45
|
+
color: var(--foreground);
|
|
46
|
+
--ring: var(--primary);
|
|
47
|
+
--radius: var(--radius-surface, 10px);
|
|
48
|
+
--boxel-accordion-border: 1px solid var(--border);
|
|
49
|
+
--boxel-accordion-item-border: 1px solid var(--border);
|
|
50
|
+
--boxel-accordion-item-min-height: var(--control-h, 28px);
|
|
51
|
+
--boxel-accordion-title-font-weight: 600;
|
|
52
|
+
--boxel-accordion-trigger-padding-block: var(--space-3, 8px);
|
|
53
|
+
--boxel-accordion-transition: var(--pretui-dur-snap, 180ms)
|
|
54
|
+
var(--pretui-ease-snap, ease);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
</style>
|
|
58
|
+
</template>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A stack of disclosure panels: headers you click to reveal content. Use it when several sections belong together and the user needs only one or two at a time — FAQs, a settings page with grouped options, a long record split into topics. If the sections are peers and only one should ever be visible, use **Tabs**. If the sections are part of a form and their contents can be invalid, use **FormSection**, which knows about issue counts and can open itself when a submit is refused. If it is a single collapse, `<details>` is enough.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@displayContainer? — draw the rounded border around the group
|
|
9
|
+
<:default as |A|> — yields { Item }
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
The yielded `A.Item` takes its own open state and click handler, with `<:title>` and `<:content>` blocks.
|
|
13
|
+
|
|
14
|
+
**State stays with the consumer.** There is no `type='single' | 'multiple'`, no `value`, no `collapsible` policy — each item is individually controlled, so single-open, multi-open and accordion-with-one-always-open are all things you implement in three lines at the call site. That is more work than Radix's `type` prop and it is the honest consequence of the wrap (below).
|
|
15
|
+
|
|
16
|
+
## Prior art
|
|
17
|
+
|
|
18
|
+
This is a **thin runtime wrap of boxel-ui's `Accordion` + `AccordionItem`**, and that is the design: foundation rule 1 says the machinery is boxel-ui's and only the cloth changes. What the engine supplies is worth naming — the `grid-template-rows: 0fr → 1fr` height transition (the modern way to animate to auto height without measuring), ARIA region wiring, and content that goes inert when closed.
|
|
19
|
+
|
|
20
|
+
The wrapper feeds Pretui cloth through the `--boxel-accordion-*` knob channel plus the semantic tokens the engine already reads (`--border`, `--radius`, `--ring`). **No Pretui CSS reaches into boxel-ui markup**, so a boxel-ui upgrade cannot break the dress.
|
|
21
|
+
|
|
22
|
+
Against the field: **Radix `Accordion`** has `type` (`single`/`multiple`, required), `value`/`defaultValue`/`onValueChange`, `collapsible`, `orientation`, and animates via `--radix-accordion-content-height`. **Web Awesome `wa-accordion`** (experimental) has `mode` (`single | single-collapsible | multiple`), `heading-level` (`1`–`6` or `none`), `icon-placement`, `appearance`, cancelable `wa-expand`/`wa-collapse`, and `expandAll()`/`collapseAll()`. Both own the open-state policy that Pretui delegates.
|
|
23
|
+
|
|
24
|
+
Where Pretui's approach wins: **there is exactly one disclosure engine in the realm.** Accordion, and anything else that adopts boxel-ui's, share one implementation of the height transition and the inert-when-closed behaviour, rather than each kit component reimplementing it. The `0fr → 1fr` grid trick is also better than Radix's measured-height custom property — no measurement, no reflow, and it interpolates correctly when content changes size mid-transition.
|
|
25
|
+
|
|
26
|
+
Where it is behind, plainly: **no `mode` policy** (you write it), **no `heading-level`** (Web Awesome's is the right shape and this has no equivalent), no `expandAll`/`collapseAll`, and the whole component is only as good as boxel-ui's ARIA — which the Pretui layer neither adds to nor can fix.
|
|
27
|
+
|
|
28
|
+
The title voice is deliberately re-cut: body size at weight 600, the **Panel** header voice, not boxel-ui's 700.
|
|
29
|
+
|
|
30
|
+
## Accessibility
|
|
31
|
+
|
|
32
|
+
Governing pattern: APG **Accordion**, and it is worth stating the pattern precisely because most people over-implement it.
|
|
33
|
+
|
|
34
|
+
APG requires: the header title in a `button`, **wrapped in an element with `role="heading"` and an appropriate `aria-level`** (or a native `<h2>`–`<h6>`), with **the button as the only element inside the heading**; `aria-expanded` on the button (required); `aria-controls` pointing at the panel; `aria-disabled` when an open panel cannot be collapsed. `role="region"` on the panel is **optional** and should be avoided past roughly six panels, to prevent landmark proliferation.
|
|
35
|
+
|
|
36
|
+
The keyboard contract is the entire list: **Enter/Space toggle; Tab and Shift+Tab move through the page tab sequence.** Down/Up/Home/End are **not** in the pattern at any optionality level — they come from APG's _example_, not the spec — and an accordion is explicitly **not a single tab stop**.
|
|
37
|
+
|
|
38
|
+
What that means here:
|
|
39
|
+
|
|
40
|
+
- **The ARIA is boxel-ui's, not Pretui's.** `aria-expanded`, `aria-controls` and the region wiring come from the engine. Verify them against your boxel-ui version rather than trusting this page — the Pretui layer adds no ARIA and can fix none.
|
|
41
|
+
- **Heading level is the gap to check first.** The pattern requires a real heading wrapping the button, at the right level. Pretui exposes no `@headingLevel`, so whatever boxel-ui emits is what you get, at every depth. This is the same problem **Panel**, **Toolbar** and **EmptyState** have in this territory, and Web Awesome's `heading-level` prop is the fix all four want.
|
|
42
|
+
- **Content is inert when closed**, which is right — a collapsed panel's controls must not be reachable by Tab. Note this differs from **FormSection**, which keeps its fields registered so their issues still route.
|
|
43
|
+
- **Focus is not managed by the component**, correctly: no roving tabindex, no arrow keys, nothing to get wrong.
|
|
44
|
+
|
|
45
|
+
## Theming
|
|
46
|
+
|
|
47
|
+
Consumed directly: `--foreground`, `--text-ui-md`, `--track-ui`.
|
|
48
|
+
|
|
49
|
+
Remapped into the boxel-ui channel: `--ring` ← `--primary` (the trigger's focus outline — note the engine _does_ paint a focus ring, unlike several hand-rolled Pretui controls), `--radius` ← `--radius-surface`, `--boxel-accordion-border` and `--boxel-accordion-item-border` ← `--border`, `--boxel-accordion-item-min-height` ← `--control-h`, `--boxel-accordion-title-font-weight` (600), `--boxel-accordion-trigger-padding-block` ← `--space-3`, `--boxel-accordion-transition` ← `--pretui-dur-snap` / `--pretui-ease-snap`.
|
|
50
|
+
|
|
51
|
+
A theme retunes the accordion entirely through those tokens. The one thing to verify per theme is `--ring` against the header background, since the focus indicator here is the engine's and is not the same treatment as the rest of the kit's controls.
|
|
52
|
+
|
|
53
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
54
|
+
|
|
55
|
+
## React ecosystem
|
|
56
|
+
|
|
57
|
+
A stack of **Collapsible**s. Single-panel disclosure is **Collapsible**
|
|
58
|
+
itself (Aria `Disclosure`), which animates its own height and keeps its
|
|
59
|
+
region mounted. Agent `type=single|multiple` maps to "one open" vs "many
|
|
60
|
+
open".
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Pretui — Accordion usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Accordion } from './accordion';
|
|
6
|
+
|
|
7
|
+
// ── Accordion ← accordion/usage.gts ──────────────────────────────────────
|
|
8
|
+
// Dropped knobs: the --boxel-accordion-* cssVars rows (the CSS knob layer
|
|
9
|
+
// is not ported; the wrapper pins that channel to Pretui tokens). Item
|
|
10
|
+
// @className/@contentClass pass through untyped (the contextual Item is
|
|
11
|
+
// boxel's own). The demo keeps upstream's single-open policy: clicking an
|
|
12
|
+
// open item closes it, clicking another moves the open state.
|
|
13
|
+
class AccordionUsage extends Component {
|
|
14
|
+
@tracked displayContainer = true;
|
|
15
|
+
@tracked openId: string | null = 'schema';
|
|
16
|
+
setDisplayContainer = (v: boolean) => (this.displayContainer = v);
|
|
17
|
+
toggle = (id: string) => {
|
|
18
|
+
this.openId = this.openId === id ? null : id;
|
|
19
|
+
};
|
|
20
|
+
toggleSchema = (_e: Event) => this.toggle('schema');
|
|
21
|
+
togglePlayground = (_e: Event) => this.toggle('playground');
|
|
22
|
+
toggleDisabled = (_e: Event) => this.toggle('disabled');
|
|
23
|
+
get schemaOpen() {
|
|
24
|
+
return this.openId === 'schema';
|
|
25
|
+
}
|
|
26
|
+
get playgroundOpen() {
|
|
27
|
+
return this.openId === 'playground';
|
|
28
|
+
}
|
|
29
|
+
get disabledOpen() {
|
|
30
|
+
return this.openId === 'disabled';
|
|
31
|
+
}
|
|
32
|
+
get usage() {
|
|
33
|
+
let bit = this.displayContainer ? ' @displayContainer={{true}}' : '';
|
|
34
|
+
return `<Accordion${bit} as |A|>\n <A.Item @id='schema' @isOpen={{this.schemaOpen}} @onClick={{this.toggleSchema}}>\n <:title>Schema editor</:title>\n <:content>…</:content>\n </A.Item>\n</Accordion>`;
|
|
35
|
+
}
|
|
36
|
+
<template>
|
|
37
|
+
<FreestyleUsage
|
|
38
|
+
@name='Accordion'
|
|
39
|
+
@description="Collapsible disclosure panels with a clickable header and animated expand/collapse — group several to build FAQ entries, settings groups, or any progressive-disclosure UI. Wraps boxel-ui's Accordion engine (grid-rows height transition, ARIA region wiring) in the Pretui cloth; open state is controlled per item, so single- or multi-open policy is yours."
|
|
40
|
+
@source={{this.usage}}
|
|
41
|
+
>
|
|
42
|
+
<:example>
|
|
43
|
+
<Accordion @displayContainer={{this.displayContainer}} as |A|>
|
|
44
|
+
<A.Item
|
|
45
|
+
@id='schema'
|
|
46
|
+
@isOpen={{this.schemaOpen}}
|
|
47
|
+
@onClick={{this.toggleSchema}}
|
|
48
|
+
>
|
|
49
|
+
<:title>Schema editor</:title>
|
|
50
|
+
<:content>
|
|
51
|
+
<p class='accordion-copy'>Fields, computeds, and relationships —
|
|
52
|
+
the card's typed shape. The content region is inert while
|
|
53
|
+
closed and transitions its height open.</p>
|
|
54
|
+
</:content>
|
|
55
|
+
</A.Item>
|
|
56
|
+
<A.Item
|
|
57
|
+
@id='playground'
|
|
58
|
+
@isOpen={{this.playgroundOpen}}
|
|
59
|
+
@onClick={{this.togglePlayground}}
|
|
60
|
+
>
|
|
61
|
+
<:title>Playground</:title>
|
|
62
|
+
<:content>
|
|
63
|
+
<p class='accordion-copy'>Try instances against the schema in
|
|
64
|
+
every format.</p>
|
|
65
|
+
<p class='accordion-copy'>A second paragraph, to show the region
|
|
66
|
+
grows to fit whatever the content block renders.</p>
|
|
67
|
+
</:content>
|
|
68
|
+
</A.Item>
|
|
69
|
+
<A.Item
|
|
70
|
+
@id='disabled'
|
|
71
|
+
@isOpen={{this.disabledOpen}}
|
|
72
|
+
@onClick={{this.toggleDisabled}}
|
|
73
|
+
@disabled={{true}}
|
|
74
|
+
>
|
|
75
|
+
<:title>Disabled item</:title>
|
|
76
|
+
<:content>
|
|
77
|
+
<p class='accordion-copy'>Never opens.</p>
|
|
78
|
+
</:content>
|
|
79
|
+
</A.Item>
|
|
80
|
+
</Accordion>
|
|
81
|
+
</:example>
|
|
82
|
+
<:api as |Args|>
|
|
83
|
+
<Args.Bool
|
|
84
|
+
@name='displayContainer'
|
|
85
|
+
@defaultValue={{false}}
|
|
86
|
+
@value={{this.displayContainer}}
|
|
87
|
+
@description='Draws the rounded container border around the group.'
|
|
88
|
+
@onInput={{this.setDisplayContainer}}
|
|
89
|
+
/>
|
|
90
|
+
<Args.Yield
|
|
91
|
+
@description='Yields { Item } — boxel-ui AccordionItem passed through. Item args: @id (string, wires ARIA), @isOpen (controlled), @onClick, @disabled; blocks <:title> and <:content>.'
|
|
92
|
+
@hideControls={{true}}
|
|
93
|
+
/>
|
|
94
|
+
<Args.String
|
|
95
|
+
@name='Item @id'
|
|
96
|
+
@description='Unique id per item — becomes the trigger id and the aria-controls target.'
|
|
97
|
+
@hideControls={{true}}
|
|
98
|
+
/>
|
|
99
|
+
<Args.Bool
|
|
100
|
+
@name='Item @isOpen'
|
|
101
|
+
@description='Controlled open state for the item; the height transition and inert content follow it.'
|
|
102
|
+
@hideControls={{true}}
|
|
103
|
+
/>
|
|
104
|
+
<Args.Action
|
|
105
|
+
@name='Item @onClick'
|
|
106
|
+
@description='Trigger click handler — implement toggle/exclusive policy here.'
|
|
107
|
+
@hideControls={{true}}
|
|
108
|
+
/>
|
|
109
|
+
<Args.Bool
|
|
110
|
+
@name='Item @disabled'
|
|
111
|
+
@description='Disables the trigger button.'
|
|
112
|
+
@hideControls={{true}}
|
|
113
|
+
/>
|
|
114
|
+
</:api>
|
|
115
|
+
</FreestyleUsage>
|
|
116
|
+
<style scoped>
|
|
117
|
+
.accordion-copy {
|
|
118
|
+
margin: 0 0 6px;
|
|
119
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
120
|
+
color: var(--muted-foreground);
|
|
121
|
+
max-width: 52ch;
|
|
122
|
+
}
|
|
123
|
+
</style>
|
|
124
|
+
</template>
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export const DEMOS_ACCORDION: Record<string, unknown> = {
|
|
128
|
+
Accordion: AccordionUsage,
|
|
129
|
+
};
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
// Pretui — ActionBar: the bar that appears when a selection exists, carrying the actions that apply to it.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
4
|
+
import { modifier } from 'ember-modifier';
|
|
5
|
+
import { Button } from './button';
|
|
6
|
+
import { IconButton } from './icon-button';
|
|
7
|
+
import type { PretuiTone } from '../pretui-primitives';
|
|
8
|
+
import { Menu } from './menu';
|
|
9
|
+
import type { MenuEntry } from '../internal/menu';
|
|
10
|
+
import { destructiveLast } from '../internal/menu';
|
|
11
|
+
import { listen } from '../focus';
|
|
12
|
+
import { iconFor } from '../icon-registry';
|
|
13
|
+
|
|
14
|
+
// ── ActionBar: composed, not rebuilt (react-spectrum ActionBar) ─────────
|
|
15
|
+
//
|
|
16
|
+
// Every control in the bar is an existing kit component — `Button`,
|
|
17
|
+
// `IconButton`, `Menu`. What the bar adds is the three things upstream
|
|
18
|
+
// leaves to the caller: the selection count as a sentence, an overflow
|
|
19
|
+
// threshold so a bar with nine actions does not become a scrollbar, and the
|
|
20
|
+
// APG toolbar keyboard contract (one tab stop, arrows within, Home/End).
|
|
21
|
+
//
|
|
22
|
+
// It deliberately does NOT compose `structure.gts`'s `Toolbar`: that is a
|
|
23
|
+
// page-header band whose title slot renders an `<h2>`, and "3 records
|
|
24
|
+
// selected" is not a heading. Sharing the element would mean lying in the
|
|
25
|
+
// document outline to save a flexbox rule.
|
|
26
|
+
//
|
|
27
|
+
// Realm-law notes: no timers, no `Date.now`, no `Math.random`. All listeners
|
|
28
|
+
// live in `ember-modifier`s that remove them on teardown. The bar's entrance
|
|
29
|
+
// is CSS (`@starting-style`), and under `prefers-reduced-motion` it lands on
|
|
30
|
+
// the END state — the bar is simply there.
|
|
31
|
+
|
|
32
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
33
|
+
// ActionBar
|
|
34
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
35
|
+
|
|
36
|
+
/** One action offered against the current selection. */
|
|
37
|
+
export interface ActionBarAction {
|
|
38
|
+
/** stable id, handed back to `onAction` */
|
|
39
|
+
id: string;
|
|
40
|
+
label: string;
|
|
41
|
+
/** icon-registry name; drawn only in the overflow menu, where there is
|
|
42
|
+
* room for a leading column */
|
|
43
|
+
icon?: string;
|
|
44
|
+
/** treatment axis for the inline button */
|
|
45
|
+
tone?: PretuiTone;
|
|
46
|
+
/** dimmed but still focusable and announced — an action that disappears
|
|
47
|
+
* when unavailable changes the bar's shape between selections, so the bar
|
|
48
|
+
* can never be learned */
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
/** tinted destructive, and sorted to the end of the overflow menu */
|
|
51
|
+
destructive?: boolean;
|
|
52
|
+
onAction?: (id: string) => void;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The bar's sentence. Pure, so the pluralisation is checkable without a
|
|
57
|
+
* browser — and so a caller who wants the same words somewhere else has
|
|
58
|
+
* them.
|
|
59
|
+
*/
|
|
60
|
+
export function selectionSummary(
|
|
61
|
+
count: number,
|
|
62
|
+
noun = 'item',
|
|
63
|
+
total?: number,
|
|
64
|
+
): string {
|
|
65
|
+
let safe = Number.isFinite(count) && count > 0 ? Math.trunc(count) : 0;
|
|
66
|
+
let word = safe === 1 ? noun : noun + 's';
|
|
67
|
+
let head = safe + ' ' + word + ' selected';
|
|
68
|
+
if (total !== undefined && Number.isFinite(total) && total > 0) {
|
|
69
|
+
return head + ' of ' + Math.trunc(total);
|
|
70
|
+
}
|
|
71
|
+
return head;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The APG toolbar keyboard contract, applied to whatever is inside.
|
|
76
|
+
*
|
|
77
|
+
* One tab stop for the whole bar, arrows between the controls, Home/End to
|
|
78
|
+
* the ends. Written as a modifier over `[data-actionbar-item]` rather than
|
|
79
|
+
* as per-button tracked state because the bar's contents are data-driven and
|
|
80
|
+
* partly rendered by `Menu`: the DOM is the only place that knows the final
|
|
81
|
+
* order of the controls.
|
|
82
|
+
*
|
|
83
|
+
* The tab stop is re-seated whenever the bar's controls change — a new
|
|
84
|
+
* action, a removed one, a yielded control — by a MutationObserver, so the
|
|
85
|
+
* bar never ends up with two tab stops or none.
|
|
86
|
+
*/
|
|
87
|
+
const rovingToolbar = modifier((el: HTMLElement) => {
|
|
88
|
+
let members = () =>
|
|
89
|
+
Array.from(el.querySelectorAll<HTMLElement>('[data-actionbar-item]'));
|
|
90
|
+
|
|
91
|
+
let seat = (active: number) => {
|
|
92
|
+
let list = members();
|
|
93
|
+
for (let index = 0; index < list.length; index++) {
|
|
94
|
+
(list[index] as HTMLElement).tabIndex = index === active ? 0 : -1;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
seat(0);
|
|
98
|
+
|
|
99
|
+
let onKeydown = (event: Event) => {
|
|
100
|
+
let key = (event as KeyboardEvent).key;
|
|
101
|
+
let list = members();
|
|
102
|
+
if (list.length === 0) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
let current = list.indexOf(document.activeElement as HTMLElement);
|
|
106
|
+
if (current === -1) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
let next = current;
|
|
110
|
+
if (key === 'ArrowRight' || key === 'ArrowDown') {
|
|
111
|
+
next = (current + 1) % list.length;
|
|
112
|
+
} else if (key === 'ArrowLeft' || key === 'ArrowUp') {
|
|
113
|
+
next = (current - 1 + list.length) % list.length;
|
|
114
|
+
} else if (key === 'Home') {
|
|
115
|
+
next = 0;
|
|
116
|
+
} else if (key === 'End') {
|
|
117
|
+
next = list.length - 1;
|
|
118
|
+
} else {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
event.preventDefault();
|
|
122
|
+
seat(next);
|
|
123
|
+
(list[next] as HTMLElement).focus();
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// Clicking a control makes it the tab stop, so Tab-out-and-back returns to
|
|
127
|
+
// the control the reader last used rather than to the first one.
|
|
128
|
+
let onFocusin = (event: Event) => {
|
|
129
|
+
let list = members();
|
|
130
|
+
let index = list.indexOf(event.target as HTMLElement);
|
|
131
|
+
if (index !== -1) {
|
|
132
|
+
seat(index);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// keep the reader's stop if it survived the change, otherwise the first
|
|
137
|
+
let reseat = () => {
|
|
138
|
+
let list = members();
|
|
139
|
+
let kept = list.findIndex((member) => member.tabIndex === 0);
|
|
140
|
+
seat(kept === -1 ? 0 : kept);
|
|
141
|
+
};
|
|
142
|
+
let observer = new MutationObserver(reseat);
|
|
143
|
+
observer.observe(el, { childList: true, subtree: true });
|
|
144
|
+
|
|
145
|
+
el.addEventListener('keydown', onKeydown);
|
|
146
|
+
el.addEventListener('focusin', onFocusin);
|
|
147
|
+
return () => {
|
|
148
|
+
observer.disconnect();
|
|
149
|
+
el.removeEventListener('keydown', onKeydown);
|
|
150
|
+
el.removeEventListener('focusin', onFocusin);
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
export interface ActionBarSignature {
|
|
155
|
+
Args: {
|
|
156
|
+
/** how many things are selected. Zero hides the bar entirely. */
|
|
157
|
+
count: number;
|
|
158
|
+
/** the collection's size, for "3 of 40 selected" */
|
|
159
|
+
total?: number;
|
|
160
|
+
/** singular noun; pluralised by adding an s (default 'item') */
|
|
161
|
+
noun?: string;
|
|
162
|
+
/** the actions offered against the selection */
|
|
163
|
+
actions?: readonly ActionBarAction[];
|
|
164
|
+
/** how many actions get their own button before the rest collapse into
|
|
165
|
+
* an overflow Menu (default 3) */
|
|
166
|
+
maxVisible?: number;
|
|
167
|
+
/** the overflow trigger's accessible name (default 'More actions') */
|
|
168
|
+
overflowLabel?: string;
|
|
169
|
+
/** the bar's accessible name (default 'Selection actions') */
|
|
170
|
+
label?: string;
|
|
171
|
+
/** the clear button's accessible name (default 'Clear selection') */
|
|
172
|
+
clearLabel?: string;
|
|
173
|
+
/** called by the clear button and by Escape inside the bar. Omit it and
|
|
174
|
+
* no clear button is drawn. */
|
|
175
|
+
onClear?: () => void;
|
|
176
|
+
/** pin the bar to the bottom of its containing block (default) or let
|
|
177
|
+
* it sit in normal flow */
|
|
178
|
+
position?: 'floating' | 'inline';
|
|
179
|
+
onAction?: (id: string) => void;
|
|
180
|
+
};
|
|
181
|
+
Blocks: {
|
|
182
|
+
/** extra controls, appended after the actions and before clear. Add
|
|
183
|
+
* `data-actionbar-item` to anything focusable so it joins the arrow-key
|
|
184
|
+
* rotation. */
|
|
185
|
+
default: [];
|
|
186
|
+
};
|
|
187
|
+
Element: HTMLDivElement;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export class ActionBar extends Component<ActionBarSignature> {
|
|
191
|
+
get visible(): boolean {
|
|
192
|
+
let count = this.args.count;
|
|
193
|
+
return Number.isFinite(count) && count > 0;
|
|
194
|
+
}
|
|
195
|
+
get summary(): string {
|
|
196
|
+
return selectionSummary(
|
|
197
|
+
this.args.count,
|
|
198
|
+
this.args.noun ?? 'item',
|
|
199
|
+
this.args.total,
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
get barLabel(): string {
|
|
203
|
+
return this.args.label ?? 'Selection actions';
|
|
204
|
+
}
|
|
205
|
+
get clearLabel(): string {
|
|
206
|
+
return this.args.clearLabel ?? 'Clear selection';
|
|
207
|
+
}
|
|
208
|
+
get overflowLabel(): string {
|
|
209
|
+
return this.args.overflowLabel ?? 'More actions';
|
|
210
|
+
}
|
|
211
|
+
get allActions(): readonly ActionBarAction[] {
|
|
212
|
+
return this.args.actions ?? [];
|
|
213
|
+
}
|
|
214
|
+
get limit(): number {
|
|
215
|
+
let asked = this.args.maxVisible;
|
|
216
|
+
if (asked === undefined || !Number.isFinite(asked) || asked < 0) {
|
|
217
|
+
return 3;
|
|
218
|
+
}
|
|
219
|
+
return Math.trunc(asked);
|
|
220
|
+
}
|
|
221
|
+
/** With exactly one action over the limit, promoting it costs nothing and
|
|
222
|
+
* saves the reader a menu — an overflow menu holding a single item is a
|
|
223
|
+
* worse outcome than one more button. */
|
|
224
|
+
private get split(): number {
|
|
225
|
+
let all = this.allActions.length;
|
|
226
|
+
return all === this.limit + 1 ? all : this.limit;
|
|
227
|
+
}
|
|
228
|
+
get inlineActions(): ActionBarAction[] {
|
|
229
|
+
return this.allActions.slice(0, this.split);
|
|
230
|
+
}
|
|
231
|
+
get overflowActions(): ActionBarAction[] {
|
|
232
|
+
return this.allActions.slice(this.split);
|
|
233
|
+
}
|
|
234
|
+
get hasOverflow(): boolean {
|
|
235
|
+
return this.overflowActions.length > 0;
|
|
236
|
+
}
|
|
237
|
+
get overflowItems(): MenuEntry[] {
|
|
238
|
+
return destructiveLast(
|
|
239
|
+
this.overflowActions.map((action) => ({
|
|
240
|
+
label: action.label,
|
|
241
|
+
icon: action.icon,
|
|
242
|
+
disabled: action.disabled,
|
|
243
|
+
destructive: action.destructive,
|
|
244
|
+
onSelect: () => this.run(action),
|
|
245
|
+
})),
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
private run(action: ActionBarAction) {
|
|
250
|
+
if (action.disabled) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
action.onAction?.(action.id);
|
|
254
|
+
this.args.onAction?.(action.id);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
onActionClick = (event: Event) => {
|
|
258
|
+
let el = event.currentTarget as HTMLElement | null;
|
|
259
|
+
let id = el?.getAttribute('data-action-id');
|
|
260
|
+
let action = this.allActions.find((candidate) => candidate.id === id);
|
|
261
|
+
if (action) {
|
|
262
|
+
this.run(action);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
clear = () => {
|
|
267
|
+
this.args.onClear?.();
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
/** Escape clears, but only while focus is inside the bar. A document-level
|
|
271
|
+
* Escape would fight every other surface on the page for the key — and the
|
|
272
|
+
* collection the bar describes is outside this component, so it cannot
|
|
273
|
+
* honestly claim the key on the collection's behalf. */
|
|
274
|
+
onKeydown = (event: Event) => {
|
|
275
|
+
if ((event as KeyboardEvent).key === 'Escape' && this.args.onClear) {
|
|
276
|
+
event.preventDefault();
|
|
277
|
+
this.clear();
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
<template>
|
|
282
|
+
{{#if this.visible}}
|
|
283
|
+
<div
|
|
284
|
+
class='pretui-actionbar'
|
|
285
|
+
role='toolbar'
|
|
286
|
+
aria-label={{this.barLabel}}
|
|
287
|
+
data-position={{if @position @position 'floating'}}
|
|
288
|
+
data-test-pretui-action-bar
|
|
289
|
+
{{rovingToolbar}}
|
|
290
|
+
{{listen 'keydown' this.onKeydown}}
|
|
291
|
+
...attributes
|
|
292
|
+
>
|
|
293
|
+
<span class='pretui-actionbar-count' data-test-pretui-action-bar-count>
|
|
294
|
+
{{this.summary}}
|
|
295
|
+
</span>
|
|
296
|
+
<span class='pretui-actionbar-actions'>
|
|
297
|
+
{{#each this.inlineActions key='id' as |deed|}}
|
|
298
|
+
<Button
|
|
299
|
+
@tone={{if deed.destructive 'danger' deed.tone}}
|
|
300
|
+
@appearance='outlined'
|
|
301
|
+
@size='s'
|
|
302
|
+
data-actionbar-item
|
|
303
|
+
data-action-id={{deed.id}}
|
|
304
|
+
data-test-pretui-action-bar-action
|
|
305
|
+
aria-disabled={{if deed.disabled 'true'}}
|
|
306
|
+
{{on 'click' this.onActionClick}}
|
|
307
|
+
>{{deed.label}}</Button>
|
|
308
|
+
{{/each}}
|
|
309
|
+
{{yield}}
|
|
310
|
+
{{#if this.hasOverflow}}
|
|
311
|
+
<Menu @items={{this.overflowItems}} @label={{this.overflowLabel}} @align='end'>
|
|
312
|
+
<:trigger as |isOpen toggle|>
|
|
313
|
+
<IconButton
|
|
314
|
+
@label={{this.overflowLabel}}
|
|
315
|
+
data-actionbar-item
|
|
316
|
+
data-open={{if isOpen 'true'}}
|
|
317
|
+
{{on 'click' toggle}}
|
|
318
|
+
>
|
|
319
|
+
{{#let (iconFor 'ellipsis') as |More|}}
|
|
320
|
+
{{#if More}}<More />{{/if}}
|
|
321
|
+
{{/let}}
|
|
322
|
+
</IconButton>
|
|
323
|
+
</:trigger>
|
|
324
|
+
</Menu>
|
|
325
|
+
{{/if}}
|
|
326
|
+
</span>
|
|
327
|
+
{{#if @onClear}}
|
|
328
|
+
<IconButton
|
|
329
|
+
@label={{this.clearLabel}}
|
|
330
|
+
data-actionbar-item
|
|
331
|
+
data-test-pretui-action-bar-clear
|
|
332
|
+
{{on 'click' this.clear}}
|
|
333
|
+
>
|
|
334
|
+
{{#let (iconFor 'circle-minus') as |ClearIcon|}}
|
|
335
|
+
{{#if ClearIcon}}<ClearIcon />{{/if}}
|
|
336
|
+
{{/let}}
|
|
337
|
+
</IconButton>
|
|
338
|
+
{{/if}}
|
|
339
|
+
</div>
|
|
340
|
+
{{/if}}
|
|
341
|
+
<style scoped>
|
|
342
|
+
@layer PretComponent {
|
|
343
|
+
.pretui-actionbar {
|
|
344
|
+
display: flex;
|
|
345
|
+
align-items: center;
|
|
346
|
+
gap: var(--space-4, 11px);
|
|
347
|
+
padding: var(--space-2, 6px) var(--space-3, 8px);
|
|
348
|
+
border-radius: var(--radius-surface, 12px);
|
|
349
|
+
background: var(--popover);
|
|
350
|
+
box-shadow: var(
|
|
351
|
+
--pretui-shadow-overlay,
|
|
352
|
+
0 0 0 1px var(--border),
|
|
353
|
+
0 8px 28px rgb(0 0 0 / 0.34)
|
|
354
|
+
);
|
|
355
|
+
/* Law 5: the bar arriving IS the state transition — the selection
|
|
356
|
+
just became actionable. The slide is short and it travels from the
|
|
357
|
+
edge it is pinned to, so it also says WHERE the bar lives. */
|
|
358
|
+
transition:
|
|
359
|
+
opacity var(--pretui-actionbar-enter, 140ms) ease,
|
|
360
|
+
translate var(--pretui-actionbar-enter, 140ms) ease;
|
|
361
|
+
}
|
|
362
|
+
@starting-style {
|
|
363
|
+
.pretui-actionbar {
|
|
364
|
+
opacity: 0;
|
|
365
|
+
translate: 0 8px;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
.pretui-actionbar[data-position='floating'] {
|
|
369
|
+
position: sticky;
|
|
370
|
+
bottom: var(--space-4, 11px);
|
|
371
|
+
z-index: var(--pretui-z-sticky, 10);
|
|
372
|
+
}
|
|
373
|
+
.pretui-actionbar-count {
|
|
374
|
+
flex: none;
|
|
375
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
376
|
+
font-weight: var(--weight-medium, 500);
|
|
377
|
+
font-variant-numeric: tabular-nums;
|
|
378
|
+
color: var(--muted-foreground);
|
|
379
|
+
white-space: nowrap;
|
|
380
|
+
}
|
|
381
|
+
.pretui-actionbar-actions {
|
|
382
|
+
display: flex;
|
|
383
|
+
align-items: center;
|
|
384
|
+
gap: var(--space-2, 6px);
|
|
385
|
+
flex: 1;
|
|
386
|
+
min-width: 0;
|
|
387
|
+
flex-wrap: wrap;
|
|
388
|
+
}
|
|
389
|
+
/* Reduced motion lands on the END state — the bar is simply there,
|
|
390
|
+
at full opacity and in place. Never a frozen midpoint. */
|
|
391
|
+
@media (prefers-reduced-motion: reduce) {
|
|
392
|
+
.pretui-actionbar {
|
|
393
|
+
transition: none;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
/* A card does not know the viewport; it knows its pane. Below the
|
|
397
|
+
count and the actions stop competing for one line. */
|
|
398
|
+
@container (max-width: 380px) {
|
|
399
|
+
.pretui-actionbar {
|
|
400
|
+
flex-wrap: wrap;
|
|
401
|
+
gap: var(--space-2, 6px);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
</style>
|
|
406
|
+
</template>
|
|
407
|
+
}
|