@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,54 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A named-period parser: type `Q3`, `Jan 2026`, `W12` or `Fall 2025` and get a typed, sortable range.
|
|
4
|
+
|
|
5
|
+
It is the control for a field whose value is a *period* rather than a date — a reporting quarter, a fiscal year, a week number — where a calendar is the wrong shape entirely.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@value?, @defaultValue? — the period token ('2026-Q3') or any recognised text
|
|
11
|
+
@reference? — the instant a partial period like 'Q3' resolves against, YYYY-MM-DD
|
|
12
|
+
@locale? — BCP-47 tag for month names and the resolved range
|
|
13
|
+
@fiscalYearStart? — the calendar month a fiscal year starts in, 1–12. Default 1
|
|
14
|
+
@fiscalYearLabel? — whether a fiscal year is named for the year it starts or ends in
|
|
15
|
+
@hemisphere? — which hemisphere the season names describe
|
|
16
|
+
@label?, @hint?, @controlId?
|
|
17
|
+
@disabled?
|
|
18
|
+
@noStep? — hide the previous / next stepper
|
|
19
|
+
@quiet? — hide the accepted-forms line
|
|
20
|
+
@onChange? — fires with the resolved period, or undefined and the reason
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Without `@reference`, a partial period is refused with a message rather than resolved against the wall clock.** `Q3` alone is not a period — it is a quarter of some year — and guessing which year from the system clock produces a value that changes meaning on New Year's Day. Realm code may not read the clock, and this is the honest consequence.
|
|
24
|
+
|
|
25
|
+
**Fiscal years are configurable in both directions.** `@fiscalYearStart` says which month begins the year; `@fiscalYearLabel` says whether FY2026 is the one that *starts* in 2026 or the one that *ends* there. Both conventions are in use and neither is a default anyone can assume.
|
|
26
|
+
|
|
27
|
+
**`@hemisphere` decides what the season names mean.** "Fall 2025" is a different range in Sydney than in New York.
|
|
28
|
+
|
|
29
|
+
**`@onChange` reports the reason when there is no period**, so a form decides when to show it.
|
|
30
|
+
|
|
31
|
+
## Prior art
|
|
32
|
+
|
|
33
|
+
The kit's own `fields-configuration` month, quarter, week and year specs — four separate field types this replaces with one.
|
|
34
|
+
|
|
35
|
+
Where Pretui is better: one control instead of four, a real refusal rather than a clock-based guess, and fiscal and hemisphere conventions as configuration rather than as assumptions.
|
|
36
|
+
|
|
37
|
+
Where it is thinner: no range of periods ("Q1–Q3"), no custom period definitions beyond the built-in vocabulary, and no calendar affordance for a reader who would rather pick than type.
|
|
38
|
+
|
|
39
|
+
## Accessibility
|
|
40
|
+
|
|
41
|
+
- **The accepted-forms line is the component's most important affordance.** A permissive parser with no visible vocabulary is a guessing game; the line says what it understands, and `@quiet` should only remove it when the form says the same thing elsewhere.
|
|
42
|
+
- **The resolved range is announced through a polite `role='status'` region**, so a reader can confirm that `Q3` became the right three months.
|
|
43
|
+
- **The box carries `aria-invalid` and an `aria-describedby`** pointing at the explanation, so a refusal is both announced and located.
|
|
44
|
+
- **The stepper buttons are individually named** — previous and next period — and use `aria-disabled` so they stay announced at the bounds rather than disappearing.
|
|
45
|
+
- **`@hint` is ghost text behind the box, not a `placeholder` attribute**, so the field keeps its accessible name once typing starts.
|
|
46
|
+
- **A refused partial period explains why**, which is the difference between "that's not valid" and "say which year".
|
|
47
|
+
|
|
48
|
+
## Theming
|
|
49
|
+
|
|
50
|
+
`--pretui-destructive-ink` for the invalid state, over the kit's shared control tokens; the ghost text and the stepper take the standard muted and control treatments rather than component-specific values.
|
|
51
|
+
|
|
52
|
+
The deliberate absence of a token surface here is the point: a period field should be indistinguishable from a text field on the same form until it is used, so nothing about it is separately themeable.
|
|
53
|
+
|
|
54
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
// Pretui — PeriodInput usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { PERIOD_FORMS, PeriodInput, parsePeriod, periodRangeText } from './period-input';
|
|
6
|
+
import type { Period, PeriodResult } from './period-input';
|
|
7
|
+
|
|
8
|
+
const LOCALES = ['en-US', 'en-GB', 'de-DE', 'fr-FR', 'ja-JP'];
|
|
9
|
+
const FISCAL_STARTS = ['1', '4', '7', '10'];
|
|
10
|
+
const FISCAL_LABELS = ['start', 'end'];
|
|
11
|
+
const HEMISPHERES = ['north', 'south'];
|
|
12
|
+
|
|
13
|
+
interface SpecimenRow {
|
|
14
|
+
typed: string;
|
|
15
|
+
kind: string;
|
|
16
|
+
id: string;
|
|
17
|
+
range: string;
|
|
18
|
+
days: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
class PeriodInputUsage extends Component {
|
|
22
|
+
@tracked reference = '2026-08-13';
|
|
23
|
+
@tracked locale = 'en-US';
|
|
24
|
+
@tracked fiscalYearStart = '1';
|
|
25
|
+
@tracked fiscalYearLabel: 'start' | 'end' = 'start';
|
|
26
|
+
@tracked hemisphere: 'north' | 'south' = 'north';
|
|
27
|
+
@tracked seed = 'Q3 2026';
|
|
28
|
+
@tracked hint = 'Q3 2026';
|
|
29
|
+
@tracked label = 'Reporting period';
|
|
30
|
+
@tracked noStep = false;
|
|
31
|
+
@tracked quiet = false;
|
|
32
|
+
@tracked emitted = 'Nothing emitted yet.';
|
|
33
|
+
|
|
34
|
+
localeOptions = LOCALES;
|
|
35
|
+
fiscalStartOptions = FISCAL_STARTS;
|
|
36
|
+
fiscalLabelOptions = FISCAL_LABELS;
|
|
37
|
+
hemisphereOptions = HEMISPHERES;
|
|
38
|
+
|
|
39
|
+
setReference = (v: string) => (this.reference = v);
|
|
40
|
+
setLocale = (v: string) => (this.locale = v);
|
|
41
|
+
setFiscalStart = (v: string) => (this.fiscalYearStart = v);
|
|
42
|
+
setFiscalLabel = (v: string) => (this.fiscalYearLabel = v as 'start' | 'end');
|
|
43
|
+
setHemisphere = (v: string) => (this.hemisphere = v as 'north' | 'south');
|
|
44
|
+
setSeed = (v: string) => (this.seed = v);
|
|
45
|
+
setHint = (v: string) => (this.hint = v);
|
|
46
|
+
setLabel = (v: string) => (this.label = v);
|
|
47
|
+
setNoStep = (v: boolean) => (this.noStep = v);
|
|
48
|
+
setQuiet = (v: boolean) => (this.quiet = v);
|
|
49
|
+
|
|
50
|
+
take = (period: Period | undefined, result: PeriodResult) => {
|
|
51
|
+
if (period) {
|
|
52
|
+
this.emitted =
|
|
53
|
+
'onChange with ' + period.id + ' — ' + period.start + ' to ' + period.end;
|
|
54
|
+
} else if (result.empty) {
|
|
55
|
+
this.emitted = 'onChange with undefined — the box is empty.';
|
|
56
|
+
} else {
|
|
57
|
+
this.emitted = 'onChange with undefined — ' + (result.issue ?? '');
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
get fiscalStartNumber(): number {
|
|
62
|
+
return Number(this.fiscalYearStart);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
get options() {
|
|
66
|
+
return {
|
|
67
|
+
reference: this.reference,
|
|
68
|
+
locale: this.locale,
|
|
69
|
+
fiscalYearStart: this.fiscalStartNumber,
|
|
70
|
+
fiscalYearLabel: this.fiscalYearLabel,
|
|
71
|
+
hemisphere: this.hemisphere,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Every documented form, resolved under the current conventions. */
|
|
76
|
+
get specimens(): SpecimenRow[] {
|
|
77
|
+
let forms = PERIOD_FORMS.concat(['Q3', 'Winter 2026']);
|
|
78
|
+
return forms.map((typed) => {
|
|
79
|
+
let result = parsePeriod(typed, this.options);
|
|
80
|
+
let period = result.period;
|
|
81
|
+
return {
|
|
82
|
+
typed,
|
|
83
|
+
kind: period ? period.kind : '—',
|
|
84
|
+
id: period ? period.id : '—',
|
|
85
|
+
range: period
|
|
86
|
+
? periodRangeText(period, this.locale)
|
|
87
|
+
: (result.issue ?? ''),
|
|
88
|
+
days: period ? String(period.days) : '',
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
get usage(): string {
|
|
94
|
+
return (
|
|
95
|
+
'<PeriodInput' +
|
|
96
|
+
" @reference='" +
|
|
97
|
+
this.reference +
|
|
98
|
+
"'" +
|
|
99
|
+
" @fiscalYearStart=" +
|
|
100
|
+
'{{' +
|
|
101
|
+
this.fiscalYearStart +
|
|
102
|
+
'}}' +
|
|
103
|
+
' @onChange={{this.take}} />'
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
<template>
|
|
108
|
+
<FreestyleUsage
|
|
109
|
+
@name='PeriodInput'
|
|
110
|
+
@description='Type Q3, Jan 2026, W12 or Summer 2025 and get a typed period back — a kind, a year, an inclusive date range and a key that sorts. Not a date picker and not a duration: a period is a NAME for a span of the calendar that a reader already knows. Every convention that has no universal answer is a knob, including the one that matters most: with no reference instant, a partial period is refused rather than resolved against the wall clock.'
|
|
111
|
+
@source={{this.usage}}
|
|
112
|
+
>
|
|
113
|
+
<:example>
|
|
114
|
+
<div class='pretui-perioddemo'>
|
|
115
|
+
<PeriodInput
|
|
116
|
+
@defaultValue={{this.seed}}
|
|
117
|
+
@reference={{this.reference}}
|
|
118
|
+
@locale={{this.locale}}
|
|
119
|
+
@fiscalYearStart={{this.fiscalStartNumber}}
|
|
120
|
+
@fiscalYearLabel={{this.fiscalYearLabel}}
|
|
121
|
+
@hemisphere={{this.hemisphere}}
|
|
122
|
+
@label={{this.label}}
|
|
123
|
+
@hint={{this.hint}}
|
|
124
|
+
@noStep={{this.noStep}}
|
|
125
|
+
@quiet={{this.quiet}}
|
|
126
|
+
@onChange={{this.take}}
|
|
127
|
+
/>
|
|
128
|
+
<p class='pretui-perioddemo-note'>{{this.emitted}}</p>
|
|
129
|
+
|
|
130
|
+
<p class='pretui-perioddemo-cap'>Every form, under the current
|
|
131
|
+
conventions</p>
|
|
132
|
+
<ul class='pretui-perioddemo-table'>
|
|
133
|
+
{{#each this.specimens key='typed' as |row|}}
|
|
134
|
+
<li class='pretui-perioddemo-row'>
|
|
135
|
+
<span class='pretui-perioddemo-typed'>{{row.typed}}</span>
|
|
136
|
+
<span class='pretui-perioddemo-kind'>{{row.kind}}</span>
|
|
137
|
+
<span class='pretui-perioddemo-id'>{{row.id}}</span>
|
|
138
|
+
<span class='pretui-perioddemo-range'>{{row.range}}</span>
|
|
139
|
+
<span class='pretui-perioddemo-days'>{{row.days}}</span>
|
|
140
|
+
</li>
|
|
141
|
+
{{/each}}
|
|
142
|
+
</ul>
|
|
143
|
+
</div>
|
|
144
|
+
</:example>
|
|
145
|
+
<:api as |Args|>
|
|
146
|
+
<Args.String
|
|
147
|
+
@name='reference'
|
|
148
|
+
@value={{this.reference}}
|
|
149
|
+
@description='The instant a partial period like Q3 resolves against. Clear it and every partial form in the table below turns into a request for a year — which is the honest behaviour, because nothing here reads the clock and a card that guessed would index differently every time.'
|
|
150
|
+
@onInput={{this.setReference}}
|
|
151
|
+
/>
|
|
152
|
+
<Args.String
|
|
153
|
+
@name='fiscalYearStart'
|
|
154
|
+
@value={{this.fiscalYearStart}}
|
|
155
|
+
@options={{this.fiscalStartOptions}}
|
|
156
|
+
@defaultValue='1'
|
|
157
|
+
@description='The calendar month a fiscal year starts in. 1 is the calendar year. Move it to 7 and Q1 becomes July to September.'
|
|
158
|
+
@onInput={{this.setFiscalStart}}
|
|
159
|
+
/>
|
|
160
|
+
<Args.String
|
|
161
|
+
@name='fiscalYearLabel'
|
|
162
|
+
@value={{this.fiscalYearLabel}}
|
|
163
|
+
@options={{this.fiscalLabelOptions}}
|
|
164
|
+
@defaultValue='start'
|
|
165
|
+
@description='Whether a fiscal year is named for the calendar year it starts in or the one it ends in. There is genuinely no universal answer, so it is a knob rather than an assumption. Irrelevant while fiscalYearStart is 1.'
|
|
166
|
+
@onInput={{this.setFiscalLabel}}
|
|
167
|
+
/>
|
|
168
|
+
<Args.String
|
|
169
|
+
@name='hemisphere'
|
|
170
|
+
@value={{this.hemisphere}}
|
|
171
|
+
@options={{this.hemisphereOptions}}
|
|
172
|
+
@defaultValue='north'
|
|
173
|
+
@description='Which hemisphere the season names describe. These are the meteorological seasons — three whole months each, no gaps and no overlaps, which is what makes a season a period at all.'
|
|
174
|
+
@onInput={{this.setHemisphere}}
|
|
175
|
+
/>
|
|
176
|
+
<Args.String
|
|
177
|
+
@name='locale'
|
|
178
|
+
@value={{this.locale}}
|
|
179
|
+
@options={{this.localeOptions}}
|
|
180
|
+
@defaultValue='en-US'
|
|
181
|
+
@description='Decides which month names are understood and how the resolved range is written. English month names are always accepted as well, so a reader typing Mar into a German form is never told off.'
|
|
182
|
+
@onInput={{this.setLocale}}
|
|
183
|
+
/>
|
|
184
|
+
<Args.String
|
|
185
|
+
@name='defaultValue'
|
|
186
|
+
@value={{this.seed}}
|
|
187
|
+
@description='The initial text. A resolved period is normalised on commit, so q3 2026 becomes Q3 2026 and the reader can see it was understood.'
|
|
188
|
+
@onInput={{this.setSeed}}
|
|
189
|
+
/>
|
|
190
|
+
<Args.String
|
|
191
|
+
@name='hint'
|
|
192
|
+
@value={{this.hint}}
|
|
193
|
+
@description='Ghost text behind an empty box. Not a placeholder attribute — a placeholder doubles as the accessible name and vanishes on the first keystroke.'
|
|
194
|
+
@onInput={{this.setHint}}
|
|
195
|
+
/>
|
|
196
|
+
<Args.String
|
|
197
|
+
@name='label'
|
|
198
|
+
@value={{this.label}}
|
|
199
|
+
@defaultValue='Period'
|
|
200
|
+
@description='The accessible name, ignored when a Field wrapper supplied a controlId.'
|
|
201
|
+
@onInput={{this.setLabel}}
|
|
202
|
+
/>
|
|
203
|
+
<Args.Bool
|
|
204
|
+
@name='noStep'
|
|
205
|
+
@value={{this.noStep}}
|
|
206
|
+
@defaultValue={{false}}
|
|
207
|
+
@description='Hide the previous / next stepper. It moves the period by one of its OWN kind, so the next quarter after Q4 is Q1 of the following year and the next week after week 53 depends on how many weeks the year has. Up and down arrows do the same from the keyboard.'
|
|
208
|
+
@onInput={{this.setNoStep}}
|
|
209
|
+
/>
|
|
210
|
+
<Args.Bool
|
|
211
|
+
@name='quiet'
|
|
212
|
+
@value={{this.quiet}}
|
|
213
|
+
@defaultValue={{false}}
|
|
214
|
+
@description='Hide the accepted-forms line. The resolved-range row is reserved space either way.'
|
|
215
|
+
@onInput={{this.setQuiet}}
|
|
216
|
+
/>
|
|
217
|
+
<Args.Base
|
|
218
|
+
@name='Period'
|
|
219
|
+
@typeLabel='Interface'
|
|
220
|
+
@description='kind, id, year, index, start, end, days, label, and sortKey. The id sorts within a kind; sortKey is the start date and sorts across kinds, which an id cannot.'
|
|
221
|
+
@hideControls={{true}}
|
|
222
|
+
/>
|
|
223
|
+
<Args.Action
|
|
224
|
+
@name='onChange'
|
|
225
|
+
@description='Fires on every keystroke with the resolved period, or undefined and the reason there is not one. The reason is computed immediately and only SHOWN after a commit, because telling a reader that Ja is not a month while they are typing January is how a parsing input becomes unusable.'
|
|
226
|
+
/>
|
|
227
|
+
</:api>
|
|
228
|
+
</FreestyleUsage>
|
|
229
|
+
<style scoped>
|
|
230
|
+
.pretui-perioddemo {
|
|
231
|
+
display: grid;
|
|
232
|
+
gap: var(--space-3, 8px);
|
|
233
|
+
max-width: 560px;
|
|
234
|
+
}
|
|
235
|
+
.pretui-perioddemo-note {
|
|
236
|
+
margin: 0;
|
|
237
|
+
min-height: 1.4em;
|
|
238
|
+
font-family: var(--font-mono);
|
|
239
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
240
|
+
color: var(--muted-foreground);
|
|
241
|
+
}
|
|
242
|
+
.pretui-perioddemo-cap {
|
|
243
|
+
margin: var(--space-3, 8px) 0 0;
|
|
244
|
+
font-size: var(--text-ui-xs, 10.5px);
|
|
245
|
+
letter-spacing: 0.08em;
|
|
246
|
+
text-transform: uppercase;
|
|
247
|
+
color: var(--muted-foreground);
|
|
248
|
+
}
|
|
249
|
+
.pretui-perioddemo-table {
|
|
250
|
+
margin: 0;
|
|
251
|
+
padding: 0;
|
|
252
|
+
list-style: none;
|
|
253
|
+
display: grid;
|
|
254
|
+
gap: 1px;
|
|
255
|
+
}
|
|
256
|
+
.pretui-perioddemo-row {
|
|
257
|
+
display: grid;
|
|
258
|
+
grid-template-columns: 6.5rem 4rem 5.5rem 1fr 2.5rem;
|
|
259
|
+
align-items: baseline;
|
|
260
|
+
gap: var(--space-2, 6px);
|
|
261
|
+
padding: 3px 0;
|
|
262
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
263
|
+
font-variant-numeric: tabular-nums;
|
|
264
|
+
}
|
|
265
|
+
.pretui-perioddemo-typed {
|
|
266
|
+
font-family: var(--font-mono);
|
|
267
|
+
color: var(--foreground);
|
|
268
|
+
}
|
|
269
|
+
.pretui-perioddemo-kind,
|
|
270
|
+
.pretui-perioddemo-id {
|
|
271
|
+
color: var(--muted-foreground);
|
|
272
|
+
overflow: hidden;
|
|
273
|
+
text-overflow: ellipsis;
|
|
274
|
+
white-space: nowrap;
|
|
275
|
+
min-width: 0;
|
|
276
|
+
}
|
|
277
|
+
.pretui-perioddemo-range {
|
|
278
|
+
min-width: 0;
|
|
279
|
+
overflow: hidden;
|
|
280
|
+
text-overflow: ellipsis;
|
|
281
|
+
white-space: nowrap;
|
|
282
|
+
color: var(--foreground);
|
|
283
|
+
}
|
|
284
|
+
.pretui-perioddemo-days {
|
|
285
|
+
text-align: end;
|
|
286
|
+
color: var(--muted-foreground);
|
|
287
|
+
}
|
|
288
|
+
@container (max-width: 420px) {
|
|
289
|
+
.pretui-perioddemo-row {
|
|
290
|
+
grid-template-columns: 1fr 1fr;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
</style>
|
|
294
|
+
</template>
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export const DEMOS_PERIOD_INPUT: Record<string, unknown> = {
|
|
298
|
+
PeriodInput: PeriodInputUsage,
|
|
299
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Pretui — PhoneInput: boxel-ui's formatted phone field in Pretui cloth.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { PhoneInput as BoxelPhoneInput } from '@cardstack/boxel-ui/components';
|
|
4
|
+
import type { NormalizePhoneFormatResult } from '@cardstack/boxel-ui/helpers';
|
|
5
|
+
import { emit, firstDefined } from '../pretui-primitives';
|
|
6
|
+
import type { ControlAliasArgs } from '../pretui-primitives';
|
|
7
|
+
|
|
8
|
+
// Same wrap as EmailInput: boxel-ui's awesome-phonenumber machinery
|
|
9
|
+
// (as-you-type formatting, E.164 normalization, region validation) intact,
|
|
10
|
+
// Pretui cloth via the token channel. onChange's NormalizePhoneFormatResult
|
|
11
|
+
// collapses to @onValidation(errorMessage | null); @onInput receives the
|
|
12
|
+
// sanitized value boxel emits (E.164 when valid, trimmed digits otherwise).
|
|
13
|
+
|
|
14
|
+
export interface PhoneInputSignature {
|
|
15
|
+
Args: ControlAliasArgs & {
|
|
16
|
+
value?: string;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
required?: boolean;
|
|
20
|
+
controlId?: string;
|
|
21
|
+
onInput?: (value: string) => void;
|
|
22
|
+
onValidation?: (error: string | null) => void;
|
|
23
|
+
};
|
|
24
|
+
Element: HTMLDivElement;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class PhoneInput extends Component<PhoneInputSignature> {
|
|
28
|
+
get boxelValue() {
|
|
29
|
+
return this.args.value ?? null;
|
|
30
|
+
}
|
|
31
|
+
get disabled() {
|
|
32
|
+
return firstDefined(this.args.disabled, this.args.isDisabled);
|
|
33
|
+
}
|
|
34
|
+
get required() {
|
|
35
|
+
return firstDefined(this.args.required, this.args.isRequired);
|
|
36
|
+
}
|
|
37
|
+
handleChange = (
|
|
38
|
+
value: string | null,
|
|
39
|
+
validation: NormalizePhoneFormatResult | null,
|
|
40
|
+
_ev: Event,
|
|
41
|
+
) => {
|
|
42
|
+
emit(
|
|
43
|
+
[this.args.onInput, this.args.onChange, this.args.onValueChange],
|
|
44
|
+
value ?? '',
|
|
45
|
+
);
|
|
46
|
+
this.args.onValidation?.(
|
|
47
|
+
validation && !validation.ok ? validation.error.message : null,
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
<template>
|
|
51
|
+
<div class='pretui-boxelwrap' data-test-pretui-phone-input ...attributes>
|
|
52
|
+
<BoxelPhoneInput
|
|
53
|
+
@value={{this.boxelValue}}
|
|
54
|
+
@onChange={{this.handleChange}}
|
|
55
|
+
@placeholder={{@placeholder}}
|
|
56
|
+
@disabled={{this.disabled}}
|
|
57
|
+
@required={{this.required}}
|
|
58
|
+
id={{@controlId}}
|
|
59
|
+
/>
|
|
60
|
+
</div>
|
|
61
|
+
<style scoped>
|
|
62
|
+
@layer PretComponent {
|
|
63
|
+
/* Same re-skin channel as EmailInput — see that component's note. */
|
|
64
|
+
.pretui-boxelwrap {
|
|
65
|
+
width: 100%;
|
|
66
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
67
|
+
letter-spacing: var(--track-ui, 0.01em);
|
|
68
|
+
--background: var(--field, var(--boxel-light));
|
|
69
|
+
--border: var(--input);
|
|
70
|
+
--ring: var(--primary);
|
|
71
|
+
--boxel-form-control-height: var(--control-h, 28px);
|
|
72
|
+
--boxel-input-height: var(--control-h, 28px);
|
|
73
|
+
--boxel-form-control-border-radius: var(--radius);
|
|
74
|
+
--boxel-sp-xs: 5px;
|
|
75
|
+
--boxel-sp-sm: 9px;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
</style>
|
|
79
|
+
</template>
|
|
80
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A phone-number field with as-you-type formatting, E.164 normalisation and region-aware validation. Use it whenever a phone number is collected — the formatting alone is worth it, because a number typed as a continuous digit string is much harder to check by eye than one grouped by the user's region. Do not reach for plain **Input** with `type='tel'`: that gives you a numeric keypad and nothing else.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@value?, @placeholder?, @disabled?, @required?, @controlId?
|
|
9
|
+
@onInput?(value: string)
|
|
10
|
+
@onValidation?(error: string | null)
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Identical in shape to **EmailInput**, **UrlInput** and the rest of the typed-input family — which is the point. They are interchangeable at a call site, and learning one teaches the others.
|
|
14
|
+
|
|
15
|
+
**The two-callback split** is the same adaptation: boxel-ui's underlying control returns a `NormalizePhoneFormatResult` from its `onChange`, carrying the formatted value, the normalised E.164 form and any validation state in one object. Pretui collapses that into `@onInput(value)` — the same signature as every other control in the kit — plus `@onValidation(error | null)`.
|
|
16
|
+
|
|
17
|
+
Worth being precise about what `@onInput` receives, because it determines what you store: it is the field's value as the user sees it, not necessarily the E.164 normalisation. If you need the canonical form for storage or comparison, read it from the boxel-ui layer rather than assuming the displayed string is it.
|
|
18
|
+
|
|
19
|
+
`@value` is passed through as `null` when undefined, matching the underlying control's expectation.
|
|
20
|
+
|
|
21
|
+
## Prior art
|
|
22
|
+
|
|
23
|
+
A **thin runtime wrap of boxel-ui's phone input**, whose machinery is `awesome-phonenumber` — a port of Google's libphonenumber. That is the value being reused: as-you-type formatting per region, E.164 normalisation, and validity checks that know a UK mobile from a UK landline. Reimplementing any of that is a multi-year mistake.
|
|
24
|
+
|
|
25
|
+
Against the field: **Web Awesome**, **Radix**, **React Spectrum** and **shadcn** all ship nothing here. Phone input is universally left to `react-phone-number-input`, `intl-tel-input` or an in-house regex — and the regex version is always wrong. So the comparison is: a real libphonenumber-backed field, dressed to match the kit, versus rolling your own.
|
|
26
|
+
|
|
27
|
+
Where Pretui adds over boxel-ui: the callback split, and API consistency with the family.
|
|
28
|
+
|
|
29
|
+
What is **not** exposed, and is the honest gap: **no country selector, no `@region` arg, no `@format` choice.** Every mature phone input has a flag dropdown that sets the parsing region, and there is none here — the region is whatever the underlying control defaults to. For an international form that is a real limitation, and the workaround is composing **InputGroup** with a **Select** yourself.
|
|
30
|
+
|
|
31
|
+
## Accessibility
|
|
32
|
+
|
|
33
|
+
Native `<input type="tel">` underneath; no APG pattern.
|
|
34
|
+
|
|
35
|
+
What is right: `type="tel"` gives mobile users the numeric keypad and gives assistive tech the field's purpose.
|
|
36
|
+
|
|
37
|
+
Gaps, and the first two are specific to phone fields:
|
|
38
|
+
|
|
39
|
+
- **As-you-type formatting rewrites the field while the user types**, which is exactly the interaction screen readers and voice-input users handle worst — characters are inserted that the user did not type, and the caret moves. Verify what your target readers announce during input; this is a known-hard interaction and boxel-ui owns the implementation, so Pretui can neither guarantee nor fix it. If it is a problem, formatting on blur rather than on input is the accessible fallback.
|
|
40
|
+
- **No `autocomplete="tel"`**, and no arg for it. **WCAG 1.3.5 Identify Input Purpose** (AA) requires it for a field collecting the user's own phone number, and it must currently be passed through `...attributes`. Family-wide hole.
|
|
41
|
+
- **The ARIA wiring is boxel-ui's** and this wrapper adds none — whether the validation error reaches `aria-describedby` depends on the boxel-ui version. Verify it. The ecosystem's settled choice is `aria-describedby` over `aria-errormessage`, which VoiceOver and NVDA still handle poorly.
|
|
42
|
+
- **No accessible name of its own.** Outside **Field**/**FormField** and without an explicit `aria-label`, the field is unnamed.
|
|
43
|
+
- **`@onValidation` is a callback, not rendered output** — no `@errorMessage`/`@helperText` args here, unlike **Input**. If you drop the error, the field can show an invalid dress with nothing announced. Route it into a **FormField**.
|
|
44
|
+
- **No visible format hint.** A user who does not know whether to include a country code has no instruction, which is a **WCAG 3.3.2 Labels or Instructions** concern. Use **FormField**'s `@description`.
|
|
45
|
+
- **`@disabled` uses the native attribute**, removing the field from the tab order.
|
|
46
|
+
|
|
47
|
+
## Theming
|
|
48
|
+
|
|
49
|
+
Consumed: `--field`, `--input`, `--primary` (focus ring via `--ring`), `--ink-3` (placeholder), `--control-h`, `--radius`, `--text-ui-md`, `--text-ui-sm`, `--text-ui-xs`, `--track-ui`.
|
|
50
|
+
|
|
51
|
+
Forwarded into boxel-ui through the `--boxel-*` channel — the same height, radius, type-size and spacing knobs **Input** sets, so a phone field and a text field in the same form are pixel-identical.
|
|
52
|
+
|
|
53
|
+
An inline `style` carries font inheritance (the UA font on native controls is one of the two places the token channel cannot reach). The invalid dress arrives from an enclosing **Field** by repointing `--border` and `--background`, so it works here without this component knowing about it — and the same mechanism means a theme redefines "invalid" once for the whole family.
|
|
54
|
+
|
|
55
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Pretui — PhoneInput usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { PhoneInput } from './phone-input';
|
|
6
|
+
|
|
7
|
+
// ── PhoneInput ← phone-input/usage.gts ───────────────────────────────────
|
|
8
|
+
// Dropped knobs: none upstream — the full set carries over. Same surface
|
|
9
|
+
// adaptation as EmailInput: @onChange(value, NormalizePhoneFormatResult,
|
|
10
|
+
// ev) splits into @onInput(value) + @onValidation(errorMessage | null).
|
|
11
|
+
// @onInput receives boxel's sanitized value: E.164 when valid, trimmed
|
|
12
|
+
// digits otherwise.
|
|
13
|
+
class PhoneInputUsage extends Component {
|
|
14
|
+
@tracked value = '';
|
|
15
|
+
@tracked lastError: string | null = null;
|
|
16
|
+
@tracked placeholder = '';
|
|
17
|
+
@tracked disabled = false;
|
|
18
|
+
@tracked required = false;
|
|
19
|
+
setValue = (v: string) => (this.value = v);
|
|
20
|
+
setError = (e: string | null) => (this.lastError = e);
|
|
21
|
+
setPlaceholder = (v: string) => (this.placeholder = v);
|
|
22
|
+
setDisabled = (v: boolean) => (this.disabled = v);
|
|
23
|
+
setRequired = (v: boolean) => (this.required = v);
|
|
24
|
+
get usage() {
|
|
25
|
+
let bits = [`@value='${this.value}'`];
|
|
26
|
+
if (this.required) bits.push('@required={{true}}');
|
|
27
|
+
bits.push('@onInput={{this.setValue}}', '@onValidation={{this.setError}}');
|
|
28
|
+
return `<PhoneInput ${bits.join(' ')} />`;
|
|
29
|
+
}
|
|
30
|
+
<template>
|
|
31
|
+
<FreestyleUsage
|
|
32
|
+
@name='PhoneInput'
|
|
33
|
+
@description="Wraps boxel-ui's PhoneInput — as-you-type formatting, E.164 normalization, and region validation via awesome-phonenumber — re-dressed through the Pretui token channel. Sanitized values arrive via @onInput; the current validation error message (or null) via @onValidation."
|
|
34
|
+
@source={{this.usage}}
|
|
35
|
+
>
|
|
36
|
+
<:example>
|
|
37
|
+
<PhoneInput
|
|
38
|
+
@value={{this.value}}
|
|
39
|
+
@placeholder={{this.placeholder}}
|
|
40
|
+
@disabled={{this.disabled}}
|
|
41
|
+
@required={{this.required}}
|
|
42
|
+
@onInput={{this.setValue}}
|
|
43
|
+
@onValidation={{this.setError}}
|
|
44
|
+
/>
|
|
45
|
+
</:example>
|
|
46
|
+
<:api as |Args|>
|
|
47
|
+
<Args.String
|
|
48
|
+
@name='value'
|
|
49
|
+
@optional={{true}}
|
|
50
|
+
@value={{this.value}}
|
|
51
|
+
@description='The current value passed to the input'
|
|
52
|
+
@onInput={{this.setValue}}
|
|
53
|
+
/>
|
|
54
|
+
<Args.String
|
|
55
|
+
@name='placeholder'
|
|
56
|
+
@defaultValue='Enter phone'
|
|
57
|
+
@value={{this.placeholder}}
|
|
58
|
+
@description='Empty input placeholder'
|
|
59
|
+
@onInput={{this.setPlaceholder}}
|
|
60
|
+
/>
|
|
61
|
+
<Args.Bool
|
|
62
|
+
@name='disabled'
|
|
63
|
+
@value={{this.disabled}}
|
|
64
|
+
@onInput={{this.setDisabled}}
|
|
65
|
+
/>
|
|
66
|
+
<Args.Bool
|
|
67
|
+
@name='required'
|
|
68
|
+
@value={{this.required}}
|
|
69
|
+
@description='Empty input counts as invalid once required.'
|
|
70
|
+
@onInput={{this.setRequired}}
|
|
71
|
+
/>
|
|
72
|
+
<Args.String
|
|
73
|
+
@name='controlId'
|
|
74
|
+
@description="The input's id for label wiring — supplied by a wrapping Field's yielded controlId."
|
|
75
|
+
/>
|
|
76
|
+
<Args.Action
|
|
77
|
+
@name='onInput'
|
|
78
|
+
@description='Receives the sanitized value as a string: E.164 when valid, trimmed digits otherwise.'
|
|
79
|
+
/>
|
|
80
|
+
<Args.Action
|
|
81
|
+
@name='onValidation'
|
|
82
|
+
@description="Receives the current validation error message, or null when valid/empty — boxel-ui's NormalizePhoneFormatResult, collapsed to its error message."
|
|
83
|
+
/>
|
|
84
|
+
</:api>
|
|
85
|
+
</FreestyleUsage>
|
|
86
|
+
</template>
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export const DEMOS_PHONE_INPUT: Record<string, unknown> = {
|
|
90
|
+
PhoneInput: PhoneInputUsage,
|
|
91
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
**OtpInput** under the name Mantine and Chakra use. The export is the same class — `import { PinInput } from './pin-input';` resolves to OtpInput — so the tile exists for a port of a Mantine `PinInput` or an agent whose first guess is that word. The contract and the depth, including a known focus defect, are on **OtpInput**; this page maps the Mantine and shadcn names onto it. For a code with a resend or expiry affordance, the surrounding form owns those.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@length? — segment count (default 6); Mantine length, shadcn maxLength
|
|
9
|
+
@value?, @defaultValue?
|
|
10
|
+
@type? — allowed character class (default 'numeric'); Mantine type
|
|
11
|
+
@masked? — password dots; Mantine mask
|
|
12
|
+
@disabled?
|
|
13
|
+
@label? — group label announced by assistive tech (default 'One-time code')
|
|
14
|
+
@onValueChange? — every edit, with the joined dense string
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**There is no `onComplete`.** Mantine and Chakra fire a second callback when the last slot lands; here the caller compares the emitted string's length to `@length` inside `@onValueChange`.
|
|
18
|
+
|
|
19
|
+
## Prior art
|
|
20
|
+
|
|
21
|
+
**Mantine `PinInput`** has `length`, `type` (`'number' | 'alphanumeric'` or a RegExp), `mask`, `placeholder`, `oneTimeCode` (sets `autocomplete`), `onComplete`, `error`, `size` and `radius`. **Chakra `PinInput`** is the same shape with `otp`, `manageFocus` and `placeholder`. **shadcn `InputOTP`** wraps input-otp: one hidden input over rendered slots, `maxLength`, `pattern`, and groups with separators.
|
|
22
|
+
|
|
23
|
+
Where this is better: the emitted value is always dense, so a caller never compacts a string with holes, and completion is announced through a status region rather than carried by colour alone.
|
|
24
|
+
|
|
25
|
+
Where it is thinner: no `placeholder`, no separator groups, no `error` state, no size or radius knobs, and the defect the OtpInput writeup records — every keystroke recreates the slot inputs and drops focus to the document, which makes keyboard entry close to unusable until it is fixed.
|
|
26
|
+
|
|
27
|
+
## Accessibility
|
|
28
|
+
|
|
29
|
+
OtpInput's: the slots sit in a `role='group'` named by `@label`, each slot is named "Digit N of M", and completion is announced once, politely, through a visually hidden status region. The focus loss on every keystroke is an accessibility defect first, and it is the alias's too.
|
|
30
|
+
|
|
31
|
+
## Theming
|
|
32
|
+
|
|
33
|
+
OtpInput's: `--pretui-otp-size` and `--pretui-otp-gap` for slot dimensions and spacing, over the kit's `--pretui-shadow-control` and `--pretui-shadow-inset` for the slot surfaces. Nothing is themed under a PinInput name.
|
|
34
|
+
|
|
35
|
+
## React ecosystem
|
|
36
|
+
|
|
37
|
+
| Mantine / Chakra / shadcn | Pretui |
|
|
38
|
+
| ---------------------------------------------- | -------------------------------------------- |
|
|
39
|
+
| `length` / `maxLength` | `@length` |
|
|
40
|
+
| `value` / `onChange` | `@value` / `@onValueChange` |
|
|
41
|
+
| `onComplete` | compare the emitted length to `@length` |
|
|
42
|
+
| `type` / `pattern` | `@type` (`numeric`, `alpha`, `alphanumeric`) |
|
|
43
|
+
| `mask` | `@masked` |
|
|
44
|
+
| `oneTimeCode` / `otp` | not offered |
|
|
45
|
+
| `placeholder`, `error`, groups with separators | not offered |
|