@cardstack/boxel-cli 0.10.0 → 0.10.1-unstable.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-realms/pretui/README.md +49 -0
- package/bundled-realms/pretui/color/LICENSE +21 -0
- package/bundled-realms/pretui/color/README.md +155 -0
- package/bundled-realms/pretui/color/index.js +78 -0
- package/bundled-realms/pretui/color-engine.ts +1243 -0
- package/bundled-realms/pretui/components/accordion.gts +58 -0
- package/bundled-realms/pretui/components/accordion.md +60 -0
- package/bundled-realms/pretui/components/accordion.usage.gts +129 -0
- package/bundled-realms/pretui/components/action-bar.gts +407 -0
- package/bundled-realms/pretui/components/action-bar.md +48 -0
- package/bundled-realms/pretui/components/action-bar.usage.gts +213 -0
- package/bundled-realms/pretui/components/affix.gts +116 -0
- package/bundled-realms/pretui/components/affix.md +54 -0
- package/bundled-realms/pretui/components/affix.usage.gts +73 -0
- package/bundled-realms/pretui/components/agent-question.gts +116 -0
- package/bundled-realms/pretui/components/agent-question.md +50 -0
- package/bundled-realms/pretui/components/agent-question.usage.gts +22 -0
- package/bundled-realms/pretui/components/ai-instructions.gts +378 -0
- package/bundled-realms/pretui/components/ai-instructions.md +49 -0
- package/bundled-realms/pretui/components/ai-instructions.usage.gts +101 -0
- package/bundled-realms/pretui/components/alert-dialog.gts +223 -0
- package/bundled-realms/pretui/components/alert-dialog.md +76 -0
- package/bundled-realms/pretui/components/alert-dialog.usage.gts +128 -0
- package/bundled-realms/pretui/components/alert.gts +163 -0
- package/bundled-realms/pretui/components/alert.md +57 -0
- package/bundled-realms/pretui/components/alert.usage.gts +99 -0
- package/bundled-realms/pretui/components/amount-input.gts +621 -0
- package/bundled-realms/pretui/components/amount-input.md +63 -0
- package/bundled-realms/pretui/components/amount-input.usage.gts +170 -0
- package/bundled-realms/pretui/components/angle-dial.gts +367 -0
- package/bundled-realms/pretui/components/angle-dial.md +56 -0
- package/bundled-realms/pretui/components/angle-dial.usage.gts +166 -0
- package/bundled-realms/pretui/components/animated-image.gts +291 -0
- package/bundled-realms/pretui/components/animated-image.md +49 -0
- package/bundled-realms/pretui/components/animated-image.usage.gts +127 -0
- package/bundled-realms/pretui/components/app-shell.gts +19 -0
- package/bundled-realms/pretui/components/app-shell.md +43 -0
- package/bundled-realms/pretui/components/app-shell.usage.gts +52 -0
- package/bundled-realms/pretui/components/approval-footer.gts +69 -0
- package/bundled-realms/pretui/components/approval-footer.md +49 -0
- package/bundled-realms/pretui/components/approval-footer.usage.gts +22 -0
- package/bundled-realms/pretui/components/aspect-ratio.gts +328 -0
- package/bundled-realms/pretui/components/aspect-ratio.md +72 -0
- package/bundled-realms/pretui/components/aspect-ratio.usage.gts +174 -0
- package/bundled-realms/pretui/components/asset-grid.gts +542 -0
- package/bundled-realms/pretui/components/asset-grid.md +54 -0
- package/bundled-realms/pretui/components/asset-grid.usage.gts +171 -0
- package/bundled-realms/pretui/components/asset-well.gts +731 -0
- package/bundled-realms/pretui/components/asset-well.md +72 -0
- package/bundled-realms/pretui/components/asset-well.usage.gts +264 -0
- package/bundled-realms/pretui/components/audio-player.gts +152 -0
- package/bundled-realms/pretui/components/audio-player.md +51 -0
- package/bundled-realms/pretui/components/audio-player.usage.gts +118 -0
- package/bundled-realms/pretui/components/autocomplete.gts +1150 -0
- package/bundled-realms/pretui/components/autocomplete.md +67 -0
- package/bundled-realms/pretui/components/autocomplete.usage.gts +339 -0
- package/bundled-realms/pretui/components/avatar-group.gts +30 -0
- package/bundled-realms/pretui/components/avatar-group.md +48 -0
- package/bundled-realms/pretui/components/avatar-group.usage.gts +39 -0
- package/bundled-realms/pretui/components/avatar.gts +134 -0
- package/bundled-realms/pretui/components/avatar.md +69 -0
- package/bundled-realms/pretui/components/avatar.usage.gts +101 -0
- package/bundled-realms/pretui/components/backdrop.gts +179 -0
- package/bundled-realms/pretui/components/backdrop.md +56 -0
- package/bundled-realms/pretui/components/backdrop.usage.gts +223 -0
- package/bundled-realms/pretui/components/background-field.gts +743 -0
- package/bundled-realms/pretui/components/background-field.md +62 -0
- package/bundled-realms/pretui/components/background-field.usage.gts +328 -0
- package/bundled-realms/pretui/components/badge.gts +188 -0
- package/bundled-realms/pretui/components/badge.md +62 -0
- package/bundled-realms/pretui/components/badge.usage.gts +73 -0
- package/bundled-realms/pretui/components/bar-list.gts +255 -0
- package/bundled-realms/pretui/components/bar-list.md +49 -0
- package/bundled-realms/pretui/components/bar-list.usage.gts +129 -0
- package/bundled-realms/pretui/components/board.gts +108 -0
- package/bundled-realms/pretui/components/board.md +54 -0
- package/bundled-realms/pretui/components/board.usage.gts +321 -0
- package/bundled-realms/pretui/components/bottom-nav.gts +217 -0
- package/bundled-realms/pretui/components/bottom-nav.md +64 -0
- package/bundled-realms/pretui/components/bottom-nav.usage.gts +68 -0
- package/bundled-realms/pretui/components/breadcrumb.gts +56 -0
- package/bundled-realms/pretui/components/breadcrumb.md +52 -0
- package/bundled-realms/pretui/components/breadcrumb.usage.gts +24 -0
- package/bundled-realms/pretui/components/broken-link.gts +46 -0
- package/bundled-realms/pretui/components/broken-link.md +50 -0
- package/bundled-realms/pretui/components/broken-link.usage.gts +57 -0
- package/bundled-realms/pretui/components/button-group.gts +246 -0
- package/bundled-realms/pretui/components/button-group.md +46 -0
- package/bundled-realms/pretui/components/button-group.usage.gts +137 -0
- package/bundled-realms/pretui/components/button.examples.gts +67 -0
- package/bundled-realms/pretui/components/button.gts +594 -0
- package/bundled-realms/pretui/components/button.md +81 -0
- package/bundled-realms/pretui/components/button.usage.gts +159 -0
- package/bundled-realms/pretui/components/calendar.gts +457 -0
- package/bundled-realms/pretui/components/calendar.md +57 -0
- package/bundled-realms/pretui/components/calendar.usage.gts +161 -0
- package/bundled-realms/pretui/components/callout.gts +2 -0
- package/bundled-realms/pretui/components/callout.md +40 -0
- package/bundled-realms/pretui/components/callout.usage.gts +48 -0
- package/bundled-realms/pretui/components/card.gts +637 -0
- package/bundled-realms/pretui/components/card.md +105 -0
- package/bundled-realms/pretui/components/card.usage.gts +279 -0
- package/bundled-realms/pretui/components/carousel.gts +583 -0
- package/bundled-realms/pretui/components/carousel.md +53 -0
- package/bundled-realms/pretui/components/carousel.usage.gts +220 -0
- package/bundled-realms/pretui/components/cascader.gts +436 -0
- package/bundled-realms/pretui/components/cascader.md +61 -0
- package/bundled-realms/pretui/components/cascader.usage.gts +79 -0
- package/bundled-realms/pretui/components/channel-slider.gts +251 -0
- package/bundled-realms/pretui/components/channel-slider.md +51 -0
- package/bundled-realms/pretui/components/channel-slider.usage.gts +104 -0
- package/bundled-realms/pretui/components/chart.gts +1011 -0
- package/bundled-realms/pretui/components/chart.md +60 -0
- package/bundled-realms/pretui/components/chart.usage.gts +660 -0
- package/bundled-realms/pretui/components/checkbox-card.gts +82 -0
- package/bundled-realms/pretui/components/checkbox-card.md +73 -0
- package/bundled-realms/pretui/components/checkbox-card.usage.gts +114 -0
- package/bundled-realms/pretui/components/checkbox.examples.gts +61 -0
- package/bundled-realms/pretui/components/checkbox.gts +123 -0
- package/bundled-realms/pretui/components/checkbox.md +55 -0
- package/bundled-realms/pretui/components/checkbox.usage.gts +31 -0
- package/bundled-realms/pretui/components/chip.gts +136 -0
- package/bundled-realms/pretui/components/chip.md +54 -0
- package/bundled-realms/pretui/components/chip.usage.gts +97 -0
- package/bundled-realms/pretui/components/code-block.gts +888 -0
- package/bundled-realms/pretui/components/code-block.md +61 -0
- package/bundled-realms/pretui/components/code-block.usage.gts +374 -0
- package/bundled-realms/pretui/components/collapsed-turn.gts +44 -0
- package/bundled-realms/pretui/components/collapsed-turn.md +48 -0
- package/bundled-realms/pretui/components/collapsed-turn.usage.gts +21 -0
- package/bundled-realms/pretui/components/collapsible.gts +283 -0
- package/bundled-realms/pretui/components/collapsible.md +69 -0
- package/bundled-realms/pretui/components/collapsible.usage.gts +173 -0
- package/bundled-realms/pretui/components/color-area.gts +339 -0
- package/bundled-realms/pretui/components/color-area.md +49 -0
- package/bundled-realms/pretui/components/color-area.usage.gts +72 -0
- package/bundled-realms/pretui/components/color-field.gts +179 -0
- package/bundled-realms/pretui/components/color-field.md +47 -0
- package/bundled-realms/pretui/components/color-field.usage.gts +87 -0
- package/bundled-realms/pretui/components/color-palette.gts +198 -0
- package/bundled-realms/pretui/components/color-palette.md +48 -0
- package/bundled-realms/pretui/components/color-picker.gts +721 -0
- package/bundled-realms/pretui/components/color-picker.md +59 -0
- package/bundled-realms/pretui/components/color-picker.usage.gts +122 -0
- package/bundled-realms/pretui/components/color-stop-editor.gts +184 -0
- package/bundled-realms/pretui/components/color-stop-editor.md +46 -0
- package/bundled-realms/pretui/components/color-stop-editor.usage.gts +75 -0
- package/bundled-realms/pretui/components/combobox.gts +333 -0
- package/bundled-realms/pretui/components/combobox.md +49 -0
- package/bundled-realms/pretui/components/combobox.usage.gts +143 -0
- package/bundled-realms/pretui/components/command-palette.gts +982 -0
- package/bundled-realms/pretui/components/command-palette.md +47 -0
- package/bundled-realms/pretui/components/command-palette.usage.gts +95 -0
- package/bundled-realms/pretui/components/command.gts +2 -0
- package/bundled-realms/pretui/components/command.md +45 -0
- package/bundled-realms/pretui/components/command.usage.gts +58 -0
- package/bundled-realms/pretui/components/compaction-chip.gts +273 -0
- package/bundled-realms/pretui/components/compaction-chip.md +45 -0
- package/bundled-realms/pretui/components/compaction-chip.usage.gts +110 -0
- package/bundled-realms/pretui/components/comparison.gts +223 -0
- package/bundled-realms/pretui/components/comparison.md +46 -0
- package/bundled-realms/pretui/components/comparison.usage.gts +148 -0
- package/bundled-realms/pretui/components/composer.gts +566 -0
- package/bundled-realms/pretui/components/composer.md +59 -0
- package/bundled-realms/pretui/components/composer.usage.gts +173 -0
- package/bundled-realms/pretui/components/compound-field.gts +289 -0
- package/bundled-realms/pretui/components/compound-field.md +66 -0
- package/bundled-realms/pretui/components/compound-field.usage.gts +378 -0
- package/bundled-realms/pretui/components/contact-link.gts +583 -0
- package/bundled-realms/pretui/components/contact-link.md +53 -0
- package/bundled-realms/pretui/components/contact-link.usage.gts +273 -0
- package/bundled-realms/pretui/components/context-menu.gts +811 -0
- package/bundled-realms/pretui/components/context-menu.md +74 -0
- package/bundled-realms/pretui/components/context-menu.usage.gts +244 -0
- package/bundled-realms/pretui/components/copy-button.gts +237 -0
- package/bundled-realms/pretui/components/copy-button.md +71 -0
- package/bundled-realms/pretui/components/copy-button.usage.gts +135 -0
- package/bundled-realms/pretui/components/copy-fit.gts +396 -0
- package/bundled-realms/pretui/components/copy-fit.md +60 -0
- package/bundled-realms/pretui/components/copy-fit.usage.gts +200 -0
- package/bundled-realms/pretui/components/cta-band.gts +285 -0
- package/bundled-realms/pretui/components/cta-band.md +50 -0
- package/bundled-realms/pretui/components/cta-band.usage.gts +208 -0
- package/bundled-realms/pretui/components/cue.gts +180 -0
- package/bundled-realms/pretui/components/cue.md +53 -0
- package/bundled-realms/pretui/components/cue.usage.gts +88 -0
- package/bundled-realms/pretui/components/cursor-trail.gts +221 -0
- package/bundled-realms/pretui/components/cursor-trail.md +56 -0
- package/bundled-realms/pretui/components/cursor-trail.usage.gts +218 -0
- package/bundled-realms/pretui/components/dashboard-grid.gts +939 -0
- package/bundled-realms/pretui/components/dashboard-grid.md +60 -0
- package/bundled-realms/pretui/components/dashboard-grid.usage.gts +307 -0
- package/bundled-realms/pretui/components/dashboard-item.gts +286 -0
- package/bundled-realms/pretui/components/dashboard-item.md +52 -0
- package/bundled-realms/pretui/components/dashboard-item.usage.gts +87 -0
- package/bundled-realms/pretui/components/data-grid.gts +263 -0
- package/bundled-realms/pretui/components/data-grid.md +64 -0
- package/bundled-realms/pretui/components/data-grid.usage.gts +50 -0
- package/bundled-realms/pretui/components/data-table.gts +1618 -0
- package/bundled-realms/pretui/components/data-table.md +104 -0
- package/bundled-realms/pretui/components/data-table.usage.gts +324 -0
- package/bundled-realms/pretui/components/date-picker.gts +98 -0
- package/bundled-realms/pretui/components/date-picker.md +59 -0
- package/bundled-realms/pretui/components/date-picker.usage.gts +66 -0
- package/bundled-realms/pretui/components/date-range-picker.gts +131 -0
- package/bundled-realms/pretui/components/date-range-picker.md +55 -0
- package/bundled-realms/pretui/components/date-range-picker.usage.gts +125 -0
- package/bundled-realms/pretui/components/date-time-picker.gts +227 -0
- package/bundled-realms/pretui/components/date-time-picker.md +60 -0
- package/bundled-realms/pretui/components/date-time-picker.usage.gts +64 -0
- package/bundled-realms/pretui/components/defer.gts +374 -0
- package/bundled-realms/pretui/components/defer.md +61 -0
- package/bundled-realms/pretui/components/defer.usage.gts +174 -0
- package/bundled-realms/pretui/components/delta.gts +45 -0
- package/bundled-realms/pretui/components/delta.md +53 -0
- package/bundled-realms/pretui/components/delta.usage.gts +31 -0
- package/bundled-realms/pretui/components/descriptions.gts +365 -0
- package/bundled-realms/pretui/components/descriptions.md +73 -0
- package/bundled-realms/pretui/components/descriptions.usage.gts +123 -0
- package/bundled-realms/pretui/components/dialog.gts +153 -0
- package/bundled-realms/pretui/components/dialog.md +60 -0
- package/bundled-realms/pretui/components/dialog.usage.gts +86 -0
- package/bundled-realms/pretui/components/diff-block.gts +89 -0
- package/bundled-realms/pretui/components/diff-block.md +51 -0
- package/bundled-realms/pretui/components/diff-block.usage.gts +27 -0
- package/bundled-realms/pretui/components/disclosure.gts +2 -0
- package/bundled-realms/pretui/components/disclosure.md +45 -0
- package/bundled-realms/pretui/components/disclosure.usage.gts +47 -0
- package/bundled-realms/pretui/components/divider.gts +75 -0
- package/bundled-realms/pretui/components/divider.md +49 -0
- package/bundled-realms/pretui/components/divider.usage.gts +98 -0
- package/bundled-realms/pretui/components/doc-report.gts +306 -0
- package/bundled-realms/pretui/components/doc-report.md +45 -0
- package/bundled-realms/pretui/components/doc-report.usage.gts +126 -0
- package/bundled-realms/pretui/components/dock.gts +165 -0
- package/bundled-realms/pretui/components/dock.md +42 -0
- package/bundled-realms/pretui/components/dock.usage.gts +114 -0
- package/bundled-realms/pretui/components/drawer.gts +166 -0
- package/bundled-realms/pretui/components/drawer.md +66 -0
- package/bundled-realms/pretui/components/drawer.usage.gts +111 -0
- package/bundled-realms/pretui/components/dropzone.gts +314 -0
- package/bundled-realms/pretui/components/dropzone.md +56 -0
- package/bundled-realms/pretui/components/dropzone.usage.gts +203 -0
- package/bundled-realms/pretui/components/dueling-picklist.gts +991 -0
- package/bundled-realms/pretui/components/dueling-picklist.md +67 -0
- package/bundled-realms/pretui/components/dueling-picklist.usage.gts +182 -0
- package/bundled-realms/pretui/components/dynamic-island.gts +264 -0
- package/bundled-realms/pretui/components/dynamic-island.md +45 -0
- package/bundled-realms/pretui/components/dynamic-island.usage.gts +195 -0
- package/bundled-realms/pretui/components/easing-curve.gts +629 -0
- package/bundled-realms/pretui/components/easing-curve.md +46 -0
- package/bundled-realms/pretui/components/easing-curve.usage.gts +122 -0
- package/bundled-realms/pretui/components/edit-in-place.gts +559 -0
- package/bundled-realms/pretui/components/edit-in-place.md +63 -0
- package/bundled-realms/pretui/components/edit-in-place.usage.gts +209 -0
- package/bundled-realms/pretui/components/editable.gts +299 -0
- package/bundled-realms/pretui/components/editable.md +79 -0
- package/bundled-realms/pretui/components/editable.usage.gts +68 -0
- package/bundled-realms/pretui/components/email-input.gts +83 -0
- package/bundled-realms/pretui/components/email-input.md +52 -0
- package/bundled-realms/pretui/components/email-input.usage.gts +90 -0
- package/bundled-realms/pretui/components/emoji-button.gts +162 -0
- package/bundled-realms/pretui/components/emoji-button.md +46 -0
- package/bundled-realms/pretui/components/emoji-button.usage.gts +174 -0
- package/bundled-realms/pretui/components/emoji-picker.gts +1396 -0
- package/bundled-realms/pretui/components/emoji-picker.md +53 -0
- package/bundled-realms/pretui/components/emoji-picker.usage.gts +235 -0
- package/bundled-realms/pretui/components/empty-state.gts +162 -0
- package/bundled-realms/pretui/components/empty-state.md +63 -0
- package/bundled-realms/pretui/components/empty-state.usage.gts +113 -0
- package/bundled-realms/pretui/components/empty.gts +2 -0
- package/bundled-realms/pretui/components/empty.md +43 -0
- package/bundled-realms/pretui/components/empty.usage.gts +33 -0
- package/bundled-realms/pretui/components/entity-display.gts +126 -0
- package/bundled-realms/pretui/components/entity-display.md +50 -0
- package/bundled-realms/pretui/components/error-summary.gts +321 -0
- package/bundled-realms/pretui/components/error-summary.md +60 -0
- package/bundled-realms/pretui/components/error-summary.usage.gts +155 -0
- package/bundled-realms/pretui/components/expression-builder.gts +1211 -0
- package/bundled-realms/pretui/components/expression-builder.md +60 -0
- package/bundled-realms/pretui/components/expression-builder.usage.gts +246 -0
- package/bundled-realms/pretui/components/fab.gts +2 -0
- package/bundled-realms/pretui/components/fab.md +38 -0
- package/bundled-realms/pretui/components/fab.usage.gts +38 -0
- package/bundled-realms/pretui/components/feature-voting.gts +365 -0
- package/bundled-realms/pretui/components/feature-voting.md +44 -0
- package/bundled-realms/pretui/components/feature-voting.usage.gts +114 -0
- package/bundled-realms/pretui/components/feed.gts +244 -0
- package/bundled-realms/pretui/components/feed.md +56 -0
- package/bundled-realms/pretui/components/feed.usage.gts +250 -0
- package/bundled-realms/pretui/components/field-error.gts +127 -0
- package/bundled-realms/pretui/components/field-error.md +60 -0
- package/bundled-realms/pretui/components/field-error.usage.gts +146 -0
- package/bundled-realms/pretui/components/field.gts +185 -0
- package/bundled-realms/pretui/components/field.md +60 -0
- package/bundled-realms/pretui/components/field.usage.gts +73 -0
- package/bundled-realms/pretui/components/fieldset.gts +124 -0
- package/bundled-realms/pretui/components/fieldset.md +65 -0
- package/bundled-realms/pretui/components/fieldset.usage.gts +105 -0
- package/bundled-realms/pretui/components/file-trigger.gts +185 -0
- package/bundled-realms/pretui/components/file-trigger.md +53 -0
- package/bundled-realms/pretui/components/file-trigger.usage.gts +121 -0
- package/bundled-realms/pretui/components/file-upload.gts +353 -0
- package/bundled-realms/pretui/components/file-upload.md +63 -0
- package/bundled-realms/pretui/components/file-upload.usage.gts +64 -0
- package/bundled-realms/pretui/components/filmstrip.gts +465 -0
- package/bundled-realms/pretui/components/filmstrip.md +53 -0
- package/bundled-realms/pretui/components/filmstrip.usage.gts +115 -0
- package/bundled-realms/pretui/components/filter-chips.gts +236 -0
- package/bundled-realms/pretui/components/filter-chips.md +58 -0
- package/bundled-realms/pretui/components/filter-chips.usage.gts +102 -0
- package/bundled-realms/pretui/components/filter-set.gts +293 -0
- package/bundled-realms/pretui/components/filter-set.md +60 -0
- package/bundled-realms/pretui/components/filter-set.usage.gts +145 -0
- package/bundled-realms/pretui/components/float-button.gts +339 -0
- package/bundled-realms/pretui/components/float-button.md +69 -0
- package/bundled-realms/pretui/components/float-button.usage.gts +134 -0
- package/bundled-realms/pretui/components/fold.gts +86 -0
- package/bundled-realms/pretui/components/fold.md +54 -0
- package/bundled-realms/pretui/components/fold.usage.gts +19 -0
- package/bundled-realms/pretui/components/form-field.gts +609 -0
- package/bundled-realms/pretui/components/form-field.md +77 -0
- package/bundled-realms/pretui/components/form-field.usage.gts +279 -0
- package/bundled-realms/pretui/components/form-footer.gts +246 -0
- package/bundled-realms/pretui/components/form-footer.md +59 -0
- package/bundled-realms/pretui/components/form-footer.usage.gts +217 -0
- package/bundled-realms/pretui/components/form-layout.gts +130 -0
- package/bundled-realms/pretui/components/form-layout.md +52 -0
- package/bundled-realms/pretui/components/form-layout.usage.gts +200 -0
- package/bundled-realms/pretui/components/form-section.gts +434 -0
- package/bundled-realms/pretui/components/form-section.md +67 -0
- package/bundled-realms/pretui/components/form-section.usage.gts +402 -0
- package/bundled-realms/pretui/components/form.gts +315 -0
- package/bundled-realms/pretui/components/form.md +82 -0
- package/bundled-realms/pretui/components/form.usage.gts +306 -0
- package/bundled-realms/pretui/components/format-bytes.gts +212 -0
- package/bundled-realms/pretui/components/format-bytes.md +47 -0
- package/bundled-realms/pretui/components/format-bytes.usage.gts +274 -0
- package/bundled-realms/pretui/components/format-date.gts +249 -0
- package/bundled-realms/pretui/components/format-date.md +55 -0
- package/bundled-realms/pretui/components/format-date.usage.gts +245 -0
- package/bundled-realms/pretui/components/format-number.gts +138 -0
- package/bundled-realms/pretui/components/format-number.md +51 -0
- package/bundled-realms/pretui/components/format-number.usage.gts +261 -0
- package/bundled-realms/pretui/components/formatted-value.gts +65 -0
- package/bundled-realms/pretui/components/freestyle-usage.gts +311 -0
- package/bundled-realms/pretui/components/freestyle-usage.md +49 -0
- package/bundled-realms/pretui/components/gallery.gts +819 -0
- package/bundled-realms/pretui/components/gallery.md +65 -0
- package/bundled-realms/pretui/components/gallery.usage.gts +212 -0
- package/bundled-realms/pretui/components/gradient-editor.gts +682 -0
- package/bundled-realms/pretui/components/gradient-editor.md +43 -0
- package/bundled-realms/pretui/components/gradient-editor.usage.gts +69 -0
- package/bundled-realms/pretui/components/graph-layout.md +54 -0
- package/bundled-realms/pretui/components/graph-layout.usage.gts +343 -0
- package/bundled-realms/pretui/components/graph-outline.gts +553 -0
- package/bundled-realms/pretui/components/graph-outline.md +50 -0
- package/bundled-realms/pretui/components/graph-outline.usage.gts +88 -0
- package/bundled-realms/pretui/components/grid.gts +68 -0
- package/bundled-realms/pretui/components/grid.md +54 -0
- package/bundled-realms/pretui/components/grid.usage.gts +144 -0
- package/bundled-realms/pretui/components/handle.gts +192 -0
- package/bundled-realms/pretui/components/handle.md +55 -0
- package/bundled-realms/pretui/components/handle.usage.gts +174 -0
- package/bundled-realms/pretui/components/hero-split.gts +307 -0
- package/bundled-realms/pretui/components/hero-split.md +50 -0
- package/bundled-realms/pretui/components/hero-split.usage.gts +200 -0
- package/bundled-realms/pretui/components/hover-actions.gts +485 -0
- package/bundled-realms/pretui/components/hover-actions.md +55 -0
- package/bundled-realms/pretui/components/hover-actions.usage.gts +224 -0
- package/bundled-realms/pretui/components/hover-card.gts +347 -0
- package/bundled-realms/pretui/components/hover-card.md +72 -0
- package/bundled-realms/pretui/components/hover-card.usage.gts +174 -0
- package/bundled-realms/pretui/components/hover-video-player.gts +315 -0
- package/bundled-realms/pretui/components/hover-video-player.md +57 -0
- package/bundled-realms/pretui/components/hover-video-player.usage.gts +152 -0
- package/bundled-realms/pretui/components/icon-button.examples.gts +69 -0
- package/bundled-realms/pretui/components/icon-button.gts +153 -0
- package/bundled-realms/pretui/components/icon-button.md +72 -0
- package/bundled-realms/pretui/components/icon-button.usage.gts +208 -0
- package/bundled-realms/pretui/components/image-cropper.gts +693 -0
- package/bundled-realms/pretui/components/image-cropper.md +52 -0
- package/bundled-realms/pretui/components/image-cropper.usage.gts +108 -0
- package/bundled-realms/pretui/components/image-frame.gts +91 -0
- package/bundled-realms/pretui/components/image-frame.md +42 -0
- package/bundled-realms/pretui/components/image-frame.usage.gts +28 -0
- package/bundled-realms/pretui/components/image.gts +326 -0
- package/bundled-realms/pretui/components/image.md +71 -0
- package/bundled-realms/pretui/components/image.usage.gts +126 -0
- package/bundled-realms/pretui/components/in-view.gts +245 -0
- package/bundled-realms/pretui/components/in-view.md +53 -0
- package/bundled-realms/pretui/components/in-view.usage.gts +264 -0
- package/bundled-realms/pretui/components/indicator.gts +137 -0
- package/bundled-realms/pretui/components/indicator.md +60 -0
- package/bundled-realms/pretui/components/indicator.usage.gts +66 -0
- package/bundled-realms/pretui/components/infinite-scroll.gts +163 -0
- package/bundled-realms/pretui/components/infinite-scroll.md +54 -0
- package/bundled-realms/pretui/components/infinite-scroll.usage.gts +73 -0
- package/bundled-realms/pretui/components/input-group.gts +264 -0
- package/bundled-realms/pretui/components/input-group.md +55 -0
- package/bundled-realms/pretui/components/input-group.usage.gts +283 -0
- package/bundled-realms/pretui/components/input.examples.gts +61 -0
- package/bundled-realms/pretui/components/input.gts +202 -0
- package/bundled-realms/pretui/components/input.md +67 -0
- package/bundled-realms/pretui/components/input.usage.gts +208 -0
- package/bundled-realms/pretui/components/interactive-input.gts +343 -0
- package/bundled-realms/pretui/components/interactive-input.md +45 -0
- package/bundled-realms/pretui/components/interactive-input.usage.gts +98 -0
- package/bundled-realms/pretui/components/item.gts +218 -0
- package/bundled-realms/pretui/components/item.md +66 -0
- package/bundled-realms/pretui/components/item.usage.gts +121 -0
- package/bundled-realms/pretui/components/joystick.gts +381 -0
- package/bundled-realms/pretui/components/joystick.md +52 -0
- package/bundled-realms/pretui/components/joystick.usage.gts +140 -0
- package/bundled-realms/pretui/components/json-editor.gts +1016 -0
- package/bundled-realms/pretui/components/json-editor.md +51 -0
- package/bundled-realms/pretui/components/json-editor.usage.gts +230 -0
- package/bundled-realms/pretui/components/json-tree.gts +596 -0
- package/bundled-realms/pretui/components/json-tree.md +52 -0
- package/bundled-realms/pretui/components/json-tree.usage.gts +217 -0
- package/bundled-realms/pretui/components/jump-chip.gts +230 -0
- package/bundled-realms/pretui/components/jump-chip.md +44 -0
- package/bundled-realms/pretui/components/jump-chip.usage.gts +151 -0
- package/bundled-realms/pretui/components/kbd.gts +60 -0
- package/bundled-realms/pretui/components/kbd.md +50 -0
- package/bundled-realms/pretui/components/kbd.usage.gts +98 -0
- package/bundled-realms/pretui/components/key-value.gts +150 -0
- package/bundled-realms/pretui/components/key-value.md +81 -0
- package/bundled-realms/pretui/components/key-value.usage.gts +125 -0
- package/bundled-realms/pretui/components/known-date.gts +770 -0
- package/bundled-realms/pretui/components/known-date.md +56 -0
- package/bundled-realms/pretui/components/known-date.usage.gts +192 -0
- package/bundled-realms/pretui/components/label.gts +60 -0
- package/bundled-realms/pretui/components/label.md +56 -0
- package/bundled-realms/pretui/components/label.usage.gts +63 -0
- package/bundled-realms/pretui/components/layer-manager.gts +1884 -0
- package/bundled-realms/pretui/components/layer-manager.md +59 -0
- package/bundled-realms/pretui/components/layer-manager.usage.gts +233 -0
- package/bundled-realms/pretui/components/lightbox.gts +461 -0
- package/bundled-realms/pretui/components/lightbox.md +57 -0
- package/bundled-realms/pretui/components/lightbox.usage.gts +180 -0
- package/bundled-realms/pretui/components/line-grid.examples.gts +156 -0
- package/bundled-realms/pretui/components/line-grid.gts +523 -0
- package/bundled-realms/pretui/components/line-grid.md +55 -0
- package/bundled-realms/pretui/components/line-grid.usage.gts +181 -0
- package/bundled-realms/pretui/components/list.gts +679 -0
- package/bundled-realms/pretui/components/list.md +90 -0
- package/bundled-realms/pretui/components/list.usage.gts +203 -0
- package/bundled-realms/pretui/components/loader.gts +2 -0
- package/bundled-realms/pretui/components/loader.md +33 -0
- package/bundled-realms/pretui/components/loader.usage.gts +35 -0
- package/bundled-realms/pretui/components/loading-overlay.gts +120 -0
- package/bundled-realms/pretui/components/loading-overlay.md +68 -0
- package/bundled-realms/pretui/components/loading-overlay.usage.gts +102 -0
- package/bundled-realms/pretui/components/loading-state.gts +124 -0
- package/bundled-realms/pretui/components/loading-state.md +48 -0
- package/bundled-realms/pretui/components/loading-state.usage.gts +16 -0
- package/bundled-realms/pretui/components/lookup.gts +451 -0
- package/bundled-realms/pretui/components/lookup.md +59 -0
- package/bundled-realms/pretui/components/lookup.usage.gts +235 -0
- package/bundled-realms/pretui/components/magnetic.gts +158 -0
- package/bundled-realms/pretui/components/magnetic.md +48 -0
- package/bundled-realms/pretui/components/magnetic.usage.gts +125 -0
- package/bundled-realms/pretui/components/marquee.gts +141 -0
- package/bundled-realms/pretui/components/marquee.md +43 -0
- package/bundled-realms/pretui/components/marquee.usage.gts +116 -0
- package/bundled-realms/pretui/components/masonry.gts +95 -0
- package/bundled-realms/pretui/components/masonry.md +59 -0
- package/bundled-realms/pretui/components/masonry.usage.gts +238 -0
- package/bundled-realms/pretui/components/media-inspector.gts +145 -0
- package/bundled-realms/pretui/components/media-inspector.md +46 -0
- package/bundled-realms/pretui/components/media-inspector.usage.gts +83 -0
- package/bundled-realms/pretui/components/media-player.gts +1133 -0
- package/bundled-realms/pretui/components/media-player.md +74 -0
- package/bundled-realms/pretui/components/media-player.usage.gts +265 -0
- package/bundled-realms/pretui/components/media-viewer.gts +136 -0
- package/bundled-realms/pretui/components/media-viewer.md +47 -0
- package/bundled-realms/pretui/components/media-viewer.usage.gts +70 -0
- package/bundled-realms/pretui/components/mentions.gts +340 -0
- package/bundled-realms/pretui/components/mentions.md +65 -0
- package/bundled-realms/pretui/components/mentions.usage.gts +73 -0
- package/bundled-realms/pretui/components/menu-panel.gts +367 -0
- package/bundled-realms/pretui/components/menu.gts +652 -0
- package/bundled-realms/pretui/components/menu.md +69 -0
- package/bundled-realms/pretui/components/menu.usage.gts +116 -0
- package/bundled-realms/pretui/components/menubar.gts +1200 -0
- package/bundled-realms/pretui/components/menubar.md +49 -0
- package/bundled-realms/pretui/components/menubar.usage.gts +220 -0
- package/bundled-realms/pretui/components/meter.gts +113 -0
- package/bundled-realms/pretui/components/meter.md +50 -0
- package/bundled-realms/pretui/components/meter.usage.gts +50 -0
- package/bundled-realms/pretui/components/modal.gts +2 -0
- package/bundled-realms/pretui/components/modal.md +41 -0
- package/bundled-realms/pretui/components/modal.usage.gts +50 -0
- package/bundled-realms/pretui/components/model-viewer.gts +658 -0
- package/bundled-realms/pretui/components/model-viewer.md +57 -0
- package/bundled-realms/pretui/components/model-viewer.usage.gts +123 -0
- package/bundled-realms/pretui/components/money-input.gts +66 -0
- package/bundled-realms/pretui/components/money-input.md +43 -0
- package/bundled-realms/pretui/components/money-input.usage.gts +293 -0
- package/bundled-realms/pretui/components/morphing-dialog.gts +173 -0
- package/bundled-realms/pretui/components/morphing-dialog.md +46 -0
- package/bundled-realms/pretui/components/morphing-dialog.usage.gts +168 -0
- package/bundled-realms/pretui/components/morphing-popover.gts +245 -0
- package/bundled-realms/pretui/components/morphing-popover.md +47 -0
- package/bundled-realms/pretui/components/morphing-popover.usage.gts +176 -0
- package/bundled-realms/pretui/components/multi-select.gts +392 -0
- package/bundled-realms/pretui/components/multi-select.md +57 -0
- package/bundled-realms/pretui/components/multi-select.usage.gts +97 -0
- package/bundled-realms/pretui/components/native-select.gts +212 -0
- package/bundled-realms/pretui/components/native-select.md +77 -0
- package/bundled-realms/pretui/components/native-select.usage.gts +109 -0
- package/bundled-realms/pretui/components/navigation-menu.gts +351 -0
- package/bundled-realms/pretui/components/navigation-menu.md +65 -0
- package/bundled-realms/pretui/components/navigation-menu.usage.gts +61 -0
- package/bundled-realms/pretui/components/node-canvas.gts +1174 -0
- package/bundled-realms/pretui/components/node-canvas.md +57 -0
- package/bundled-realms/pretui/components/node-canvas.usage.gts +548 -0
- package/bundled-realms/pretui/components/node-card.gts +181 -0
- package/bundled-realms/pretui/components/node-card.md +53 -0
- package/bundled-realms/pretui/components/node-card.usage.gts +156 -0
- package/bundled-realms/pretui/components/notification.gts +242 -0
- package/bundled-realms/pretui/components/notification.md +69 -0
- package/bundled-realms/pretui/components/notification.usage.gts +125 -0
- package/bundled-realms/pretui/components/number-input.gts +191 -0
- package/bundled-realms/pretui/components/number-input.md +54 -0
- package/bundled-realms/pretui/components/number-input.usage.gts +132 -0
- package/bundled-realms/pretui/components/odometer.gts +349 -0
- package/bundled-realms/pretui/components/odometer.md +55 -0
- package/bundled-realms/pretui/components/odometer.usage.gts +258 -0
- package/bundled-realms/pretui/components/onboarding.gts +298 -0
- package/bundled-realms/pretui/components/onboarding.md +48 -0
- package/bundled-realms/pretui/components/onboarding.usage.gts +155 -0
- package/bundled-realms/pretui/components/origin-grid.gts +486 -0
- package/bundled-realms/pretui/components/origin-grid.md +47 -0
- package/bundled-realms/pretui/components/origin-grid.usage.gts +87 -0
- package/bundled-realms/pretui/components/otp-input.gts +289 -0
- package/bundled-realms/pretui/components/otp-input.md +47 -0
- package/bundled-realms/pretui/components/otp-input.usage.gts +131 -0
- package/bundled-realms/pretui/components/page-scaffold.gts +343 -0
- package/bundled-realms/pretui/components/page-scaffold.md +57 -0
- package/bundled-realms/pretui/components/page-scaffold.usage.gts +391 -0
- package/bundled-realms/pretui/components/pagination.gts +150 -0
- package/bundled-realms/pretui/components/pagination.md +56 -0
- package/bundled-realms/pretui/components/pagination.usage.gts +33 -0
- package/bundled-realms/pretui/components/panel-section.gts +301 -0
- package/bundled-realms/pretui/components/panel-section.md +48 -0
- package/bundled-realms/pretui/components/panel-section.usage.gts +137 -0
- package/bundled-realms/pretui/components/panel.gts +158 -0
- package/bundled-realms/pretui/components/panel.md +58 -0
- package/bundled-realms/pretui/components/panel.usage.gts +82 -0
- package/bundled-realms/pretui/components/password-input.gts +329 -0
- package/bundled-realms/pretui/components/password-input.md +58 -0
- package/bundled-realms/pretui/components/password-input.usage.gts +156 -0
- package/bundled-realms/pretui/components/password-strength.gts +485 -0
- package/bundled-realms/pretui/components/password-strength.md +50 -0
- package/bundled-realms/pretui/components/password-strength.usage.gts +34 -0
- package/bundled-realms/pretui/components/path-text.gts +288 -0
- package/bundled-realms/pretui/components/path-text.md +58 -0
- package/bundled-realms/pretui/components/path-text.usage.gts +239 -0
- package/bundled-realms/pretui/components/period-input.gts +1100 -0
- package/bundled-realms/pretui/components/period-input.md +54 -0
- package/bundled-realms/pretui/components/period-input.usage.gts +299 -0
- package/bundled-realms/pretui/components/phone-input.gts +80 -0
- package/bundled-realms/pretui/components/phone-input.md +55 -0
- package/bundled-realms/pretui/components/phone-input.usage.gts +91 -0
- package/bundled-realms/pretui/components/pin-input.gts +2 -0
- package/bundled-realms/pretui/components/pin-input.md +45 -0
- package/bundled-realms/pretui/components/pin-input.usage.gts +39 -0
- package/bundled-realms/pretui/components/pip-scale.gts +717 -0
- package/bundled-realms/pretui/components/pip-scale.md +55 -0
- package/bundled-realms/pretui/components/pip-scale.usage.gts +318 -0
- package/bundled-realms/pretui/components/popconfirm.gts +380 -0
- package/bundled-realms/pretui/components/popconfirm.md +78 -0
- package/bundled-realms/pretui/components/popconfirm.usage.gts +171 -0
- package/bundled-realms/pretui/components/popover.gts +198 -0
- package/bundled-realms/pretui/components/popover.md +57 -0
- package/bundled-realms/pretui/components/popover.usage.gts +106 -0
- package/bundled-realms/pretui/components/popup.gts +85 -0
- package/bundled-realms/pretui/components/popup.md +42 -0
- package/bundled-realms/pretui/components/popup.usage.gts +23 -0
- package/bundled-realms/pretui/components/presence.gts +156 -0
- package/bundled-realms/pretui/components/presence.md +55 -0
- package/bundled-realms/pretui/components/presence.usage.gts +204 -0
- package/bundled-realms/pretui/components/progress-bar.gts +177 -0
- package/bundled-realms/pretui/components/progress-bar.md +63 -0
- package/bundled-realms/pretui/components/progress-bar.usage.gts +172 -0
- package/bundled-realms/pretui/components/progress-radial.gts +67 -0
- package/bundled-realms/pretui/components/progress-radial.md +55 -0
- package/bundled-realms/pretui/components/progress-radial.usage.gts +76 -0
- package/bundled-realms/pretui/components/prompt-library.gts +358 -0
- package/bundled-realms/pretui/components/prompt-library.md +45 -0
- package/bundled-realms/pretui/components/prompt-library.usage.gts +117 -0
- package/bundled-realms/pretui/components/property-row.gts +316 -0
- package/bundled-realms/pretui/components/property-row.md +55 -0
- package/bundled-realms/pretui/components/property-row.usage.gts +146 -0
- package/bundled-realms/pretui/components/property-sheet.gts +133 -0
- package/bundled-realms/pretui/components/property-sheet.md +48 -0
- package/bundled-realms/pretui/components/property-sheet.usage.gts +132 -0
- package/bundled-realms/pretui/components/prose.gts +31 -0
- package/bundled-realms/pretui/components/prose.md +57 -0
- package/bundled-realms/pretui/components/prose.usage.gts +15 -0
- package/bundled-realms/pretui/components/pulsing-border.gts +297 -0
- package/bundled-realms/pretui/components/pulsing-border.md +65 -0
- package/bundled-realms/pretui/components/pulsing-border.usage.gts +253 -0
- package/bundled-realms/pretui/components/qr-code.gts +660 -0
- package/bundled-realms/pretui/components/qr-code.md +58 -0
- package/bundled-realms/pretui/components/qr-code.usage.gts +224 -0
- package/bundled-realms/pretui/components/queued-message.gts +83 -0
- package/bundled-realms/pretui/components/queued-message.md +53 -0
- package/bundled-realms/pretui/components/queued-message.usage.gts +21 -0
- package/bundled-realms/pretui/components/radio-card.gts +88 -0
- package/bundled-realms/pretui/components/radio-card.md +72 -0
- package/bundled-realms/pretui/components/radio-card.usage.gts +148 -0
- package/bundled-realms/pretui/components/radio-group.gts +119 -0
- package/bundled-realms/pretui/components/radio-group.md +46 -0
- package/bundled-realms/pretui/components/radio-group.usage.gts +80 -0
- package/bundled-realms/pretui/components/range-slider.gts +34 -0
- package/bundled-realms/pretui/components/range-slider.md +47 -0
- package/bundled-realms/pretui/components/range-slider.usage.gts +46 -0
- package/bundled-realms/pretui/components/rating.examples.gts +67 -0
- package/bundled-realms/pretui/components/rating.gts +266 -0
- package/bundled-realms/pretui/components/rating.md +55 -0
- package/bundled-realms/pretui/components/rating.usage.gts +96 -0
- package/bundled-realms/pretui/components/readiness-panel.gts +856 -0
- package/bundled-realms/pretui/components/readiness-panel.md +64 -0
- package/bundled-realms/pretui/components/readiness-panel.usage.gts +372 -0
- package/bundled-realms/pretui/components/recommendation.gts +316 -0
- package/bundled-realms/pretui/components/recommendation.md +49 -0
- package/bundled-realms/pretui/components/recommendation.usage.gts +103 -0
- package/bundled-realms/pretui/components/record-detail.gts +1170 -0
- package/bundled-realms/pretui/components/record-detail.md +63 -0
- package/bundled-realms/pretui/components/record-detail.usage.gts +533 -0
- package/bundled-realms/pretui/components/record-face.gts +153 -0
- package/bundled-realms/pretui/components/record-pill.gts +116 -0
- package/bundled-realms/pretui/components/record-pill.md +55 -0
- package/bundled-realms/pretui/components/record-pill.usage.gts +108 -0
- package/bundled-realms/pretui/components/relative-time.gts +88 -0
- package/bundled-realms/pretui/components/relative-time.md +58 -0
- package/bundled-realms/pretui/components/relative-time.usage.gts +89 -0
- package/bundled-realms/pretui/components/reorder.gts +620 -0
- package/bundled-realms/pretui/components/reorder.md +47 -0
- package/bundled-realms/pretui/components/reorder.usage.gts +171 -0
- package/bundled-realms/pretui/components/resizable.gts +2 -0
- package/bundled-realms/pretui/components/resizable.md +37 -0
- package/bundled-realms/pretui/components/resizable.usage.gts +53 -0
- package/bundled-realms/pretui/components/result-card.gts +68 -0
- package/bundled-realms/pretui/components/result-card.md +45 -0
- package/bundled-realms/pretui/components/result-card.usage.gts +29 -0
- package/bundled-realms/pretui/components/result.gts +204 -0
- package/bundled-realms/pretui/components/result.md +67 -0
- package/bundled-realms/pretui/components/result.usage.gts +85 -0
- package/bundled-realms/pretui/components/rule-row.gts +462 -0
- package/bundled-realms/pretui/components/rule-row.md +60 -0
- package/bundled-realms/pretui/components/rule-row.usage.gts +157 -0
- package/bundled-realms/pretui/components/scroll-area.gts +121 -0
- package/bundled-realms/pretui/components/scroll-area.md +59 -0
- package/bundled-realms/pretui/components/scroll-area.usage.gts +175 -0
- package/bundled-realms/pretui/components/scroll-progress.gts +222 -0
- package/bundled-realms/pretui/components/scroll-progress.md +48 -0
- package/bundled-realms/pretui/components/scroll-progress.usage.gts +162 -0
- package/bundled-realms/pretui/components/scroller.gts +323 -0
- package/bundled-realms/pretui/components/scroller.md +44 -0
- package/bundled-realms/pretui/components/scroller.usage.gts +184 -0
- package/bundled-realms/pretui/components/scrub-input.gts +691 -0
- package/bundled-realms/pretui/components/scrub-input.md +61 -0
- package/bundled-realms/pretui/components/scrub-input.usage.gts +275 -0
- package/bundled-realms/pretui/components/search-input.gts +141 -0
- package/bundled-realms/pretui/components/search-input.md +56 -0
- package/bundled-realms/pretui/components/search-input.usage.gts +91 -0
- package/bundled-realms/pretui/components/segmented-control.gts +198 -0
- package/bundled-realms/pretui/components/segmented-control.md +39 -0
- package/bundled-realms/pretui/components/segmented-control.usage.gts +66 -0
- package/bundled-realms/pretui/components/select.examples.gts +80 -0
- package/bundled-realms/pretui/components/select.gts +481 -0
- package/bundled-realms/pretui/components/select.md +71 -0
- package/bundled-realms/pretui/components/select.usage.gts +109 -0
- package/bundled-realms/pretui/components/separator.gts +2 -0
- package/bundled-realms/pretui/components/separator.md +36 -0
- package/bundled-realms/pretui/components/separator.usage.gts +32 -0
- package/bundled-realms/pretui/components/session-prep.gts +164 -0
- package/bundled-realms/pretui/components/session-prep.md +48 -0
- package/bundled-realms/pretui/components/session-prep.usage.gts +122 -0
- package/bundled-realms/pretui/components/sheet-toolbar.gts +130 -0
- package/bundled-realms/pretui/components/sheet-toolbar.md +51 -0
- package/bundled-realms/pretui/components/sheet-toolbar.usage.gts +151 -0
- package/bundled-realms/pretui/components/sheet.gts +1166 -0
- package/bundled-realms/pretui/components/sheet.md +78 -0
- package/bundled-realms/pretui/components/sheet.usage.gts +318 -0
- package/bundled-realms/pretui/components/sidebar.gts +1165 -0
- package/bundled-realms/pretui/components/sidebar.md +88 -0
- package/bundled-realms/pretui/components/sidebar.usage.gts +360 -0
- package/bundled-realms/pretui/components/signature-pad.gts +840 -0
- package/bundled-realms/pretui/components/signature-pad.md +57 -0
- package/bundled-realms/pretui/components/signature-pad.usage.gts +222 -0
- package/bundled-realms/pretui/components/skeleton.gts +46 -0
- package/bundled-realms/pretui/components/skeleton.md +56 -0
- package/bundled-realms/pretui/components/skeleton.usage.gts +56 -0
- package/bundled-realms/pretui/components/skip-link.gts +65 -0
- package/bundled-realms/pretui/components/skip-link.md +49 -0
- package/bundled-realms/pretui/components/skip-link.usage.gts +47 -0
- package/bundled-realms/pretui/components/slide-over.gts +2 -0
- package/bundled-realms/pretui/components/slide-over.md +41 -0
- package/bundled-realms/pretui/components/slide-over.usage.gts +50 -0
- package/bundled-realms/pretui/components/slider.examples.gts +61 -0
- package/bundled-realms/pretui/components/slider.gts +331 -0
- package/bundled-realms/pretui/components/slider.md +59 -0
- package/bundled-realms/pretui/components/slider.usage.gts +99 -0
- package/bundled-realms/pretui/components/sliding-highlight.gts +249 -0
- package/bundled-realms/pretui/components/sliding-highlight.md +58 -0
- package/bundled-realms/pretui/components/sliding-highlight.usage.gts +184 -0
- package/bundled-realms/pretui/components/snackbar.gts +2 -0
- package/bundled-realms/pretui/components/snackbar.md +34 -0
- package/bundled-realms/pretui/components/snackbar.usage.gts +31 -0
- package/bundled-realms/pretui/components/sonner.gts +2 -0
- package/bundled-realms/pretui/components/sonner.md +42 -0
- package/bundled-realms/pretui/components/sonner.usage.gts +43 -0
- package/bundled-realms/pretui/components/sparkline.gts +233 -0
- package/bundled-realms/pretui/components/sparkline.md +58 -0
- package/bundled-realms/pretui/components/sparkline.usage.gts +74 -0
- package/bundled-realms/pretui/components/spinner.gts +57 -0
- package/bundled-realms/pretui/components/spinner.md +49 -0
- package/bundled-realms/pretui/components/spinner.usage.gts +65 -0
- package/bundled-realms/pretui/components/split-panes.gts +69 -0
- package/bundled-realms/pretui/components/split-panes.md +54 -0
- package/bundled-realms/pretui/components/split-panes.usage.gts +171 -0
- package/bundled-realms/pretui/components/spotlight.gts +174 -0
- package/bundled-realms/pretui/components/spotlight.md +51 -0
- package/bundled-realms/pretui/components/spotlight.usage.gts +197 -0
- package/bundled-realms/pretui/components/stack-divider.gts +58 -0
- package/bundled-realms/pretui/components/stack.gts +284 -0
- package/bundled-realms/pretui/components/stack.md +81 -0
- package/bundled-realms/pretui/components/stack.usage.gts +228 -0
- package/bundled-realms/pretui/components/stacking-cards.gts +137 -0
- package/bundled-realms/pretui/components/stacking-cards.md +40 -0
- package/bundled-realms/pretui/components/stacking-cards.usage.gts +124 -0
- package/bundled-realms/pretui/components/stat.gts +216 -0
- package/bundled-realms/pretui/components/stat.md +57 -0
- package/bundled-realms/pretui/components/stat.usage.gts +16 -0
- package/bundled-realms/pretui/components/statement-table.examples.gts +185 -0
- package/bundled-realms/pretui/components/statement-table.gts +792 -0
- package/bundled-realms/pretui/components/statement-table.md +58 -0
- package/bundled-realms/pretui/components/statement-table.usage.gts +252 -0
- package/bundled-realms/pretui/components/status-chip.gts +37 -0
- package/bundled-realms/pretui/components/status-chip.md +48 -0
- package/bundled-realms/pretui/components/status-chip.usage.gts +36 -0
- package/bundled-realms/pretui/components/step-list.gts +624 -0
- package/bundled-realms/pretui/components/step-list.md +50 -0
- package/bundled-realms/pretui/components/step-list.usage.gts +166 -0
- package/bundled-realms/pretui/components/stepper.gts +201 -0
- package/bundled-realms/pretui/components/stepper.md +54 -0
- package/bundled-realms/pretui/components/stepper.usage.gts +103 -0
- package/bundled-realms/pretui/components/steps-with-media.gts +254 -0
- package/bundled-realms/pretui/components/steps-with-media.md +54 -0
- package/bundled-realms/pretui/components/steps-with-media.usage.gts +208 -0
- package/bundled-realms/pretui/components/streaming-text.gts +77 -0
- package/bundled-realms/pretui/components/streaming-text.md +55 -0
- package/bundled-realms/pretui/components/streaming-text.usage.gts +15 -0
- package/bundled-realms/pretui/components/swatch-chip.gts +104 -0
- package/bundled-realms/pretui/components/swatch-chip.md +47 -0
- package/bundled-realms/pretui/components/swatch-chip.usage.gts +21 -0
- package/bundled-realms/pretui/components/swatch.gts +141 -0
- package/bundled-realms/pretui/components/swatch.md +50 -0
- package/bundled-realms/pretui/components/swatch.usage.gts +80 -0
- package/bundled-realms/pretui/components/switch.examples.gts +53 -0
- package/bundled-realms/pretui/components/switch.gts +118 -0
- package/bundled-realms/pretui/components/switch.md +62 -0
- package/bundled-realms/pretui/components/switch.usage.gts +59 -0
- package/bundled-realms/pretui/components/table-of-contents.gts +384 -0
- package/bundled-realms/pretui/components/table-of-contents.md +75 -0
- package/bundled-realms/pretui/components/table-of-contents.usage.gts +270 -0
- package/bundled-realms/pretui/components/table.gts +158 -0
- package/bundled-realms/pretui/components/table.md +80 -0
- package/bundled-realms/pretui/components/table.usage.gts +44 -0
- package/bundled-realms/pretui/components/tabs.gts +117 -0
- package/bundled-realms/pretui/components/tabs.md +58 -0
- package/bundled-realms/pretui/components/tabs.usage.gts +94 -0
- package/bundled-realms/pretui/components/tags-input.gts +52 -0
- package/bundled-realms/pretui/components/tags-input.md +48 -0
- package/bundled-realms/pretui/components/tags-input.usage.gts +56 -0
- package/bundled-realms/pretui/components/task-row.gts +483 -0
- package/bundled-realms/pretui/components/task-row.md +48 -0
- package/bundled-realms/pretui/components/task-row.usage.gts +119 -0
- package/bundled-realms/pretui/components/terminal-animation.gts +355 -0
- package/bundled-realms/pretui/components/terminal-animation.md +49 -0
- package/bundled-realms/pretui/components/terminal-animation.usage.gts +110 -0
- package/bundled-realms/pretui/components/text-effects.gts +339 -0
- package/bundled-realms/pretui/components/text-effects.md +49 -0
- package/bundled-realms/pretui/components/text-effects.usage.gts +192 -0
- package/bundled-realms/pretui/components/text-morph.gts +292 -0
- package/bundled-realms/pretui/components/text-morph.md +45 -0
- package/bundled-realms/pretui/components/text-morph.usage.gts +117 -0
- package/bundled-realms/pretui/components/text-rotate.gts +121 -0
- package/bundled-realms/pretui/components/text-rotate.md +44 -0
- package/bundled-realms/pretui/components/text-rotate.usage.gts +73 -0
- package/bundled-realms/pretui/components/text-scramble.gts +189 -0
- package/bundled-realms/pretui/components/text-scramble.md +42 -0
- package/bundled-realms/pretui/components/text-scramble.usage.gts +80 -0
- package/bundled-realms/pretui/components/text-shimmer.gts +89 -0
- package/bundled-realms/pretui/components/text-shimmer.md +42 -0
- package/bundled-realms/pretui/components/text-shimmer.usage.gts +69 -0
- package/bundled-realms/pretui/components/textarea.gts +112 -0
- package/bundled-realms/pretui/components/textarea.md +51 -0
- package/bundled-realms/pretui/components/textarea.usage.gts +100 -0
- package/bundled-realms/pretui/components/theme-frame.gts +272 -0
- package/bundled-realms/pretui/components/theme-frame.md +48 -0
- package/bundled-realms/pretui/components/thinking.gts +431 -0
- package/bundled-realms/pretui/components/thinking.md +47 -0
- package/bundled-realms/pretui/components/thinking.usage.gts +134 -0
- package/bundled-realms/pretui/components/tilt.gts +194 -0
- package/bundled-realms/pretui/components/tilt.md +50 -0
- package/bundled-realms/pretui/components/tilt.usage.gts +174 -0
- package/bundled-realms/pretui/components/time-input.gts +583 -0
- package/bundled-realms/pretui/components/time-input.md +51 -0
- package/bundled-realms/pretui/components/time-input.usage.gts +110 -0
- package/bundled-realms/pretui/components/timeline.gts +269 -0
- package/bundled-realms/pretui/components/timeline.md +63 -0
- package/bundled-realms/pretui/components/timeline.usage.gts +180 -0
- package/bundled-realms/pretui/components/toast.gts +85 -0
- package/bundled-realms/pretui/components/toast.md +57 -0
- package/bundled-realms/pretui/components/toast.usage.gts +18 -0
- package/bundled-realms/pretui/components/toaster.gts +808 -0
- package/bundled-realms/pretui/components/toaster.md +83 -0
- package/bundled-realms/pretui/components/toaster.usage.gts +256 -0
- package/bundled-realms/pretui/components/toggle-group.gts +435 -0
- package/bundled-realms/pretui/components/toggle-group.md +59 -0
- package/bundled-realms/pretui/components/toggle-group.usage.gts +260 -0
- package/bundled-realms/pretui/components/toggle-matrix.gts +994 -0
- package/bundled-realms/pretui/components/toggle-matrix.md +44 -0
- package/bundled-realms/pretui/components/toggle-matrix.usage.gts +243 -0
- package/bundled-realms/pretui/components/toggle.gts +235 -0
- package/bundled-realms/pretui/components/toggle.md +59 -0
- package/bundled-realms/pretui/components/toggle.usage.gts +244 -0
- package/bundled-realms/pretui/components/token-input.gts +483 -0
- package/bundled-realms/pretui/components/token-input.md +50 -0
- package/bundled-realms/pretui/components/token-input.usage.gts +137 -0
- package/bundled-realms/pretui/components/token.gts +197 -0
- package/bundled-realms/pretui/components/token.md +63 -0
- package/bundled-realms/pretui/components/token.usage.gts +128 -0
- package/bundled-realms/pretui/components/toolbar.gts +62 -0
- package/bundled-realms/pretui/components/toolbar.md +50 -0
- package/bundled-realms/pretui/components/toolbar.usage.gts +78 -0
- package/bundled-realms/pretui/components/tooltip.gts +212 -0
- package/bundled-realms/pretui/components/tooltip.md +53 -0
- package/bundled-realms/pretui/components/tooltip.usage.gts +64 -0
- package/bundled-realms/pretui/components/tour.gts +436 -0
- package/bundled-realms/pretui/components/tour.md +62 -0
- package/bundled-realms/pretui/components/tour.usage.gts +70 -0
- package/bundled-realms/pretui/components/transfer.gts +2 -0
- package/bundled-realms/pretui/components/transfer.md +39 -0
- package/bundled-realms/pretui/components/transfer.usage.gts +52 -0
- package/bundled-realms/pretui/components/transmute.gts +103 -0
- package/bundled-realms/pretui/components/transmute.md +49 -0
- package/bundled-realms/pretui/components/transmute.usage.gts +16 -0
- package/bundled-realms/pretui/components/tree-select.gts +596 -0
- package/bundled-realms/pretui/components/tree-select.md +70 -0
- package/bundled-realms/pretui/components/tree-select.usage.gts +75 -0
- package/bundled-realms/pretui/components/tree.gts +532 -0
- package/bundled-realms/pretui/components/tree.md +68 -0
- package/bundled-realms/pretui/components/tree.usage.gts +278 -0
- package/bundled-realms/pretui/components/trim-bar.gts +611 -0
- package/bundled-realms/pretui/components/trim-bar.md +48 -0
- package/bundled-realms/pretui/components/trim-bar.usage.gts +112 -0
- package/bundled-realms/pretui/components/typewriter.gts +122 -0
- package/bundled-realms/pretui/components/typewriter.md +45 -0
- package/bundled-realms/pretui/components/typewriter.usage.gts +105 -0
- package/bundled-realms/pretui/components/typography.gts +379 -0
- package/bundled-realms/pretui/components/typography.md +77 -0
- package/bundled-realms/pretui/components/typography.usage.gts +52 -0
- package/bundled-realms/pretui/components/url-input.gts +130 -0
- package/bundled-realms/pretui/components/url-input.md +58 -0
- package/bundled-realms/pretui/components/url-input.usage.gts +97 -0
- package/bundled-realms/pretui/components/usage-action.gts +16 -0
- package/bundled-realms/pretui/components/usage-argument.gts +109 -0
- package/bundled-realms/pretui/components/usage-argument.md +44 -0
- package/bundled-realms/pretui/components/usage-array.gts +80 -0
- package/bundled-realms/pretui/components/usage-array.md +47 -0
- package/bundled-realms/pretui/components/usage-bool.gts +62 -0
- package/bundled-realms/pretui/components/usage-bool.md +47 -0
- package/bundled-realms/pretui/components/usage-component-arg.gts +16 -0
- package/bundled-realms/pretui/components/usage-css-variable.gts +56 -0
- package/bundled-realms/pretui/components/usage-css-variable.md +48 -0
- package/bundled-realms/pretui/components/usage-number.gts +127 -0
- package/bundled-realms/pretui/components/usage-number.md +48 -0
- package/bundled-realms/pretui/components/usage-object.gts +58 -0
- package/bundled-realms/pretui/components/usage-object.md +48 -0
- package/bundled-realms/pretui/components/usage-string.gts +89 -0
- package/bundled-realms/pretui/components/usage-string.md +46 -0
- package/bundled-realms/pretui/components/usage-yield.gts +16 -0
- package/bundled-realms/pretui/components/value-input.gts +265 -0
- package/bundled-realms/pretui/components/value-input.md +49 -0
- package/bundled-realms/pretui/components/value-input.usage.gts +176 -0
- package/bundled-realms/pretui/components/video-player.gts +80 -0
- package/bundled-realms/pretui/components/video-player.md +46 -0
- package/bundled-realms/pretui/components/video-player.usage.gts +107 -0
- package/bundled-realms/pretui/components/viewport.gts +520 -0
- package/bundled-realms/pretui/components/viewport.md +55 -0
- package/bundled-realms/pretui/components/visually-hidden.gts +49 -0
- package/bundled-realms/pretui/components/visually-hidden.md +47 -0
- package/bundled-realms/pretui/components/visually-hidden.usage.gts +27 -0
- package/bundled-realms/pretui/components/watermark.gts +141 -0
- package/bundled-realms/pretui/components/watermark.md +58 -0
- package/bundled-realms/pretui/components/watermark.usage.gts +63 -0
- package/bundled-realms/pretui/components/waveform.gts +376 -0
- package/bundled-realms/pretui/components/waveform.md +56 -0
- package/bundled-realms/pretui/components/waveform.usage.gts +131 -0
- package/bundled-realms/pretui/components/wizard.gts +677 -0
- package/bundled-realms/pretui/components/wizard.md +58 -0
- package/bundled-realms/pretui/components/wizard.usage.gts +188 -0
- package/bundled-realms/pretui/components/work-item.gts +207 -0
- package/bundled-realms/pretui/components/work-item.md +58 -0
- package/bundled-realms/pretui/components/work-item.usage.gts +103 -0
- package/bundled-realms/pretui/components/zoomable-frame.gts +541 -0
- package/bundled-realms/pretui/components/zoomable-frame.md +50 -0
- package/bundled-realms/pretui/components/zoomable-frame.usage.gts +175 -0
- package/bundled-realms/pretui/cropper/LICENSE +21 -0
- package/bundled-realms/pretui/cropper/README.md +92 -0
- package/bundled-realms/pretui/cropper/index.js +81 -0
- package/bundled-realms/pretui/data-component.gts +1161 -0
- package/bundled-realms/pretui/demo-design-layers.gts +112 -0
- package/bundled-realms/pretui/demo-design-tools.gts +463 -0
- package/bundled-realms/pretui/demo-design-value.gts +9 -0
- package/bundled-realms/pretui/demo-forms-core.gts +82 -0
- package/bundled-realms/pretui/demo-forms-expression.gts +76 -0
- package/bundled-realms/pretui/demo-forms-record.gts +16 -0
- package/bundled-realms/pretui/demo-foundations-more.gts +10 -0
- package/bundled-realms/pretui/demo-foundations.gts +8 -0
- package/bundled-realms/pretui/demo-ink-feedback.gts +12 -0
- package/bundled-realms/pretui/demo-json.gts +17 -0
- package/bundled-realms/pretui/demo-locations.ts +103 -0
- package/bundled-realms/pretui/demo-media-library.gts +101 -0
- package/bundled-realms/pretui/demo-media.gts +6 -0
- package/bundled-realms/pretui/demo-menu.gts +182 -0
- package/bundled-realms/pretui/demo-motion-core.gts +4 -0
- package/bundled-realms/pretui/demo-motion-pointer.gts +21 -0
- package/bundled-realms/pretui/demo-reading-format.gts +10 -0
- package/bundled-realms/pretui/demo-structure-dashboard.gts +212 -0
- package/bundled-realms/pretui/demo-structure-data.gts +4 -0
- package/bundled-realms/pretui/demo-structure-scroll.gts +19 -0
- package/bundled-realms/pretui/demo-structure.gts +21 -0
- package/bundled-realms/pretui/demo-surfaces-grid.gts +104 -0
- package/bundled-realms/pretui/demo-texture.gts +21 -0
- package/bundled-realms/pretui/docs/catalog-taxonomy.md +200 -0
- package/bundled-realms/pretui/docs/composites.md +13 -0
- package/bundled-realms/pretui/docs/reading.md +12 -0
- package/bundled-realms/pretui/docs/structure.md +8 -0
- package/bundled-realms/pretui/emoji-data/LICENSE +202 -0
- package/bundled-realms/pretui/emoji-data/LICENSE.data +202 -0
- package/bundled-realms/pretui/emoji-data/LICENSE.emojibase +21 -0
- package/bundled-realms/pretui/emoji-data/LICENSE.unicode +39 -0
- package/bundled-realms/pretui/emoji-data/README.md +360 -0
- package/bundled-realms/pretui/emoji-data/data.ts +45 -0
- package/bundled-realms/pretui/emoji-data/engine.ts +465 -0
- package/bundled-realms/pretui/example-gallery.gts +129 -0
- package/bundled-realms/pretui/examples-kit.gts +228 -0
- package/bundled-realms/pretui/examples-listing.gts +51 -0
- package/bundled-realms/pretui/examples.gts +584 -0
- package/bundled-realms/pretui/focus.gts +459 -0
- package/bundled-realms/pretui/gridstack/LICENSE +21 -0
- package/bundled-realms/pretui/gridstack/README.md +103 -0
- package/bundled-realms/pretui/gridstack/index.js +169 -0
- package/bundled-realms/pretui/icon-registry.gts +753 -0
- package/bundled-realms/pretui/index.json +11 -0
- package/bundled-realms/pretui/internal/agentic-chat.gts +101 -0
- package/bundled-realms/pretui/internal/blocks.gts +35 -0
- package/bundled-realms/pretui/internal/choice-cards.gts +258 -0
- package/bundled-realms/pretui/internal/color-fixtures.gts +3 -0
- package/bundled-realms/pretui/internal/composites-fixtures.gts +16 -0
- package/bundled-realms/pretui/internal/corner-mark.gts +83 -0
- package/bundled-realms/pretui/internal/design-tools.gts +881 -0
- package/bundled-realms/pretui/internal/extras.gts +31 -0
- package/bundled-realms/pretui/internal/feedback.gts +27 -0
- package/bundled-realms/pretui/internal/file-intake-fixtures.gts +17 -0
- package/bundled-realms/pretui/internal/file-intake.gts +193 -0
- package/bundled-realms/pretui/internal/forms-core.gts +394 -0
- package/bundled-realms/pretui/internal/forms-expression.gts +837 -0
- package/bundled-realms/pretui/internal/forms-picker-fixtures.gts +10 -0
- package/bundled-realms/pretui/internal/forms-picker.gts +129 -0
- package/bundled-realms/pretui/internal/forms-record.gts +173 -0
- package/bundled-realms/pretui/internal/freestyle.gts +117 -0
- package/bundled-realms/pretui/internal/ink.gts +25 -0
- package/bundled-realms/pretui/internal/json-tree.gts +526 -0
- package/bundled-realms/pretui/internal/keep-style.gts +168 -0
- package/bundled-realms/pretui/internal/media-assets.gts +10 -0
- package/bundled-realms/pretui/internal/media-library.gts +14 -0
- package/bundled-realms/pretui/internal/media-viewer.gts +322 -0
- package/bundled-realms/pretui/internal/media-wave.gts +270 -0
- package/bundled-realms/pretui/internal/menu.gts +522 -0
- package/bundled-realms/pretui/internal/money-fixtures.gts +6 -0
- package/bundled-realms/pretui/internal/money.gts +477 -0
- package/bundled-realms/pretui/internal/motion-core.gts +54 -0
- package/bundled-realms/pretui/internal/motion-pointer.gts +234 -0
- package/bundled-realms/pretui/internal/overlay-confirm.gts +35 -0
- package/bundled-realms/pretui/internal/overlay.gts +291 -0
- package/bundled-realms/pretui/internal/reading-extras.gts +56 -0
- package/bundled-realms/pretui/internal/reading-format.gts +232 -0
- package/bundled-realms/pretui/internal/reading-listing.gts +232 -0
- package/bundled-realms/pretui/internal/structure-chart.gts +414 -0
- package/bundled-realms/pretui/internal/structure-dashboard.gts +503 -0
- package/bundled-realms/pretui/internal/structure-flow.gts +48 -0
- package/bundled-realms/pretui/internal/structure-layout-fixtures.gts +36 -0
- package/bundled-realms/pretui/internal/structure-layout.gts +99 -0
- package/bundled-realms/pretui/internal/structure-morph.gts +140 -0
- package/bundled-realms/pretui/internal/structure-scenes.gts +25 -0
- package/bundled-realms/pretui/internal/structure-scroll.gts +72 -0
- package/bundled-realms/pretui/internal/structure-shell-fixtures.gts +25 -0
- package/bundled-realms/pretui/internal/surfaces-canvas-fixtures.gts +5 -0
- package/bundled-realms/pretui/internal/surfaces-canvas.gts +283 -0
- package/bundled-realms/pretui/internal/texture.gts +81 -0
- package/bundled-realms/pretui/internal/toggle-controls-fixtures.gts +7 -0
- package/bundled-realms/pretui/internal/toggle-controls.gts +81 -0
- package/bundled-realms/pretui/json-model.ts +1981 -0
- package/bundled-realms/pretui/media-chrome/LICENSE +19 -0
- package/bundled-realms/pretui/media-chrome/README.md +111 -0
- package/bundled-realms/pretui/media-chrome/index.js +1647 -0
- package/bundled-realms/pretui/media-examples.gts +315 -0
- package/bundled-realms/pretui/model-viewer/LICENSE +202 -0
- package/{LICENSE → bundled-realms/pretui/model-viewer/LICENSE-gainmap-js} +1 -1
- package/bundled-realms/pretui/model-viewer/LICENSE-lit +28 -0
- package/bundled-realms/pretui/model-viewer/LICENSE-three +21 -0
- package/bundled-realms/pretui/model-viewer/NOTICE +67 -0
- package/bundled-realms/pretui/model-viewer/README.md +122 -0
- package/bundled-realms/pretui/model-viewer/index.js +6413 -0
- package/bundled-realms/pretui/package.json +51 -0
- package/bundled-realms/pretui/photoswipe/LICENSE +21 -0
- package/bundled-realms/pretui/photoswipe/README.md +91 -0
- package/bundled-realms/pretui/photoswipe/index.js +149 -0
- package/bundled-realms/pretui/photoswipe/style.ts +465 -0
- package/bundled-realms/pretui/plot/LICENSE +13 -0
- package/bundled-realms/pretui/plot/LICENSE.d3 +13 -0
- package/bundled-realms/pretui/plot/LICENSE.interval-tree-1d +22 -0
- package/bundled-realms/pretui/plot/LICENSE.isoformat +13 -0
- package/bundled-realms/pretui/plot/README.md +35 -0
- package/bundled-realms/pretui/plot/index.d.ts +31 -0
- package/bundled-realms/pretui/plot/index.js +449 -0
- package/bundled-realms/pretui/pretui-component.gts +1336 -0
- package/bundled-realms/pretui/pretui-css.gts +380 -0
- package/bundled-realms/pretui/pretui-primitives.gts +162 -0
- package/bundled-realms/pretui/qrcode/LICENSE +34 -0
- package/bundled-realms/pretui/qrcode/README.md +87 -0
- package/bundled-realms/pretui/qrcode/index.js +35 -0
- package/bundled-realms/pretui/realm.json +16 -0
- package/bundled-realms/pretui/registry.ts +40 -0
- package/bundled-realms/pretui/sigpad/LICENSE +21 -0
- package/bundled-realms/pretui/sigpad/README.md +103 -0
- package/bundled-realms/pretui/sigpad/index.js +30 -0
- package/bundled-realms/pretui/structure-dashboard-css.ts +166 -0
- package/bundled-realms/pretui/surfaces/README.md +37 -0
- package/bundled-realms/pretui/surfaces/canvas/LICENSE.d3 +168 -0
- package/bundled-realms/pretui/surfaces/canvas/LICENSE.xyflow +21 -0
- package/bundled-realms/pretui/surfaces/canvas/index.js +25420 -0
- package/bundled-realms/pretui/surfaces/grid/LICENSE.tanstack +50 -0
- package/bundled-realms/pretui/surfaces/grid/index.js +21478 -0
- package/bundled-realms/pretui/surfaces/layout/index.js +9036 -0
- package/bundled-realms/pretui/surfaces-canvas-css.ts +1640 -0
- package/bundled-realms/pretui/surfaces-canvas-layout.ts +607 -0
- package/bundled-realms/pretui/tsconfig.json +54 -0
- package/bundled-realms/pretui/wavesurfer/LICENSE +29 -0
- package/bundled-realms/pretui/wavesurfer/README.md +85 -0
- package/bundled-realms/pretui/wavesurfer/index.js +184 -0
- package/bundled-realms/pretui/zxcvbn/LICENSE +21 -0
- package/bundled-realms/pretui/zxcvbn/README.md +192 -0
- package/bundled-realms/pretui/zxcvbn/index.d.ts +28 -0
- package/bundled-realms/pretui/zxcvbn/index.js +5931 -0
- package/bundled-test-harness/index.html +1 -1
- package/bundled-test-harness/tests/index.html +1 -1
- package/dist/api.js +1 -1
- package/dist/index.js +33 -33
- package/package.json +1 -1
- package/src/lib/test-engine.ts +14 -4
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A QR code generated from a value, with the encoded value also present as text or a link — never only as a symbol.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@value? — the payload: a URL, an id, a vCard, anything under ~2 KB
|
|
9
|
+
@label? — accessible name for the symbol. Defaults to 'QR code'
|
|
10
|
+
@errorCorrection? — ISO/IEC 18004 level. 'M' by default; forced to 'H' with @overlay
|
|
11
|
+
@margin? — quiet zone in modules, clamped to [4, 16]
|
|
12
|
+
@size? — rendered edge length in px, clamped to [64, 1024]. Default 180
|
|
13
|
+
@foreground?, @background? — opaque hex only
|
|
14
|
+
@valueDisplay? — how the encoded value appears as text: 'auto' (default) renders
|
|
15
|
+
an anchor for http(s) values and selectable code text otherwise;
|
|
16
|
+
'link' and 'text' force one; 'none' keeps it visually hidden but
|
|
17
|
+
still in the accessibility tree
|
|
18
|
+
@caption? — caption under the symbol; the <:caption> block wins
|
|
19
|
+
@overlay? — declares that an <:overlay> mark is being supplied
|
|
20
|
+
@onRender? — called with what was actually rendered
|
|
21
|
+
|
|
22
|
+
<:caption> — replaces @caption
|
|
23
|
+
<:overlay> — a mark centred over the symbol; requires @overlay={{true}}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**The encoded value is never removed outright.** `@valueDisplay='none'` hides it visually and keeps it in the accessibility tree, because a QR code alone is unusable to anyone who cannot point a camera at the screen they are already looking at.
|
|
27
|
+
|
|
28
|
+
**`@overlay` is a flag _and_ a block, and the flag is what does the work.** Named blocks are not visible from component JavaScript, so the flag is what raises error correction to `'H'` and reserves the center. The block renders **only** when the flag is set — so forgetting it makes the overlay visibly vanish rather than silently producing an unscannable code.
|
|
29
|
+
|
|
30
|
+
**The quiet zone lives in the `viewBox`, not in CSS padding**, so a caller cannot style away the margin the symbol needs in order to scan — the prior version accepted `margin: 0` and stretched the symbol to fill whatever box it was in besides.
|
|
31
|
+
|
|
32
|
+
**The occluded area is capped at 20% of the symbol's edge** — about 4% of its area, well inside level H's ~30% budget.
|
|
33
|
+
|
|
34
|
+
**Colours are opaque hex only.** A QR code with a translucent foreground is a QR code that does not scan.
|
|
35
|
+
|
|
36
|
+
## Prior art
|
|
37
|
+
|
|
38
|
+
**`wa-qr-code`.**
|
|
39
|
+
|
|
40
|
+
Where Pretui is better: the value is always available as text, the overlay raises error correction automatically rather than leaving the caller to know that it must, and the failure mode of forgetting the flag is visible rather than silent.
|
|
41
|
+
|
|
42
|
+
Where it is thinner: no logo sizing control beyond the cap, no module-shape styling (rounded dots and the like), and no export — the symbol is rendered, not downloadable.
|
|
43
|
+
|
|
44
|
+
## Accessibility
|
|
45
|
+
|
|
46
|
+
- **A QR code is not accessible content.** It is an image of a machine-readable string, and the only accessible version of it is the string. That is why `@valueDisplay` has no option that removes it.
|
|
47
|
+
- **`@label` names the symbol, not the payload.** The value is exposed separately, so repeating it in the label is noise — which is why the default is the generic "QR code".
|
|
48
|
+
- **`'auto'` renders an anchor for http(s) values**, which means the destination is reachable by keyboard on the same screen rather than requiring a second device.
|
|
49
|
+
- **The quiet zone is clamped to the spec minimum and lives in the `viewBox`**, so a code cannot be rendered — or styled — in a way that fails to scan.
|
|
50
|
+
- **`@onRender` reports what was actually produced**, which is how a caller detects that a payload was too large before a user finds out with a camera.
|
|
51
|
+
|
|
52
|
+
## Theming
|
|
53
|
+
|
|
54
|
+
`@foreground` and `@background` are args rather than tokens, and opaque hex rather than any CSS color — a deliberate departure from the kit's usual token channel, because contrast here is a functional requirement rather than an aesthetic one and a theme must not be able to break scanning.
|
|
55
|
+
|
|
56
|
+
Everything around the symbol — the caption, the value text, the link — takes the normal kit tokens.
|
|
57
|
+
|
|
58
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
// Pretui — QrCode usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { QrCode } from './qr-code';
|
|
6
|
+
import type { QrRenderInfo } from './qr-code';
|
|
7
|
+
import { Token } from './token';
|
|
8
|
+
|
|
9
|
+
// ── QrCode ───────────────────────────────────────────────────────────────
|
|
10
|
+
const ECLS: string[] = ['L', 'M', 'Q', 'H'];
|
|
11
|
+
|
|
12
|
+
const VALUE_DISPLAYS: string[] = ['auto', 'link', 'text', 'none'];
|
|
13
|
+
|
|
14
|
+
const SAMPLE_VALUES: string[] = [
|
|
15
|
+
'https://boxel.ai/tickets/TESSAR-2026-0041',
|
|
16
|
+
'TESSAR-2026-0041',
|
|
17
|
+
'BEGIN:VCARD\nVERSION:3.0\nN:Lovelace;Ada\nEND:VCARD',
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
class QrCodeUsage extends Component {
|
|
21
|
+
ecls = ECLS;
|
|
22
|
+
displays = VALUE_DISPLAYS;
|
|
23
|
+
samples = SAMPLE_VALUES;
|
|
24
|
+
|
|
25
|
+
@tracked value = SAMPLE_VALUES[0]!;
|
|
26
|
+
@tracked label = 'Check-in code';
|
|
27
|
+
@tracked errorCorrection = 'M';
|
|
28
|
+
@tracked margin = 4;
|
|
29
|
+
@tracked size = 200;
|
|
30
|
+
@tracked foreground = '#000000';
|
|
31
|
+
@tracked background = '#ffffff';
|
|
32
|
+
@tracked valueDisplay = 'auto';
|
|
33
|
+
@tracked caption = '';
|
|
34
|
+
@tracked overlay = false;
|
|
35
|
+
@tracked info: QrRenderInfo | undefined;
|
|
36
|
+
|
|
37
|
+
setValue = (v: string) => (this.value = v);
|
|
38
|
+
setLabel = (v: string) => (this.label = v);
|
|
39
|
+
setEcl = (v: string) => (this.errorCorrection = v);
|
|
40
|
+
setMargin = (v: number | null) => (this.margin = v ?? 4);
|
|
41
|
+
setSize = (v: number | null) => (this.size = v ?? 200);
|
|
42
|
+
setForeground = (v: string) => (this.foreground = v);
|
|
43
|
+
setBackground = (v: string) => (this.background = v);
|
|
44
|
+
setValueDisplay = (v: string) => (this.valueDisplay = v);
|
|
45
|
+
setCaption = (v: string) => (this.caption = v);
|
|
46
|
+
setOverlay = (v: boolean) => (this.overlay = v);
|
|
47
|
+
noteRender = (info: QrRenderInfo) => (this.info = info);
|
|
48
|
+
|
|
49
|
+
get eclValue(): 'L' | 'M' | 'Q' | 'H' {
|
|
50
|
+
return this.errorCorrection as 'L' | 'M' | 'Q' | 'H';
|
|
51
|
+
}
|
|
52
|
+
get displayValue(): 'auto' | 'link' | 'text' | 'none' {
|
|
53
|
+
return this.valueDisplay as 'auto' | 'link' | 'text' | 'none';
|
|
54
|
+
}
|
|
55
|
+
get versionText(): string {
|
|
56
|
+
return this.info?.version ? 'v' + this.info.version : '—';
|
|
57
|
+
}
|
|
58
|
+
get modulesText(): string {
|
|
59
|
+
return this.info?.moduleCount ? this.info.moduleCount + '²' : '—';
|
|
60
|
+
}
|
|
61
|
+
get contrastText(): string {
|
|
62
|
+
return this.info?.contrastRejected ? 'rejected' : 'accepted';
|
|
63
|
+
}
|
|
64
|
+
get usage(): string {
|
|
65
|
+
return [
|
|
66
|
+
'<QrCode',
|
|
67
|
+
" @value='" + this.value.split('\n')[0] + "'",
|
|
68
|
+
" @label='" + this.label + "'",
|
|
69
|
+
" @errorCorrection='" + this.errorCorrection + "'",
|
|
70
|
+
' @margin={{' + this.margin + '}}',
|
|
71
|
+
' @size={{' + this.size + '}}',
|
|
72
|
+
" @valueDisplay='" + this.valueDisplay + "'",
|
|
73
|
+
'/>',
|
|
74
|
+
].join('\n');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
<template>
|
|
78
|
+
<FreestyleUsage
|
|
79
|
+
@name='QrCode'
|
|
80
|
+
@description="Encodes a value to a QR symbol as one <svg> with one <path>, from a vendored copy of the qrcode encoder core — the two implementations this replaces imported it from a public CDN at runtime, which broke offline and handed a third party a seat inside the realm. Two things here are deliberately NOT theme-obedient, and it is worth pushing the knobs until you see why. Drag the quiet zone down to zero: it clamps at 4, because the margin lives in the viewBox where CSS cannot reach it and a symbol without it does not scan. Then set a foreground and background that are close in luminance, or invert them, or type a var() token: the pair is refused, the symbol falls back to black-on-white, and the refusal is stated in the caption rather than shipped as an unscannable code. Everything AROUND the symbol is fully tokenized and re-tints with the theme. And whatever you encode is always reachable as selectable text or a real link — a QR code that only exists as an image is unusable to anyone not holding a second device."
|
|
81
|
+
@source={{this.usage}}
|
|
82
|
+
>
|
|
83
|
+
<:example>
|
|
84
|
+
<QrCode
|
|
85
|
+
@value={{this.value}}
|
|
86
|
+
@label={{this.label}}
|
|
87
|
+
@errorCorrection={{this.eclValue}}
|
|
88
|
+
@margin={{this.margin}}
|
|
89
|
+
@size={{this.size}}
|
|
90
|
+
@foreground={{this.foreground}}
|
|
91
|
+
@background={{this.background}}
|
|
92
|
+
@valueDisplay={{this.displayValue}}
|
|
93
|
+
@caption={{this.caption}}
|
|
94
|
+
@overlay={{this.overlay}}
|
|
95
|
+
@onRender={{this.noteRender}}
|
|
96
|
+
>
|
|
97
|
+
<:overlay><span class='qr-mark'>B</span></:overlay>
|
|
98
|
+
</QrCode>
|
|
99
|
+
<p class='cap-readout'>
|
|
100
|
+
<span class='cap-readoutLabel'>@onRender</span>
|
|
101
|
+
<Token @value={{this.versionText}} />
|
|
102
|
+
<Token @value={{this.modulesText}} />
|
|
103
|
+
<Token @value={{this.contrastText}} />
|
|
104
|
+
</p>
|
|
105
|
+
</:example>
|
|
106
|
+
|
|
107
|
+
<:api as |Args|>
|
|
108
|
+
<Args.String
|
|
109
|
+
@name='value'
|
|
110
|
+
@value={{this.value}}
|
|
111
|
+
@options={{this.samples}}
|
|
112
|
+
@description='The payload. A URL becomes a real link under the symbol; anything else becomes selectable monospace text.'
|
|
113
|
+
@onInput={{this.setValue}}
|
|
114
|
+
/>
|
|
115
|
+
<Args.String
|
|
116
|
+
@name='label'
|
|
117
|
+
@value={{this.label}}
|
|
118
|
+
@defaultValue='QR code'
|
|
119
|
+
@description='Accessible name for the symbol itself. The encoded value is exposed separately, so repeating it here is usually noise.'
|
|
120
|
+
@onInput={{this.setLabel}}
|
|
121
|
+
/>
|
|
122
|
+
<Args.String
|
|
123
|
+
@name='errorCorrection'
|
|
124
|
+
@value={{this.errorCorrection}}
|
|
125
|
+
@options={{this.ecls}}
|
|
126
|
+
@defaultValue='M'
|
|
127
|
+
@description='ISO/IEC 18004 level: L/M/Q/H recover roughly 7/15/25/30 percent. Higher costs capacity — watch the version token climb. Forced to H whenever overlay is set.'
|
|
128
|
+
@onInput={{this.setEcl}}
|
|
129
|
+
/>
|
|
130
|
+
<Args.Number
|
|
131
|
+
@name='margin'
|
|
132
|
+
@value={{this.margin}}
|
|
133
|
+
@min={{0}}
|
|
134
|
+
@max={{20}}
|
|
135
|
+
@defaultValue={{4}}
|
|
136
|
+
@description='Quiet zone in modules. Clamped to [4, 16]: this widens the margin, it can never remove it.'
|
|
137
|
+
@onInput={{this.setMargin}}
|
|
138
|
+
/>
|
|
139
|
+
<Args.Number
|
|
140
|
+
@name='size'
|
|
141
|
+
@value={{this.size}}
|
|
142
|
+
@min={{40}}
|
|
143
|
+
@max={{1200}}
|
|
144
|
+
@defaultValue={{180}}
|
|
145
|
+
@description='Rendered edge length in px, clamped to [64, 1024]. The only inline style the component writes, and it is a clamped integer.'
|
|
146
|
+
@onInput={{this.setSize}}
|
|
147
|
+
/>
|
|
148
|
+
<Args.String
|
|
149
|
+
@name='foreground'
|
|
150
|
+
@value={{this.foreground}}
|
|
151
|
+
@defaultValue='#000000'
|
|
152
|
+
@description='Dark modules. Opaque hex only — try var(--foreground), rgb(0 0 0), or a light value, and watch it get refused.'
|
|
153
|
+
@onInput={{this.setForeground}}
|
|
154
|
+
/>
|
|
155
|
+
<Args.String
|
|
156
|
+
@name='background'
|
|
157
|
+
@value={{this.background}}
|
|
158
|
+
@defaultValue='#ffffff'
|
|
159
|
+
@description='Light modules. The pair must be dark-on-light at 3:1 or better or both are discarded.'
|
|
160
|
+
@onInput={{this.setBackground}}
|
|
161
|
+
/>
|
|
162
|
+
<Args.String
|
|
163
|
+
@name='valueDisplay'
|
|
164
|
+
@value={{this.valueDisplay}}
|
|
165
|
+
@options={{this.displays}}
|
|
166
|
+
@defaultValue='auto'
|
|
167
|
+
@description="How the encoded value appears as text. 'none' hides it visually but keeps it in the accessibility tree — it is never removed outright."
|
|
168
|
+
@onInput={{this.setValueDisplay}}
|
|
169
|
+
/>
|
|
170
|
+
<Args.String
|
|
171
|
+
@name='caption'
|
|
172
|
+
@value={{this.caption}}
|
|
173
|
+
@description='Caption text under the symbol. The caption block wins over it.'
|
|
174
|
+
@onInput={{this.setCaption}}
|
|
175
|
+
/>
|
|
176
|
+
<Args.Bool
|
|
177
|
+
@name='overlay'
|
|
178
|
+
@value={{this.overlay}}
|
|
179
|
+
@defaultValue={{false}}
|
|
180
|
+
@description='Declares that an overlay block is supplied. Named blocks are invisible to component JS, so this flag is what raises error correction to H and reserves the centre — and the block renders only when it is set, so forgetting it makes the mark visibly vanish instead of silently producing an unscannable code.'
|
|
181
|
+
@onInput={{this.setOverlay}}
|
|
182
|
+
/>
|
|
183
|
+
<Args.Object
|
|
184
|
+
@name='onRender'
|
|
185
|
+
@value={{this.info}}
|
|
186
|
+
@description='Reports version, module count, quiet zone, level, the colours actually used, and whether a caller pair was refused. Fires once per meaningful change, from a modifier taking only primitives.'
|
|
187
|
+
/>
|
|
188
|
+
<Args.Yield
|
|
189
|
+
@name='caption'
|
|
190
|
+
@description='Replaces @caption.'
|
|
191
|
+
/>
|
|
192
|
+
<Args.Yield
|
|
193
|
+
@name='overlay'
|
|
194
|
+
@description='A mark centred over the symbol, capped at 20 percent of its edge. Requires @overlay.'
|
|
195
|
+
/>
|
|
196
|
+
</:api>
|
|
197
|
+
</FreestyleUsage>
|
|
198
|
+
|
|
199
|
+
<style scoped>
|
|
200
|
+
.qr-mark {
|
|
201
|
+
font-family: var(--font-sans);
|
|
202
|
+
font-weight: 700;
|
|
203
|
+
font-size: 12px;
|
|
204
|
+
line-height: 1;
|
|
205
|
+
color: var(--boxel-dark);
|
|
206
|
+
}
|
|
207
|
+
.cap-readout {
|
|
208
|
+
display: flex;
|
|
209
|
+
align-items: center;
|
|
210
|
+
gap: 8px;
|
|
211
|
+
margin: 10px 0 0;
|
|
212
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
213
|
+
color: var(--muted-foreground);
|
|
214
|
+
}
|
|
215
|
+
.cap-readoutLabel {
|
|
216
|
+
font-family: var(--font-mono);
|
|
217
|
+
}
|
|
218
|
+
</style>
|
|
219
|
+
</template>
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export const DEMOS_QR_CODE: Record<string, unknown> = {
|
|
223
|
+
QrCode: QrCodeUsage,
|
|
224
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// Pretui — QueuedMessage: a message waiting to be sent while the agent is busy.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
4
|
+
import { Button } from './button';
|
|
5
|
+
|
|
6
|
+
export interface QueuedMessageSignature {
|
|
7
|
+
Args: {
|
|
8
|
+
text: string;
|
|
9
|
+
mode?: 'steer' | 'now';
|
|
10
|
+
onSendNow?: () => void;
|
|
11
|
+
onEdit?: () => void;
|
|
12
|
+
};
|
|
13
|
+
Element: HTMLDivElement;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Per-message delivery semantics, stated in the UI: Send now interrupts;
|
|
17
|
+
// Steer is delivered at the next checkpoint.
|
|
18
|
+
export class QueuedMessage extends Component<QueuedMessageSignature> {
|
|
19
|
+
get mode() {
|
|
20
|
+
return this.args.mode ?? 'steer';
|
|
21
|
+
}
|
|
22
|
+
get modeLabel() {
|
|
23
|
+
return this.mode === 'now' ? 'send now' : 'steer';
|
|
24
|
+
}
|
|
25
|
+
get semantics() {
|
|
26
|
+
return this.mode === 'now' ? 'interrupts the run' : 'delivered at next checkpoint';
|
|
27
|
+
}
|
|
28
|
+
get canSendNow() {
|
|
29
|
+
return this.mode !== 'now' && this.args.onSendNow;
|
|
30
|
+
}
|
|
31
|
+
edit = () => this.args.onEdit?.();
|
|
32
|
+
sendNow = () => this.args.onSendNow?.();
|
|
33
|
+
<template>
|
|
34
|
+
<div class='pretui-queued' data-test-pretui-queued-message ...attributes>
|
|
35
|
+
<span class='pretui-queued-mode'>{{this.modeLabel}}</span>
|
|
36
|
+
<span class='pretui-queued-text'>{{@text}}</span>
|
|
37
|
+
<span class='pretui-queued-note'>{{this.semantics}}</span>
|
|
38
|
+
{{#if @onEdit}}<Button @variant='ghost' class='pretui-queued-btn' {{on 'click' this.edit}}>Edit</Button>{{/if}}
|
|
39
|
+
{{#if this.canSendNow}}<Button @variant='ghost' class='pretui-queued-btn' {{on 'click' this.sendNow}}>Send now</Button>{{/if}}
|
|
40
|
+
</div>
|
|
41
|
+
<style scoped>
|
|
42
|
+
/* above Button's layer, so these win by layer order, not file order */
|
|
43
|
+
@layer PretComponent, PretComposite;
|
|
44
|
+
@layer PretComposite {
|
|
45
|
+
.pretui-queued {
|
|
46
|
+
display: flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
gap: 8px;
|
|
49
|
+
padding: 7px 10px;
|
|
50
|
+
border-radius: 8px;
|
|
51
|
+
background: var(--field, var(--boxel-light));
|
|
52
|
+
box-shadow: 0 0 0 1px var(--border);
|
|
53
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
54
|
+
}
|
|
55
|
+
.pretui-queued-mode {
|
|
56
|
+
font-family: var(--font-mono);
|
|
57
|
+
font-size: 9.5px;
|
|
58
|
+
font-weight: 600;
|
|
59
|
+
letter-spacing: 0.06em;
|
|
60
|
+
text-transform: uppercase;
|
|
61
|
+
color: var(--pretui-primary-ink, var(--primary));
|
|
62
|
+
flex: none;
|
|
63
|
+
}
|
|
64
|
+
.pretui-queued-text {
|
|
65
|
+
flex: 1;
|
|
66
|
+
min-width: 0;
|
|
67
|
+
overflow: hidden;
|
|
68
|
+
text-overflow: ellipsis;
|
|
69
|
+
white-space: nowrap;
|
|
70
|
+
}
|
|
71
|
+
.pretui-queued-note {
|
|
72
|
+
font-size: var(--text-ui-xs, 11px);
|
|
73
|
+
color: var(--ink-3, var(--boxel-400));
|
|
74
|
+
flex: none;
|
|
75
|
+
}
|
|
76
|
+
:deep(.pretui-queued-btn) {
|
|
77
|
+
height: 22px;
|
|
78
|
+
padding: 0 7px;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
</style>
|
|
82
|
+
</template>
|
|
83
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A message the user has typed while the agent is busy, shown with its **delivery semantics stated in the UI**: `steer` is delivered at the next checkpoint, `now` interrupts. Use it in the composer area of an agent surface for anything queued behind a running turn. If the message has already been delivered, it is a transcript row, not this. If the agent is asking _you_ something, **AgentQuestion**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@text: string (required)
|
|
9
|
+
@mode? 'steer' | 'now' (default 'steer')
|
|
10
|
+
@onSendNow?, @onEdit?
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
**The mode's meaning is rendered, not implied.** The component carries a `semantics` line explaining what each mode does — "Send now interrupts; Steer is delivered at the next checkpoint" — because the two modes have materially different consequences and a badge reading `steer` teaches nobody. That is the territory's colour-never-carries-state-alone law applied to a delivery guarantee.
|
|
14
|
+
|
|
15
|
+
**`steer` is the default**, and that is the safe default: interrupting a running agent discards partial work, and a user who has not thought about it should get the non-destructive behaviour.
|
|
16
|
+
|
|
17
|
+
`@onEdit` exists because a queued message is still editable — it has not been sent — and a queue with no edit is a queue you have to delete from.
|
|
18
|
+
|
|
19
|
+
## Prior art
|
|
20
|
+
|
|
21
|
+
This has essentially no precedent in component libraries, and only a thin one in products. The recognisable analogues are **email's "undo send" window**, **Slack's scheduled-send**, and the general messaging-queue pattern of a message in a pending state.
|
|
22
|
+
|
|
23
|
+
What is genuinely novel is the **two delivery semantics as a first-class distinction**. Most agent composers have one behaviour — either your message interrupts, or it queues — and the user learns which by experiment. Naming both, defaulting to the safe one, and stating the difference in the UI is the right design for an interaction where getting it wrong costs the agent's current work.
|
|
24
|
+
|
|
25
|
+
Where it is thin:
|
|
26
|
+
|
|
27
|
+
- **No queue.** This is one message; the ordering, count and "3 messages queued" summary are the caller's.
|
|
28
|
+
- **No delivery confirmation.** The component shows a message as queued and has no state for "delivered".
|
|
29
|
+
- **No cancel.** `@onEdit` implies editing; there is no `@onDiscard`.
|
|
30
|
+
- **No checkpoint indication.** `steer` promises delivery "at the next checkpoint" and nothing shows when that will be, so the promise is unfalsifiable from the UI.
|
|
31
|
+
|
|
32
|
+
## Accessibility
|
|
33
|
+
|
|
34
|
+
No pattern governs it. The relevant criteria are WCAG **4.1.3 Status Messages**, **3.3.2 Labels or Instructions** and **3.3.4 Error Prevention**.
|
|
35
|
+
|
|
36
|
+
What is right: **the semantics line is text.** The consequence of each mode is available to everyone, not encoded in a badge colour — which satisfies **3.3.2** for an interaction whose consequences are not obvious.
|
|
37
|
+
|
|
38
|
+
Gaps:
|
|
39
|
+
|
|
40
|
+
- **The message's queued state is not announced.** A user types, presses Enter, and the message moves into a pending state — a status change (**4.1.3**) with no live region. For a screen-reader user the message simply is not sent, with no explanation, which is the worst possible reading of the interaction. A `role="status"` region saying "Queued — will be delivered at the next checkpoint" is close to mandatory here.
|
|
41
|
+
- **Delivery is not announced either.** When the checkpoint arrives and the message goes, nothing says so.
|
|
42
|
+
- **"Send now" is a consequential action with no confirmation.** It interrupts a running agent and discards partial work; **WCAG 3.3.4** asks for confirmation or reversibility for actions with significant consequences. Nothing here confirms, and the button sits directly beside "Edit".
|
|
43
|
+
- **The mode is not a control.** `@mode` is an arg the caller sets, so a user cannot switch a queued message from steer to now except through `@onSendNow`, which is a different action. That is a coherent design, but it means the displayed mode reads like a toggle and is not one — verify it is not marked up as one.
|
|
44
|
+
- **`@text` may be long** and there is no expressed truncation or expansion behaviour; a queued paragraph should not be silently clipped.
|
|
45
|
+
- **Button labels are generic.** "Send now" and "Edit" outside their context do not name the message; `aria-describedby` pointing at the text would help on a screen with several queued messages.
|
|
46
|
+
|
|
47
|
+
## Theming
|
|
48
|
+
|
|
49
|
+
`--inset` or `--card` (the pending surface — a queued message should read as _not yet_ part of the transcript), `--border`, `--muted-foreground` (the semantics line), `--foreground` (the message text), plus **Button** tokens for the two actions and the mode's own dress.
|
|
50
|
+
|
|
51
|
+
The visual distinction that matters is **pending versus sent**. A queued message must not look like a transcript row, or the user will believe it has gone. A theme should give it a distinct surface, a dashed edge, or reduced weight — and should check that the distinction survives in dark mode, where the usual "slightly lighter gray" solution collapses.
|
|
52
|
+
|
|
53
|
+
The styles sit in `@layer PretComposite`, above Button's `PretComponent` layer, so what this component sets on Button wins by layer order. A caller's unlayered CSS overrides both without a more specific selector.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Pretui — QueuedMessage usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { QueuedMessage } from './queued-message';
|
|
6
|
+
import { DemoReceipt, DemoStack } from '../demo-foundations-more';
|
|
7
|
+
|
|
8
|
+
class QueuedMessageUsage extends Component {
|
|
9
|
+
@tracked receipt = 'Waiting for the next checkpoint';
|
|
10
|
+
send = () => (this.receipt = 'Interrupt requested');
|
|
11
|
+
<template>
|
|
12
|
+
<FreestyleUsage @name='QueuedMessage' @description='A queued instruction that names its delivery semantics instead of hiding them in an icon or colour.' @source='<QueuedMessage @text="Also check the reserve price" @mode="steer" … />' @viewportMode='wide'>
|
|
13
|
+
<:example><DemoStack><QueuedMessage @text='Also check the reserve price' @mode='steer' @onSendNow={{this.send}} /><DemoReceipt>{{this.receipt}}</DemoReceipt></DemoStack></:example>
|
|
14
|
+
<:api as |Args|><Args.String @name='text' @value='Also check the reserve price' /><Args.String @name='mode' @value='steer' /><Args.Action @name='onSendNow' /><Args.Action @name='onEdit' /></:api>
|
|
15
|
+
</FreestyleUsage>
|
|
16
|
+
</template>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const DEMOS_QUEUED_MESSAGE: Record<string, unknown> = {
|
|
20
|
+
QueuedMessage: QueuedMessageUsage,
|
|
21
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Pretui — RadioCard: a one-of-N choice where each option is a card.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { fn } from '@ember/helper';
|
|
5
|
+
import { guidFor } from '@ember/object/internals';
|
|
6
|
+
import { emit, firstDefined } from '../pretui-primitives';
|
|
7
|
+
import { ChoiceGrid, OptionCard } from '../internal/choice-cards';
|
|
8
|
+
import type { ChoiceCardOption, ChoiceCardOrientation, ChoiceCardsSharedArgs } from '../internal/choice-cards';
|
|
9
|
+
|
|
10
|
+
export interface RadioCardSignature {
|
|
11
|
+
Args: ChoiceCardsSharedArgs & {
|
|
12
|
+
value?: string;
|
|
13
|
+
defaultValue?: string;
|
|
14
|
+
onValueChange?: (value: string) => void;
|
|
15
|
+
/** alias */
|
|
16
|
+
onChange?: (value: string) => void;
|
|
17
|
+
};
|
|
18
|
+
Blocks: {
|
|
19
|
+
/** replaces the generated title and description of every card */
|
|
20
|
+
default: [option: ChoiceCardOption, selected: boolean];
|
|
21
|
+
/** an icon or thumbnail on the card's start edge */
|
|
22
|
+
media: [option: ChoiceCardOption];
|
|
23
|
+
};
|
|
24
|
+
Element: HTMLDivElement;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class RadioCard extends Component<RadioCardSignature> {
|
|
28
|
+
@tracked internal = this.args.defaultValue;
|
|
29
|
+
generatedName = `${guidFor(this)}-rc`;
|
|
30
|
+
get name() {
|
|
31
|
+
return this.args.name ?? this.generatedName;
|
|
32
|
+
}
|
|
33
|
+
get options(): ChoiceCardOption[] {
|
|
34
|
+
return firstDefined(this.args.options, this.args.items) ?? [];
|
|
35
|
+
}
|
|
36
|
+
get value() {
|
|
37
|
+
return this.args.value ?? this.internal;
|
|
38
|
+
}
|
|
39
|
+
get groupDisabled() {
|
|
40
|
+
return firstDefined(this.args.disabled, this.args.isDisabled) ?? false;
|
|
41
|
+
}
|
|
42
|
+
get orientation(): ChoiceCardOrientation {
|
|
43
|
+
return this.args.orientation ?? 'vertical';
|
|
44
|
+
}
|
|
45
|
+
pick = (option: ChoiceCardOption, ev: Event) => {
|
|
46
|
+
if (this.args.value === undefined) {
|
|
47
|
+
this.internal = option.value;
|
|
48
|
+
}
|
|
49
|
+
emit([this.args.onValueChange, this.args.onChange], option.value);
|
|
50
|
+
if (this.args.value !== undefined) {
|
|
51
|
+
// controlled: the platform already moved the radios; put them back until
|
|
52
|
+
// the owner moves @value, so the checked input matches the painted card
|
|
53
|
+
let group = (ev.target as HTMLElement).closest('.pretui-choicecards');
|
|
54
|
+
group
|
|
55
|
+
?.querySelectorAll<HTMLInputElement>('input[type="radio"]')
|
|
56
|
+
.forEach((input) => (input.checked = input.value === this.value));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
isOn = (option: ChoiceCardOption) => this.value === option.value;
|
|
60
|
+
isDisabled = (option: ChoiceCardOption) =>
|
|
61
|
+
this.groupDisabled || Boolean(option.disabled);
|
|
62
|
+
<template>
|
|
63
|
+
<ChoiceGrid
|
|
64
|
+
role='radiogroup'
|
|
65
|
+
aria-label={{@label}}
|
|
66
|
+
data-orientation={{this.orientation}}
|
|
67
|
+
data-columns={{@columns}}
|
|
68
|
+
data-test-pretui-radio-card
|
|
69
|
+
...attributes
|
|
70
|
+
>
|
|
71
|
+
{{#each this.options as |option|}}
|
|
72
|
+
<OptionCard
|
|
73
|
+
@kind='radio'
|
|
74
|
+
@name={{this.name}}
|
|
75
|
+
@option={{option}}
|
|
76
|
+
@selected={{this.isOn option}}
|
|
77
|
+
@disabled={{this.isDisabled option}}
|
|
78
|
+
@onChange={{fn this.pick option}}
|
|
79
|
+
@custom={{has-block}}
|
|
80
|
+
@hasMedia={{has-block 'media'}}
|
|
81
|
+
>
|
|
82
|
+
<:default as |o selected|>{{yield o selected}}</:default>
|
|
83
|
+
<:media as |o|>{{yield o to='media'}}</:media>
|
|
84
|
+
</OptionCard>
|
|
85
|
+
{{/each}}
|
|
86
|
+
</ChoiceGrid>
|
|
87
|
+
</template>
|
|
88
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
One-of-N where every option is a card. The card is the label and the whole hit target; a real radio sits inside it, visually hidden, and a small mark in the card's corner shows the state. Use it when each option needs a title, a line of description and a figure — a billing plan, a shipping speed, a region — and the choice deserves the room. If the options are short words, **RadioGroup** is the same contract at a fraction of the size. If the options are peers that switch a view rather than set a value, **SegmentedControl**. If more than one option can be chosen, **CheckboxCard** is this component with an array value. If the card is content rather than a choice, **Card**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@options? — ChoiceCardOption[]: { value, title, description?, meta?, disabled? }
|
|
9
|
+
@items? — alias of @options
|
|
10
|
+
@value? — controlled selection; omit for the uncontrolled half
|
|
11
|
+
@defaultValue? — uncontrolled seed
|
|
12
|
+
@onValueChange? — fires with the chosen value; @onChange is the alias
|
|
13
|
+
@disabled? — every card; @isDisabled is the alias
|
|
14
|
+
@label? — the radiogroup's accessible name when no label element points at it
|
|
15
|
+
@name? — the form field the radios submit under; a generated name groups them otherwise
|
|
16
|
+
@orientation? — 'vertical' (default) | 'horizontal'
|
|
17
|
+
@columns? — 2 | 3 | 4, a fixed count for 'horizontal'
|
|
18
|
+
<:default as |option selected|> — replaces the generated title and description
|
|
19
|
+
<:media as |option|> — an icon or thumbnail on the card's start edge
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Hybrid state.** With `@value` undefined the group keeps its own selection, seeded by `@defaultValue`. With `@value` set the group never moves itself: it reports the request through `@onValueChange`, puts the native radios back to the controlled value, and waits for the parent to change the arg. So the checked input always matches the painted card, and a withheld card can be requested again. The callback fires in both modes.
|
|
23
|
+
|
|
24
|
+
**`@name` makes it a form field.** A `<form>` around the group submits the chosen value under `@name`. Without it the radios share a generated name, which groups them for the keyboard but submits under a meaningless key.
|
|
25
|
+
|
|
26
|
+
**One option is disabled through `disabled` on the option; the group through `@disabled`.** Either disables the real radio, so the platform skips it, and stamps `data-disabled` on the card.
|
|
27
|
+
|
|
28
|
+
**Selection is a hairline, not a border.** The chosen card wears a 1px ring in `--primary` and a soft 4px halo of the same hue at 12%; the rest of the card does not change. The corner mark is the same 15px disc **RadioGroup** draws, so a card group and a plain group read as one family.
|
|
29
|
+
|
|
30
|
+
**State attributes are strings both ways.** `data-selected='true' | 'false'` and `data-disabled='true' | 'false'` on every card; `data-orientation` and `data-columns` on the root.
|
|
31
|
+
|
|
32
|
+
## Prior art
|
|
33
|
+
|
|
34
|
+
**Chakra `RadioCard`** is a root with `RadioCard.Item`, `ItemText`, `ItemDescription`, `ItemIndicator` and an `ItemHiddenInput`, with `variant` (`surface` / `subtle` / `outline` / `solid`) and `orientation`; the addon slot is a separate `ItemAddon` band. **Tremor `RadioCardGroup`** is the same idea over Radix `RadioGroup`, a plain card per item and a `RadioCardIndicator` you place yourself. The **origin-ui** recipes hand-roll the pattern from shadcn `RadioGroup` plus a `Label` styled with `has-[[data-state=checked]]`.
|
|
35
|
+
|
|
36
|
+
Where this is better: **it is a single component, not an assembly.** An option is a value, a title, a description and a figure, and the card is generated from that; the hidden input, the indicator and the selected ring do not have to be composed by hand each time, which is where the recipes go wrong (an indicator outside the label, a card that is not the hit target). The keyboard model is the platform's because the inputs are real radios sharing a name, not a Radix roving-tabindex reimplementation.
|
|
37
|
+
|
|
38
|
+
Where it is thinner: **one visual recipe.** There is no `variant` axis — no filled or solid card — and no per-card tone. The **media** slot is a start-edge slot only; there is no addon band under the body. The card's title and description are strings unless you take over the whole body with the default block. There is no `size` axis.
|
|
39
|
+
|
|
40
|
+
## Accessibility
|
|
41
|
+
|
|
42
|
+
Governing pattern: a native radio group. The root is `role="radiogroup"` and takes `@label` as `aria-label`; each card is a `<label>` wrapping a real `<input type="radio">`, and every radio in the group shares one generated `name`.
|
|
43
|
+
|
|
44
|
+
What that buys, without any script: **the platform keyboard model.** Tab lands on the checked radio (or the first, when none is checked), arrow keys move the selection between cards and check as they go, and the roving tabindex is the browser's. Clicking anywhere on the card is a click on its label, which checks the radio.
|
|
45
|
+
|
|
46
|
+
- **Focus stays visible.** The input is positioned off the card at 1px with zero opacity — it is in the tab order and in the accessibility tree — and the card paints the focus ring itself through `:has(.pretui-optioncard-input:focus-visible)`.
|
|
47
|
+
- **The accessible name of each radio is the card's text**: title, description and meta, in that order, because all of it is inside the label. A long description makes a long announcement; that is the caller's to keep short.
|
|
48
|
+
- **The mark is `aria-hidden`.** It repeats the checked state visually and contributes nothing to the tree.
|
|
49
|
+
- **`data-selected` is a stamp, not a role.** Assistive tech reads the radio's own checked state.
|
|
50
|
+
- **A media block's content is inside the label**, so an icon with a text alternative becomes part of the radio's name. Pass `aria-hidden` on decorative icons.
|
|
51
|
+
|
|
52
|
+
The tests assert the radiogroup role, the shared name, one radio per label, the click-to-check path, disabled propagation and the data stamps. Arrow-key movement is the platform's and is not re-asserted.
|
|
53
|
+
|
|
54
|
+
## Theming
|
|
55
|
+
|
|
56
|
+
From the host theme: `--card` and `--card-foreground` (the card surface and its ink), `--border` (the resting hairline), `--hover` (the hover fill), `--primary` (the selected ring, halo and mark fill), `--primary-foreground` (unused on a radio mark; the checkbox check), `--field` and `--input` (the resting mark), `--ring` (the focus outline), `--muted-foreground` (description and meta).
|
|
57
|
+
|
|
58
|
+
Kit tokens, each named once on the card: `--space-4` (padding), `--space-3` (gap), `--text-ui-md` and `--text-ui-sm` (title and description), `--weight-strong` (title weight), `--radius-surface` (card radius), `--pretui-dur-snap` and `--pretui-ease-snap` (the ring and fill transitions), `--pretui-shadow-control` (the resting shadow), `--pretui-edge-highlight` (the inset highlight on a selected mark). The grid reads `--space-3` for its gap.
|
|
59
|
+
|
|
60
|
+
A theme retunes the selected treatment entirely through `--primary`; the 12% halo mix, the 15px mark and the 11rem minimum card width in `horizontal` are fixed.
|
|
61
|
+
|
|
62
|
+
## React ecosystem
|
|
63
|
+
|
|
64
|
+
| React | Pretui |
|
|
65
|
+
| ----------------------- | ------------------------------------------------------- |
|
|
66
|
+
| value / onChange | `@value` / `@onValueChange` (`@onChange` accepted) |
|
|
67
|
+
| defaultValue | `@defaultValue` |
|
|
68
|
+
| items | `@items` (alias of `@options`) |
|
|
69
|
+
| orientation | `@orientation` |
|
|
70
|
+
| disabled / isDisabled | `@disabled` / `@isDisabled` |
|
|
71
|
+
| RadioCard.Item children | the default block, yielded the option |
|
|
72
|
+
| ItemAddon / indicator | not separate — `meta` on the option and the corner mark |
|