@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,481 @@
|
|
|
1
|
+
// Pretui — Select: BoxelSelect (ember-power-select) behind Pretui's value API.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { modifier } from 'ember-modifier';
|
|
5
|
+
import { consume } from 'ember-provide-consume-context';
|
|
6
|
+
import { on } from '@ember/modifier';
|
|
7
|
+
import SearchIcon from '@cardstack/boxel-icons/search';
|
|
8
|
+
import { BoxelSelect } from '@cardstack/boxel-ui/components';
|
|
9
|
+
import { emit, firstDefined } from '../pretui-primitives';
|
|
10
|
+
import { POPUPS_IN_PLACE } from '../internal/overlay';
|
|
11
|
+
import type { ControlNotifyArgs } from '../pretui-primitives';
|
|
12
|
+
|
|
13
|
+
export interface SelectOption {
|
|
14
|
+
value: string;
|
|
15
|
+
label: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface SelectSignature {
|
|
19
|
+
Args: ControlNotifyArgs & {
|
|
20
|
+
options?: SelectOption[];
|
|
21
|
+
/** alias — the collection noun the React contract calls canonical for a
|
|
22
|
+
* flat list. Accepted so `@items` is not a silent empty select. */
|
|
23
|
+
items?: SelectOption[];
|
|
24
|
+
value?: string;
|
|
25
|
+
defaultValue?: string;
|
|
26
|
+
placeholder?: string;
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
/** adds a search box above the list that takes focus when the list
|
|
29
|
+
* opens and filters options by label. Off by default: typeahead on the
|
|
30
|
+
* trigger covers most lists */
|
|
31
|
+
searchEnabled?: boolean;
|
|
32
|
+
/** the id your `<label for>` points at. The trigger keeps BoxelSelect's
|
|
33
|
+
* own id, so this only finds the label, which then names the trigger
|
|
34
|
+
* through aria-labelledby */
|
|
35
|
+
controlId?: string;
|
|
36
|
+
/** accessible name for the trigger, when there is no label */
|
|
37
|
+
label?: string;
|
|
38
|
+
/** id of an element that names the trigger; preferred over @label when
|
|
39
|
+
* a visible or visually hidden label already exists */
|
|
40
|
+
labelledBy?: string;
|
|
41
|
+
/** alias — React Aria / Base UI spelling of @disabled */
|
|
42
|
+
isDisabled?: boolean;
|
|
43
|
+
};
|
|
44
|
+
Element: HTMLDivElement;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// The flagship, rebuilt ON boxel-ui (standing reuse directive): wraps
|
|
48
|
+
// BoxelSelect (ember-power-select) for real listbox behavior — keyboard nav,
|
|
49
|
+
// scroll-into-view and trigger typeahead — while
|
|
50
|
+
// keeping Pretui's public API (value/defaultValue/onValueChange hybrid).
|
|
51
|
+
// The dropdown renders in BoxelSelect's wormhole, so no overflow-hidden
|
|
52
|
+
// ancestor clips it. BoxelSelect copies its --boxel-dropdown-* knobs from the
|
|
53
|
+
// trigger onto the wormhole on every open, and a custom property's computed
|
|
54
|
+
// value has its var() references resolved — so setting those knobs to theme
|
|
55
|
+
// tokens here carries the theme, dark mode included, onto the dropdown
|
|
56
|
+
// without any :deep() rule reaching it.
|
|
57
|
+
//
|
|
58
|
+
// Type-only cast: the CLI's bundled boxel-ui types import PowerSelectArgs
|
|
59
|
+
// from ember-power-select, which the realm type env cannot resolve, so
|
|
60
|
+
// BoxelSelect's visible args collapse to options/variant. Re-assert the
|
|
61
|
+
// power-select arg surface we actually use; runtime is the real BoxelSelect.
|
|
62
|
+
interface PoweredSelectSignature {
|
|
63
|
+
Args: {
|
|
64
|
+
options: SelectOption[];
|
|
65
|
+
selected?: SelectOption;
|
|
66
|
+
onChange: (option: SelectOption | null) => void;
|
|
67
|
+
placeholder?: string;
|
|
68
|
+
disabled?: boolean;
|
|
69
|
+
searchEnabled?: boolean;
|
|
70
|
+
searchField?: string;
|
|
71
|
+
beforeOptionsComponent?: unknown;
|
|
72
|
+
matchTriggerWidth?: boolean;
|
|
73
|
+
dropdownClass?: string;
|
|
74
|
+
renderInPlace?: boolean;
|
|
75
|
+
ariaLabel?: string;
|
|
76
|
+
ariaLabelledBy?: string;
|
|
77
|
+
};
|
|
78
|
+
Blocks: { default: [SelectOption] };
|
|
79
|
+
Element: HTMLElement;
|
|
80
|
+
}
|
|
81
|
+
const PoweredSelect = BoxelSelect as unknown as new (
|
|
82
|
+
owner: unknown,
|
|
83
|
+
args: PoweredSelectSignature['Args'],
|
|
84
|
+
) => Component<PoweredSelectSignature>;
|
|
85
|
+
|
|
86
|
+
// The trigger is a role='combobox' div, which a <label> does not name, so a
|
|
87
|
+
// label pointing at @controlId (or wrapping the Select) is linked through
|
|
88
|
+
// aria-labelledby — label first, then the trigger itself, so the chosen
|
|
89
|
+
// value is still announced after the name.
|
|
90
|
+
const nameFromLabel = modifier(
|
|
91
|
+
(wrap: HTMLElement, [controlId, explicit]: [string | undefined, boolean]) => {
|
|
92
|
+
if (explicit) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
let trigger = wrap.querySelector<HTMLElement>(
|
|
96
|
+
'[data-pretui-select-trigger]',
|
|
97
|
+
);
|
|
98
|
+
if (!trigger) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
let label =
|
|
102
|
+
(controlId
|
|
103
|
+
? document.querySelector<HTMLElement>(
|
|
104
|
+
`label[for="${CSS.escape(controlId)}"]`,
|
|
105
|
+
)
|
|
106
|
+
: null) ?? wrap.closest('label');
|
|
107
|
+
if (!label) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (!label.id) {
|
|
111
|
+
label.id = `${trigger.id}-label`;
|
|
112
|
+
}
|
|
113
|
+
trigger.setAttribute('aria-labelledby', `${label.id} ${trigger.id}`);
|
|
114
|
+
},
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
// The search box ember-power-select renders above the options, with a
|
|
118
|
+
// search icon and focus on open. BoxelSelect's own before-options component
|
|
119
|
+
// turns autofocus off, which leaves the box reachable by pointer only: from
|
|
120
|
+
// the trigger, typing runs typeahead and Tab closes the list.
|
|
121
|
+
interface SelectSearchSignature {
|
|
122
|
+
Args: {
|
|
123
|
+
select: {
|
|
124
|
+
searchText: string;
|
|
125
|
+
isOpen: boolean;
|
|
126
|
+
actions: { close: (e?: Event) => void; search: (term: string) => void };
|
|
127
|
+
};
|
|
128
|
+
searchEnabled?: boolean;
|
|
129
|
+
onInput: (e: Event) => unknown;
|
|
130
|
+
onKeydown: (e: Event) => unknown;
|
|
131
|
+
onFocus: (e: Event) => void;
|
|
132
|
+
onBlur: (e: Event) => void;
|
|
133
|
+
listboxId?: string;
|
|
134
|
+
ariaActiveDescendant?: string;
|
|
135
|
+
ariaLabel?: string;
|
|
136
|
+
ariaLabelledBy?: string;
|
|
137
|
+
ariaDescribedBy?: string;
|
|
138
|
+
};
|
|
139
|
+
Element: HTMLDivElement;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
class SelectSearch extends Component<SelectSearchSignature> {
|
|
143
|
+
handleInput = (e: Event) => {
|
|
144
|
+
this.args.onInput(e);
|
|
145
|
+
};
|
|
146
|
+
handleKeydown = (e: Event) => {
|
|
147
|
+
if (this.args.onKeydown(e) === false) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (e instanceof KeyboardEvent && e.key === 'Enter') {
|
|
151
|
+
this.args.select.actions.close(e);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
// No positional args, so this runs once per open; the frame delay lets
|
|
155
|
+
// the dropdown finish positioning before focus moves into it.
|
|
156
|
+
focusOnOpen = modifier((el: HTMLInputElement) => {
|
|
157
|
+
let frame = requestAnimationFrame(() => el.focus());
|
|
158
|
+
return () => {
|
|
159
|
+
cancelAnimationFrame(frame);
|
|
160
|
+
this.args.select.actions.search('');
|
|
161
|
+
};
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
<template>
|
|
165
|
+
{{#if @searchEnabled}}
|
|
166
|
+
<div
|
|
167
|
+
class='ember-power-select-search pretui-selectsearch'
|
|
168
|
+
data-test-pretui-select-search
|
|
169
|
+
...attributes
|
|
170
|
+
>
|
|
171
|
+
<SearchIcon
|
|
172
|
+
class='pretui-selectsearch-icon'
|
|
173
|
+
width='16'
|
|
174
|
+
height='16'
|
|
175
|
+
aria-hidden='true'
|
|
176
|
+
/>
|
|
177
|
+
{{! template-lint-disable require-input-label }}
|
|
178
|
+
<input
|
|
179
|
+
type='search'
|
|
180
|
+
class='ember-power-select-search-input'
|
|
181
|
+
value={{@select.searchText}}
|
|
182
|
+
placeholder='Search…'
|
|
183
|
+
autocomplete='off'
|
|
184
|
+
autocorrect='off'
|
|
185
|
+
autocapitalize='off'
|
|
186
|
+
spellcheck='false'
|
|
187
|
+
role='combobox'
|
|
188
|
+
aria-activedescendant={{@ariaActiveDescendant}}
|
|
189
|
+
aria-controls={{@listboxId}}
|
|
190
|
+
aria-owns={{@listboxId}}
|
|
191
|
+
aria-autocomplete='list'
|
|
192
|
+
aria-haspopup='listbox'
|
|
193
|
+
aria-expanded={{if @select.isOpen 'true' 'false'}}
|
|
194
|
+
aria-label={{if @ariaLabel @ariaLabel 'Search options'}}
|
|
195
|
+
aria-labelledby={{@ariaLabelledBy}}
|
|
196
|
+
aria-describedby={{@ariaDescribedBy}}
|
|
197
|
+
{{on 'input' this.handleInput}}
|
|
198
|
+
{{on 'keydown' this.handleKeydown}}
|
|
199
|
+
{{on 'focus' @onFocus}}
|
|
200
|
+
{{on 'blur' @onBlur}}
|
|
201
|
+
{{this.focusOnOpen}}
|
|
202
|
+
data-test-pretui-select-search-input
|
|
203
|
+
/>
|
|
204
|
+
</div>
|
|
205
|
+
{{/if}}
|
|
206
|
+
<style scoped>
|
|
207
|
+
@layer PretComponent {
|
|
208
|
+
.pretui-selectsearch {
|
|
209
|
+
position: relative;
|
|
210
|
+
}
|
|
211
|
+
.pretui-selectsearch-icon {
|
|
212
|
+
--icon-color: var(--muted-foreground);
|
|
213
|
+
|
|
214
|
+
position: absolute;
|
|
215
|
+
/* the box's padding, then the input's */
|
|
216
|
+
inset-inline-start: calc(var(--boxel-sp-xs) + var(--_select-px));
|
|
217
|
+
top: 50%;
|
|
218
|
+
translate: 0 -50%;
|
|
219
|
+
pointer-events: none;
|
|
220
|
+
}
|
|
221
|
+
/* BoxelSelect's dropdown rules set the input's padding; this makes
|
|
222
|
+
room for the icon */
|
|
223
|
+
.pretui-selectsearch .ember-power-select-search-input {
|
|
224
|
+
padding-inline-start: calc(var(--_select-px) + 1rem + var(--boxel-sp-2xs));
|
|
225
|
+
padding-inline-end: var(--_select-px);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
</style>
|
|
229
|
+
</template>
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export class Select extends Component<SelectSignature> {
|
|
233
|
+
@tracked internal = this.args.defaultValue;
|
|
234
|
+
// True under a Dialog, Drawer, CommandPalette or EditInPlace editor; see
|
|
235
|
+
// POPUPS_IN_PLACE for why the list renders in place there.
|
|
236
|
+
@consume(POPUPS_IN_PLACE) popupsInPlace?: boolean;
|
|
237
|
+
// Options are not focusable, so pressing one would move focus to the page
|
|
238
|
+
// and an editor around the Select would read that as leaving. Keep focus where it is;
|
|
239
|
+
// the option is still chosen on click. The search input still takes focus.
|
|
240
|
+
keepFocusInList = modifier((wrap: HTMLElement) => {
|
|
241
|
+
let onPress = (e: MouseEvent) => {
|
|
242
|
+
let target = e.target as HTMLElement | null;
|
|
243
|
+
if (target?.closest('input')) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
if (target?.closest("[role='listbox'], [data-option-index]")) {
|
|
247
|
+
e.preventDefault();
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
wrap.addEventListener('mousedown', onPress);
|
|
251
|
+
return () => wrap.removeEventListener('mousedown', onPress);
|
|
252
|
+
});
|
|
253
|
+
get explicitName(): boolean {
|
|
254
|
+
return this.args.label !== undefined || this.args.labelledBy !== undefined;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
get options(): SelectOption[] {
|
|
258
|
+
return firstDefined(this.args.options, this.args.items) ?? [];
|
|
259
|
+
}
|
|
260
|
+
get disabled() {
|
|
261
|
+
return firstDefined(this.args.disabled, this.args.isDisabled);
|
|
262
|
+
}
|
|
263
|
+
get value() {
|
|
264
|
+
return this.args.value ?? this.internal;
|
|
265
|
+
}
|
|
266
|
+
// power-select selects the option OBJECT; the public API speaks in values
|
|
267
|
+
get selectedOption() {
|
|
268
|
+
return this.options.find((o) => o.value === this.value);
|
|
269
|
+
}
|
|
270
|
+
choose = (option: SelectOption | null) => {
|
|
271
|
+
if (!option) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
if (this.args.value === undefined) {
|
|
275
|
+
this.internal = option.value;
|
|
276
|
+
}
|
|
277
|
+
emit([this.args.onValueChange, this.args.onChange], option.value);
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
<template>
|
|
281
|
+
<div
|
|
282
|
+
class='pretui-selectwrap'
|
|
283
|
+
{{nameFromLabel @controlId this.explicitName}}
|
|
284
|
+
{{this.keepFocusInList}}
|
|
285
|
+
data-test-pretui-select
|
|
286
|
+
...attributes
|
|
287
|
+
>
|
|
288
|
+
{{! no id here: BoxelSelect finds the trigger by its own id to copy the
|
|
289
|
+
theme onto the wormhole. A label[for=@controlId] still names it,
|
|
290
|
+
through the aria-labelledby that nameFromLabel sets. }}
|
|
291
|
+
<PoweredSelect
|
|
292
|
+
class='pretui-selecttrigger'
|
|
293
|
+
@options={{this.options}}
|
|
294
|
+
@selected={{this.selectedOption}}
|
|
295
|
+
@onChange={{this.choose}}
|
|
296
|
+
@placeholder={{if @placeholder @placeholder 'Select…'}}
|
|
297
|
+
@disabled={{this.disabled}}
|
|
298
|
+
@searchEnabled={{@searchEnabled}}
|
|
299
|
+
@searchField='label'
|
|
300
|
+
@beforeOptionsComponent={{SelectSearch}}
|
|
301
|
+
@matchTriggerWidth={{true}}
|
|
302
|
+
@dropdownClass='pretui-select-dropdown'
|
|
303
|
+
@renderInPlace={{this.popupsInPlace}}
|
|
304
|
+
@ariaLabel={{@label}}
|
|
305
|
+
@ariaLabelledBy={{@labelledBy}}
|
|
306
|
+
data-pretui-select-trigger
|
|
307
|
+
data-test-pretui-select-trigger
|
|
308
|
+
as |option|
|
|
309
|
+
>
|
|
310
|
+
<span data-test-pretui-select-option>{{option.label}}</span>
|
|
311
|
+
</PoweredSelect>
|
|
312
|
+
</div>
|
|
313
|
+
<style scoped>
|
|
314
|
+
@layer PretComponent {
|
|
315
|
+
.pretui-selectwrap {
|
|
316
|
+
/* per-instance knob: the trigger's height */
|
|
317
|
+
--pretui-select-h: var(--boxel-form-control-height-sm);
|
|
318
|
+
|
|
319
|
+
min-width: 0;
|
|
320
|
+
/* BoxelSelect's knobs, set to theme tokens. The --boxel-dropdown-*
|
|
321
|
+
ones and the radius travel to the wormhole, values resolved. */
|
|
322
|
+
--boxel-form-control-border-radius: calc(var(--radius) - 2px);
|
|
323
|
+
/* the trigger spends its hairline as a box-shadow with border: 0,
|
|
324
|
+
so it pads 1px more than a bordered Input to line its text up */
|
|
325
|
+
--boxel-select-trigger-padding: 0 0.625rem;
|
|
326
|
+
--boxel-select-trigger-gap: var(--boxel-sp-2xs);
|
|
327
|
+
--boxel-select-trigger-font-size: var(--boxel-font-size-xs);
|
|
328
|
+
--boxel-select-trigger-line-height: var(--boxel-line-height-xs);
|
|
329
|
+
--boxel-select-trigger-letter-spacing: var(--boxel-lsp-xs);
|
|
330
|
+
/* one block line, so a long label ends in an ellipsis */
|
|
331
|
+
--boxel-select-trigger-content-display: block;
|
|
332
|
+
--boxel-select-background-color: var(--field);
|
|
333
|
+
/* hover pulls the hairline toward --foreground, so it strengthens
|
|
334
|
+
in both schemes, the way a Button's edge answers the pointer */
|
|
335
|
+
--_select-edge-hover: color-mix(
|
|
336
|
+
in oklch,
|
|
337
|
+
var(--foreground) 30%,
|
|
338
|
+
var(--input)
|
|
339
|
+
);
|
|
340
|
+
--boxel-select-text-color: var(--foreground);
|
|
341
|
+
--boxel-dropdown-background-color: var(--popover);
|
|
342
|
+
--boxel-dropdown-text-color: var(--popover-foreground);
|
|
343
|
+
--boxel-dropdown-border-color: var(--border);
|
|
344
|
+
--boxel-dropdown-hover-color: var(--hover);
|
|
345
|
+
--boxel-dropdown-hover-text-color: var(--popover-foreground);
|
|
346
|
+
/* the selected row is a --primary fill; its text and checkmark
|
|
347
|
+
take --primary-foreground through currentColor. Hovered or
|
|
348
|
+
keyboard-highlighted, it darkens a shade in both schemes, the
|
|
349
|
+
accent Button's hover; a mix toward --foreground would lighten
|
|
350
|
+
it in dark mode instead. */
|
|
351
|
+
--_select-primary-hover: oklch(from var(--primary) calc(l * 0.9) c h);
|
|
352
|
+
--boxel-dropdown-highlight-color: var(--primary);
|
|
353
|
+
--boxel-dropdown-highlight-hover-color: var(--_select-primary-hover);
|
|
354
|
+
--boxel-dropdown-selected-text-color: var(--primary-foreground);
|
|
355
|
+
--boxel-dropdown-selected-highlighted-color: var(--_select-primary-hover);
|
|
356
|
+
--boxel-dropdown-selected-hover-color: var(--_select-primary-hover);
|
|
357
|
+
--boxel-dropdown-focus-border-color: var(--ring);
|
|
358
|
+
}
|
|
359
|
+
/* BoxelSelect has no knobs for the trigger's height and hairline, so
|
|
360
|
+
these reach its trigger, dressed to match Input. */
|
|
361
|
+
.pretui-selectwrap :deep(.pretui-selecttrigger) {
|
|
362
|
+
align-items: center;
|
|
363
|
+
height: var(--pretui-select-h);
|
|
364
|
+
border: 0;
|
|
365
|
+
box-shadow: 0 0 0 1px var(--input);
|
|
366
|
+
width: 100%;
|
|
367
|
+
text-align: start;
|
|
368
|
+
transition: box-shadow var(--pretui-dur-snap, 180ms)
|
|
369
|
+
var(--pretui-ease-snap, ease);
|
|
370
|
+
}
|
|
371
|
+
/* before the expanded and focus rules, which win the tie */
|
|
372
|
+
@media (hover: hover) {
|
|
373
|
+
.pretui-selectwrap :deep(.pretui-selecttrigger:hover) {
|
|
374
|
+
box-shadow: 0 0 0 1px var(--_select-edge-hover);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
.pretui-selectwrap :deep(.pretui-selecttrigger[aria-expanded='true']),
|
|
378
|
+
.pretui-selectwrap :deep(.pretui-selecttrigger:focus-visible) {
|
|
379
|
+
/* forced-colors paints no box-shadow, so a transparent outline keeps
|
|
380
|
+
a focus indicator there */
|
|
381
|
+
outline: 1.5px solid transparent;
|
|
382
|
+
outline-offset: 1px;
|
|
383
|
+
box-shadow: 0 0 0 1.5px var(--ring);
|
|
384
|
+
}
|
|
385
|
+
.pretui-selectwrap :deep(.pretui-selecttrigger[aria-disabled='true']) {
|
|
386
|
+
opacity: 0.45;
|
|
387
|
+
/* BoxelSelect paints disabled on --muted; this rule outranks it, so
|
|
388
|
+
the field surface holds and only the opacity says disabled */
|
|
389
|
+
background-color: var(--field);
|
|
390
|
+
color: var(--foreground);
|
|
391
|
+
}
|
|
392
|
+
.pretui-selectwrap :deep(.boxel-trigger) {
|
|
393
|
+
width: 100%;
|
|
394
|
+
}
|
|
395
|
+
.pretui-selectwrap :deep(.boxel-trigger-content) {
|
|
396
|
+
min-width: 0;
|
|
397
|
+
overflow: hidden;
|
|
398
|
+
text-overflow: ellipsis;
|
|
399
|
+
white-space: nowrap;
|
|
400
|
+
}
|
|
401
|
+
.pretui-selectwrap :deep(.boxel-trigger-placeholder) {
|
|
402
|
+
color: var(--muted-foreground);
|
|
403
|
+
}
|
|
404
|
+
.pretui-selectwrap :deep(.pretui-selecttrigger svg) {
|
|
405
|
+
--icon-color: var(--muted-foreground);
|
|
406
|
+
|
|
407
|
+
flex: none;
|
|
408
|
+
}
|
|
409
|
+
/* 16px on touch screens, as on Input and Autocomplete, with Input's
|
|
410
|
+
line-height; the trigger's height is fixed, so it doesn't grow */
|
|
411
|
+
@media (pointer: coarse) {
|
|
412
|
+
.pretui-selectwrap {
|
|
413
|
+
--boxel-select-trigger-font-size: var(
|
|
414
|
+
--boxel-form-control-touch-font-size
|
|
415
|
+
);
|
|
416
|
+
--boxel-select-trigger-line-height: var(
|
|
417
|
+
--boxel-form-control-line-height-sm
|
|
418
|
+
);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
</style>
|
|
423
|
+
{{! template-lint-disable require-scoped-style }}
|
|
424
|
+
<style>
|
|
425
|
+
@layer PretComponent {
|
|
426
|
+
/* Unscoped: the dropdown renders in the wormhole, outside this
|
|
427
|
+
component's subtree, and BoxelSelect has no knobs for its type or
|
|
428
|
+
row metrics. The options and the search box take the trigger's
|
|
429
|
+
type, inline padding and height. */
|
|
430
|
+
.pretui-select-dropdown.ember-power-select-dropdown {
|
|
431
|
+
/* the trigger's padding and default height, restated: the wrapper's
|
|
432
|
+
knobs do not reach the wormhole */
|
|
433
|
+
--_select-px: 0.625rem;
|
|
434
|
+
--_select-h: var(--boxel-form-control-height-sm);
|
|
435
|
+
/* the list matches the trigger's width as a floor, never a ceiling:
|
|
436
|
+
a trigger sized to a short value must not clip the other labels */
|
|
437
|
+
min-width: max-content;
|
|
438
|
+
}
|
|
439
|
+
.pretui-select-dropdown.ember-power-select-dropdown .boxel-select-option-item,
|
|
440
|
+
.pretui-select-dropdown.ember-power-select-dropdown .ember-power-select-search-input {
|
|
441
|
+
font-size: var(--boxel-font-size-xs);
|
|
442
|
+
line-height: var(--boxel-line-height-xs);
|
|
443
|
+
letter-spacing: var(--boxel-lsp-xs);
|
|
444
|
+
}
|
|
445
|
+
.pretui-select-dropdown.ember-power-select-dropdown .boxel-select-option-item {
|
|
446
|
+
min-height: var(--_select-h);
|
|
447
|
+
padding-block: 0;
|
|
448
|
+
padding-inline: var(--_select-px);
|
|
449
|
+
}
|
|
450
|
+
/* the hairline and ring are shadows, as on the trigger, so focus
|
|
451
|
+
thickens the edge to the trigger's 1.5px instead of stacking a
|
|
452
|
+
shadow on a border */
|
|
453
|
+
.pretui-select-dropdown.ember-power-select-dropdown .ember-power-select-search-input {
|
|
454
|
+
min-height: var(--_select-h);
|
|
455
|
+
padding-block: 0;
|
|
456
|
+
border: 0;
|
|
457
|
+
box-shadow: 0 0 0 1px var(--border);
|
|
458
|
+
}
|
|
459
|
+
.pretui-select-dropdown.ember-power-select-dropdown .ember-power-select-search-input:focus {
|
|
460
|
+
border: 0;
|
|
461
|
+
outline: 1.5px solid transparent;
|
|
462
|
+
outline-offset: 1px;
|
|
463
|
+
box-shadow: 0 0 0 1.5px var(--ring);
|
|
464
|
+
}
|
|
465
|
+
/* iOS zooms into inputs under 16px on focus; the options follow
|
|
466
|
+
the trigger, and their rows grow as Autocomplete's do */
|
|
467
|
+
@media (pointer: coarse) {
|
|
468
|
+
.pretui-select-dropdown.ember-power-select-dropdown .boxel-select-option-item,
|
|
469
|
+
.pretui-select-dropdown.ember-power-select-dropdown .ember-power-select-search-input {
|
|
470
|
+
font-size: var(--boxel-form-control-touch-font-size);
|
|
471
|
+
line-height: var(--boxel-form-control-line-height-sm);
|
|
472
|
+
}
|
|
473
|
+
.pretui-select-dropdown.ember-power-select-dropdown .boxel-select-option-item {
|
|
474
|
+
padding-block: 0.6em;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
</style>
|
|
479
|
+
{{! template-lint-enable require-scoped-style }}
|
|
480
|
+
</template>
|
|
481
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
Choose one value from a known list. Use it when the options are enumerable and the user should not type — status, category, assignee from a short roster. If the user may need to enter a value that is not in the list, use **Combobox** (`allowsCustomValue` is exactly why it exists). If they need to pick several, use **MultiSelect**. If the list is a searchable set of records rather than static options, use **Lookup**. If there are two or three options and horizontal space, **SegmentedControl** or **RadioGroup** shows them all without a click.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@options: { value, label }[] (required)
|
|
9
|
+
@value?, @defaultValue?, @placeholder? (default 'Select…'), @disabled?, @controlId?
|
|
10
|
+
@searchEnabled? (a search box above the list, focused on open)
|
|
11
|
+
@label?, @labelledBy? (the trigger's accessible name)
|
|
12
|
+
@onValueChange?(value: string)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**The public API speaks in values, not option objects.** `@value` is a string; `@onValueChange` yields a string. Internally power-select selects the option _object_, so `Select` looks it up by value on the way in and unwraps it on the way out. Call sites never hold an object identity, which means an options array rebuilt on every render still shows the right selection — the class of bug that plagues object-identity selects.
|
|
16
|
+
|
|
17
|
+
**Hybrid controlled/uncontrolled.** `@value ?? @internal`, and `@internal` is only written when `@value === undefined`. Pass `@value` and you own it; pass `@defaultValue` and the component does. This exact idiom is repeated across Switch, Checkbox, RadioGroup, SegmentedControl, Tabs, Slider and Pagination — learn it once.
|
|
18
|
+
|
|
19
|
+
**Search is opt-in.** `@searchEnabled` adds a search box above the list, with a search icon, that takes focus when the list opens and filters by label. Off by default: typeahead on the trigger covers most lists, as in Radix and React Aria. BoxelSelect's own search box never takes focus, so from the trigger it is reachable by pointer only; Select supplies its own. A list the user types into to find a value that may not exist is a **Combobox**.
|
|
20
|
+
|
|
21
|
+
## Prior art
|
|
22
|
+
|
|
23
|
+
**Radix `Select`** composes `Root/Trigger/Value/Portal/Content/Item/ItemText/ItemIndicator` and is famously strict about `value`/`onValueChange` being strings. **Web Awesome `wa-select`** takes `<wa-option>` children, supports `multiple`, `clearable`, `with-label`/`hint`, and participates in native form validation. **React Spectrum `Picker`** uses a collection API (`items` + render function) and `selectedKey`/`onSelectionChange`.
|
|
24
|
+
|
|
25
|
+
Pretui's most consequential departure is under the hood: **it rides boxel-ui's `BoxelSelect` (ember-power-select) rather than reimplementing listbox behavior**, which buys real keyboard navigation, scroll-into-view, and trigger typeahead — behavior a hand-rolled select in this kit would have got wrong.
|
|
26
|
+
|
|
27
|
+
**The dropdown renders in BoxelSelect's wormhole**, so no `overflow: hidden` ancestor clips it. BoxelSelect copies its `--boxel-dropdown-*` knobs from the trigger onto the wormhole each time it opens, and a custom property's computed value has its `var()` references resolved. Select sets those knobs to theme tokens (`--popover`, `--popover-foreground`, `--hover`, `--border`, `--primary`, `--primary-foreground`, `--ring`), so the dropdown carries the trigger's theme, dark mode included, with no `:deep()` rule reaching into it.
|
|
28
|
+
|
|
29
|
+
**Inside a Dialog, Drawer, CommandPalette or EditInPlace editor the list renders in place.** A modal `<dialog>` makes everything outside it inert, the wormhole included, and an editor that commits on blur reads focus moving into the wormhole as leaving. Each of those provides the `pretui-popups-in-place` context, and Select reads it when it is created and passes `@renderInPlace`: ember-basic-dropdown reads that argument only once, at creation, so it cannot come from where the Select later finds itself in the DOM. In place the list takes the theme through the cascade and scrolls with its trigger; a long list scrolls its container instead of floating over its edge. Pressing inside the list keeps focus where it was, and choosing leaves focus on the trigger, so an editor around the Select never reads a pick as leaving.
|
|
30
|
+
|
|
31
|
+
The selected row is a `--primary` fill; its text and checkmark are `--primary-foreground`. The trigger's hairline rides `box-shadow`, not `border`; on hover it pulls toward `--foreground`, strengthening in both schemes like a Button's edge. Its corners are the theme radius less 2px, the same as Button; Input's field style differs until it adopts the same one.
|
|
32
|
+
|
|
33
|
+
**Against boxel-ui and the field.** `BoxelSelect` speaks in option objects and leaves naming to the caller; Radix and React Aria both require an explicit label and Radix's trigger, like this one, is a `role="combobox"` element no `<label for>` can name. Pretui is ahead on three counts: the string value API, a trigger that takes its name from a plain `<label for>` or a wrapping `<label>` with the chosen value read after it, and a portaled dropdown that still carries the field's theme. Behind: no `@invalid`, `@required` or `@describedBy` pass-through (React Aria and Web Awesome have all three, and `BoxelSelect` accepts `@ariaInvalid`, `@required` and `@ariaDescribedBy`), no disabled options, and no custom option block.
|
|
34
|
+
|
|
35
|
+
## Accessibility
|
|
36
|
+
|
|
37
|
+
Governing pattern: APG **Combobox with listbox popup** (which is what ember-power-select implements) rather than the older Select-Only Combobox. Roles, `aria-expanded`, `aria-controls`, active-option tracking, Escape, arrow navigation, Home/End and typeahead all come from power-select, and they are genuinely good — this is the strongest argument for the retrofit.
|
|
38
|
+
|
|
39
|
+
Gaps and cautions:
|
|
40
|
+
|
|
41
|
+
- **Name it.** A `<label for={{@controlId}}>` or a wrapping `<label>` names the trigger through `aria-labelledby`, label first and then the trigger, so the chosen value is still read. Without a label, pass `@label` (or `@labelledBy`). The trigger keeps BoxelSelect's own id, which BoxelSelect needs to theme the wormhole, so `@controlId` is never an element id: nothing can find the trigger by it, and FormField focuses a failing Select through its first focusable element instead.
|
|
42
|
+
- With `@searchEnabled`, the search input is the combobox: it carries `aria-activedescendant` and `aria-controls`, and the trigger gives them up while the list is open.
|
|
43
|
+
- **No invalid state.** There is no `@invalid`, no `aria-invalid`, no error row — unlike `Input`. Inside `Field` the invalid dress arrives through the `--border`/`--background` token channel, so it _looks_ invalid, but nothing is announced. For validated selects, use **FormField**, which supplies the ARIA.
|
|
44
|
+
- `@disabled` renders as `aria-disabled="true"` on the trigger (power-select's model) and drops its `tabindex`, so the control leaves the tab order, the same as `Input`'s native `disabled`.
|
|
45
|
+
- No `multiple` and no clear affordance — deliberate; those are MultiSelect's job.
|
|
46
|
+
|
|
47
|
+
## Theming
|
|
48
|
+
|
|
49
|
+
Theme tokens: `--field`, `--input`, `--foreground`, `--muted-foreground`, `--ring`, `--radius`, `--popover`, `--popover-foreground`, `--hover`, `--border`, `--primary`, `--primary-foreground`.
|
|
50
|
+
|
|
51
|
+
Forwarded through BoxelSelect's knobs: `--boxel-form-control-border-radius`, `--boxel-select-trigger-padding`, `--boxel-select-trigger-gap`, `--boxel-select-trigger-font-size`, `--boxel-select-trigger-line-height`, `--boxel-select-trigger-letter-spacing`, `--boxel-select-trigger-content-display`, `--boxel-select-background-color`, `--boxel-select-text-color`, and the `--boxel-dropdown-*` colors. Hovered or keyboard-highlighted, the selected row darkens a shade in both schemes, the same as an accent Button's hover.
|
|
52
|
+
|
|
53
|
+
Per-instance knob: `--pretui-select-h` (the trigger's height, `--boxel-form-control-height-sm` (1.75rem) by default), set on your class.
|
|
54
|
+
|
|
55
|
+
On touch screens (`pointer: coarse`) the trigger, its placeholder, the options and the search box are at least 16px (`--boxel-form-control-touch-font-size`), matching **Input** and **Autocomplete**, so iOS doesn't zoom into the search box on focus; the trigger keeps its height.
|
|
56
|
+
|
|
57
|
+
BoxelSelect has no knobs for the dropdown's type or row metrics, and the wormhole is outside Select's subtree, so Select restyles it through unscoped rules on its dropdown class: the options and search box take the trigger's type, inline padding and height, the search box takes the trigger's hairline and focus ring and an icon inset, and on touch screens the option rows grow as Autocomplete's do. The trigger's height, hairline, placeholder color and caret color have no knob (BoxelSelect's `--boxel-select-placeholder-color` never reaches its placeholder), so `:deep()` rules set them. All of these sit in `@layer PretComponent`, which outranks BoxelSelect's layers.
|
|
58
|
+
|
|
59
|
+
## React ecosystem
|
|
60
|
+
|
|
61
|
+
| React | Pretui |
|
|
62
|
+
| ------------------------- | -------------------------------- |
|
|
63
|
+
| Select / Dropdown | this tile |
|
|
64
|
+
| Native `<select>` | **NativeSelect** stub |
|
|
65
|
+
| Combobox / free text | **Combobox** / **Autocomplete** |
|
|
66
|
+
| multi | **MultiSelect** |
|
|
67
|
+
| tags mode | **TagsInput** |
|
|
68
|
+
| tree / cascader | **TreeSelect** / **Cascader** |
|
|
69
|
+
| `onValueChange` | same; `@onChange` is an alias |
|
|
70
|
+
| `placeholder` | same |
|
|
71
|
+
| `disabled` / `isDisabled` | `@disabled`; `@isDisabled` alias |
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// Pretui — Select usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Select } from './select';
|
|
6
|
+
|
|
7
|
+
const COUNTRY_NAMES = [
|
|
8
|
+
'United States',
|
|
9
|
+
'Spain',
|
|
10
|
+
'Portugal',
|
|
11
|
+
'Russia',
|
|
12
|
+
'Latvia',
|
|
13
|
+
'Brazil',
|
|
14
|
+
'United Kingdom',
|
|
15
|
+
'Japan',
|
|
16
|
+
];
|
|
17
|
+
const COUNTRY_OPTIONS = COUNTRY_NAMES.map((c) => ({ value: c, label: c }));
|
|
18
|
+
// ── Select ← select/usage.gts ────────────────────────────────────────────
|
|
19
|
+
// Dropped knobs: @variant (tone/appearance theming not on Select yet),
|
|
20
|
+
// @verticalPosition (listbox always opens below), @renderInPlace (the
|
|
21
|
+
// listbox always renders in the wormhole, so nothing clips it),
|
|
22
|
+
// @matchTriggerWidth (listbox always matches),
|
|
23
|
+
// @searchField (search filters by label), item yield block (options are
|
|
24
|
+
// {value, label} data, rendered by the component).
|
|
25
|
+
// The dropdown renders in the wormhole, so an overflow-hidden ancestor does
|
|
26
|
+
// not clip it; its colors come from the theme contract.
|
|
27
|
+
export class SelectUsage extends Component {
|
|
28
|
+
countryNames = COUNTRY_NAMES;
|
|
29
|
+
countryOptions = COUNTRY_OPTIONS;
|
|
30
|
+
@tracked value = '';
|
|
31
|
+
@tracked placeholder = 'Select Item';
|
|
32
|
+
@tracked disabled = false;
|
|
33
|
+
@tracked searchEnabled = false;
|
|
34
|
+
setValue = (v: string) => (this.value = v);
|
|
35
|
+
setPlaceholder = (v: string) => (this.placeholder = v);
|
|
36
|
+
setDisabled = (v: boolean) => (this.disabled = v);
|
|
37
|
+
setSearchEnabled = (v: boolean) => (this.searchEnabled = v);
|
|
38
|
+
get usage() {
|
|
39
|
+
let bits = ['@options={{this.countries}}', "@label='Country'"];
|
|
40
|
+
if (this.value) bits.push(`@value='${this.value}'`);
|
|
41
|
+
if (this.placeholder) bits.push(`@placeholder='${this.placeholder}'`);
|
|
42
|
+
if (this.disabled) bits.push('@disabled={{true}}');
|
|
43
|
+
if (this.searchEnabled) bits.push('@searchEnabled={{true}}');
|
|
44
|
+
bits.push('@onValueChange={{this.setValue}}');
|
|
45
|
+
return `<Select ${bits.join(' ')} />`;
|
|
46
|
+
}
|
|
47
|
+
<template>
|
|
48
|
+
<FreestyleUsage
|
|
49
|
+
@name='Select'
|
|
50
|
+
@description='Choose one value from a known list.'
|
|
51
|
+
@source={{this.usage}}
|
|
52
|
+
>
|
|
53
|
+
<:example>
|
|
54
|
+
<Select
|
|
55
|
+
@options={{this.countryOptions}}
|
|
56
|
+
@label='Country'
|
|
57
|
+
@value={{this.value}}
|
|
58
|
+
@placeholder={{this.placeholder}}
|
|
59
|
+
@disabled={{this.disabled}}
|
|
60
|
+
@searchEnabled={{this.searchEnabled}}
|
|
61
|
+
@onValueChange={{this.setValue}}
|
|
62
|
+
/>
|
|
63
|
+
</:example>
|
|
64
|
+
<:api as |Args|>
|
|
65
|
+
<Args.Object
|
|
66
|
+
@name='options'
|
|
67
|
+
@required={{true}}
|
|
68
|
+
@description='The options to list, as {value, label} pairs.'
|
|
69
|
+
@value={{this.countryOptions}}
|
|
70
|
+
/>
|
|
71
|
+
<Args.Action
|
|
72
|
+
@name='onValueChange'
|
|
73
|
+
@description="Receives the chosen option's value as a string."
|
|
74
|
+
/>
|
|
75
|
+
<Args.String
|
|
76
|
+
@name='value'
|
|
77
|
+
@value={{this.value}}
|
|
78
|
+
@options={{this.countryNames}}
|
|
79
|
+
@description="The selected option's value."
|
|
80
|
+
@onInput={{this.setValue}}
|
|
81
|
+
/>
|
|
82
|
+
<Args.String
|
|
83
|
+
@name='placeholder'
|
|
84
|
+
@value={{this.placeholder}}
|
|
85
|
+
@description='Text shown when nothing is selected.'
|
|
86
|
+
@onInput={{this.setPlaceholder}}
|
|
87
|
+
/>
|
|
88
|
+
<Args.Bool
|
|
89
|
+
@name='disabled'
|
|
90
|
+
@defaultValue={{false}}
|
|
91
|
+
@value={{this.disabled}}
|
|
92
|
+
@description='When true, the control cannot be used.'
|
|
93
|
+
@onInput={{this.setDisabled}}
|
|
94
|
+
/>
|
|
95
|
+
<Args.Bool
|
|
96
|
+
@name='searchEnabled'
|
|
97
|
+
@defaultValue={{false}}
|
|
98
|
+
@value={{this.searchEnabled}}
|
|
99
|
+
@description='Adds a search box above the list; it takes focus when the list opens.'
|
|
100
|
+
@onInput={{this.setSearchEnabled}}
|
|
101
|
+
/>
|
|
102
|
+
</:api>
|
|
103
|
+
</FreestyleUsage>
|
|
104
|
+
</template>
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export const DEMOS_SELECT: Record<string, unknown> = {
|
|
108
|
+
Select: SelectUsage,
|
|
109
|
+
};
|