@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,72 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A rich preview that opens on hover or focus: a person behind a mention, the card behind a reference, the definition behind a term. It sits between two neighbours. **Tooltip** is a short string and is never interactive. **Popover** opens on click and can hold a form. HoverCard opens without a click, holds real content with its own links, and must itself be hoverable so the pointer can travel into it — which is what makes it the hardest of the three to get right.
|
|
4
|
+
|
|
5
|
+
Use it for a preview the reader might want and can live without. If the content is something they must see, it is not a preview: put it on the page, or behind a **Popover** they open on purpose.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@open? @defaultOpen? @onOpenChange? — the overlay contract
|
|
11
|
+
@placement? (default 'bottom-start') @distance? (8)
|
|
12
|
+
@openDelay? (seconds, default 0.5)
|
|
13
|
+
@closeDelay? (seconds, default 0.3)
|
|
14
|
+
@label? (default 'Preview') — the card's accessible name
|
|
15
|
+
@tapToOpen? (default true) — a tap opens it on a coarse pointer
|
|
16
|
+
<:trigger> — the link or control being previewed
|
|
17
|
+
<:default as |close|> — the card
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Delays are in seconds.** Radix passes `700`; a bare number in a prop is a unit no caller can check, so here `@openDelay={{0.7}}` says what it means. The pair matters more than either value: the open delay stops the card firing as the pointer crosses the link, and the close delay is the bridge across the gap between trigger and card. Set the close delay to zero and the card becomes unreachable by pointer no matter how good the open delay is.
|
|
21
|
+
|
|
22
|
+
**Focus ignores the open delay.** A reader who deliberately tabbed to the trigger has already expressed the intent, so the card opens at once. Focus leaving the whole surface — trigger and card together — closes it at once too.
|
|
23
|
+
|
|
24
|
+
**The trigger block owns the control.** The focusable element inside it is given `aria-expanded`, plus an `aria-controls` pointing at the card while the card is open, both removed on teardown. Wrap a link, a button, or a **RecordPill**; the trigger's own activation is untouched, so a link stays a link.
|
|
25
|
+
|
|
26
|
+
**Touch has a path.** On a coarse pointer a tap opens the card without swallowing the trigger; a tap outside closes it. `@tapToOpen={{false}}` turns that off, leaving the card reachable only by keyboard on touch devices — usually the wrong trade.
|
|
27
|
+
|
|
28
|
+
**The default block yields `close`** for a card that wants its own dismiss. It closes and returns focus to the trigger, the same path Escape takes.
|
|
29
|
+
|
|
30
|
+
## Prior art
|
|
31
|
+
|
|
32
|
+
**shadcn HoverCard** is **Radix HoverCard**: `openDelay` / `closeDelay` in milliseconds, `side` / `align` for placement, `open` / `onOpenChange` / `defaultOpen`. **Mantine HoverCard** adds a `shadow` prop and a group-open. **Base UI PreviewCard** and **React Aria PreviewTrigger** are the same idea under the accessibility-conscious names. All share the two delays, because without them the card flickers.
|
|
33
|
+
|
|
34
|
+
Where this is better, and the difference is the whole component: **the card is reachable by the people the pattern usually excludes.** Radix sets `tabindex='-1'` on every tabbable node inside the card. That prevents a keyboard trap, at the price of making the card's own links unreachable by exactly the users who most needed them reachable. Here the card renders in DOM order immediately after the trigger and keeps its tab stops, so Tab walks _into_ it, Tab out of the last one leaves and closes it, and Escape closes it and returns focus to the trigger. Radix also excludes touch outright, so on a phone the card does not exist; `@tapToOpen` gives it one. And the trigger carries `aria-expanded` and `aria-controls`, a relationship neither Radix nor shadcn establishes, so a screen-reader user is told the preview exists.
|
|
35
|
+
|
|
36
|
+
Where it is thinner: no `side` / `align` pair — one logical `@placement` resolved through the kit's own `anchorTo`; no arrow; no portal arg, because the shared `Popup` decides that; and no Mantine-style group hover. The card has no built-in layout: it is a padded surface, and what goes in it is yours.
|
|
37
|
+
|
|
38
|
+
## Accessibility
|
|
39
|
+
|
|
40
|
+
Governing pattern: there is no APG pattern for a hover card, and that absence is the point — content that only appears on hover is content a keyboard user, a screen-reader user and every touch device cannot reach, so the component's job is to give each of them a path. WCAG **1.4.13** (content on hover or focus) is the requirement: dismissible, hoverable, persistent.
|
|
41
|
+
|
|
42
|
+
What it does, and the tests assert:
|
|
43
|
+
|
|
44
|
+
- **Focus opens it with no delay**, and the trigger's control gets `aria-expanded='true'` plus an `aria-controls` that points at the card's `id`.
|
|
45
|
+
- **The card keeps its own tab stops.** A link inside it is reached by Tab from the trigger, and Tab past the last one leaves the surface and closes the card.
|
|
46
|
+
- **Escape closes it and returns focus to the trigger**, taken in the capture phase on the document while open.
|
|
47
|
+
- **Focus leaving the whole surface closes it**; focus moving between trigger and card does not.
|
|
48
|
+
- **The card is `role='dialog'`** with `aria-label` from `@label`. The default `'Preview'` is generic; name the thing being previewed.
|
|
49
|
+
- **Hoverable and persistent** by construction: the close delay bridges the gap, and pointer travel into the card cancels the close.
|
|
50
|
+
|
|
51
|
+
The caller's part: put a real focusable control in the trigger block, or none of the keyboard path exists. Keep the card's content meaningful without the trigger's context, because a reader who tabs into it arrives with no pointer position. And do not put anything essential in it — 1.4.13 makes hover content dismissible, and a dismissed card is gone.
|
|
52
|
+
|
|
53
|
+
## Theming
|
|
54
|
+
|
|
55
|
+
Read directly: `--popover` and `--popover-foreground`, `--radius-surface`, `--space-4`, `--font-sans`, `--text-ui-md`, `--pretui-shadow-overlay`, and the enter motion pair `--pretui-dur-enter` / `--pretui-ease-enter`.
|
|
56
|
+
|
|
57
|
+
One knob of its own: `--pretui-hovercard-width` (default 260px), capped at the viewport minus 16px. Entry motion is `@starting-style` (opacity plus a 4px rise and 0.98 scale, 180ms) with a `prefers-reduced-motion` opt-out. Position and flip come from the shared `Popup`, so a theme that retunes overlay placement retunes this with it.
|
|
58
|
+
|
|
59
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
60
|
+
|
|
61
|
+
## React ecosystem
|
|
62
|
+
|
|
63
|
+
| Agent types | Give them |
|
|
64
|
+
| -------------------------------------------- | ------------------------------------------------------ |
|
|
65
|
+
| Radix `openDelay={700}` / `closeDelay={300}` | `@openDelay={{0.7}}` / `@closeDelay={{0.3}}` — seconds |
|
|
66
|
+
| `open` / `onOpenChange` / `defaultOpen` | same |
|
|
67
|
+
| `side` / `align` | one `@placement` |
|
|
68
|
+
| `HoverCardTrigger` / `HoverCardContent` | `<:trigger>` / `<:default>` |
|
|
69
|
+
| Mantine `shadow` | `--pretui-shadow-overlay` |
|
|
70
|
+
| a preview that must be tappable on mobile | `@tapToOpen` (on by default) — Radix has no equivalent |
|
|
71
|
+
| a card with a form in it | **Popover** |
|
|
72
|
+
| a one-line label | **Tooltip** |
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
// Pretui — HoverCard usage page.
|
|
2
|
+
import GlimmerComponent from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { HoverCard } from './hover-card';
|
|
6
|
+
import type { PopupPlacement } from '../internal/overlay';
|
|
7
|
+
|
|
8
|
+
const HC_PLACEMENTS = ['bottom-start', 'bottom', 'top', 'right-start', 'left-start'];
|
|
9
|
+
|
|
10
|
+
// Glimmer accepts decimal number literals, but `{{0.5}}` reads like the
|
|
11
|
+
// `{{foo.0}}` numeric-path form the transpiler rejects. Named constants keep
|
|
12
|
+
// the template unambiguous.
|
|
13
|
+
const DELAY_STEP = 0.1;
|
|
14
|
+
const DELAY_MAX = 2;
|
|
15
|
+
const DELAY_MIN = 0;
|
|
16
|
+
const OPEN_DELAY_DEFAULT = 0.5;
|
|
17
|
+
const CLOSE_DELAY_DEFAULT = 0.3;
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class HoverCardUsage extends GlimmerComponent {
|
|
21
|
+
@tracked placement = 'bottom-start';
|
|
22
|
+
@tracked openDelay = 0.5;
|
|
23
|
+
@tracked closeDelay = 0.3;
|
|
24
|
+
|
|
25
|
+
setPlacement = (value: string) => (this.placement = value);
|
|
26
|
+
setOpenDelay = (value: number | null) => (this.openDelay = value ?? 0.5);
|
|
27
|
+
setCloseDelay = (value: number | null) => (this.closeDelay = value ?? 0.3);
|
|
28
|
+
|
|
29
|
+
get placementValue() {
|
|
30
|
+
return this.placement as PopupPlacement;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<FreestyleUsage
|
|
35
|
+
@name='HoverCard'
|
|
36
|
+
@description='The rich link preview: a Popup with hover intent in front of it. Accessibility is the whole problem, because content that only appears on hover is content a keyboard user, a screen reader and every touch device cannot reach. Focus opens it with no delay, since a reader who deliberately tabbed to the trigger has already expressed the intent. The card keeps its own tab stops, so Tab walks into it and out again — Radix sets tabindex=-1 on everything inside, which prevents a trap by making the card useless to exactly the people it was made reachable for. And a tap opens it on a coarse pointer, where Radix simply excludes touch and the card does not exist at all.'
|
|
37
|
+
>
|
|
38
|
+
<:example>
|
|
39
|
+
<p class='oc-prose'>Lot 4417 was cupped by
|
|
40
|
+
<HoverCard
|
|
41
|
+
@placement={{this.placementValue}}
|
|
42
|
+
@openDelay={{this.openDelay}}
|
|
43
|
+
@closeDelay={{this.closeDelay}}
|
|
44
|
+
@label='Ama Boateng'
|
|
45
|
+
>
|
|
46
|
+
<:trigger>
|
|
47
|
+
<a class='oc-mention' href='#lot-4417'>Ama Boateng</a>
|
|
48
|
+
</:trigger>
|
|
49
|
+
<:default>
|
|
50
|
+
<div class='oc-card'>
|
|
51
|
+
<span class='oc-card-name'>Ama Boateng</span>
|
|
52
|
+
<span class='oc-card-role'>Q grader · Accra desk</span>
|
|
53
|
+
<p class='oc-card-note'>Scores East African naturals; keeps the
|
|
54
|
+
arrivals board honest about moisture.</p>
|
|
55
|
+
<a class='oc-card-link' href='#profile'>Open profile</a>
|
|
56
|
+
</div>
|
|
57
|
+
</:default>
|
|
58
|
+
</HoverCard>
|
|
59
|
+
on the 14th, three days after arrival.</p>
|
|
60
|
+
<p class='oc-hint'>Tab to the link and the card opens at once. Tab again
|
|
61
|
+
and focus moves
|
|
62
|
+
<em>into</em>
|
|
63
|
+
the card, onto its own link. Tab past it and it closes. Escape closes
|
|
64
|
+
it and puts focus back on the mention.</p>
|
|
65
|
+
</:example>
|
|
66
|
+
<:api as |Args|>
|
|
67
|
+
<Args.Base
|
|
68
|
+
@name='open / onOpenChange / defaultOpen'
|
|
69
|
+
@description='The overlay contract. A controlled HoverCard is how a tour or a test drives it without a pointer.'
|
|
70
|
+
@hideControls={{true}}
|
|
71
|
+
/>
|
|
72
|
+
<Args.String
|
|
73
|
+
@name='placement'
|
|
74
|
+
@description="Radix's side and align collapsed into one logical placement, resolved through the kit's own anchorTo."
|
|
75
|
+
@value={{this.placement}}
|
|
76
|
+
@options={{HC_PLACEMENTS}}
|
|
77
|
+
@defaultValue='bottom-start'
|
|
78
|
+
@onInput={{this.setPlacement}}
|
|
79
|
+
/>
|
|
80
|
+
<Args.Number
|
|
81
|
+
@name='openDelay'
|
|
82
|
+
@description='Seconds of hover before it opens. Seconds, not the 700 Radix passes — a bare number in a prop is a unit no caller can check. Focus ignores this entirely.'
|
|
83
|
+
@value={{this.openDelay}}
|
|
84
|
+
@min={{DELAY_MIN}}
|
|
85
|
+
@max={{DELAY_MAX}}
|
|
86
|
+
@step={{DELAY_STEP}}
|
|
87
|
+
@defaultValue={{OPEN_DELAY_DEFAULT}}
|
|
88
|
+
@onInput={{this.setOpenDelay}}
|
|
89
|
+
/>
|
|
90
|
+
<Args.Number
|
|
91
|
+
@name='closeDelay'
|
|
92
|
+
@description='Seconds after the pointer leaves before it closes. The pair matters more than either number: the close delay is the bridge across the gap between trigger and card, and setting it to zero makes the card unreachable by pointer no matter how good the open delay is.'
|
|
93
|
+
@value={{this.closeDelay}}
|
|
94
|
+
@min={{DELAY_MIN}}
|
|
95
|
+
@max={{DELAY_MAX}}
|
|
96
|
+
@step={{DELAY_STEP}}
|
|
97
|
+
@defaultValue={{CLOSE_DELAY_DEFAULT}}
|
|
98
|
+
@onInput={{this.setCloseDelay}}
|
|
99
|
+
/>
|
|
100
|
+
<Args.Bool
|
|
101
|
+
@name='tapToOpen'
|
|
102
|
+
@description='On a coarse pointer a tap opens the card without swallowing the trigger, so a link stays a link and a preview is still available. This is the arg Radix does not have.'
|
|
103
|
+
@value={{true}}
|
|
104
|
+
@defaultValue={{true}}
|
|
105
|
+
@hideControls={{true}}
|
|
106
|
+
/>
|
|
107
|
+
<Args.Yield
|
|
108
|
+
@name='trigger / default'
|
|
109
|
+
@description='The trigger block holds the link or control; whatever focusable it contains gets aria-expanded and aria-controls pointing at the card, a relationship neither Radix nor shadcn establishes. The default block receives a close function for a card that wants its own dismiss.'
|
|
110
|
+
@hideControls={{true}}
|
|
111
|
+
/>
|
|
112
|
+
</:api>
|
|
113
|
+
</FreestyleUsage>
|
|
114
|
+
|
|
115
|
+
<style scoped>
|
|
116
|
+
.oc-prose {
|
|
117
|
+
margin: 0;
|
|
118
|
+
max-width: 54ch;
|
|
119
|
+
font-size: var(--text-body, 15px);
|
|
120
|
+
line-height: calc(var(--leading-body, 24px) / var(--text-body, 15px));
|
|
121
|
+
}
|
|
122
|
+
.oc-mention {
|
|
123
|
+
color: var(--pretui-primary-ink, var(--boxel-highlight-hover));
|
|
124
|
+
text-decoration: underline;
|
|
125
|
+
text-underline-offset: 2px;
|
|
126
|
+
text-decoration-style: dotted;
|
|
127
|
+
}
|
|
128
|
+
.oc-mention:focus-visible {
|
|
129
|
+
outline: 2px solid var(--ring);
|
|
130
|
+
outline-offset: 2px;
|
|
131
|
+
border-radius: 3px;
|
|
132
|
+
}
|
|
133
|
+
.oc-card {
|
|
134
|
+
display: grid;
|
|
135
|
+
gap: 3px;
|
|
136
|
+
}
|
|
137
|
+
.oc-card-name {
|
|
138
|
+
font-weight: 600;
|
|
139
|
+
}
|
|
140
|
+
.oc-card-role {
|
|
141
|
+
color: var(--muted-foreground);
|
|
142
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
143
|
+
}
|
|
144
|
+
.oc-card-note {
|
|
145
|
+
margin: var(--space-2, 6px) 0 0;
|
|
146
|
+
color: var(--muted-foreground);
|
|
147
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
148
|
+
line-height: 1.5;
|
|
149
|
+
}
|
|
150
|
+
.oc-card-link {
|
|
151
|
+
margin-top: var(--space-3, 8px);
|
|
152
|
+
color: var(--pretui-primary-ink, var(--boxel-highlight-hover));
|
|
153
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
154
|
+
font-weight: 600;
|
|
155
|
+
}
|
|
156
|
+
.oc-hint {
|
|
157
|
+
margin: var(--space-4, 11px) 0 0;
|
|
158
|
+
max-width: 62ch;
|
|
159
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
160
|
+
line-height: 1.6;
|
|
161
|
+
color: var(--muted-foreground);
|
|
162
|
+
}
|
|
163
|
+
.oc-hint em {
|
|
164
|
+
font-style: normal;
|
|
165
|
+
font-weight: 600;
|
|
166
|
+
color: var(--foreground);
|
|
167
|
+
}
|
|
168
|
+
</style>
|
|
169
|
+
</template>
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export const DEMOS_HOVER_CARD: Record<string, unknown> = {
|
|
173
|
+
HoverCard: HoverCardUsage,
|
|
174
|
+
};
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
// Pretui — HoverVideoPlayer: a poster that previews its video on hover or focus, never against reduced motion.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { on } from '@ember/modifier';
|
|
5
|
+
import { modifier } from 'ember-modifier';
|
|
6
|
+
import { cssDeclaration, cssStyleFrom } from '../pretui-css';
|
|
7
|
+
|
|
8
|
+
// ── HoverVideoPlayer ─────────────────────────────────────────────────────
|
|
9
|
+
// A thumbnail that becomes a moving preview when you show interest in it,
|
|
10
|
+
// and stops when you stop. Four things the genre routinely gets wrong, and
|
|
11
|
+
// what is done here instead:
|
|
12
|
+
//
|
|
13
|
+
// 1. **Touch.** Upstream binds `mouseenter`/`mouseleave` and is simply
|
|
14
|
+
// dead on a phone. Here there is always a real play/pause `<button>`;
|
|
15
|
+
// on fine pointers it fades in on hover or focus, on coarse pointers it
|
|
16
|
+
// is permanently visible at 44px.
|
|
17
|
+
// 2. **Keyboard.** `focusin`/`focusout` drive the same path as the
|
|
18
|
+
// pointer, so tabbing to the card previews it.
|
|
19
|
+
// 3. **Motion preference.** `prefers-reduced-motion: reduce` disables
|
|
20
|
+
// hover- and focus-autoplay outright — a moving image is exactly what
|
|
21
|
+
// that preference is about. The explicit button still works, because
|
|
22
|
+
// the preference is about ambient motion, not about consent.
|
|
23
|
+
// 4. **Layout.** `@ratio` reserves the box before the poster loads, so a
|
|
24
|
+
// grid of these does not reflow as they arrive.
|
|
25
|
+
//
|
|
26
|
+
// Playback is driven by ONE tracked boolean through a modifier; there is no
|
|
27
|
+
// timer, no rAF, and no listener that outlives the element.
|
|
28
|
+
|
|
29
|
+
/** hover/focus intent on the card, with every listener removed on teardown */
|
|
30
|
+
const previewIntent = modifier(
|
|
31
|
+
(
|
|
32
|
+
el: HTMLElement,
|
|
33
|
+
[onEnter, onLeave]: [() => void, () => void],
|
|
34
|
+
) => {
|
|
35
|
+
let enter = () => onEnter();
|
|
36
|
+
let leave = () => onLeave();
|
|
37
|
+
el.addEventListener('pointerenter', enter);
|
|
38
|
+
el.addEventListener('pointerleave', leave);
|
|
39
|
+
el.addEventListener('focusin', enter);
|
|
40
|
+
el.addEventListener('focusout', leave);
|
|
41
|
+
return () => {
|
|
42
|
+
el.removeEventListener('pointerenter', enter);
|
|
43
|
+
el.removeEventListener('pointerleave', leave);
|
|
44
|
+
el.removeEventListener('focusin', enter);
|
|
45
|
+
el.removeEventListener('focusout', leave);
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Playback follows one boolean. The modifier body re-runs whenever that
|
|
52
|
+
* boolean changes, which is the whole scheduling mechanism — no interval
|
|
53
|
+
* polls the element's state. `play()` can reject (a source that never
|
|
54
|
+
* loaded, an autoplay policy), so the rejection is routed back to the
|
|
55
|
+
* component instead of surfacing as an unhandled promise.
|
|
56
|
+
*/
|
|
57
|
+
const previewPlayback = modifier(
|
|
58
|
+
(
|
|
59
|
+
el: HTMLVideoElement,
|
|
60
|
+
[playing, rewind, onFail]: [boolean, boolean, () => void],
|
|
61
|
+
) => {
|
|
62
|
+
if (playing) {
|
|
63
|
+
let started = el.play();
|
|
64
|
+
if (started && typeof started.catch === 'function') {
|
|
65
|
+
started.catch(() => onFail());
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
el.pause();
|
|
70
|
+
if (rewind && el.readyState > 0) {
|
|
71
|
+
el.currentTime = 0;
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
export interface HoverVideoPlayerSignature {
|
|
77
|
+
Args: {
|
|
78
|
+
/** the preview clip */
|
|
79
|
+
src: string;
|
|
80
|
+
/** the still shown before and after playback */
|
|
81
|
+
poster?: string;
|
|
82
|
+
/**
|
|
83
|
+
* what the preview is OF. Required: it names the play control and the
|
|
84
|
+
* figure, and an unlabelled video is an unlabelled control.
|
|
85
|
+
*/
|
|
86
|
+
label: string;
|
|
87
|
+
/** aspect ratio reserving the box, e.g. '16 / 9' (default '16 / 9') */
|
|
88
|
+
ratio?: string;
|
|
89
|
+
/** keep it silent (default true — an unmuted hover preview is hostile) */
|
|
90
|
+
muted?: boolean;
|
|
91
|
+
/** loop the preview (default true) */
|
|
92
|
+
loop?: boolean;
|
|
93
|
+
/** rewind to the first frame when the preview stops (default true) */
|
|
94
|
+
rewind?: boolean;
|
|
95
|
+
/** preview on hover and focus (default true) */
|
|
96
|
+
playOnIntent?: boolean;
|
|
97
|
+
/** caption rendered under the frame */
|
|
98
|
+
caption?: string;
|
|
99
|
+
/** fires whenever playback starts or stops */
|
|
100
|
+
onPlayingChange?: (playing: boolean) => void;
|
|
101
|
+
};
|
|
102
|
+
Blocks: {
|
|
103
|
+
/** content laid over the frame — a duration chip, a title */
|
|
104
|
+
overlay: [];
|
|
105
|
+
};
|
|
106
|
+
Element: HTMLElement;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export class HoverVideoPlayer extends Component<HoverVideoPlayerSignature> {
|
|
110
|
+
@tracked private playing = false;
|
|
111
|
+
|
|
112
|
+
get ratioStyle() {
|
|
113
|
+
return cssStyleFrom([
|
|
114
|
+
cssDeclaration('--pretui-hvp-ratio', this.args.ratio ?? '16 / 9'),
|
|
115
|
+
]);
|
|
116
|
+
}
|
|
117
|
+
get muted(): boolean {
|
|
118
|
+
return this.args.muted ?? true;
|
|
119
|
+
}
|
|
120
|
+
get loop(): boolean {
|
|
121
|
+
return this.args.loop ?? true;
|
|
122
|
+
}
|
|
123
|
+
get rewind(): boolean {
|
|
124
|
+
return this.args.rewind ?? true;
|
|
125
|
+
}
|
|
126
|
+
get playOnIntent(): boolean {
|
|
127
|
+
return this.args.playOnIntent ?? true;
|
|
128
|
+
}
|
|
129
|
+
get toggleLabel(): string {
|
|
130
|
+
return (this.playing ? 'Pause preview of ' : 'Play preview of ') + this.args.label;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/** true when the reader has asked the platform for less movement */
|
|
134
|
+
private get reducedMotion(): boolean {
|
|
135
|
+
if (typeof window === 'undefined' || !window.matchMedia) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/** NOT named `set` — an arrow property called `set` on a Glimmer class
|
|
142
|
+
* trips ember/classic-decorator-no-classic-methods at realm lint, which
|
|
143
|
+
* reads it as the classic `this.set()` API. */
|
|
144
|
+
private setPlaying = (next: boolean) => {
|
|
145
|
+
if (this.playing === next) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this.playing = next;
|
|
149
|
+
this.args.onPlayingChange?.(next);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
enter = () => {
|
|
153
|
+
if (!this.playOnIntent || this.reducedMotion) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.setPlaying(true);
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
leave = () => {
|
|
160
|
+
if (!this.playOnIntent) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.setPlaying(false);
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
toggle = () => this.setPlaying(!this.playing);
|
|
167
|
+
|
|
168
|
+
/** play() was refused; the control must not keep claiming it is playing */
|
|
169
|
+
failed = () => this.setPlaying(false);
|
|
170
|
+
|
|
171
|
+
<template>
|
|
172
|
+
<figure
|
|
173
|
+
class='pretui-hvp'
|
|
174
|
+
data-playing={{if this.playing 'true'}}
|
|
175
|
+
style={{this.ratioStyle}}
|
|
176
|
+
data-test-pretui-hover-video-player
|
|
177
|
+
{{previewIntent this.enter this.leave}}
|
|
178
|
+
...attributes
|
|
179
|
+
>
|
|
180
|
+
<div class='pretui-hvp-frame'>
|
|
181
|
+
{{! The media element is decorative: it is named by the figcaption
|
|
182
|
+
and driven by the button beside it, so it is out of the tab order
|
|
183
|
+
and out of the accessibility tree rather than being a second,
|
|
184
|
+
unlabelled control. }}
|
|
185
|
+
<video
|
|
186
|
+
class='pretui-hvp-video'
|
|
187
|
+
src={{@src}}
|
|
188
|
+
poster={{@poster}}
|
|
189
|
+
muted={{if this.muted true}}
|
|
190
|
+
loop={{if this.loop true}}
|
|
191
|
+
playsinline={{true}}
|
|
192
|
+
preload='metadata'
|
|
193
|
+
tabindex='-1'
|
|
194
|
+
aria-hidden='true'
|
|
195
|
+
data-test-pretui-hover-video-player-video
|
|
196
|
+
{{previewPlayback this.playing this.rewind this.failed}}
|
|
197
|
+
></video>
|
|
198
|
+
<span class='pretui-hvp-overlay'>{{yield to='overlay'}}</span>
|
|
199
|
+
<button
|
|
200
|
+
type='button'
|
|
201
|
+
class='pretui-hvp-toggle'
|
|
202
|
+
aria-label={{this.toggleLabel}}
|
|
203
|
+
aria-pressed={{if this.playing 'true' 'false'}}
|
|
204
|
+
data-test-pretui-hover-video-player-toggle
|
|
205
|
+
{{on 'click' this.toggle}}
|
|
206
|
+
>
|
|
207
|
+
{{#if this.playing}}
|
|
208
|
+
<svg viewBox='0 0 24 24' aria-hidden='true' focusable='false'>
|
|
209
|
+
<path d='M8 5h3v14H8zM13 5h3v14h-3z' fill='currentColor' />
|
|
210
|
+
</svg>
|
|
211
|
+
{{else}}
|
|
212
|
+
<svg viewBox='0 0 24 24' aria-hidden='true' focusable='false'>
|
|
213
|
+
<path d='M8 5l11 7-11 7z' fill='currentColor' />
|
|
214
|
+
</svg>
|
|
215
|
+
{{/if}}
|
|
216
|
+
</button>
|
|
217
|
+
</div>
|
|
218
|
+
<figcaption class='pretui-hvp-caption'>
|
|
219
|
+
{{#if @caption}}{{@caption}}{{else}}<span class='pretui-sr'
|
|
220
|
+
>{{@label}}</span>{{/if}}
|
|
221
|
+
</figcaption>
|
|
222
|
+
</figure>
|
|
223
|
+
|
|
224
|
+
<style scoped>
|
|
225
|
+
@layer PretComponent {
|
|
226
|
+
.pretui-hvp {
|
|
227
|
+
margin: 0;
|
|
228
|
+
display: flex;
|
|
229
|
+
flex-direction: column;
|
|
230
|
+
gap: 6px;
|
|
231
|
+
}
|
|
232
|
+
.pretui-hvp-frame {
|
|
233
|
+
position: relative;
|
|
234
|
+
aspect-ratio: var(--pretui-hvp-ratio, 16 / 9);
|
|
235
|
+
border-radius: 10px;
|
|
236
|
+
overflow: hidden;
|
|
237
|
+
background: var(--inset, var(--boxel-100));
|
|
238
|
+
box-shadow: var(
|
|
239
|
+
--pretui-shadow-hairline,
|
|
240
|
+
0 0 0 1px var(--border)
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
.pretui-hvp-video {
|
|
244
|
+
display: block;
|
|
245
|
+
width: 100%;
|
|
246
|
+
height: 100%;
|
|
247
|
+
object-fit: cover;
|
|
248
|
+
}
|
|
249
|
+
.pretui-hvp-overlay {
|
|
250
|
+
position: absolute;
|
|
251
|
+
inset: auto 8px 8px auto;
|
|
252
|
+
display: flex;
|
|
253
|
+
gap: 5px;
|
|
254
|
+
pointer-events: none;
|
|
255
|
+
}
|
|
256
|
+
.pretui-hvp-toggle {
|
|
257
|
+
position: absolute;
|
|
258
|
+
inset: auto auto 8px 8px;
|
|
259
|
+
display: inline-grid;
|
|
260
|
+
place-items: center;
|
|
261
|
+
width: 32px;
|
|
262
|
+
height: 32px;
|
|
263
|
+
padding: 0;
|
|
264
|
+
border: 0;
|
|
265
|
+
border-radius: 50%;
|
|
266
|
+
background: color-mix(in oklch, var(--boxel-dark) 55%, transparent);
|
|
267
|
+
color: var(--boxel-light);
|
|
268
|
+
cursor: pointer;
|
|
269
|
+
opacity: 0;
|
|
270
|
+
transition: opacity 140ms linear;
|
|
271
|
+
}
|
|
272
|
+
.pretui-hvp-toggle svg {
|
|
273
|
+
width: 15px;
|
|
274
|
+
height: 15px;
|
|
275
|
+
}
|
|
276
|
+
/* hover is never the only affordance: focus-within reveals it too */
|
|
277
|
+
.pretui-hvp:hover .pretui-hvp-toggle,
|
|
278
|
+
.pretui-hvp:focus-within .pretui-hvp-toggle,
|
|
279
|
+
.pretui-hvp[data-playing] .pretui-hvp-toggle {
|
|
280
|
+
opacity: 1;
|
|
281
|
+
}
|
|
282
|
+
.pretui-hvp-toggle:focus-visible {
|
|
283
|
+
opacity: 1;
|
|
284
|
+
outline: 2px solid var(--ring);
|
|
285
|
+
outline-offset: 2px;
|
|
286
|
+
}
|
|
287
|
+
.pretui-hvp-caption {
|
|
288
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
289
|
+
color: var(--muted-foreground);
|
|
290
|
+
}
|
|
291
|
+
.pretui-sr {
|
|
292
|
+
position: absolute;
|
|
293
|
+
width: 1px;
|
|
294
|
+
height: 1px;
|
|
295
|
+
overflow: hidden;
|
|
296
|
+
clip-path: inset(50%);
|
|
297
|
+
white-space: nowrap;
|
|
298
|
+
}
|
|
299
|
+
/* a coarse pointer has no hover state to reveal anything with */
|
|
300
|
+
@media (any-pointer: coarse) {
|
|
301
|
+
.pretui-hvp-toggle {
|
|
302
|
+
opacity: 1;
|
|
303
|
+
width: 44px;
|
|
304
|
+
height: 44px;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
@media (prefers-reduced-motion: reduce) {
|
|
308
|
+
.pretui-hvp-toggle {
|
|
309
|
+
transition: none;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
</style>
|
|
314
|
+
</template>
|
|
315
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A video preview that plays on intent: hover it or focus it and the clip runs, leave and it stops. The pattern every media gallery uses to let a still stand in for a video without making you open it.
|
|
4
|
+
|
|
5
|
+
Use it for a tile in a shelf or a grid. For a video someone is actually watching, that is **VideoPlayer**.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@src (required) — the preview clip
|
|
11
|
+
@label (required) — what the preview is OF; names the play control and the figure
|
|
12
|
+
@poster? — the still shown before and after playback
|
|
13
|
+
@ratio? — aspect ratio reserving the box. Default '16 / 9'
|
|
14
|
+
@muted? — keep it silent. Default true
|
|
15
|
+
@loop? — loop the preview. Default true
|
|
16
|
+
@rewind? — return to the first frame when the preview stops. Default true
|
|
17
|
+
@playOnIntent? — preview on hover and focus. Default true
|
|
18
|
+
@caption? — caption rendered under the frame
|
|
19
|
+
@onPlayingChange? — fires whenever playback starts or stops
|
|
20
|
+
|
|
21
|
+
<:overlay> — content laid over the frame: a duration chip, a title
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**`@muted` defaults to true, and an unmuted hover preview is hostile.** Sound that starts because a pointer crossed a tile is the thing everyone hates about autoplaying video.
|
|
25
|
+
|
|
26
|
+
**The box is reserved by `@ratio` before anything loads**, so a shelf of previews does not reflow as posters arrive.
|
|
27
|
+
|
|
28
|
+
**Focus is an intent, not only hover.** A keyboard user tabbing to the tile gets the same preview a pointer user gets, which is the whole reason `@playOnIntent` covers both.
|
|
29
|
+
|
|
30
|
+
**Reduced motion is checked**, so a reader who has asked for less movement is not ambushed by a clip that starts because their pointer passed over it.
|
|
31
|
+
|
|
32
|
+
**The video is `preload='metadata'`**, so a shelf of previews costs metadata rather than bytes until something is hovered.
|
|
33
|
+
|
|
34
|
+
## Prior art
|
|
35
|
+
|
|
36
|
+
**cult-ui's `hover-video-player`** is the source.
|
|
37
|
+
|
|
38
|
+
Where Pretui is better: **focus drives the preview too**, where upstream is pointer-only — which means on upstream a keyboard user simply cannot see the preview at all. **Reduced-motion readers get intentional playback rather than ambush video.** And the frame is a real `<figure>` with a real `<figcaption>`, so the caption is associated rather than merely adjacent.
|
|
39
|
+
|
|
40
|
+
Where it is thinner: no hover-intent delay, so a pointer sweeping across a shelf starts and stops several previews in a row; no unmute affordance, since the preview is muted and stays that way; no scrubbing or seeking; and no thumbnail-strip preview on hover, which is the richer version of this pattern. The preview is also a separate clip from whatever the full video is — there is no contract tying the two together.
|
|
41
|
+
|
|
42
|
+
## Accessibility
|
|
43
|
+
|
|
44
|
+
- **The `<video>` is `aria-hidden` and `tabindex='-1'`.** It is a moving poster, not a control, and exposing it would put a second unlabelled media element in the accessibility tree beside the button that actually operates it.
|
|
45
|
+
- **The toggle is a real button with `aria-pressed`** and an accessible name derived from `@label`, so the preview can be started and stopped by keyboard without relying on focus-to-play.
|
|
46
|
+
- **`@label` is required by the type**, because it names both the figure and the control — an unlabelled video is an unlabelled control.
|
|
47
|
+
- **The toggle's glyphs are `aria-hidden` with `focusable='false'`**, so the state comes from `aria-pressed` rather than from a symbol, and the SVG never takes a tab stop in older browsers.
|
|
48
|
+
- **`<figure>`/`<figcaption>`** associates the caption with the preview.
|
|
49
|
+
- **Motion starts without a click by design**, which is exactly why the reduced-motion check matters. `@playOnIntent={{false}}` turns the tile into a still with a play button, which is the right choice in a dense grid.
|
|
50
|
+
|
|
51
|
+
## Theming
|
|
52
|
+
|
|
53
|
+
`--pretui-hvp-ratio` (the reserved box, written from `@ratio` through the kit's CSS guard, so a nonsense ratio drops its declaration and the stylesheet's `16 / 9` stands).
|
|
54
|
+
|
|
55
|
+
The rest — the toggle's surface, the overlay scrim, the caption's ink — comes from the kit's shared control and surface tokens rather than from a component-specific set, so a preview tile in a shelf matches the cards around it without per-theme work.
|
|
56
|
+
|
|
57
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|