@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,63 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A displayed value that becomes an editable field, then commits or cancels.
|
|
4
|
+
|
|
5
|
+
Use it where a value is usually read and occasionally changed — a title, a note, a field on a record detail. For a value that is always being edited, use the field directly.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@value? — the committed value
|
|
11
|
+
@label (required) — the field's name
|
|
12
|
+
@placeholder? — shown, muted, when the value is empty. Default 'Empty'
|
|
13
|
+
@editing?, @defaultEditing?, @onEditingChange? — controlled / uncontrolled mode
|
|
14
|
+
@onCommit? — fires with the draft; RETURN FALSE to refuse and stay in edit mode
|
|
15
|
+
@onCancel? — fires on Escape or an explicit Cancel
|
|
16
|
+
@onDraftChange? — live draft channel, for a caller mirroring the draft elsewhere
|
|
17
|
+
@invalid?, @error? — rejected state and the message under the editor
|
|
18
|
+
@canEdit? — not editable: renders the display content bare, with no chrome
|
|
19
|
+
@activateOn? — 'row' also activates on a click in the display. Never the only path
|
|
20
|
+
@commitOn? — 'blur' (default) commits on leaving; 'action' renders Save / Cancel
|
|
21
|
+
and ignores blur
|
|
22
|
+
@multiline? — Enter inserts a newline; ⌘/Ctrl-Enter commits
|
|
23
|
+
@announce? — announce the mode change politely. Default true
|
|
24
|
+
@saveLabel?, @cancelLabel?
|
|
25
|
+
|
|
26
|
+
<:display> — the resting presentation; any content, never wrapped in a control
|
|
27
|
+
<:editor> — the editor, receiving a draft api. Omit for a Pretui Input
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Returning `false` from `@onCommit` refuses the commit and stays in edit mode.** That is the honest way for a caller to reject a value without a validation framework — the draft is not lost and the reader is not ejected.
|
|
31
|
+
|
|
32
|
+
**`@label` is required** because an unnamed in-place editor is an unnamed editor: it supplies both the visually-hidden label and the trigger's name.
|
|
33
|
+
|
|
34
|
+
**`@activateOn='row'` is pointer convenience and never the only path.** There is always a real trigger; click-the-text is an addition to it.
|
|
35
|
+
|
|
36
|
+
**`@commitOn='action'` ignores blur entirely.** Commit-on-blur is right for a quick title edit and wrong for anything a reader might tab out of to check something.
|
|
37
|
+
|
|
38
|
+
**`<:display>` is never wrapped in a control**, which is what lets arbitrary content — a chip, a link, a formatted value — be the resting state without nesting interactives.
|
|
39
|
+
|
|
40
|
+
## Prior art
|
|
41
|
+
|
|
42
|
+
**boxel-catalog's blog-app editable-field.**
|
|
43
|
+
|
|
44
|
+
Where Pretui is better: the refusal path, the explicit commit mode, and the display block not being wrapped in a button — the source wrapped its display content, which made a link inside it unreachable.
|
|
45
|
+
|
|
46
|
+
Where it is thinner: no optimistic state, no undo after commit, and no draft persistence across unmount — cancel means the draft is gone.
|
|
47
|
+
|
|
48
|
+
## Accessibility
|
|
49
|
+
|
|
50
|
+
- **The mode change is announced politely by default.** Moving from reading to editing is a change a screen-reader user cannot see, and silence is the common failure.
|
|
51
|
+
- **There is always a real trigger**, so entering edit mode never depends on clicking text.
|
|
52
|
+
- **`@error` is announced and referenced by `aria-describedby`**, so a refusal is both heard and located.
|
|
53
|
+
- **Escape cancels**, and `@commitOn='action'` gives an explicit Cancel for readers who do not use it.
|
|
54
|
+
- **`@multiline` changes what Enter means**, and says so: Enter inserts a newline, ⌘/Ctrl-Enter commits. A multiline editor that commits on Enter is unusable.
|
|
55
|
+
- **`@canEdit={{false}}` renders the display bare, with no chrome at all** — not a disabled control, just the value, which is what a read-only row should be.
|
|
56
|
+
|
|
57
|
+
## Theming
|
|
58
|
+
|
|
59
|
+
`--pretui-destructive-ink` for the rejected state, `--pretui-radius-encroach` for the editor's fit against the display box, and the shared `--pretui-dur-snap` / `--pretui-ease-snap` for the mode transition.
|
|
60
|
+
|
|
61
|
+
`--pretui-radius-encroach` is the detail that makes the swap look deliberate: the editor has to sit inside the space the display occupied without the corners disagreeing, and a shared encroachment value is what keeps that consistent across every in-place editor in a theme.
|
|
62
|
+
|
|
63
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// Pretui — EditInPlace usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { EditInPlace } from './edit-in-place';
|
|
5
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
6
|
+
import { Select } from './select';
|
|
7
|
+
import type { SelectOption } from './select';
|
|
8
|
+
|
|
9
|
+
const ACTIVATIONS = ['button', 'row'];
|
|
10
|
+
const COMMIT_MODES = ['blur', 'action'];
|
|
11
|
+
|
|
12
|
+
// ── EditInPlace ──────────────────────────────────────────────────────────
|
|
13
|
+
// Dropped upstream surface: dblclick activation (no touch equivalent, no
|
|
14
|
+
// visible affordance) and the outside-click timer.
|
|
15
|
+
class EditInPlaceUsage extends Component {
|
|
16
|
+
activations = ACTIVATIONS;
|
|
17
|
+
commitModes = COMMIT_MODES;
|
|
18
|
+
statuses: SelectOption[] = [
|
|
19
|
+
{ value: 'draft', label: 'Draft' },
|
|
20
|
+
{ value: 'review', label: 'In review' },
|
|
21
|
+
{ value: 'live', label: 'Published' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
@tracked title = 'Quarterly revenue review';
|
|
25
|
+
@tracked status = 'draft';
|
|
26
|
+
@tracked activateOn = 'button';
|
|
27
|
+
@tracked commitOn = 'blur';
|
|
28
|
+
@tracked canEdit = true;
|
|
29
|
+
@tracked errorText = '';
|
|
30
|
+
@tracked lastEvent = 'nothing yet';
|
|
31
|
+
|
|
32
|
+
setActivateOn = (v: string) => (this.activateOn = v);
|
|
33
|
+
setCommitOn = (v: string) => (this.commitOn = v);
|
|
34
|
+
setCanEdit = (v: boolean) => (this.canEdit = v);
|
|
35
|
+
setErrorText = (v: string) => (this.errorText = v);
|
|
36
|
+
|
|
37
|
+
commitTitle = (next: string) => {
|
|
38
|
+
if (next.trim().length === 0) {
|
|
39
|
+
this.errorText = 'A title cannot be empty.';
|
|
40
|
+
this.lastEvent = 'commit refused';
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
this.errorText = '';
|
|
44
|
+
this.title = next;
|
|
45
|
+
this.lastEvent = 'committed';
|
|
46
|
+
return true;
|
|
47
|
+
};
|
|
48
|
+
cancelTitle = () => (this.lastEvent = 'cancelled');
|
|
49
|
+
commitStatus = (next: string) => {
|
|
50
|
+
this.status = next;
|
|
51
|
+
this.lastEvent = 'status committed';
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
get activateOnValue() {
|
|
55
|
+
return this.activateOn as 'button' | 'row';
|
|
56
|
+
}
|
|
57
|
+
get commitOnValue() {
|
|
58
|
+
return this.commitOn as 'blur' | 'action';
|
|
59
|
+
}
|
|
60
|
+
get statusLabel() {
|
|
61
|
+
let hit = this.statuses.find((option) => option.value === this.status);
|
|
62
|
+
return hit ? hit.label : this.status;
|
|
63
|
+
}
|
|
64
|
+
get usage() {
|
|
65
|
+
return "<EditInPlace @label='Title' @value={{this.title}} @activateOn='" +
|
|
66
|
+
this.activateOn +
|
|
67
|
+
"' @commitOn='" +
|
|
68
|
+
this.commitOn +
|
|
69
|
+
"' @onCommit={{this.save}}><:display>…</:display></EditInPlace>";
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
<template>
|
|
73
|
+
<FreestyleUsage
|
|
74
|
+
@name='EditInPlace'
|
|
75
|
+
@description='A display value that becomes an editable field on activation and commits or cancels. Escape cancels, Enter commits, and leaving commits only when focus actually left the editor. The pencil is a real adjacent button, never a wrapper around the display, so a display holding a link is still a link.'
|
|
76
|
+
@source={{this.usage}}
|
|
77
|
+
>
|
|
78
|
+
<:example>
|
|
79
|
+
<div class='pretui-demo-eip'>
|
|
80
|
+
<div class='pretui-demo-row'>
|
|
81
|
+
<span class='pretui-demo-key'>Title</span>
|
|
82
|
+
<EditInPlace
|
|
83
|
+
@label='Title'
|
|
84
|
+
@value={{this.title}}
|
|
85
|
+
@placeholder='Add a title'
|
|
86
|
+
@error={{this.errorText}}
|
|
87
|
+
@activateOn={{this.activateOnValue}}
|
|
88
|
+
@commitOn={{this.commitOnValue}}
|
|
89
|
+
@canEdit={{this.canEdit}}
|
|
90
|
+
@onCommit={{this.commitTitle}}
|
|
91
|
+
@onCancel={{this.cancelTitle}}
|
|
92
|
+
>
|
|
93
|
+
<:display>
|
|
94
|
+
<span class='pretui-demo-value'>{{this.title}}</span>
|
|
95
|
+
</:display>
|
|
96
|
+
</EditInPlace>
|
|
97
|
+
</div>
|
|
98
|
+
<div class='pretui-demo-row'>
|
|
99
|
+
<span class='pretui-demo-key'>Status</span>
|
|
100
|
+
{{!-- any of the kit inputs, not just text — the editor block
|
|
101
|
+
gets the draft api and wires whatever control it likes --}}
|
|
102
|
+
<EditInPlace
|
|
103
|
+
@label='Status'
|
|
104
|
+
@value={{this.status}}
|
|
105
|
+
@commitOn={{this.commitOnValue}}
|
|
106
|
+
@canEdit={{this.canEdit}}
|
|
107
|
+
@onCommit={{this.commitStatus}}
|
|
108
|
+
>
|
|
109
|
+
<:display>
|
|
110
|
+
<span class='pretui-demo-value'>{{this.statusLabel}}</span>
|
|
111
|
+
</:display>
|
|
112
|
+
<:editor as |editor|>
|
|
113
|
+
<Select
|
|
114
|
+
@options={{this.statuses}}
|
|
115
|
+
@value={{editor.value}}
|
|
116
|
+
@controlId={{editor.controlId}}
|
|
117
|
+
@onValueChange={{editor.setValue}}
|
|
118
|
+
@searchEnabled={{true}}
|
|
119
|
+
/>
|
|
120
|
+
</:editor>
|
|
121
|
+
</EditInPlace>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
<p class='pretui-demo-readout' data-test-eip-readout>
|
|
125
|
+
{{this.lastEvent}}
|
|
126
|
+
</p>
|
|
127
|
+
</:example>
|
|
128
|
+
<:api as |Args|>
|
|
129
|
+
<Args.String
|
|
130
|
+
@name='label'
|
|
131
|
+
@value='Title'
|
|
132
|
+
@description='Required. It names the visually hidden label on the editor and the pencil button, because an unnamed editor is an unnamed editor.'
|
|
133
|
+
/>
|
|
134
|
+
<Args.String
|
|
135
|
+
@name='activateOn'
|
|
136
|
+
@defaultValue='button'
|
|
137
|
+
@value={{this.activateOn}}
|
|
138
|
+
@options={{this.activations}}
|
|
139
|
+
@description='button is the guaranteed path and is always present. row adds click-anywhere as a pointer enhancement, and it skips clicks that landed on a link or control inside the display so it can never swallow them.'
|
|
140
|
+
@onInput={{this.setActivateOn}}
|
|
141
|
+
/>
|
|
142
|
+
<Args.String
|
|
143
|
+
@name='commitOn'
|
|
144
|
+
@defaultValue='blur'
|
|
145
|
+
@value={{this.commitOn}}
|
|
146
|
+
@options={{this.commitModes}}
|
|
147
|
+
@description='blur commits when focus genuinely leaves the editor, checked through relatedTarget containment rather than the upstream 50ms timer. action renders Save and Cancel and ignores blur entirely.'
|
|
148
|
+
@onInput={{this.setCommitOn}}
|
|
149
|
+
/>
|
|
150
|
+
<Args.Bool
|
|
151
|
+
@name='canEdit'
|
|
152
|
+
@defaultValue={{true}}
|
|
153
|
+
@value={{this.canEdit}}
|
|
154
|
+
@description='False renders the display content bare, with no wrapper and no dead affordance.'
|
|
155
|
+
@onInput={{this.setCanEdit}}
|
|
156
|
+
/>
|
|
157
|
+
<Args.String
|
|
158
|
+
@name='error'
|
|
159
|
+
@defaultValue=''
|
|
160
|
+
@value={{this.errorText}}
|
|
161
|
+
@description='Message under the editor, referenced by aria-describedby. Its line is reserved so an arriving error never shifts the row.'
|
|
162
|
+
@onInput={{this.setErrorText}}
|
|
163
|
+
/>
|
|
164
|
+
<Args.Action
|
|
165
|
+
@name='onCommit'
|
|
166
|
+
@description='Fires with the draft. Returning false refuses the commit and keeps the editor open with focus back on the control.'
|
|
167
|
+
/>
|
|
168
|
+
<Args.Yield
|
|
169
|
+
@name='editor'
|
|
170
|
+
@description='Receives value, setValue, controlId, commit, cancel and invalid — enough to wire any control in the kit, which is why the Status row below is a Select.'
|
|
171
|
+
/>
|
|
172
|
+
</:api>
|
|
173
|
+
</FreestyleUsage>
|
|
174
|
+
<style scoped>
|
|
175
|
+
.pretui-demo-eip {
|
|
176
|
+
display: grid;
|
|
177
|
+
gap: var(--space-3, 8px);
|
|
178
|
+
max-width: 26rem;
|
|
179
|
+
}
|
|
180
|
+
.pretui-demo-row {
|
|
181
|
+
display: grid;
|
|
182
|
+
grid-template-columns: 5rem minmax(0, 1fr);
|
|
183
|
+
align-items: center;
|
|
184
|
+
gap: var(--space-3, 8px);
|
|
185
|
+
padding: var(--space-2, 6px);
|
|
186
|
+
border-radius: var(--radius);
|
|
187
|
+
background: var(--card);
|
|
188
|
+
box-shadow: 0 0 0 1px var(--border);
|
|
189
|
+
}
|
|
190
|
+
.pretui-demo-key {
|
|
191
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
192
|
+
font-weight: 500;
|
|
193
|
+
color: var(--muted-foreground);
|
|
194
|
+
}
|
|
195
|
+
.pretui-demo-value {
|
|
196
|
+
font-size: var(--boxel-font-size-xs);
|
|
197
|
+
}
|
|
198
|
+
.pretui-demo-readout {
|
|
199
|
+
margin: var(--space-4, 12px) 0 0;
|
|
200
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
201
|
+
color: var(--muted-foreground);
|
|
202
|
+
}
|
|
203
|
+
</style>
|
|
204
|
+
</template>
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export const DEMOS_EDIT_IN_PLACE: Record<string, unknown> = {
|
|
208
|
+
EditInPlace: EditInPlaceUsage,
|
|
209
|
+
};
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
// Pretui — Editable: text that reads as a value until it is a field. The
|
|
2
|
+
// preview is a real button whose accessible name carries the label and the
|
|
3
|
+
// current value; activating it swaps an Input into the same place. Enter
|
|
4
|
+
// commits, Escape restores, and leaving the field commits unless told
|
|
5
|
+
// otherwise. RecordDetail does this at form scale; this is the one-field atom.
|
|
6
|
+
// No timers: the focus handoff rides the render.
|
|
7
|
+
import Component from '@glimmer/component';
|
|
8
|
+
import { tracked } from '@glimmer/tracking';
|
|
9
|
+
import { on } from '@ember/modifier';
|
|
10
|
+
import { modifier } from 'ember-modifier';
|
|
11
|
+
import { emit, firstDefined } from '../pretui-primitives';
|
|
12
|
+
import type { ControlNotifyArgs } from '../pretui-primitives';
|
|
13
|
+
import { focusWhen } from '../focus';
|
|
14
|
+
import { iconFor } from '../icon-registry';
|
|
15
|
+
import { Input } from './input';
|
|
16
|
+
|
|
17
|
+
export interface EditableSignature {
|
|
18
|
+
Args: ControlNotifyArgs & {
|
|
19
|
+
value?: string;
|
|
20
|
+
defaultValue?: string;
|
|
21
|
+
/** what the value is — "Name" — spoken as part of the trigger's name */
|
|
22
|
+
label?: string;
|
|
23
|
+
/** shown in the preview while the value is empty, and inside the field */
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
/** alias — React Aria / Base UI spelling of @disabled */
|
|
27
|
+
isDisabled?: boolean;
|
|
28
|
+
/** controlled edit state; omit and use @defaultEditing */
|
|
29
|
+
editing?: boolean;
|
|
30
|
+
defaultEditing?: boolean;
|
|
31
|
+
/** alias — Chakra's spelling of @defaultEditing */
|
|
32
|
+
startWithEditView?: boolean;
|
|
33
|
+
onEditingChange?: (editing: boolean) => void;
|
|
34
|
+
/** fires with the committed value; onChange / onValueChange fire only when it differs */
|
|
35
|
+
onSubmit?: (value: string) => void;
|
|
36
|
+
onCancel?: () => void;
|
|
37
|
+
/** commit when focus leaves the field (default true); false restores instead */
|
|
38
|
+
submitOnBlur?: boolean;
|
|
39
|
+
/** select the whole value when the field opens (default true) */
|
|
40
|
+
selectOnFocus?: boolean;
|
|
41
|
+
};
|
|
42
|
+
Blocks: {
|
|
43
|
+
/** the preview, when the value needs markup */
|
|
44
|
+
preview: [value: string];
|
|
45
|
+
};
|
|
46
|
+
Element: HTMLDivElement;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// One editing session per mount of the field, however it opened: the trigger,
|
|
50
|
+
// a parent flipping @editing, or @defaultEditing. Install focuses the input
|
|
51
|
+
// and re-arms the close guard; teardown drops the draft so the next session
|
|
52
|
+
// starts from the current value. Input hands `...attributes` to its inner
|
|
53
|
+
// control, so the input may be the element itself or inside it.
|
|
54
|
+
const fieldSession = modifier(
|
|
55
|
+
(el: HTMLElement, [select, begin, end]: [boolean, () => void, () => void]) => {
|
|
56
|
+
begin();
|
|
57
|
+
let field = el.matches('input, textarea')
|
|
58
|
+
? (el as HTMLInputElement)
|
|
59
|
+
: el.querySelector<HTMLInputElement>('input, textarea');
|
|
60
|
+
field?.focus();
|
|
61
|
+
if (select) {
|
|
62
|
+
field?.select();
|
|
63
|
+
}
|
|
64
|
+
return end;
|
|
65
|
+
},
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
export class Editable extends Component<EditableSignature> {
|
|
69
|
+
@tracked internalValue = this.args.defaultValue ?? '';
|
|
70
|
+
@tracked internalEditing =
|
|
71
|
+
firstDefined(this.args.defaultEditing, this.args.startWithEditView) ??
|
|
72
|
+
false;
|
|
73
|
+
/** the text being edited this session; null until the reader types */
|
|
74
|
+
@tracked edited: string | null = null;
|
|
75
|
+
@tracked restoreFocus = false;
|
|
76
|
+
closing = false;
|
|
77
|
+
|
|
78
|
+
get value() {
|
|
79
|
+
return this.args.value ?? this.internalValue;
|
|
80
|
+
}
|
|
81
|
+
get draft() {
|
|
82
|
+
return this.edited ?? this.value;
|
|
83
|
+
}
|
|
84
|
+
get editing() {
|
|
85
|
+
return this.args.editing ?? this.internalEditing;
|
|
86
|
+
}
|
|
87
|
+
get disabled() {
|
|
88
|
+
return firstDefined(this.args.disabled, this.args.isDisabled) ?? false;
|
|
89
|
+
}
|
|
90
|
+
get empty() {
|
|
91
|
+
return this.value === '';
|
|
92
|
+
}
|
|
93
|
+
get shown() {
|
|
94
|
+
return this.empty ? (this.args.placeholder ?? '') : this.value;
|
|
95
|
+
}
|
|
96
|
+
get selectOnFocus() {
|
|
97
|
+
return this.args.selectOnFocus ?? true;
|
|
98
|
+
}
|
|
99
|
+
get triggerLabel() {
|
|
100
|
+
let what = this.args.label ? `Edit ${this.args.label}` : 'Edit';
|
|
101
|
+
return this.empty ? `${what}, empty` : `${what}, currently ${this.value}`;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
setEditing(next: boolean) {
|
|
105
|
+
if (this.args.editing === undefined) {
|
|
106
|
+
this.internalEditing = next;
|
|
107
|
+
}
|
|
108
|
+
this.args.onEditingChange?.(next);
|
|
109
|
+
}
|
|
110
|
+
open = () => {
|
|
111
|
+
if (this.disabled) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
this.setEditing(true);
|
|
115
|
+
};
|
|
116
|
+
beginSession = () => {
|
|
117
|
+
this.closing = false;
|
|
118
|
+
};
|
|
119
|
+
endSession = () => {
|
|
120
|
+
this.edited = null;
|
|
121
|
+
};
|
|
122
|
+
setDraft = (value: string) => (this.edited = value);
|
|
123
|
+
/** `restore` hands focus back to the trigger — Enter and Escape only; on
|
|
124
|
+
* blur, focus has already gone where the reader sent it */
|
|
125
|
+
commit = (restore: boolean) => {
|
|
126
|
+
if (this.closing) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
this.closing = true;
|
|
130
|
+
let next = this.draft;
|
|
131
|
+
let changed = next !== this.value;
|
|
132
|
+
if (this.args.value === undefined) {
|
|
133
|
+
this.internalValue = next;
|
|
134
|
+
}
|
|
135
|
+
if (changed) {
|
|
136
|
+
emit([this.args.onChange, this.args.onValueChange], next);
|
|
137
|
+
}
|
|
138
|
+
this.args.onSubmit?.(next);
|
|
139
|
+
this.close(restore);
|
|
140
|
+
};
|
|
141
|
+
cancel = (restore: boolean) => {
|
|
142
|
+
if (this.closing) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this.closing = true;
|
|
146
|
+
this.args.onCancel?.();
|
|
147
|
+
this.close(restore);
|
|
148
|
+
};
|
|
149
|
+
// A parent holding @editing open keeps the field mounted, so the session
|
|
150
|
+
// continues and the next Enter, Escape or blur must be heard.
|
|
151
|
+
close(restore: boolean) {
|
|
152
|
+
this.restoreFocus = restore;
|
|
153
|
+
this.setEditing(false);
|
|
154
|
+
if (this.editing) {
|
|
155
|
+
this.closing = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
onKeydown = (ev: Event) => {
|
|
159
|
+
let key = ev as KeyboardEvent;
|
|
160
|
+
// the Enter that confirms an IME candidate is not a commit
|
|
161
|
+
if (key.isComposing) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (key.key === 'Enter') {
|
|
165
|
+
ev.preventDefault();
|
|
166
|
+
this.commit(true);
|
|
167
|
+
} else if (key.key === 'Escape') {
|
|
168
|
+
ev.preventDefault();
|
|
169
|
+
this.cancel(true);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
onFocusout = (ev: Event) => {
|
|
173
|
+
// a field leaving the DOM (teardown, a parent re-render) also blurs;
|
|
174
|
+
// that is not the reader leaving the field
|
|
175
|
+
if (this.isDestroying || !(ev.target as Element).isConnected) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (this.args.submitOnBlur ?? true) {
|
|
179
|
+
this.commit(false);
|
|
180
|
+
} else {
|
|
181
|
+
this.cancel(false);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
<template>
|
|
185
|
+
<div
|
|
186
|
+
class='pretui-editable'
|
|
187
|
+
data-editing={{if this.editing 'true' 'false'}}
|
|
188
|
+
data-empty={{if this.empty 'true' 'false'}}
|
|
189
|
+
data-test-pretui-editable
|
|
190
|
+
...attributes
|
|
191
|
+
>
|
|
192
|
+
{{#if this.editing}}
|
|
193
|
+
<Input
|
|
194
|
+
@value={{this.draft}}
|
|
195
|
+
placeholder={{@placeholder}}
|
|
196
|
+
disabled={{this.disabled}}
|
|
197
|
+
@onInput={{this.setDraft}}
|
|
198
|
+
aria-label={{@label}}
|
|
199
|
+
data-test-pretui-editable-field
|
|
200
|
+
{{fieldSession this.selectOnFocus this.beginSession this.endSession}}
|
|
201
|
+
{{on 'keydown' this.onKeydown}}
|
|
202
|
+
{{on 'focusout' this.onFocusout}}
|
|
203
|
+
/>
|
|
204
|
+
{{else}}
|
|
205
|
+
<button
|
|
206
|
+
type='button'
|
|
207
|
+
class='pretui-editable-trigger'
|
|
208
|
+
aria-label={{this.triggerLabel}}
|
|
209
|
+
disabled={{this.disabled}}
|
|
210
|
+
data-test-pretui-editable-trigger
|
|
211
|
+
{{focusWhen this.restoreFocus}}
|
|
212
|
+
{{on 'click' this.open}}
|
|
213
|
+
>
|
|
214
|
+
<span class='pretui-editable-value'>
|
|
215
|
+
{{#if (has-block 'preview')}}
|
|
216
|
+
{{yield this.value to='preview'}}
|
|
217
|
+
{{else}}
|
|
218
|
+
{{this.shown}}
|
|
219
|
+
{{/if}}
|
|
220
|
+
</span>
|
|
221
|
+
{{#let (iconFor 'pencil') as |Pencil|}}
|
|
222
|
+
{{#if Pencil}}
|
|
223
|
+
<Pencil class='pretui-editable-pencil' aria-hidden='true' />
|
|
224
|
+
{{/if}}
|
|
225
|
+
{{/let}}
|
|
226
|
+
</button>
|
|
227
|
+
{{/if}}
|
|
228
|
+
</div>
|
|
229
|
+
<style scoped>
|
|
230
|
+
@layer PretComponent {
|
|
231
|
+
.pretui-editable {
|
|
232
|
+
--ed-h: var(--boxel-form-control-height-sm);
|
|
233
|
+
--ed-text: var(--boxel-font-size-xs);
|
|
234
|
+
--ed-pad: var(--space-2, 0.375rem);
|
|
235
|
+
--ed-snap: var(--pretui-dur-snap, 180ms) var(--pretui-ease-snap, ease);
|
|
236
|
+
display: inline-grid;
|
|
237
|
+
inline-size: 100%;
|
|
238
|
+
min-inline-size: 0;
|
|
239
|
+
font-size: var(--ed-text);
|
|
240
|
+
letter-spacing: var(--track-ui, 0.01em);
|
|
241
|
+
}
|
|
242
|
+
.pretui-editable-trigger {
|
|
243
|
+
display: inline-flex;
|
|
244
|
+
align-items: center;
|
|
245
|
+
gap: var(--ed-pad);
|
|
246
|
+
inline-size: 100%;
|
|
247
|
+
min-block-size: var(--ed-h);
|
|
248
|
+
margin: 0;
|
|
249
|
+
padding-block: 0;
|
|
250
|
+
padding-inline: var(--ed-pad);
|
|
251
|
+
font: inherit;
|
|
252
|
+
letter-spacing: inherit;
|
|
253
|
+
text-align: start;
|
|
254
|
+
color: inherit;
|
|
255
|
+
background-color: transparent;
|
|
256
|
+
border: 0;
|
|
257
|
+
border-radius: var(--radius);
|
|
258
|
+
box-shadow: 0 0 0 1px transparent;
|
|
259
|
+
cursor: text;
|
|
260
|
+
transition:
|
|
261
|
+
background-color var(--ed-snap),
|
|
262
|
+
box-shadow var(--ed-snap);
|
|
263
|
+
}
|
|
264
|
+
.pretui-editable-trigger:hover:not(:disabled) {
|
|
265
|
+
background-color: var(--hover);
|
|
266
|
+
box-shadow: 0 0 0 1px var(--border);
|
|
267
|
+
}
|
|
268
|
+
.pretui-editable-trigger:focus-visible {
|
|
269
|
+
outline: 2px solid var(--ring);
|
|
270
|
+
outline-offset: 2px;
|
|
271
|
+
}
|
|
272
|
+
.pretui-editable-trigger:disabled {
|
|
273
|
+
cursor: default;
|
|
274
|
+
opacity: 0.6;
|
|
275
|
+
}
|
|
276
|
+
.pretui-editable-value {
|
|
277
|
+
flex: 1;
|
|
278
|
+
min-inline-size: 0;
|
|
279
|
+
overflow-wrap: anywhere;
|
|
280
|
+
}
|
|
281
|
+
.pretui-editable[data-empty='true'] .pretui-editable-value {
|
|
282
|
+
color: var(--muted-foreground);
|
|
283
|
+
}
|
|
284
|
+
.pretui-editable-pencil {
|
|
285
|
+
flex: none;
|
|
286
|
+
inline-size: 0.75rem;
|
|
287
|
+
block-size: 0.75rem;
|
|
288
|
+
color: var(--muted-foreground);
|
|
289
|
+
opacity: 0;
|
|
290
|
+
transition: opacity var(--ed-snap);
|
|
291
|
+
}
|
|
292
|
+
.pretui-editable-trigger:hover .pretui-editable-pencil,
|
|
293
|
+
.pretui-editable-trigger:focus-visible .pretui-editable-pencil {
|
|
294
|
+
opacity: 1;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
</style>
|
|
298
|
+
</template>
|
|
299
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
Text that reads as a value until it is a field. A name in a profile header, a title on a card, a caption under an image: the reader sees plain text, and the person who owns it clicks (or presses Enter on) that text and gets an **Input** in the same place. Enter commits, Escape puts the old value back, and leaving the field commits unless told otherwise.
|
|
4
|
+
|
|
5
|
+
It is one field. If a record has several of these and they should save together with an undo per field and a docked footer, that is **RecordDetail**, which is this pattern at form scale. If the value is always a field, use **Input** inside a **Field**. If it is a longer passage, there is no textarea mode here; **Textarea** in a Field is the honest choice.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@value? — controlled text; omit for the uncontrolled half
|
|
11
|
+
@defaultValue? — uncontrolled seed
|
|
12
|
+
@label? — what the value is ("Name"); spoken in the trigger's name
|
|
13
|
+
@placeholder? — muted preview text while empty, and the field's placeholder
|
|
14
|
+
@disabled? — the trigger is a disabled button; nothing opens
|
|
15
|
+
@editing? — controlled edit state; omit and use @defaultEditing
|
|
16
|
+
@defaultEditing? — start open (default false)
|
|
17
|
+
@onEditingChange? — every open and close, with the requested state
|
|
18
|
+
@onSubmit? — every commit, with the committed string
|
|
19
|
+
@onChange? — only when the committed value differs (@onValueChange is the alias)
|
|
20
|
+
@onCancel? — Escape, or blur with @submitOnBlur off
|
|
21
|
+
@submitOnBlur? — leaving the field commits (default true); false restores
|
|
22
|
+
@selectOnFocus? — select the whole value when the field opens (default true)
|
|
23
|
+
<:preview as |value|> — replaces the plain text inside the trigger
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Aliases: `@isDisabled` for `@disabled`, `@startWithEditView` for `@defaultEditing`.
|
|
27
|
+
|
|
28
|
+
**Two hybrid states, one component.** The value and the edit state are each controlled-or-uncontrolled independently, on the usual rule: with the arg undefined the component keeps its own state; with it set the component never moves itself and only reports through the callback. A parent that controls `@editing` can therefore hold the field closed (or open) regardless of what the user does, and `@onEditingChange` tells it what was asked for.
|
|
29
|
+
|
|
30
|
+
**Commit is not change.** `@onSubmit` fires on every commit, including one that left the text as it was; `@onChange` fires only when the committed value differs from the previous one. A consumer that autosaves listens to one, a consumer that counts edits listens to the other.
|
|
31
|
+
|
|
32
|
+
**The draft is private.** Typing changes nothing outside the component until Enter or blur. Escape discards the draft and fires `@onCancel`; the value the parent holds is never touched by a cancel.
|
|
33
|
+
|
|
34
|
+
**Focus returns on Enter and Escape.** When the field closes by either key, the trigger is rendered again and takes focus on that render. When it closes on blur, focus has already gone where the reader sent it and stays there. There is no timer anywhere in this component; the handoff rides the render.
|
|
35
|
+
|
|
36
|
+
**Every opening is a fresh session.** The trigger, a parent setting `@editing`, and `@defaultEditing` all start the field from the current value, so a controlled `@editing` can open and close any number of times. A field the parent holds open stays in its session: every Enter, Escape and blur is reported again.
|
|
37
|
+
|
|
38
|
+
**Enter during IME composition does not commit.** The Enter that confirms a candidate belongs to the input method.
|
|
39
|
+
|
|
40
|
+
## Prior art
|
|
41
|
+
|
|
42
|
+
**Chakra `Editable`** is the reference shape: `EditablePreview`, `EditableInput` (or `EditableTextarea`), optional `EditableControls` with edit / submit / cancel buttons, and the `value` / `defaultValue` / `onChange` / `onSubmit` / `onCancel` / `submitOnBlur` / `startWithEditView` / `selectAllOnFocus` props. This component takes the same names where it has the same thing, so a port from Chakra mostly renames the tag. **SLDS inline edit** renders the static value as a non-interactive element and hangs a separate pencil button beside it, so the value itself does nothing and a field costs two tab stops; it has no Escape path. **Ant `Typography` with `editable`** is the same idea attached to a text component, with an explicit pencil icon as the only entry.
|
|
43
|
+
|
|
44
|
+
Where this is better: **the value is the button.** Clicking anywhere on the text opens the field, the field is one tab stop, and the button's name says both what it is and what it currently holds, so a screen reader hears "Edit Name, currently Ada" rather than an unlabelled pencil. Escape exists and returns focus. The pencil is a hover and focus affordance, not the target.
|
|
45
|
+
|
|
46
|
+
Where it is thinner, plainly: **no inline confirm and cancel controls**, so a pointer user's only cancel path is not there; Escape is keyboard-only and blur commits by default. **No textarea mode**, so a multi-line value does not fit. **No `isPreviewFocusable={false}`**: the preview is always the focusable trigger, which is the accessible choice and also the only one offered. The field is **Input** and nothing else, so `@type`, helper text and validation are not reachable through this component.
|
|
47
|
+
|
|
48
|
+
## Accessibility
|
|
49
|
+
|
|
50
|
+
No APG pattern names this exactly; it is a **button** that discloses an **input** in the same place, and both halves are native.
|
|
51
|
+
|
|
52
|
+
- **The trigger is a `<button type="button">`** with `aria-label` built from `@label` and the value: "Edit Name, currently Ada", or "Edit Name, empty" when there is nothing yet. That name is what makes the component legible to a screen reader; the visible text alone would read as a stray word.
|
|
53
|
+
- **Omitting `@label` is the caller's failure.** The name degrades to "Edit, currently Ada", which says what the button does but not what the value is. Pass the label.
|
|
54
|
+
- **The field is named too**: `@label` lands as `aria-label` on the input, so the person who opened it is told what they are editing.
|
|
55
|
+
- **Focus is managed once, on close.** Opening focuses the input and selects its text (unless `@selectOnFocus` is off); closing renders the trigger and focuses it. Nothing else moves focus, and nothing is timed.
|
|
56
|
+
- **Enter and Escape are handled on the field**, with the default prevented so an enclosing form does not submit on Enter and a dialog does not close on Escape.
|
|
57
|
+
- **Disabled is the native attribute** on the trigger: it leaves the tab order and announces as dimmed. A disabled Editable is therefore not reachable at all, which is right for a value that cannot be changed; if it should still be readable by keyboard, render the text and not this component.
|
|
58
|
+
- **The pencil is decorative** (`aria-hidden`) and appears on hover and focus only; nothing depends on seeing it.
|
|
59
|
+
- Since the trigger is a button, the preview block must not contain another interactive element: a link inside the preview is a nested-interactive failure, and it is the caller's to avoid.
|
|
60
|
+
|
|
61
|
+
## Theming
|
|
62
|
+
|
|
63
|
+
Read from the host theme: `--hover` and `--border` (the trigger's hover surface and hairline), `--ring` (the focus outline), `--radius`, `--muted-foreground` (the empty-state placeholder and the pencil). Hoisted once on the root as internal variables: `--boxel-form-control-height-sm` (the trigger's minimum height, the same as the Input it opens into, so the row does not jump when the field opens), `--boxel-font-size-xs` (the Input's text size), `--space-2`, `--track-ui`, and `--pretui-dur-snap` / `--pretui-ease-snap` for the hover transition.
|
|
64
|
+
|
|
65
|
+
The trigger paints nothing at rest, so it inherits the surface and ink it sits on; hover adds the `--hover` fill and a `--border` hairline so the text reads as editable. The open field is **Input**'s dress entirely, so a theme that retunes Input retunes this. Fixed here: the 0.75rem pencil and its hover-only opacity.
|
|
66
|
+
|
|
67
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
68
|
+
|
|
69
|
+
## React ecosystem
|
|
70
|
+
|
|
71
|
+
| Agent types | Give them |
|
|
72
|
+
| ------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
73
|
+
| Chakra `Editable` + `EditablePreview` + `EditableInput` | this component; the preview and input are built in |
|
|
74
|
+
| `EditableControls` (submit / cancel buttons) | not offered; Enter, Escape and blur are the paths |
|
|
75
|
+
| `EditableTextarea` | **Textarea** in a **Field** |
|
|
76
|
+
| `startWithEditView`, `selectAllOnFocus`, `submitOnBlur` | `@startWithEditView` (or `@defaultEditing`), `@selectOnFocus`, `@submitOnBlur` |
|
|
77
|
+
| `isPreviewFocusable`, `isDisabled` | always focusable; `@isDisabled` or `@disabled` |
|
|
78
|
+
| SLDS inline edit, Ant `Typography editable` | this component |
|
|
79
|
+
| a whole record of inline edits with save / undo | **RecordDetail** |
|