@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,67 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
Suggest-as-you-type over a list, where the value may be free text.
|
|
4
|
+
|
|
5
|
+
That last clause is the whole difference from **Combobox**: an autocomplete's value **is** what the reader typed, and the suggestions are help. A combobox's value is constrained to its listbox. If a typed value that matches nothing is still a legal answer, you want this one.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@value?, @defaultValue? — controlled / uncontrolled text
|
|
11
|
+
@items? / @options? — the suggestion collection; options is the React-kit alias
|
|
12
|
+
@open?, @defaultOpen?, @onOpenChange? — the suggestion layer
|
|
13
|
+
@onSearch? — the debounced query, for a caller that fetches;
|
|
14
|
+
pair with @filter='none'
|
|
15
|
+
@onCommit? — fires when a value is COMMITTED — Enter, a click, or blur —
|
|
16
|
+
with the suggestion when one was chosen, undefined for free text
|
|
17
|
+
@debounce? — SECONDS of quiet before @onSearch. Default 0, which fires on
|
|
18
|
+
every keystroke and schedules no timer at all
|
|
19
|
+
@filter? — matching strategy
|
|
20
|
+
@enterCommits? — what Enter means when the highlight and the typed text disagree:
|
|
21
|
+
'deliberate' (default) | 'highlight' | 'text'
|
|
22
|
+
@autoHighlight? — pre-highlight the first row when suggestions appear
|
|
23
|
+
@openOnFocus? — open the layer on focus. Default true
|
|
24
|
+
@minChars? — suppress the layer until this many characters are typed
|
|
25
|
+
@clearable?, @invalid?, @disabled?, @required?, @readonly?, @placeholder?
|
|
26
|
+
@busy? / @loading? / @isPending? — aria-busy, a progress line, and FOCUS RETAINED
|
|
27
|
+
@label?, @controlId?, @describedBy?
|
|
28
|
+
@emptyText? — replaces the built-in "No matches" line
|
|
29
|
+
@tone?, @appearance?, @size?
|
|
30
|
+
|
|
31
|
+
<:item> — replaces the row body; yields the item and { query, active }
|
|
32
|
+
<:empty> — replaces the built-in empty line
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**`@onCommit` is the callback that distinguishes typing from meaning it.** It fires on Enter, a click or a blur, and it tells you _which_ happened: a suggestion object when one was chosen, `undefined` when the reader meant their own text.
|
|
36
|
+
|
|
37
|
+
**`@enterCommits` defaults to `'deliberate'`, and that is the interesting decision.** When the highlight and the typed text disagree, Enter takes the typed text unless the reader deliberately moved to the highlight. An automatic highlight does **not** win Enter — so `@autoHighlight` is a visual aid rather than a trap that silently replaces what someone typed.
|
|
38
|
+
|
|
39
|
+
**`@debounce` is in seconds, and 0 schedules no timer at all.** The default fires on every keystroke.
|
|
40
|
+
|
|
41
|
+
**`@label` renders a real `sr-only` `<label for>` unless a wrapper claims the field with `@controlId`**, so the field is named whether or not it sits inside a **Field**.
|
|
42
|
+
|
|
43
|
+
## Prior art
|
|
44
|
+
|
|
45
|
+
**Mantine**, **MUI**, **Ant**, **Base UI** and **React Aria** all ship an Autocomplete.
|
|
46
|
+
|
|
47
|
+
Where Pretui is better: **`@enterCommits` as an explicit contract.** Every upstream has an implicit answer to "what does Enter do when I've typed something and a row is highlighted", and most of them silently discard the typed text. Making it a named arg with a conservative default turns a surprise into a decision. The commit callback distinguishing chosen-from-list versus free text is the second: most kits emit a value and leave the caller to guess.
|
|
48
|
+
|
|
49
|
+
Where it is thinner: no multi-select or token mode — that is **TokenInput** — no grouped or sectioned suggestions, no async loading state beyond `@busy`, and no virtualisation, so a very long suggestion list renders in full.
|
|
50
|
+
|
|
51
|
+
## Accessibility
|
|
52
|
+
|
|
53
|
+
- **Rows are rendered inside an `aria-hidden` face, and the option's accessible name is computed rather than scraped.** That is what makes `<:item>` safe: any markup is legal in the block because none of it reaches the accessibility tree.
|
|
54
|
+
- **`@disabled` keeps the field focusable.** It sets `aria-disabled` and `readonly` rather than the native `disabled`, so a reader can still reach the field and hear that it's unavailable, while the text can't be edited. The Clear button is hidden.
|
|
55
|
+
- **`@busy` retains focus.** A field that disables itself while fetching suggestions throws the reader to the document mid-word.
|
|
56
|
+
- **The field is always named** — through `@label` as an `sr-only` label, or through a wrapper's `@controlId`.
|
|
57
|
+
- **`@minChars` suppresses the layer silently.** A reader who types one character and gets nothing is not told why; if the threshold is high, say so in `@placeholder` or in help text.
|
|
58
|
+
- **The deliberate Enter mode is an accessibility property, not only a usability one.** A screen-reader user arrowing through suggestions has moved deliberately; someone typing has not, and their text should survive.
|
|
59
|
+
- **`@emptyText` and `<:empty>` mean "no matches" is stated** rather than being an empty box.
|
|
60
|
+
|
|
61
|
+
## Theming
|
|
62
|
+
|
|
63
|
+
Tone, appearance and size resolve through the kit's shared recipe system, so the field matches every other control in a form at the same size. A tone sets two properties: `--pretui-tone`, the fill (`--primary`, `--info`, `--success`, `--warning`, `--destructive`, `--attention`) for tints, and `--pretui-tone-ink`, its `-ink`, for rings, the busy arc and the matched text, since a fill misses the contrast a line or text needs. The default neutral field has the field style it shares with **Input** and **Select**: a plain `--field` face, Button's corner (`calc(var(--radius) - 2px)`) and a `--boxel-form-control-height-sm` (1.75rem) height at size m. Other appearances read `--field` or `--card` with its foreground; the edge is `--input` when neutral (pulled toward `--foreground` on hover, as on Select) and the tone's `-ink` otherwise, `--destructive-ink` when invalid, `--ring` for focus and `--muted-foreground` for the placeholder. Sizes come from `--pretui-size-*`, falling back to `--boxel-font-size-2xs` (xs and s), `-xs` (m, as on Select), `-sm` (l) and `--boxel-font-size` (xl). On touch screens (`pointer: coarse`) the field's text, its placeholder and the suggestions are at least 16px (`--boxel-form-control-touch-font-size`), so iOS doesn't zoom into the field on focus; its height keeps the size's value.
|
|
64
|
+
|
|
65
|
+
The suggestion layer is a `--popover` surface with `--popover-foreground`, `--shadow-md`, the field's corner and the kit's `dropdown` stacking tier, the same elevation and radius as a **Select**'s, so the two don't look like different products. The clear button is a plain neutral **Button** with a boxel-icons `x`.
|
|
66
|
+
|
|
67
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
// Pretui — Autocomplete usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Autocomplete } from './autocomplete';
|
|
6
|
+
import type { AutocompleteItem } from './autocomplete';
|
|
7
|
+
import {
|
|
8
|
+
PRETUI_APPEARANCES,
|
|
9
|
+
PRETUI_SIZES,
|
|
10
|
+
PRETUI_TONES,
|
|
11
|
+
} from '../pretui-primitives';
|
|
12
|
+
import type {
|
|
13
|
+
PretuiAppearance,
|
|
14
|
+
PretuiSize,
|
|
15
|
+
PretuiTone,
|
|
16
|
+
} from '../pretui-primitives';
|
|
17
|
+
|
|
18
|
+
const TONES = [...PRETUI_TONES];
|
|
19
|
+
const APPEARANCES = [...PRETUI_APPEARANCES];
|
|
20
|
+
const SIZES = [...PRETUI_SIZES];
|
|
21
|
+
const FILTERS = ['contains', 'starts-with', 'none'];
|
|
22
|
+
const ENTER_MODES = ['deliberate', 'highlight', 'text'];
|
|
23
|
+
|
|
24
|
+
// ── Autocomplete ← MUI freeSolo / Mantine / Base UI / Ant AutoComplete ───
|
|
25
|
+
const CITIES: AutocompleteItem[] = [
|
|
26
|
+
{ value: 'Amsterdam', meta: 'NL' },
|
|
27
|
+
{ value: 'Antwerp', meta: 'BE' },
|
|
28
|
+
{ value: 'Athens', meta: 'GR' },
|
|
29
|
+
{ value: 'Auckland', meta: 'NZ' },
|
|
30
|
+
{ value: 'Barcelona', meta: 'ES' },
|
|
31
|
+
{ value: 'Belgrade', meta: 'RS' },
|
|
32
|
+
{ value: 'Berlin', meta: 'DE' },
|
|
33
|
+
{ value: 'Bogotá', meta: 'CO' },
|
|
34
|
+
{ value: 'Copenhagen', meta: 'DK' },
|
|
35
|
+
{ value: 'Dakar', meta: 'SN' },
|
|
36
|
+
{ value: 'Edinburgh', meta: 'GB' },
|
|
37
|
+
{ value: 'Kyoto', meta: 'JP', disabled: true },
|
|
38
|
+
{ value: 'Lisbon', meta: 'PT' },
|
|
39
|
+
{ value: 'Montréal', meta: 'CA' },
|
|
40
|
+
{ value: 'Reykjavík', meta: 'IS' },
|
|
41
|
+
{ value: 'Valparaíso', meta: 'CL' },
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
export class AutocompleteUsage extends Component {
|
|
45
|
+
tones = TONES;
|
|
46
|
+
appearances = APPEARANCES;
|
|
47
|
+
sizes = SIZES;
|
|
48
|
+
filters = FILTERS;
|
|
49
|
+
enterModes = ENTER_MODES;
|
|
50
|
+
cities = CITIES;
|
|
51
|
+
|
|
52
|
+
@tracked value = '';
|
|
53
|
+
@tracked committedValue = '(nothing committed yet)';
|
|
54
|
+
@tracked lastQuery = '';
|
|
55
|
+
@tracked filter = 'contains';
|
|
56
|
+
@tracked enterCommits = 'deliberate';
|
|
57
|
+
@tracked autoHighlight = false;
|
|
58
|
+
@tracked openOnFocus = true;
|
|
59
|
+
@tracked clearable = true;
|
|
60
|
+
@tracked busy = false;
|
|
61
|
+
@tracked invalid = false;
|
|
62
|
+
@tracked disabled = false;
|
|
63
|
+
@tracked tone = 'neutral';
|
|
64
|
+
@tracked appearance = 'filled-outlined';
|
|
65
|
+
@tracked sizeName = 'm';
|
|
66
|
+
@tracked minChars = 0;
|
|
67
|
+
@tracked maxVisible = 8;
|
|
68
|
+
|
|
69
|
+
setValue = (v: string) => (this.value = v);
|
|
70
|
+
onCommit = (v: string, item?: AutocompleteItem) => {
|
|
71
|
+
this.committedValue = item ? v + ' (suggestion)' : v + ' (free text)';
|
|
72
|
+
};
|
|
73
|
+
onSearch = (q: string) => (this.lastQuery = q);
|
|
74
|
+
setFilter = (v: string) => (this.filter = v);
|
|
75
|
+
setEnterCommits = (v: string) => (this.enterCommits = v);
|
|
76
|
+
setAutoHighlight = (v: boolean) => (this.autoHighlight = v);
|
|
77
|
+
setOpenOnFocus = (v: boolean) => (this.openOnFocus = v);
|
|
78
|
+
setClearable = (v: boolean) => (this.clearable = v);
|
|
79
|
+
setBusy = (v: boolean) => (this.busy = v);
|
|
80
|
+
setInvalid = (v: boolean) => (this.invalid = v);
|
|
81
|
+
setDisabled = (v: boolean) => (this.disabled = v);
|
|
82
|
+
setTone = (v: string) => (this.tone = v);
|
|
83
|
+
setAppearance = (v: string) => (this.appearance = v);
|
|
84
|
+
setSize = (v: string) => (this.sizeName = v);
|
|
85
|
+
setMinChars = (v: number | null) => (this.minChars = v ?? 0);
|
|
86
|
+
setMaxVisible = (v: number | null) => (this.maxVisible = v ?? 8);
|
|
87
|
+
|
|
88
|
+
get filterVal() {
|
|
89
|
+
return this.filter as 'contains' | 'starts-with' | 'none';
|
|
90
|
+
}
|
|
91
|
+
get enterVal() {
|
|
92
|
+
return this.enterCommits as 'deliberate' | 'highlight' | 'text';
|
|
93
|
+
}
|
|
94
|
+
get toneVal() {
|
|
95
|
+
return this.tone as PretuiTone;
|
|
96
|
+
}
|
|
97
|
+
get appearanceVal() {
|
|
98
|
+
return this.appearance as PretuiAppearance;
|
|
99
|
+
}
|
|
100
|
+
get sizeVal() {
|
|
101
|
+
return this.sizeName as PretuiSize;
|
|
102
|
+
}
|
|
103
|
+
get usage() {
|
|
104
|
+
return [
|
|
105
|
+
'<Autocomplete',
|
|
106
|
+
'@items={{this.cities}}',
|
|
107
|
+
'@value={{this.value}}',
|
|
108
|
+
'@onChange={{this.setValue}}',
|
|
109
|
+
'@onCommit={{this.onCommit}}',
|
|
110
|
+
"@label='City'",
|
|
111
|
+
'/>',
|
|
112
|
+
].join(' ');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
<template>
|
|
116
|
+
<FreestyleUsage
|
|
117
|
+
@name='Autocomplete'
|
|
118
|
+
@description='Free text WITH suggestions beside it. Combobox constrains the value to its listbox and Lookup resolves a record; here the typed string stands on its own, which is what MUI calls freeSolo. The hard question is what Enter means when the highlighted suggestion and the typed text disagree — this component answers it in one exported six-line function and one knob, where MUI hides the same rule in four interacting flags. Home and End are deliberately left to the caret, because the value is prose.'
|
|
119
|
+
@source={{this.usage}}
|
|
120
|
+
@viewportMode='narrow'
|
|
121
|
+
>
|
|
122
|
+
<:example>
|
|
123
|
+
<div class='ac-demo-slot'>
|
|
124
|
+
<Autocomplete
|
|
125
|
+
@items={{this.cities}}
|
|
126
|
+
@value={{this.value}}
|
|
127
|
+
@onChange={{this.setValue}}
|
|
128
|
+
@onCommit={{this.onCommit}}
|
|
129
|
+
@onSearch={{this.onSearch}}
|
|
130
|
+
@label='City'
|
|
131
|
+
@placeholder='Type a city, or anything else'
|
|
132
|
+
@filter={{this.filterVal}}
|
|
133
|
+
@enterCommits={{this.enterVal}}
|
|
134
|
+
@autoHighlight={{this.autoHighlight}}
|
|
135
|
+
@openOnFocus={{this.openOnFocus}}
|
|
136
|
+
@clearable={{this.clearable}}
|
|
137
|
+
@busy={{this.busy}}
|
|
138
|
+
@invalid={{this.invalid}}
|
|
139
|
+
@disabled={{this.disabled}}
|
|
140
|
+
@tone={{this.toneVal}}
|
|
141
|
+
@appearance={{this.appearanceVal}}
|
|
142
|
+
@size={{this.sizeVal}}
|
|
143
|
+
@minChars={{this.minChars}}
|
|
144
|
+
@maxVisible={{this.maxVisible}}
|
|
145
|
+
/>
|
|
146
|
+
</div>
|
|
147
|
+
<p class='pretui-demo-readout' data-test-ac-readout>
|
|
148
|
+
value = {{this.value}} · committed = {{this.committedValue}} · last
|
|
149
|
+
query = {{this.lastQuery}}
|
|
150
|
+
</p>
|
|
151
|
+
<p class='pretui-demo-note'>
|
|
152
|
+
Try it: type
|
|
153
|
+
<b>be</b>, then press Enter without touching the arrows — you get the
|
|
154
|
+
text you typed. Type
|
|
155
|
+
<b>be</b>
|
|
156
|
+
again, press ArrowDown to Belgrade, then Enter — you get Belgrade.
|
|
157
|
+
Turn autoHighlight on and repeat the first one: the pre-highlighted
|
|
158
|
+
row still does not win, because the reader did not put it there.
|
|
159
|
+
Kyoto is disabled and the arrows step over it.
|
|
160
|
+
</p>
|
|
161
|
+
</:example>
|
|
162
|
+
<:api as |Args|>
|
|
163
|
+
<Args.Object
|
|
164
|
+
@name='items'
|
|
165
|
+
@description='The suggestion collection. Each carries a value, an optional label, an optional meta line and an optional disabled flag. options is accepted as an alias, since that is the noun every React kit uses.'
|
|
166
|
+
@value={{this.cities}}
|
|
167
|
+
/>
|
|
168
|
+
<Args.String
|
|
169
|
+
@name='value'
|
|
170
|
+
@value={{this.value}}
|
|
171
|
+
@description='Controlled text. In an autocomplete the value IS what the reader typed — that is the whole difference from Combobox, whose value is constrained to its listbox. Omit and seed defaultValue for uncontrolled use.'
|
|
172
|
+
@onInput={{this.setValue}}
|
|
173
|
+
/>
|
|
174
|
+
<Args.Action
|
|
175
|
+
@name='onChange'
|
|
176
|
+
@description='Fires on every keystroke with the current text. onValueChange is accepted as an alias and both fire if both are supplied.'
|
|
177
|
+
/>
|
|
178
|
+
<Args.Action
|
|
179
|
+
@name='onCommit'
|
|
180
|
+
@description='Fires when a value is MEANT rather than merely typed — Enter, a click on a suggestion, or blur — with the chosen item as a second argument and undefined for free text. This is the callback that separates typing from deciding, and no React source in the survey exposes it.'
|
|
181
|
+
/>
|
|
182
|
+
<Args.Action
|
|
183
|
+
@name='onSearch'
|
|
184
|
+
@description='The debounced query, for a caller that fetches suggestions. Pair it with filter set to none, since the server already decided what matches.'
|
|
185
|
+
/>
|
|
186
|
+
<Args.Number
|
|
187
|
+
@name='debounce'
|
|
188
|
+
@defaultValue={{0}}
|
|
189
|
+
@description='Seconds of quiet before onSearch fires. Seconds, not milliseconds — the kit uses seconds for every duration. Zero, the default, fires on every keystroke and schedules no timer at all; any non-zero handle is owned by an ember-modifier and cleared in its destructor.'
|
|
190
|
+
/>
|
|
191
|
+
<Args.String
|
|
192
|
+
@name='filter'
|
|
193
|
+
@defaultValue='contains'
|
|
194
|
+
@value={{this.filter}}
|
|
195
|
+
@options={{this.filters}}
|
|
196
|
+
@description='Local matching. contains is what every React kit ships, starts-with is the prefix behaviour an identifier field wants, and none means the caller has already filtered — the correct mode for async, where re-filtering the server answer against the current keystroke hides rows it deliberately returned.'
|
|
197
|
+
@onInput={{this.setFilter}}
|
|
198
|
+
/>
|
|
199
|
+
<Args.String
|
|
200
|
+
@name='enterCommits'
|
|
201
|
+
@defaultValue='deliberate'
|
|
202
|
+
@value={{this.enterCommits}}
|
|
203
|
+
@options={{this.enterModes}}
|
|
204
|
+
@description='What Enter means when the highlight and the typed text disagree. deliberate lets a suggestion win only when the reader arrowed to it with the keyboard; highlight is the strict listbox behaviour; text never lets a suggestion win. MUI reaches the same default through an undocumented branch on whether the highlight was programmatic.'
|
|
205
|
+
@onInput={{this.setEnterCommits}}
|
|
206
|
+
/>
|
|
207
|
+
<Args.Bool
|
|
208
|
+
@name='autoHighlight'
|
|
209
|
+
@defaultValue={{false}}
|
|
210
|
+
@value={{this.autoHighlight}}
|
|
211
|
+
@description='Pre-highlight the first row when suggestions appear. Note that an automatic highlight still does not win Enter under the default enterCommits — that combination is exactly the bug this component is designed not to have.'
|
|
212
|
+
@onInput={{this.setAutoHighlight}}
|
|
213
|
+
/>
|
|
214
|
+
<Args.Bool
|
|
215
|
+
@name='openOnFocus'
|
|
216
|
+
@defaultValue={{true}}
|
|
217
|
+
@value={{this.openOnFocus}}
|
|
218
|
+
@description='Open the suggestion layer when the field receives focus, provided there is anything to suggest.'
|
|
219
|
+
@onInput={{this.setOpenOnFocus}}
|
|
220
|
+
/>
|
|
221
|
+
<Args.Number
|
|
222
|
+
@name='minChars'
|
|
223
|
+
@defaultValue={{0}}
|
|
224
|
+
@value={{this.minChars}}
|
|
225
|
+
@description='Hold the layer shut until this many characters are typed. The layer still reports open through onOpenChange, so a controlled caller never desynchronises.'
|
|
226
|
+
@onInput={{this.setMinChars}}
|
|
227
|
+
/>
|
|
228
|
+
<Args.Number
|
|
229
|
+
@name='maxVisible'
|
|
230
|
+
@defaultValue={{8}}
|
|
231
|
+
@value={{this.maxVisible}}
|
|
232
|
+
@description='Cap on rendered rows. The rest are reachable by narrowing, which is the honest alternative to a scroll container holding four hundred options.'
|
|
233
|
+
@onInput={{this.setMaxVisible}}
|
|
234
|
+
/>
|
|
235
|
+
<Args.Bool
|
|
236
|
+
@name='clearable'
|
|
237
|
+
@defaultValue={{false}}
|
|
238
|
+
@value={{this.clearable}}
|
|
239
|
+
@description='Show a named clear button once the field has text.'
|
|
240
|
+
@onInput={{this.setClearable}}
|
|
241
|
+
/>
|
|
242
|
+
<Args.Bool
|
|
243
|
+
@name='busy'
|
|
244
|
+
@defaultValue={{false}}
|
|
245
|
+
@value={{this.busy}}
|
|
246
|
+
@description='Pending: aria-busy on the field, a spinner, and focus retained. loading and isPending are accepted as aliases.'
|
|
247
|
+
@onInput={{this.setBusy}}
|
|
248
|
+
/>
|
|
249
|
+
<Args.Bool
|
|
250
|
+
@name='invalid'
|
|
251
|
+
@defaultValue={{false}}
|
|
252
|
+
@value={{this.invalid}}
|
|
253
|
+
@description='Error dress plus aria-invalid. isInvalid is accepted as an alias. The focus ring still wins over the error ring, so a reader can always see where they are.'
|
|
254
|
+
@onInput={{this.setInvalid}}
|
|
255
|
+
/>
|
|
256
|
+
<Args.Bool
|
|
257
|
+
@name='disabled'
|
|
258
|
+
@defaultValue={{false}}
|
|
259
|
+
@value={{this.disabled}}
|
|
260
|
+
@description='Dims and inerts through aria-disabled, never the native attribute. isDisabled is accepted as an alias.'
|
|
261
|
+
@onInput={{this.setDisabled}}
|
|
262
|
+
/>
|
|
263
|
+
<Args.String
|
|
264
|
+
@name='label'
|
|
265
|
+
@defaultValue='Search'
|
|
266
|
+
@description='Accessible name, rendered as a real sr-only label pointing at the field. A wrapper that owns the visible label passes controlId instead, and then this component renders no label of its own — two names on one field is a defect, and realm lint agrees.'
|
|
267
|
+
/>
|
|
268
|
+
<Args.String
|
|
269
|
+
@name='tone'
|
|
270
|
+
@defaultValue='neutral'
|
|
271
|
+
@value={{this.tone}}
|
|
272
|
+
@options={{this.tones}}
|
|
273
|
+
@description='Semantic hue for the field and the matched run in each row.'
|
|
274
|
+
@onInput={{this.setTone}}
|
|
275
|
+
/>
|
|
276
|
+
<Args.String
|
|
277
|
+
@name='appearance'
|
|
278
|
+
@defaultValue='filled-outlined'
|
|
279
|
+
@value={{this.appearance}}
|
|
280
|
+
@options={{this.appearances}}
|
|
281
|
+
@description='The field recipe. filled-outlined is the house default dress for inputs.'
|
|
282
|
+
@onInput={{this.setAppearance}}
|
|
283
|
+
/>
|
|
284
|
+
<Args.String
|
|
285
|
+
@name='size'
|
|
286
|
+
@defaultValue='m'
|
|
287
|
+
@value={{this.sizeName}}
|
|
288
|
+
@options={{this.sizes}}
|
|
289
|
+
@description='Size scale. Accepts sm, md, lg and default as aliases.'
|
|
290
|
+
@onInput={{this.setSize}}
|
|
291
|
+
/>
|
|
292
|
+
<Args.Bool
|
|
293
|
+
@name='open'
|
|
294
|
+
@description='Controlled suggestion layer. Pair with onOpenChange; defaultOpen is the uncontrolled seed.'
|
|
295
|
+
/>
|
|
296
|
+
<Args.Yield
|
|
297
|
+
@name='item'
|
|
298
|
+
@description='Replaces the default row body, yielding the item and the live query. It renders inside an aria-hidden face, so any markup is legal here — the option name is computed rather than scraped, which is what keeps a caller who yields an avatar from failing realm lint in their own file.'
|
|
299
|
+
/>
|
|
300
|
+
<Args.Yield
|
|
301
|
+
@name='empty'
|
|
302
|
+
@description='Replaces the built-in empty line. The built-in one is deliberate — a mark, the reason, and the next action — rather than a bare no results.'
|
|
303
|
+
/>
|
|
304
|
+
</:api>
|
|
305
|
+
<:cssVars as |Css|>
|
|
306
|
+
<Css.Basic
|
|
307
|
+
@name='pretui-ac-h'
|
|
308
|
+
@description='Minimum field height: --boxel-form-control-height-sm at size m, scaled off the text size at the others.'
|
|
309
|
+
@defaultValue='var(--boxel-form-control-height-sm)'
|
|
310
|
+
/>
|
|
311
|
+
</:cssVars>
|
|
312
|
+
</FreestyleUsage>
|
|
313
|
+
<style scoped>
|
|
314
|
+
/* The layer renders in place and is absolutely positioned, so the demo
|
|
315
|
+
slot reserves room for it rather than letting it clip the artboard. */
|
|
316
|
+
.ac-demo-slot {
|
|
317
|
+
min-height: 18em;
|
|
318
|
+
max-width: 26em;
|
|
319
|
+
}
|
|
320
|
+
.pretui-demo-readout {
|
|
321
|
+
margin: 12px 0 0;
|
|
322
|
+
font-family: var(--font-mono);
|
|
323
|
+
font-size: var(--text-ui-xs, 11px);
|
|
324
|
+
color: var(--muted-foreground);
|
|
325
|
+
}
|
|
326
|
+
.pretui-demo-note {
|
|
327
|
+
margin: 16px 0 0;
|
|
328
|
+
font-size: var(--text-ui-xs, 11px);
|
|
329
|
+
line-height: 1.5;
|
|
330
|
+
color: var(--muted-foreground);
|
|
331
|
+
}
|
|
332
|
+
</style>
|
|
333
|
+
</template>
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
export const DEMOS_AUTOCOMPLETE: Record<string, unknown> = {
|
|
338
|
+
Autocomplete: AutocompleteUsage,
|
|
339
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Pretui — AvatarGroup: an overlapping stack of Avatars with a count overflow.
|
|
2
|
+
import type { TemplateOnlyComponent } from '@ember/component/template-only';
|
|
3
|
+
|
|
4
|
+
export interface AvatarGroupSignature {
|
|
5
|
+
Blocks: { default: [] };
|
|
6
|
+
Element: HTMLSpanElement;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Overlapping avatar row; the card-colored ring separates neighbors.
|
|
10
|
+
export const AvatarGroup: TemplateOnlyComponent<AvatarGroupSignature> = <template>
|
|
11
|
+
<span class='pretui-avatar-group' data-test-pretui-avatar-group ...attributes>
|
|
12
|
+
{{yield}}
|
|
13
|
+
</span>
|
|
14
|
+
<style scoped>
|
|
15
|
+
/* above Avatar's layer, so these win by layer order, not file order */
|
|
16
|
+
@layer PretComponent, PretComposite;
|
|
17
|
+
@layer PretComposite {
|
|
18
|
+
.pretui-avatar-group {
|
|
19
|
+
display: inline-flex;
|
|
20
|
+
}
|
|
21
|
+
.pretui-avatar-group > :deep(.pretui-avatar) {
|
|
22
|
+
margin-left: -6px;
|
|
23
|
+
box-shadow: 0 0 0 2px var(--card);
|
|
24
|
+
}
|
|
25
|
+
.pretui-avatar-group > :deep(.pretui-avatar:first-child) {
|
|
26
|
+
margin-left: 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
</style>
|
|
30
|
+
</template>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A row of overlapping **Avatar**s, each ringed in the card colour so neighbours stay separate. Use it where several people share a thing and you need to show that at a glance without a list — reviewers on a document, attendees, watchers, presence in a room. If the people need to be individually identifiable or actionable, use a real list. If there are more than about five, cap the row and add a count.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
<:default> — the Avatars
|
|
9
|
+
Element: HTMLSpanElement
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
**No args at all.** It is a layout wrapper: an `inline-flex` with a `-6px` left margin on every child Avatar except the first, and a 2px `--card` ring replacing each Avatar's normal hairline. That ring is what makes the overlap legible — without it, two adjacent avatars of similar hue merge into a blob.
|
|
13
|
+
|
|
14
|
+
The styling reaches its children through `:deep(.pretui-avatar)`, which is a deliberate, narrow use of the escape hatch: the component must restyle content it did not render. The consequence is that **it only works on Pretui `Avatar`s** — an arbitrary circle yielded in will not overlap or get the ring.
|
|
15
|
+
|
|
16
|
+
**Overflow is entirely yours.** There is no overflow arg, no `+3` chip, no truncation. A group of forty avatars renders forty avatars. In practice you slice the array at the call site and put a **Chip** after the group.
|
|
17
|
+
|
|
18
|
+
## Prior art
|
|
19
|
+
|
|
20
|
+
**Web Awesome** has no avatar group. **Radix** has none. **React Spectrum `AvatarGroup`** takes `label`, `size` and `orientation`, and — crucially — is a **labelled group** with real semantics. **shadcn** documents an avatar-stack recipe with a `-space-x-2` utility and nothing else. **Material** and **Ant** both ship `max`/`maxCount` with an overflow avatar.
|
|
21
|
+
|
|
22
|
+
So the field splits into "a CSS trick" (shadcn, and effectively this) and "a semantic group with overflow handling" (Spectrum, Ant). Pretui is on the CSS-trick side, and the honest reading is that this is the thinnest component in the ink territory relative to its prior art.
|
|
23
|
+
|
|
24
|
+
What it does get right: **the ring is `--card`, not white.** That is the difference between a group that works on a panel and one that shows white halos on every dark or tinted surface, and it is the single most common bug in hand-rolled avatar stacks. Because the ring is a token, the group composes onto any Pretui surface correctly.
|
|
25
|
+
|
|
26
|
+
What it is missing, concretely: `@max` with an overflow indicator (the most-requested feature and present in every mature implementation), a group label, `@size` currying so children do not each need their own, and reverse stacking order (the first avatar sits on top here, so a long row's _last_ avatar is the least visible — most implementations invert the `z-index` so the leftmost is on top, which this achieves by DOM order rather than deliberately).
|
|
27
|
+
|
|
28
|
+
## Accessibility
|
|
29
|
+
|
|
30
|
+
No APG pattern.
|
|
31
|
+
|
|
32
|
+
This is where the gap versus React Spectrum matters most, and it is worth being direct:
|
|
33
|
+
|
|
34
|
+
- **The group has no accessible name and no group semantics.** No `role="group"`, no `aria-label`, no list markup. A screen-reader user encounters a run of avatars with no indication that they belong together, and no count. Spectrum's `AvatarGroup label` exists precisely for this — "Reviewers, 4 people". Adding `role="group"` plus an `@label` arg would be the single highest-value change to this component.
|
|
35
|
+
- **Each avatar announces individually**, and inherits **Avatar**'s own gap: an initials-only Avatar has no accessible name at all (the initials are announced as letters, and the full name lives in an unreliable `title`). So a group of five initials-only avatars announces as "AL JP MK RS TW" — ten letters, no names. In a group this compounds from a minor issue into an unusable one.
|
|
36
|
+
- **No count is available anywhere.** Sighted users can see five circles; a screen-reader user gets five unlabelled fragments and no total. Since overflow is the caller's job, the "+3" that would carry it is not part of the component either.
|
|
37
|
+
- **Overlap and target size**: if the avatars are interactive (wrapped in links at the call site), the `-6px` overlap means each target is partially occluded by its neighbour, and the leftmost 6px of every avatar after the first is unclickable. That is a **WCAG 2.5.8 Target Size** concern for interactive groups. Non-interactive groups are unaffected.
|
|
38
|
+
- **The ring is decorative** and contributes nothing to the accessibility tree — correct.
|
|
39
|
+
|
|
40
|
+
Practical guidance: wrap the group in a labelled `role="group"` or a `<ul>` at the call site, give each Avatar an `aria-label`, and render a visible count.
|
|
41
|
+
|
|
42
|
+
## Theming
|
|
43
|
+
|
|
44
|
+
`--card` (the 2px separator ring). That is the only token this component consumes directly; everything else belongs to the **Avatar**s inside it.
|
|
45
|
+
|
|
46
|
+
The `-6px` overlap and the 2px ring width are fixed, so a theme cannot make the stack tighter or looser. The ring being `--card` means a group placed on `--canvas` or `--inset` — an **EmptyState**, a table's header band, a striped row — will show rings in the wrong color. That is the one placement trap: the component assumes it sits on a card surface, and there is no token to tell it otherwise.
|
|
47
|
+
|
|
48
|
+
The styles sit in `@layer PretComposite`, above Avatar's `PretComponent` layer, so what this component sets on Avatar wins by layer order. A caller's unlayered CSS overrides both without a more specific selector.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Pretui — AvatarGroup usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
4
|
+
import { Avatar } from './avatar';
|
|
5
|
+
import { AvatarGroup } from './avatar-group';
|
|
6
|
+
|
|
7
|
+
const PEOPLE = [
|
|
8
|
+
{ name: 'Mei-Lin Chua', hue: 'var(--chart-1)' },
|
|
9
|
+
{ name: 'Tomás Aravena', hue: 'var(--chart-2)' },
|
|
10
|
+
{ name: 'Priya Raghunathan', hue: 'var(--chart-3)' },
|
|
11
|
+
{ name: 'Kwame Boateng', hue: 'var(--chart-4)' },
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
class AvatarGroupUsage extends Component {
|
|
15
|
+
people = PEOPLE;
|
|
16
|
+
<template>
|
|
17
|
+
<FreestyleUsage
|
|
18
|
+
@name='AvatarGroup'
|
|
19
|
+
@description='A compact overlap for named people. Every Avatar retains its own accessible name; the card-coloured ring separates neighbours without adding a new hue.'
|
|
20
|
+
@source='<AvatarGroup><Avatar @name="Mei-Lin Chua" />…</AvatarGroup>'
|
|
21
|
+
>
|
|
22
|
+
<:example>
|
|
23
|
+
<AvatarGroup>
|
|
24
|
+
{{#each this.people as |person|}}
|
|
25
|
+
<Avatar @name={{person.name}} @hue={{person.hue}} @size={{32}} />
|
|
26
|
+
{{/each}}
|
|
27
|
+
</AvatarGroup>
|
|
28
|
+
</:example>
|
|
29
|
+
<:api as |Args|>
|
|
30
|
+
<Args.Yield @name='default' @description='Avatar children in display order.' />
|
|
31
|
+
<Args.Object @name='sample people' @value={{this.people}} @description='Representative fixture data for the yielded Avatars.' />
|
|
32
|
+
</:api>
|
|
33
|
+
</FreestyleUsage>
|
|
34
|
+
</template>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const DEMOS_AVATAR_GROUP: Record<string, unknown> = {
|
|
38
|
+
AvatarGroup: AvatarGroupUsage,
|
|
39
|
+
};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// Pretui — Avatar: an identity disc with a name-derived hue and initials.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { on } from '@ember/modifier';
|
|
5
|
+
import { cssDeclaration, cssStyleFrom, cssValue } from '../pretui-css';
|
|
6
|
+
import { statusHue } from '../internal/ink';
|
|
7
|
+
import { keepStyle, type KeptProperty } from '../internal/keep-style';
|
|
8
|
+
|
|
9
|
+
export interface AvatarSignature {
|
|
10
|
+
Args: {
|
|
11
|
+
name: string;
|
|
12
|
+
src?: string;
|
|
13
|
+
hue?: string;
|
|
14
|
+
/** diameter in px at a 16px root, written as rem; omitted, 24 (1.5rem) */
|
|
15
|
+
size?: number;
|
|
16
|
+
};
|
|
17
|
+
Element: HTMLSpanElement;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const SIZE_PROPERTY = '--pretui-avatar-size';
|
|
21
|
+
const HUE_PROPERTY = '--pretui-chip-hue';
|
|
22
|
+
|
|
23
|
+
export class Avatar extends Component<AvatarSignature> {
|
|
24
|
+
@tracked failedSrc: string | undefined;
|
|
25
|
+
|
|
26
|
+
get initials() {
|
|
27
|
+
return (this.args.name ?? '')
|
|
28
|
+
.split(/\s+/)
|
|
29
|
+
.map((w) => w[0])
|
|
30
|
+
.slice(0, 2)
|
|
31
|
+
.join('')
|
|
32
|
+
.toUpperCase();
|
|
33
|
+
}
|
|
34
|
+
get showImage(): boolean {
|
|
35
|
+
return Boolean(this.args.src) && this.args.src !== this.failedSrc;
|
|
36
|
+
}
|
|
37
|
+
imageError = () => {
|
|
38
|
+
this.failedSrc = this.args.src;
|
|
39
|
+
};
|
|
40
|
+
// The diameter as rem, from a px figure at a 16px root. Omitted, nothing is
|
|
41
|
+
// written and the stylesheet's 1.5rem (or a caller's --pretui-avatar-size,
|
|
42
|
+
// from a class, a container query or an ancestor) applies.
|
|
43
|
+
get size(): string | undefined {
|
|
44
|
+
let size = Number(this.args.size) || undefined;
|
|
45
|
+
return size === undefined ? undefined : `${size / 16}rem`;
|
|
46
|
+
}
|
|
47
|
+
get explicitHue(): string | undefined {
|
|
48
|
+
return this.args.hue ?? undefined;
|
|
49
|
+
}
|
|
50
|
+
// An explicit @hue is validated; without one the hue is the name's hash.
|
|
51
|
+
get hue(): string | undefined {
|
|
52
|
+
let hue = this.explicitHue;
|
|
53
|
+
return hue === undefined ? statusHue(this.args.name ?? '') : cssValue(hue);
|
|
54
|
+
}
|
|
55
|
+
get style() {
|
|
56
|
+
return cssStyleFrom([
|
|
57
|
+
cssDeclaration(SIZE_PROPERTY, this.size),
|
|
58
|
+
cssDeclaration(HUE_PROPERTY, this.hue),
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
// The same properties again, kept on top of a caller's `style`. @hue and
|
|
62
|
+
// @size win over the caller's; the name-derived hue only fills in when the
|
|
63
|
+
// caller's style sets no hue of its own.
|
|
64
|
+
get keptStyle(): KeptProperty[] {
|
|
65
|
+
return [
|
|
66
|
+
{ property: SIZE_PROPERTY, value: this.size, strength: 'arg' },
|
|
67
|
+
{
|
|
68
|
+
property: HUE_PROPERTY,
|
|
69
|
+
value: this.hue,
|
|
70
|
+
strength: this.explicitHue === undefined ? 'default' : 'arg',
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
<template>
|
|
75
|
+
<span
|
|
76
|
+
class='pretui-avatar'
|
|
77
|
+
title={{@name}}
|
|
78
|
+
role={{unless this.showImage 'img'}}
|
|
79
|
+
aria-label={{unless this.showImage @name}}
|
|
80
|
+
data-has-image={{if this.showImage 'true'}}
|
|
81
|
+
style={{this.style}}
|
|
82
|
+
{{keepStyle this.keptStyle}}
|
|
83
|
+
data-test-pretui-avatar
|
|
84
|
+
...attributes
|
|
85
|
+
>
|
|
86
|
+
{{#if this.showImage}}<img src={{@src}} alt={{@name}} {{on 'error' this.imageError}} />{{else}}{{this.initials}}{{/if}}
|
|
87
|
+
</span>
|
|
88
|
+
<style scoped>
|
|
89
|
+
@layer PretComponent {
|
|
90
|
+
.pretui-avatar {
|
|
91
|
+
display: inline-flex;
|
|
92
|
+
align-items: center;
|
|
93
|
+
justify-content: center;
|
|
94
|
+
/* the default diameter, declared once */
|
|
95
|
+
--_avatar-size: var(--pretui-avatar-size, 1.5rem);
|
|
96
|
+
--_avatar-hue: var(--pretui-chip-hue, var(--primary));
|
|
97
|
+
width: var(--_avatar-size);
|
|
98
|
+
height: var(--_avatar-size);
|
|
99
|
+
/* 0.42 of the diameter; rounded to the whole pixel below where
|
|
100
|
+
round() is supported */
|
|
101
|
+
font-size: calc(var(--_avatar-size) * 0.42);
|
|
102
|
+
border-radius: 50%;
|
|
103
|
+
font-family: var(--font-mono);
|
|
104
|
+
font-weight: 600;
|
|
105
|
+
background-color: color-mix(in oklch, var(--_avatar-hue) 16%, var(--card));
|
|
106
|
+
color: var(--foreground);
|
|
107
|
+
box-shadow: 0 0 0 1px color-mix(in oklch, var(--_avatar-hue) 28%, var(--border));
|
|
108
|
+
overflow: hidden;
|
|
109
|
+
flex: none;
|
|
110
|
+
}
|
|
111
|
+
/* Gated rather than declared after the calc() fallback: a value
|
|
112
|
+
containing var() is accepted at parse time, so an engine without
|
|
113
|
+
round() would keep it, fail at computed-value time, and inherit
|
|
114
|
+
the parent's font size instead of using the fallback. */
|
|
115
|
+
@supports (font-size: round(1px, 1px)) {
|
|
116
|
+
.pretui-avatar {
|
|
117
|
+
font-size: round(calc(var(--_avatar-size) * 0.42), 1px);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/* A photo gets a neutral ring: the name's hue carries no meaning once
|
|
121
|
+
the photo shows. The ring sits on the root, whose overflow: hidden
|
|
122
|
+
circle would clip an outline on the square img. */
|
|
123
|
+
.pretui-avatar[data-has-image] {
|
|
124
|
+
box-shadow: 0 0 0 1px color-mix(in oklch, var(--foreground) 10%, transparent);
|
|
125
|
+
}
|
|
126
|
+
.pretui-avatar img {
|
|
127
|
+
width: 100%;
|
|
128
|
+
height: 100%;
|
|
129
|
+
object-fit: cover;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
</style>
|
|
133
|
+
</template>
|
|
134
|
+
}
|