@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
|
+
One asset, one slot: the drop zone and preview for a single file. Five states — empty, drag-over, in-flight, filled, failed — over a real `<input type='file'>`, so the pointer gesture and the keyboard path are the same control rather than two.
|
|
4
|
+
|
|
5
|
+
Use it for a card's image, an avatar, an attachment. For many assets, that is **AssetGrid**; for a curated set with a hero, **Gallery**.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@asset?, @defaultAsset?, @onAssetChange? — controlled / uncontrolled slot;
|
|
11
|
+
null means "deliberately empty"
|
|
12
|
+
@onSelect? — THE event: fires with the accepted File, before any preview exists
|
|
13
|
+
@onReject? — fires with everything that failed screening, one reason each
|
|
14
|
+
@onRemove? — fires when the reader clears the slot
|
|
15
|
+
@onRetry? — fires from the failure state's retry button
|
|
16
|
+
@onCancel? — fires from the in-flight state's cancel button
|
|
17
|
+
@uploading?, @uploadFraction?, @errorMessage? — the state levers
|
|
18
|
+
@accept? — an <input accept> list, enforced on BOTH the picker and the drop
|
|
19
|
+
@maxSize? — largest acceptable file, in bytes
|
|
20
|
+
@label?, @hint? — the empty invitation's two lines
|
|
21
|
+
@ratio? — reserved preview ratio; defaults to the asset's own, then 4 / 3
|
|
22
|
+
@icon? — icon-registry name for the empty glyph. Default 'ImagePlaceholder'
|
|
23
|
+
@disabled? — dimmed and inert; drops are ignored
|
|
24
|
+
@viewOnly? — preview only, nothing that mutates
|
|
25
|
+
@altLabel? — offer an alt-text line under the preview
|
|
26
|
+
|
|
27
|
+
<:preview> replaces the preview; receives the resolved asset
|
|
28
|
+
<:empty> replaces the invitation's copy — but NOT the browse button
|
|
29
|
+
<:actions> extra controls beside Remove
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Upload is yours; the well never does it.** `@onSelect` fires with the accepted `File` before any preview exists, which is the moment to start uploading. The well then reflects what you tell it through `@uploading`, `@uploadFraction` and `@errorMessage`.
|
|
33
|
+
|
|
34
|
+
**Four states resolve from three arguments in a fixed precedence**: failure beats in-flight, in-flight beats filled, filled beats empty. That ordering is the contract — a well that is both uploading and holding an old asset shows the upload.
|
|
35
|
+
|
|
36
|
+
**Omit `@uploadFraction` while uploading and you get an indeterminate spinner.** A fake percentage is a lie with a progress bar around it.
|
|
37
|
+
|
|
38
|
+
**Retry and cancel exist only when they can work.** No `@onRetry`, no retry button — an affordance that does nothing is worse than none.
|
|
39
|
+
|
|
40
|
+
**`@accept` and `@maxSize` are enforced on both paths.** A rule applied to the picker but not to the drop is a rule that will be discovered by a user rather than by a developer.
|
|
41
|
+
|
|
42
|
+
**A real file input sits behind the zone in every state**, and the browse button is a real `<button>` whose wording follows the state. That is why `<:empty>` replaces the copy but not the button: the button is the keyboard path and cannot be designed away.
|
|
43
|
+
|
|
44
|
+
**The preview routes through MediaViewer** rather than assuming an `<img>`, so a well holding a video or an audio file previews correctly.
|
|
45
|
+
|
|
46
|
+
## Prior art
|
|
47
|
+
|
|
48
|
+
**boxel-catalog's image-source-editor** is the source, with **React Aria's FileTrigger** as the reference for the input-behind-the-zone pattern.
|
|
49
|
+
|
|
50
|
+
Where Pretui is better, and the first one is a bug fix rather than a feature: **the catalog source hardcoded `alt=''`, which made every image it produced permanently undescribable.** `@altLabel` is the fix, and it is opt-in rather than always-on only because some slots really are decorative. Beyond that: five states rather than two, rejection reported with a reason per file rather than a silent refusal, and screening applied to the drop as well as the picker.
|
|
51
|
+
|
|
52
|
+
Where it is thinner: no crop or focal-point step after a pick (**ImageCropper** is a separate component and the two do not compose today), no multi-file mode — by design, but it means a caller wanting two slots renders two wells and coordinates them — no paste-from-clipboard, and no resumable or chunked upload contract beyond cancel and retry.
|
|
53
|
+
|
|
54
|
+
## Accessibility
|
|
55
|
+
|
|
56
|
+
- **The file input is real and present in every state**, so the control is reachable and operable by keyboard without any custom key handling.
|
|
57
|
+
- **The browse button is a real button whose label follows the state**, so a screen-reader user is told whether they are adding or replacing.
|
|
58
|
+
- **The failure carries a word and a role, not a colour.** The reason is text on the screen rather than a red border, which is the difference between a recoverable error and a mysterious one.
|
|
59
|
+
- **Remove announces itself**, reports `null` through `@onAssetChange`, and calls `@onRemove` — the state change is perceivable rather than silent.
|
|
60
|
+
- **`@viewOnly` keeps the preview and drops every mutation**, so a read-only slot has no focusable controls that lead nowhere.
|
|
61
|
+
- **`@altLabel` is the accessibility affordance that matters most here**, because it is what stops the asset from being undescribable downstream. Offer it whenever the image carries meaning.
|
|
62
|
+
- **The empty state's glyph is `aria-hidden`**; the invitation's text carries the meaning.
|
|
63
|
+
|
|
64
|
+
## Theming
|
|
65
|
+
|
|
66
|
+
`--pretui-well-aspect` (the reserved preview ratio), `--pretui-well-glyph-size`, `--pretui-well-transition`, plus the `--pretui-well-*` family for the state surfaces, `--pretui-on-neutral` and `--pretui-shadow-hairline`.
|
|
67
|
+
|
|
68
|
+
Reserving the ratio before the bytes arrive is why a card holding a well never reflows when its image loads — the same rule **ImageFrame** and **MediaPlayer** follow, and the reason all three take a ratio rather than inferring one late.
|
|
69
|
+
|
|
70
|
+
A theme retunes the five state surfaces through the `--pretui-well-*` tokens together, which keeps the empty, hover, in-flight, filled and failed states reading as one control changing rather than five different components.
|
|
71
|
+
|
|
72
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
// Pretui — AssetWell usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { AssetWell } from './asset-well';
|
|
6
|
+
import type { MediaAssetSpec } from '../internal/media-viewer';
|
|
7
|
+
import type { FileRejection } from '../internal/file-intake';
|
|
8
|
+
import { platePoster } from '../media-examples';
|
|
9
|
+
import { Token } from './token';
|
|
10
|
+
|
|
11
|
+
// ── AssetWell ────────────────────────────────────────────────────────────
|
|
12
|
+
const WELL_ASSET: MediaAssetSpec = {
|
|
13
|
+
src: platePoster('Chest 118, front', '1600 / 1067'),
|
|
14
|
+
name: 'chest-118-front.svg',
|
|
15
|
+
kind: 'image',
|
|
16
|
+
mimeType: 'image/svg+xml',
|
|
17
|
+
alt: 'Chest 118 photographed square-on before grading',
|
|
18
|
+
width: 1600,
|
|
19
|
+
height: 1067,
|
|
20
|
+
bytes: 184_320,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
class AssetWellUsage extends Component {
|
|
24
|
+
@tracked filled = true;
|
|
25
|
+
@tracked uploading = false;
|
|
26
|
+
@tracked fraction = 0.42;
|
|
27
|
+
@tracked determinate = true;
|
|
28
|
+
@tracked failure = '';
|
|
29
|
+
@tracked viewOnly = false;
|
|
30
|
+
@tracked ratio = '3 / 2';
|
|
31
|
+
@tracked lastEvent = '—';
|
|
32
|
+
|
|
33
|
+
get asset(): MediaAssetSpec | null {
|
|
34
|
+
return this.filled ? WELL_ASSET : null;
|
|
35
|
+
}
|
|
36
|
+
get uploadFraction(): number | undefined {
|
|
37
|
+
return this.determinate ? this.fraction : undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
setFilled = (v: boolean) => (this.filled = v);
|
|
41
|
+
setUploading = (v: boolean) => (this.uploading = v);
|
|
42
|
+
setDeterminate = (v: boolean) => (this.determinate = v);
|
|
43
|
+
setFraction = (v: number | null) => (this.fraction = v ?? 0);
|
|
44
|
+
setFailure = (v: string) => (this.failure = v);
|
|
45
|
+
setViewOnly = (v: boolean) => (this.viewOnly = v);
|
|
46
|
+
setRatio = (v: string) => (this.ratio = v);
|
|
47
|
+
|
|
48
|
+
noteSelect = (file: File) => {
|
|
49
|
+
this.lastEvent = `onSelect: ${file.name} (${file.size} bytes)`;
|
|
50
|
+
};
|
|
51
|
+
noteReject = (rejections: FileRejection[]) => {
|
|
52
|
+
this.lastEvent = `onReject: ${rejections.length} file(s) turned away`;
|
|
53
|
+
};
|
|
54
|
+
noteRemove = () => {
|
|
55
|
+
this.filled = false;
|
|
56
|
+
this.lastEvent = 'onRemove';
|
|
57
|
+
};
|
|
58
|
+
noteRetry = () => {
|
|
59
|
+
this.failure = '';
|
|
60
|
+
this.lastEvent = 'onRetry — failure cleared';
|
|
61
|
+
};
|
|
62
|
+
noteCancel = () => {
|
|
63
|
+
this.uploading = false;
|
|
64
|
+
this.lastEvent = 'onCancel — upload stopped';
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
get usage(): string {
|
|
68
|
+
return [
|
|
69
|
+
'<AssetWell',
|
|
70
|
+
' @asset={{this.asset}}',
|
|
71
|
+
" @accept='image/*'",
|
|
72
|
+
' @maxSize={{5242880}}',
|
|
73
|
+
" @ratio='3 / 2'",
|
|
74
|
+
" @label='Drop the plate photograph here'",
|
|
75
|
+
' @uploading={{this.uploading}}',
|
|
76
|
+
' @uploadFraction={{this.fraction}}',
|
|
77
|
+
' @errorMessage={{this.failure}}',
|
|
78
|
+
' @onSelect={{this.upload}}',
|
|
79
|
+
' @onRemove={{this.clear}}',
|
|
80
|
+
' @onRetry={{this.upload}}',
|
|
81
|
+
'/>',
|
|
82
|
+
].join('\n');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
<template>
|
|
86
|
+
<FreestyleUsage
|
|
87
|
+
@name='AssetWell'
|
|
88
|
+
@description="One asset, one slot, five states — empty, drag-over, in-flight, filled, failed — over a Dropzone that is the root in every one of them. That single composition decision is what makes the keyboard path structural rather than optional: Dropzone renders a FileTrigger, FileTrigger encapsulates a real file input, and neither can be designed away by a caller replacing the body. It also means dragging a file onto a FILLED well replaces it, which the catalog source could not do, and that accept lists and size limits are enforced identically on the drop path and the picker path because it is literally the same screening code. Drive the four states from the rail; nothing reflows between them because the preview's aspect ratio is reserved before any bytes arrive."
|
|
89
|
+
@source={{this.usage}}
|
|
90
|
+
>
|
|
91
|
+
<:example>
|
|
92
|
+
<AssetWell
|
|
93
|
+
@asset={{this.asset}}
|
|
94
|
+
@accept='image/*'
|
|
95
|
+
@maxSize={{5242880}}
|
|
96
|
+
@ratio={{this.ratio}}
|
|
97
|
+
@label='Drop the plate photograph here'
|
|
98
|
+
@hint='PNG, JPEG or SVG, up to 5 MB'
|
|
99
|
+
@altLabel='Alt text'
|
|
100
|
+
@uploading={{this.uploading}}
|
|
101
|
+
@uploadFraction={{this.uploadFraction}}
|
|
102
|
+
@errorMessage={{this.failure}}
|
|
103
|
+
@viewOnly={{this.viewOnly}}
|
|
104
|
+
@onSelect={{this.noteSelect}}
|
|
105
|
+
@onReject={{this.noteReject}}
|
|
106
|
+
@onRemove={{this.noteRemove}}
|
|
107
|
+
@onRetry={{this.noteRetry}}
|
|
108
|
+
@onCancel={{this.noteCancel}}
|
|
109
|
+
/>
|
|
110
|
+
<p class='dml-readout'>
|
|
111
|
+
<span class='dml-readoutLabel'>last event</span>
|
|
112
|
+
<Token @value={{this.lastEvent}} />
|
|
113
|
+
</p>
|
|
114
|
+
</:example>
|
|
115
|
+
|
|
116
|
+
<:api as |Args|>
|
|
117
|
+
<Args.Object
|
|
118
|
+
@name='asset'
|
|
119
|
+
@description='Controlled asset (a MediaAssetSpec). Omit the arg entirely for the uncontrolled case, where a dropped file becomes a local preview through an object URL the component owns and revokes — on replace, and again in willDestroy. A controlled well never invents an asset, because inventing a blob URL the caller cannot see is a resource it can never free.'
|
|
120
|
+
@value={{this.asset}}
|
|
121
|
+
/>
|
|
122
|
+
<Args.Bool
|
|
123
|
+
@name='(demo) filled'
|
|
124
|
+
@value={{this.filled}}
|
|
125
|
+
@defaultValue={{true}}
|
|
126
|
+
@description='Not an argument — the demo toggling whether the asset arg is a spec or null.'
|
|
127
|
+
@onInput={{this.setFilled}}
|
|
128
|
+
/>
|
|
129
|
+
<Args.Bool
|
|
130
|
+
@name='uploading'
|
|
131
|
+
@value={{this.uploading}}
|
|
132
|
+
@defaultValue={{false}}
|
|
133
|
+
@description='Puts the well in its in-flight state. The zone goes inert while it is set: a second drop mid-upload is a race nobody asked for.'
|
|
134
|
+
@onInput={{this.setUploading}}
|
|
135
|
+
/>
|
|
136
|
+
<Args.Bool
|
|
137
|
+
@name='(demo) determinate'
|
|
138
|
+
@value={{this.determinate}}
|
|
139
|
+
@defaultValue={{true}}
|
|
140
|
+
@description='Not an argument — whether the demo passes uploadFraction at all. Off means the fraction is undefined and the well shows an indeterminate spinner, which is the honest answer when the transport reports no progress. A fake percentage is a lie with a progress bar around it.'
|
|
141
|
+
@onInput={{this.setDeterminate}}
|
|
142
|
+
/>
|
|
143
|
+
<Args.Number
|
|
144
|
+
@name='uploadFraction'
|
|
145
|
+
@value={{this.fraction}}
|
|
146
|
+
@min={{0}}
|
|
147
|
+
@max={{1}}
|
|
148
|
+
@step={{0.01}}
|
|
149
|
+
@description='Completed fraction, 0–1. Omit while uploading for the indeterminate spinner.'
|
|
150
|
+
@onInput={{this.setFraction}}
|
|
151
|
+
/>
|
|
152
|
+
<Args.String
|
|
153
|
+
@name='errorMessage'
|
|
154
|
+
@value={{this.failure}}
|
|
155
|
+
@description='Non-empty puts the well in its failure state and is the text shown. The failure channel is a glyph AND a word AND a role — never a colour, which is the one thing the source had no answer for.'
|
|
156
|
+
@onInput={{this.setFailure}}
|
|
157
|
+
/>
|
|
158
|
+
<Args.String
|
|
159
|
+
@name='ratio'
|
|
160
|
+
@value={{this.ratio}}
|
|
161
|
+
@description="Aspect ratio reserved for the preview — '16 / 9', '1 / 1'. Defaults to the asset's own, then 4 / 3. Reserving it before the bytes land is why nothing on the card reflows. The value goes through the shared cssValue guard, so a caller string can never inject declarations into a style attribute."
|
|
162
|
+
@onInput={{this.setRatio}}
|
|
163
|
+
/>
|
|
164
|
+
<Args.Bool
|
|
165
|
+
@name='viewOnly'
|
|
166
|
+
@value={{this.viewOnly}}
|
|
167
|
+
@defaultValue={{false}}
|
|
168
|
+
@description='Show the preview and nothing that mutates — no replace, no remove.'
|
|
169
|
+
@onInput={{this.setViewOnly}}
|
|
170
|
+
/>
|
|
171
|
+
<Args.String
|
|
172
|
+
@name='accept'
|
|
173
|
+
@value='image/*'
|
|
174
|
+
@description='An input accept list. Enforced on BOTH the picker and the drop, by the same code, with the same wording in the same live region.'
|
|
175
|
+
@hideControls={{true}}
|
|
176
|
+
/>
|
|
177
|
+
<Args.Number
|
|
178
|
+
@name='maxSize'
|
|
179
|
+
@value={{5242880}}
|
|
180
|
+
@description='Largest acceptable file, in bytes. Anything over it lands on onReject with a reason.'
|
|
181
|
+
@hideControls={{true}}
|
|
182
|
+
/>
|
|
183
|
+
<Args.String
|
|
184
|
+
@name='altLabel'
|
|
185
|
+
@description="Offer an alt-text line under the preview. Opt-in because some slots really are decorative — but the source hardcoded alt='' with no alt field anywhere on its model, which made every image it ever held permanently undescribable."
|
|
186
|
+
@value='Alt text'
|
|
187
|
+
@hideControls={{true}}
|
|
188
|
+
/>
|
|
189
|
+
<Args.Action
|
|
190
|
+
@name='onSelect'
|
|
191
|
+
@description='(file) — THE event. Fires with the accepted file from a drop or a pick, before any preview exists. Upload from here.'
|
|
192
|
+
/>
|
|
193
|
+
<Args.Action
|
|
194
|
+
@name='onAssetChange'
|
|
195
|
+
@description="(asset | null) whenever the well's own asset changes: on adopt in the uncontrolled case, on remove in both."
|
|
196
|
+
/>
|
|
197
|
+
<Args.Action
|
|
198
|
+
@name='onReject'
|
|
199
|
+
@description='(rejections) — everything that failed screening, one reason each.'
|
|
200
|
+
/>
|
|
201
|
+
<Args.Action
|
|
202
|
+
@name='onRemove'
|
|
203
|
+
@description='() when the reader clears the slot.'
|
|
204
|
+
/>
|
|
205
|
+
<Args.Action
|
|
206
|
+
@name='onRetry'
|
|
207
|
+
@description='() from the failure state. Omit it and no retry button is offered at all — an affordance that does nothing is worse than none.'
|
|
208
|
+
/>
|
|
209
|
+
<Args.Action
|
|
210
|
+
@name='onCancel'
|
|
211
|
+
@description='() from the in-flight state, on the same terms.'
|
|
212
|
+
/>
|
|
213
|
+
<Args.Yield
|
|
214
|
+
@name='preview'
|
|
215
|
+
@description='Replaces the preview entirely; receives the resolved asset.'
|
|
216
|
+
/>
|
|
217
|
+
<Args.Yield
|
|
218
|
+
@name='empty'
|
|
219
|
+
@description="Replaces the invitation's copy. The browse button is NOT part of this block — it is the keyboard path."
|
|
220
|
+
/>
|
|
221
|
+
<Args.Yield
|
|
222
|
+
@name='actions'
|
|
223
|
+
@description='Extra controls beside Remove in the filled state.'
|
|
224
|
+
/>
|
|
225
|
+
</:api>
|
|
226
|
+
|
|
227
|
+
<:cssVars as |Css|>
|
|
228
|
+
<Css.Basic
|
|
229
|
+
@name='pretui-well-aspect'
|
|
230
|
+
@type='ratio'
|
|
231
|
+
@description='Reserved preview ratio. Set through @ratio; exposed so a theme can floor it.'
|
|
232
|
+
/>
|
|
233
|
+
<Css.Basic
|
|
234
|
+
@name='pretui-well-glyph-size'
|
|
235
|
+
@type='dimension'
|
|
236
|
+
@description="Size of the empty state's icon."
|
|
237
|
+
/>
|
|
238
|
+
<Css.Basic
|
|
239
|
+
@name='pretui-well-transition'
|
|
240
|
+
@type='duration'
|
|
241
|
+
@description='Fade of the preview tools. Zeroed under prefers-reduced-motion.'
|
|
242
|
+
/>
|
|
243
|
+
</:cssVars>
|
|
244
|
+
</FreestyleUsage>
|
|
245
|
+
|
|
246
|
+
<style scoped>
|
|
247
|
+
.dml-readout {
|
|
248
|
+
display: flex;
|
|
249
|
+
align-items: center;
|
|
250
|
+
gap: var(--space-2, 6px);
|
|
251
|
+
margin: var(--space-3, 8px) 0 0;
|
|
252
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
253
|
+
color: var(--muted-foreground);
|
|
254
|
+
}
|
|
255
|
+
.dml-readoutLabel {
|
|
256
|
+
font-weight: var(--weight-medium, 500);
|
|
257
|
+
}
|
|
258
|
+
</style>
|
|
259
|
+
</template>
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export const DEMOS_ASSET_WELL: Record<string, unknown> = {
|
|
263
|
+
AssetWell: AssetWellUsage,
|
|
264
|
+
};
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// Pretui — AudioPlayer: MediaPlayer skinned for audio, with cover art, title and artist.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { MediaPlayer } from './media-player';
|
|
4
|
+
import type { MediaPlayerSignature } from './media-player';
|
|
5
|
+
|
|
6
|
+
// ── AudioPlayer ──────────────────────────────────────────────────────────
|
|
7
|
+
//
|
|
8
|
+
// A skin, in the Tag-wraps-Pill idiom: it curries `@kind='audio'` and adds
|
|
9
|
+
// the one thing an audio track needs that a video does not — a face. Cover
|
|
10
|
+
// art, title and artist are args with slot escape hatches, per Law 7.
|
|
11
|
+
|
|
12
|
+
export interface AudioPlayerSignature {
|
|
13
|
+
Args: Omit<
|
|
14
|
+
MediaPlayerSignature['Args'],
|
|
15
|
+
'kind' | 'poster' | 'placeholder' | 'thumbnails' | 'aspectRatio'
|
|
16
|
+
> & {
|
|
17
|
+
/** Cover art URL. */
|
|
18
|
+
cover?: string;
|
|
19
|
+
/** Alt text for the cover. Empty (the default) marks it decorative,
|
|
20
|
+
* which is right when the title beside it says the same thing. */
|
|
21
|
+
coverAlt?: string;
|
|
22
|
+
/** Track title. */
|
|
23
|
+
title?: string;
|
|
24
|
+
/** Artist, show, or byline. */
|
|
25
|
+
artist?: string;
|
|
26
|
+
};
|
|
27
|
+
Blocks: {
|
|
28
|
+
/** Replaces the cover art entirely. */
|
|
29
|
+
art: [];
|
|
30
|
+
/** Replaces the title/artist stack. */
|
|
31
|
+
meta: [];
|
|
32
|
+
/** Forwarded to MediaPlayer's control-bar slot. */
|
|
33
|
+
controls: [];
|
|
34
|
+
/** Forwarded to MediaPlayer's footer. */
|
|
35
|
+
footer: [];
|
|
36
|
+
};
|
|
37
|
+
Element: HTMLDivElement;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export class AudioPlayer extends Component<AudioPlayerSignature> {
|
|
41
|
+
get label(): string {
|
|
42
|
+
return this.args.label ?? this.args.title ?? 'Audio';
|
|
43
|
+
}
|
|
44
|
+
get coverAlt(): string {
|
|
45
|
+
return this.args.coverAlt ?? '';
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
<template>
|
|
49
|
+
<div class='pretui-audio' data-test-pretui-audio-player ...attributes>
|
|
50
|
+
<div class='pretui-audio-head'>
|
|
51
|
+
<div class='pretui-audio-art'>
|
|
52
|
+
{{#if @cover}}
|
|
53
|
+
<img src={{@cover}} alt={{this.coverAlt}} loading='lazy' />
|
|
54
|
+
{{/if}}{{yield to='art'}}
|
|
55
|
+
</div>
|
|
56
|
+
<div class='pretui-audio-meta'>
|
|
57
|
+
{{#if @title}}
|
|
58
|
+
<span class='pretui-audio-title'>{{@title}}</span>
|
|
59
|
+
{{/if}}
|
|
60
|
+
{{#if @artist}}
|
|
61
|
+
<span class='pretui-audio-artist'>{{@artist}}</span>
|
|
62
|
+
{{/if}}{{yield to='meta'}}
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
<MediaPlayer
|
|
66
|
+
@kind='audio'
|
|
67
|
+
@src={{@src}}
|
|
68
|
+
@label={{this.label}}
|
|
69
|
+
@tracks={{@tracks}}
|
|
70
|
+
@transcript={{@transcript}}
|
|
71
|
+
@transcriptOpen={{@transcriptOpen}}
|
|
72
|
+
@captionsDefault={{@captionsDefault}}
|
|
73
|
+
@chrome={{@chrome}}
|
|
74
|
+
@seekOffset={{@seekOffset}}
|
|
75
|
+
@autoHide={{@autoHide}}
|
|
76
|
+
@loop={{@loop}}
|
|
77
|
+
@muted={{@muted}}
|
|
78
|
+
@preload={{@preload}}
|
|
79
|
+
@crossOrigin={{@crossOrigin}}
|
|
80
|
+
@quietStatus={{@quietStatus}}
|
|
81
|
+
@onSnapshot={{@onSnapshot}}
|
|
82
|
+
>
|
|
83
|
+
<:controls>{{yield to='controls'}}</:controls>
|
|
84
|
+
<:footer>{{yield to='footer'}}</:footer>
|
|
85
|
+
</MediaPlayer>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<style scoped>
|
|
89
|
+
@layer PretComponent {
|
|
90
|
+
.pretui-audio {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex-direction: column;
|
|
93
|
+
gap: 10px;
|
|
94
|
+
min-width: 0;
|
|
95
|
+
}
|
|
96
|
+
.pretui-audio-head {
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
gap: 12px;
|
|
100
|
+
min-width: 0;
|
|
101
|
+
}
|
|
102
|
+
.pretui-audio-art {
|
|
103
|
+
flex: 0 0 auto;
|
|
104
|
+
width: 52px;
|
|
105
|
+
aspect-ratio: 1;
|
|
106
|
+
border-radius: var(--radius-sm, 6px);
|
|
107
|
+
overflow: hidden;
|
|
108
|
+
background: color-mix(
|
|
109
|
+
in oklch,
|
|
110
|
+
var(--foreground) 8%,
|
|
111
|
+
var(--card)
|
|
112
|
+
);
|
|
113
|
+
box-shadow: var(--pretui-shadow-hairline, 0 0 0 1px var(--border));
|
|
114
|
+
}
|
|
115
|
+
.pretui-audio-art:empty {
|
|
116
|
+
display: none;
|
|
117
|
+
}
|
|
118
|
+
.pretui-audio-art img {
|
|
119
|
+
width: 100%;
|
|
120
|
+
height: 100%;
|
|
121
|
+
object-fit: cover;
|
|
122
|
+
display: block;
|
|
123
|
+
}
|
|
124
|
+
.pretui-audio-meta {
|
|
125
|
+
display: flex;
|
|
126
|
+
flex-direction: column;
|
|
127
|
+
gap: 1px;
|
|
128
|
+
min-width: 0;
|
|
129
|
+
}
|
|
130
|
+
.pretui-audio-meta:empty {
|
|
131
|
+
display: none;
|
|
132
|
+
}
|
|
133
|
+
.pretui-audio-title {
|
|
134
|
+
font-size: var(--text-body, 14px);
|
|
135
|
+
font-weight: 600;
|
|
136
|
+
letter-spacing: -0.01em;
|
|
137
|
+
color: var(--foreground);
|
|
138
|
+
overflow: hidden;
|
|
139
|
+
text-overflow: ellipsis;
|
|
140
|
+
white-space: nowrap;
|
|
141
|
+
}
|
|
142
|
+
.pretui-audio-artist {
|
|
143
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
144
|
+
color: var(--muted-foreground);
|
|
145
|
+
overflow: hidden;
|
|
146
|
+
text-overflow: ellipsis;
|
|
147
|
+
white-space: nowrap;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
</style>
|
|
151
|
+
</template>
|
|
152
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
The audio skin over **MediaPlayer**: cover art, title and artist beside a compact transport laid out in normal flow rather than over a picture.
|
|
4
|
+
|
|
5
|
+
Like **VideoPlayer** it is a skin, not a rewrite — the transport, the transcript, the status line and the keyboard contract are all the base component's. Use it for a single track. There is no playlist here; a queue is the caller's to build around it.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
every MediaPlayer arg except kind, poster, placeholder, thumbnails and aspectRatio
|
|
11
|
+
@cover? — cover art URL
|
|
12
|
+
@coverAlt? — alt text for the cover; empty by default, which marks it decorative
|
|
13
|
+
@title? — track title
|
|
14
|
+
@artist? — artist, show, or byline
|
|
15
|
+
|
|
16
|
+
<:art> replaces the cover art entirely
|
|
17
|
+
<:meta> replaces the title/artist stack
|
|
18
|
+
<:controls> forwarded to MediaPlayer's control bar
|
|
19
|
+
<:footer> forwarded to MediaPlayer's footer
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Five of the base's args are omitted rather than ignored**: the kind is fixed to `'audio'`, and the poster, placeholder, thumbnails and aspect-ratio args have nothing to apply to when there is no picture. The type says so, so passing one is a compile error rather than a silent no-op.
|
|
23
|
+
|
|
24
|
+
**`@title` is the fallback accessible name.** The label resolves as `@label`, then `@title`, then the literal `'Audio'` — so a player with a title is never nameless, and a player with neither is named honestly rather than not at all.
|
|
25
|
+
|
|
26
|
+
**`@coverAlt` defaults to empty, marking the cover decorative.** That is right when the title beside it says the same thing, which is the common case; supply alt text only when the artwork carries meaning the text does not.
|
|
27
|
+
|
|
28
|
+
**The cover is lazy-loaded.**
|
|
29
|
+
|
|
30
|
+
## Prior art
|
|
31
|
+
|
|
32
|
+
The upstream here is **MediaPlayer** itself — this is a skin rather than a port. Media Chrome underneath ships an audio layout; what it does not ship is the metadata block, and the cover/title/artist arrangement is the thing every product rebuilds.
|
|
33
|
+
|
|
34
|
+
Where Pretui is better: the metadata stack is part of the component and replaceable through `<:art>` and `<:meta>`, so a caller who needs a different arrangement overrides a block instead of abandoning the component. And the transcript — genuinely more valuable for audio than for video, since there is no picture to read — comes from the base for free.
|
|
35
|
+
|
|
36
|
+
Where it is thinner: no playlist, no queue, no chapter list, no waveform. **Waveform** is a separate component and the two do not compose today, which is the most obvious missing pairing in this category.
|
|
37
|
+
|
|
38
|
+
## Accessibility
|
|
39
|
+
|
|
40
|
+
- **The player is named even when the caller forgets**, through the `@label` → `@title` → `'Audio'` chain. That is weaker than a real label and better than an unnamed region.
|
|
41
|
+
- **The cover is decorative by default.** An `alt` of empty string is a deliberate signal, not a missing attribute — it tells a screen reader to skip an image whose meaning is already in the title beside it. Overriding it matters when the artwork is the content.
|
|
42
|
+
- **Audio has no picture, so the transcript carries more weight here.** Everything that would be conveyed visually in a video is conveyed by the transcript in audio, and it is the one thing worth supplying if you supply nothing else.
|
|
43
|
+
- **The live region, the status line and the disclosure contract are MediaPlayer's**, unchanged.
|
|
44
|
+
|
|
45
|
+
## Theming
|
|
46
|
+
|
|
47
|
+
`--pretui-media-ink`, `--pretui-media-radius`, `--pretui-media-scrim`, `--pretui-destructive-ink`, `--pretui-shadow-card`, `--pretui-shadow-hairline` — all from **MediaPlayer**, which is the point: an audio player and a video player in the same theme are visibly the same family.
|
|
48
|
+
|
|
49
|
+
The audio layout adds no tokens of its own. The cover size and the metadata stack's spacing are fixed, so a row of audio players aligns without per-instance tuning.
|
|
50
|
+
|
|
51
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// Pretui — AudioPlayer usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { AudioPlayer } from './audio-player';
|
|
6
|
+
import type { MediaChrome } from './media-player';
|
|
7
|
+
import {
|
|
8
|
+
SOURCING_TRACKS,
|
|
9
|
+
SOURCING_TRANSCRIPT,
|
|
10
|
+
TONE_ASSET,
|
|
11
|
+
TONE_WAV,
|
|
12
|
+
} from '../media-examples';
|
|
13
|
+
import { CHROMES } from '../demo-media';
|
|
14
|
+
|
|
15
|
+
// ── AudioPlayer ──────────────────────────────────────────────────────────
|
|
16
|
+
class AudioPlayerUsage extends Component {
|
|
17
|
+
chromes = CHROMES;
|
|
18
|
+
tracks = SOURCING_TRACKS;
|
|
19
|
+
transcript = SOURCING_TRANSCRIPT;
|
|
20
|
+
src = TONE_WAV;
|
|
21
|
+
cover = TONE_ASSET.thumbnail;
|
|
22
|
+
|
|
23
|
+
@tracked title = 'Lot B-1180 — desk note';
|
|
24
|
+
@tracked artist = 'Sourcing desk · Kandy line';
|
|
25
|
+
@tracked chrome = 'compact';
|
|
26
|
+
|
|
27
|
+
setTitle = (v: string) => (this.title = v);
|
|
28
|
+
setArtist = (v: string) => (this.artist = v);
|
|
29
|
+
setChrome = (v: string) => (this.chrome = v);
|
|
30
|
+
|
|
31
|
+
get chromeValue(): MediaChrome {
|
|
32
|
+
return this.chrome as MediaChrome;
|
|
33
|
+
}
|
|
34
|
+
get usage(): string {
|
|
35
|
+
return [
|
|
36
|
+
'<AudioPlayer',
|
|
37
|
+
' @src={{this.src}}',
|
|
38
|
+
` @title='${this.title}'`,
|
|
39
|
+
` @artist='${this.artist}'`,
|
|
40
|
+
' @cover={{this.cover}}',
|
|
41
|
+
' @transcript={{this.transcript}}',
|
|
42
|
+
'/>',
|
|
43
|
+
].join('\n');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
<FreestyleUsage
|
|
48
|
+
@name='AudioPlayer'
|
|
49
|
+
@description="A skin over MediaPlayer, in the wrap-and-curry idiom Law 10 names — it curries @kind='audio' and adds the one thing a track needs that a video does not: a face. Cover art, title and artist are args, each with a slot escape hatch, and everything else is forwarded untouched. That is the whole component; there is no second transport, no second theme and no second keyboard map to keep in sync."
|
|
50
|
+
@source={{this.usage}}
|
|
51
|
+
>
|
|
52
|
+
<:example>
|
|
53
|
+
<AudioPlayer
|
|
54
|
+
@src={{this.src}}
|
|
55
|
+
@title={{this.title}}
|
|
56
|
+
@artist={{this.artist}}
|
|
57
|
+
@cover={{this.cover}}
|
|
58
|
+
@chrome={{this.chromeValue}}
|
|
59
|
+
@tracks={{this.tracks}}
|
|
60
|
+
@transcript={{this.transcript}}
|
|
61
|
+
/>
|
|
62
|
+
</:example>
|
|
63
|
+
|
|
64
|
+
<:api as |Args|>
|
|
65
|
+
<Args.String
|
|
66
|
+
@name='title'
|
|
67
|
+
@value={{this.title}}
|
|
68
|
+
@description='Track title. Also the default accessible name when @label is absent.'
|
|
69
|
+
@onInput={{this.setTitle}}
|
|
70
|
+
/>
|
|
71
|
+
<Args.String
|
|
72
|
+
@name='artist'
|
|
73
|
+
@value={{this.artist}}
|
|
74
|
+
@description='Artist, show, or byline.'
|
|
75
|
+
@onInput={{this.setArtist}}
|
|
76
|
+
/>
|
|
77
|
+
<Args.String
|
|
78
|
+
@name='cover'
|
|
79
|
+
@value={{this.cover}}
|
|
80
|
+
@description='Cover art URL. The plate on this page is a generated SVG, so the demo needs no network.'
|
|
81
|
+
@hideControls={{true}}
|
|
82
|
+
/>
|
|
83
|
+
<Args.String
|
|
84
|
+
@name='coverAlt'
|
|
85
|
+
@defaultValue=''
|
|
86
|
+
@description='Alt text for the cover. Empty (the default) marks it decorative, which is right when the title beside it says the same thing — the alternative is a screen reader reading the album name twice.'
|
|
87
|
+
@hideControls={{true}}
|
|
88
|
+
/>
|
|
89
|
+
<Args.String
|
|
90
|
+
@name='chrome'
|
|
91
|
+
@value={{this.chrome}}
|
|
92
|
+
@options={{this.chromes}}
|
|
93
|
+
@defaultValue='full'
|
|
94
|
+
@description='Forwarded to MediaPlayer.'
|
|
95
|
+
@onInput={{this.setChrome}}
|
|
96
|
+
/>
|
|
97
|
+
<Args.Yield
|
|
98
|
+
@name='art'
|
|
99
|
+
@description='Replaces the cover art entirely — a canvas, a waveform, an avatar stack.'
|
|
100
|
+
/>
|
|
101
|
+
<Args.Yield
|
|
102
|
+
@name='meta'
|
|
103
|
+
@description='Replaces the title/artist stack.'
|
|
104
|
+
/>
|
|
105
|
+
<Args.Yield @name='controls' @description='Forwarded to the bar.' />
|
|
106
|
+
<Args.Yield @name='footer' @description='Forwarded to the footer.' />
|
|
107
|
+
<Args.Base
|
|
108
|
+
@name='everything else'
|
|
109
|
+
@description='src, label, tracks, transcript, transcriptOpen, captionsDefault, seekOffset, loop, muted, preload, crossOrigin, quietStatus and onSnapshot are all forwarded to MediaPlayer verbatim. The kind, poster and aspectRatio args are removed from the signature rather than ignored, because a skin that accepts an arg it cannot honour is a lie.'
|
|
110
|
+
/>
|
|
111
|
+
</:api>
|
|
112
|
+
</FreestyleUsage>
|
|
113
|
+
</template>
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export const DEMOS_AUDIO_PLAYER: Record<string, unknown> = {
|
|
117
|
+
AudioPlayer: AudioPlayerUsage,
|
|
118
|
+
};
|