@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,43 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
**EmptyState** under the name shadcn and Ant use. The export is the same class — `import { Empty } from './empty';` resolves to EmptyState — so the tile exists for a port of a shadcn `Empty` block or an agent whose first guess is the shorter word. The contract and the depth are on **EmptyState**; this page maps the shadcn parts onto it. A page-level 404 or success scene is **Result**; a missing linked card is **BrokenLink**; a region that is _loading_ is **Skeleton**, not empty.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@title — required; the absence is always named
|
|
9
|
+
@message? — the explanation, kept to a 34ch measure
|
|
10
|
+
@texture? — the tinted radial behind the title (default true)
|
|
11
|
+
@separator? — the word between two actions (default 'or')
|
|
12
|
+
@size? — 's' for the compact well inside a card section, 'm' (default) for a page section
|
|
13
|
+
<:default> — the message with markup in it; wins over @message
|
|
14
|
+
<:action> <:altAction>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**`@title` is required.** shadcn lets `EmptyTitle` be omitted; here an empty state that does not say what is missing is not accepted.
|
|
18
|
+
|
|
19
|
+
## Prior art
|
|
20
|
+
|
|
21
|
+
**shadcn `Empty`** is a composition of parts — `Empty`, `EmptyHeader`, `EmptyMedia` (with an `icon` variant), `EmptyTitle`, `EmptyDescription`, `EmptyContent` — styled as a dashed, centred well. **Ant `Empty`** takes `image` (with two built-in illustrations), `description` and children for the action.
|
|
22
|
+
|
|
23
|
+
Where this is better: nothing to compose for the common case, a required title, and a generated texture in place of stock illustration so the state reads as designed with zero assets. The `<:altAction>` block gives the second honest path equal billing, which neither kit models.
|
|
24
|
+
|
|
25
|
+
Where it is thinner: there is no media slot, so shadcn's `EmptyMedia` and Ant's `image` have nowhere to land. There are two sizes, the compact well (`@size='s'`) and the page-section default.
|
|
26
|
+
|
|
27
|
+
## Accessibility
|
|
28
|
+
|
|
29
|
+
EmptyState's. No APG pattern governs it. The title is a `<div>` styled as a heading, not an `<h*>`, so it does not structure the region; nothing announces the transition to empty, so a filter that clears a table does so silently — a `role='status'` on the caller's container is the fix. The action is an ordinary tab stop, which is right. If the state replaces a `<tbody>`, the table's semantics go with it; render inside the table instead.
|
|
30
|
+
|
|
31
|
+
## Theming
|
|
32
|
+
|
|
33
|
+
EmptyState's tokens: `--canvas` (the recess, deliberately not `--card`), `--primary` (the texture tint), `--font-serif` and `--text-heading` (title), `--muted-foreground` and `--text-ui-md` (message), `--radius-surface`, `--space-2`, `--space-3`, `--space-6`, `--space-9` (at `@size='s'` the padding is a fixed `1rem` and the title reads `--boxel-font-size`). A theme must define `--font-serif` and keep `--canvas` distinguishable from `--card`. Nothing is themed under an Empty name.
|
|
34
|
+
|
|
35
|
+
## React ecosystem
|
|
36
|
+
|
|
37
|
+
| shadcn / Ant | Pretui |
|
|
38
|
+
| ---------------------------------------- | ----------------------------------------------------- |
|
|
39
|
+
| `<EmptyTitle>` | `@title` |
|
|
40
|
+
| `<EmptyDescription>` / Ant `description` | `@message`, or `<:default>` when it carries markup |
|
|
41
|
+
| `<EmptyContent>` / Ant children | `<:action>`, and `<:altAction>` for the second path |
|
|
42
|
+
| `<EmptyMedia>` / Ant `image` | no equivalent; the texture stands in for art |
|
|
43
|
+
| `<EmptyHeader>` | no equivalent; title and message are laid out for you |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Pretui — Empty usage page.
|
|
2
|
+
import type { TemplateOnlyComponent } from '@ember/component/template-only';
|
|
3
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
4
|
+
import { Button } from './button';
|
|
5
|
+
import { Empty } from './empty';
|
|
6
|
+
|
|
7
|
+
const EmptyUsage: TemplateOnlyComponent = <template>
|
|
8
|
+
<FreestyleUsage
|
|
9
|
+
@name='Empty'
|
|
10
|
+
@description='EmptyState under the shadcn / Ant name: a named absence with an optional message and action. Reach for this import when a port or an agent already speaks that vocabulary; the component, its contract and its writeup are EmptyState’s.'
|
|
11
|
+
@source="<Empty @title='No lots match' @message='Try clearing…'><:action>…</:action></Empty>"
|
|
12
|
+
>
|
|
13
|
+
<:example>
|
|
14
|
+
<Empty
|
|
15
|
+
@title='No lots match'
|
|
16
|
+
@message='Try clearing the origin and harvest filters.'
|
|
17
|
+
>
|
|
18
|
+
<:action><Button @variant='secondary'>Clear filters</Button></:action>
|
|
19
|
+
</Empty>
|
|
20
|
+
</:example>
|
|
21
|
+
<:api as |Args|>
|
|
22
|
+
<Args.String @name='title' @value='No lots match' @description='Required. shadcn’s EmptyTitle.' />
|
|
23
|
+
<Args.String @name='message' @value='Try clearing the origin and harvest filters.' @description='shadcn’s EmptyDescription, Ant’s description.' />
|
|
24
|
+
<Args.Bool @name='texture' @defaultValue={{true}} />
|
|
25
|
+
<Args.Yield @name='action' @description='shadcn’s EmptyContent.' />
|
|
26
|
+
<Args.Yield @name='altAction' @description='The second way in, given equal billing.' />
|
|
27
|
+
</:api>
|
|
28
|
+
</FreestyleUsage>
|
|
29
|
+
</template>;
|
|
30
|
+
|
|
31
|
+
export const DEMOS_EMPTY: Record<string, unknown> = {
|
|
32
|
+
Empty: EmptyUsage,
|
|
33
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// Pretui — EntityDisplay: an entity's icon or thumbnail with its name and tags.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { Chip } from './chip';
|
|
4
|
+
|
|
5
|
+
// ── EntityDisplay ────────────────────────────────────────────────────────
|
|
6
|
+
// Merges entity-icon-display + entity-thumbnail-display semantics: a visual
|
|
7
|
+
// slot (icon or thumbnail dress via @variant) beside a title row with an
|
|
8
|
+
// optional Chip tag, then a subtitle line — or the <:meta> block when the
|
|
9
|
+
// second row needs real markup (meta wins over @subtitle, mirroring the
|
|
10
|
+
// block-beats-arg precedence of the boxel-ui originals).
|
|
11
|
+
export interface EntityDisplaySignature {
|
|
12
|
+
Args: {
|
|
13
|
+
title?: string;
|
|
14
|
+
subtitle?: string;
|
|
15
|
+
tag?: string;
|
|
16
|
+
variant?: 'icon' | 'thumbnail';
|
|
17
|
+
center?: boolean;
|
|
18
|
+
underline?: boolean;
|
|
19
|
+
};
|
|
20
|
+
Blocks: { visual?: []; meta?: [] };
|
|
21
|
+
Element: HTMLElement;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export class EntityDisplay extends Component<EntityDisplaySignature> {
|
|
25
|
+
get variant(): 'icon' | 'thumbnail' {
|
|
26
|
+
return this.args.variant ?? 'icon';
|
|
27
|
+
}
|
|
28
|
+
<template>
|
|
29
|
+
<div
|
|
30
|
+
class='pretui-entity'
|
|
31
|
+
data-variant={{this.variant}}
|
|
32
|
+
data-center={{if @center 'true'}}
|
|
33
|
+
data-test-pretui-entity-display
|
|
34
|
+
...attributes
|
|
35
|
+
>
|
|
36
|
+
{{#if (has-block 'visual')}}
|
|
37
|
+
<span class='pretui-entity-visual'>{{yield to='visual'}}</span>
|
|
38
|
+
{{/if}}
|
|
39
|
+
<div class='pretui-entity-info'>
|
|
40
|
+
<div class='pretui-entity-titlerow'>
|
|
41
|
+
{{#if @title}}
|
|
42
|
+
<span
|
|
43
|
+
class='pretui-entity-title'
|
|
44
|
+
data-underline={{if @underline 'true'}}
|
|
45
|
+
>{{@title}}</span>
|
|
46
|
+
{{/if}}
|
|
47
|
+
{{#if @tag}}
|
|
48
|
+
<Chip @label={{@tag}} @dot={{false}} />
|
|
49
|
+
{{/if}}
|
|
50
|
+
</div>
|
|
51
|
+
{{#if (has-block 'meta')}}
|
|
52
|
+
<div class='pretui-entity-meta'>{{yield to='meta'}}</div>
|
|
53
|
+
{{else if @subtitle}}
|
|
54
|
+
<div class='pretui-entity-meta'>{{@subtitle}}</div>
|
|
55
|
+
{{/if}}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<style scoped>
|
|
59
|
+
@layer PretComponent {
|
|
60
|
+
.pretui-entity {
|
|
61
|
+
display: flex;
|
|
62
|
+
align-items: flex-start;
|
|
63
|
+
gap: var(--space-3, 8px);
|
|
64
|
+
min-width: 0;
|
|
65
|
+
}
|
|
66
|
+
.pretui-entity[data-center] {
|
|
67
|
+
align-items: center;
|
|
68
|
+
}
|
|
69
|
+
.pretui-entity-visual {
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
justify-content: center;
|
|
73
|
+
flex: none;
|
|
74
|
+
}
|
|
75
|
+
.pretui-entity[data-variant='icon'] .pretui-entity-visual {
|
|
76
|
+
width: var(--pretui-entity-visual-size, 18px);
|
|
77
|
+
height: var(--pretui-entity-visual-size, 18px);
|
|
78
|
+
color: var(--muted-foreground);
|
|
79
|
+
}
|
|
80
|
+
.pretui-entity[data-variant='icon'] .pretui-entity-visual :deep(svg) {
|
|
81
|
+
width: 100%;
|
|
82
|
+
height: 100%;
|
|
83
|
+
}
|
|
84
|
+
.pretui-entity[data-variant='thumbnail'] .pretui-entity-visual {
|
|
85
|
+
width: var(--pretui-entity-visual-size, 22px);
|
|
86
|
+
height: var(--pretui-entity-visual-size, 22px);
|
|
87
|
+
border-radius: var(--radius-chip, 6px);
|
|
88
|
+
overflow: hidden;
|
|
89
|
+
background: var(--inset, var(--boxel-100));
|
|
90
|
+
box-shadow: var(--pretui-shadow-hairline, 0 0 0 1px var(--border));
|
|
91
|
+
}
|
|
92
|
+
.pretui-entity-info {
|
|
93
|
+
display: grid;
|
|
94
|
+
gap: 2px;
|
|
95
|
+
min-width: 0;
|
|
96
|
+
}
|
|
97
|
+
.pretui-entity-titlerow {
|
|
98
|
+
display: flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
flex-wrap: wrap;
|
|
101
|
+
gap: 6px;
|
|
102
|
+
min-width: 0;
|
|
103
|
+
}
|
|
104
|
+
.pretui-entity-title {
|
|
105
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
106
|
+
font-weight: 600;
|
|
107
|
+
color: var(--foreground);
|
|
108
|
+
overflow: hidden;
|
|
109
|
+
text-overflow: ellipsis;
|
|
110
|
+
white-space: nowrap;
|
|
111
|
+
}
|
|
112
|
+
.pretui-entity-title[data-underline] {
|
|
113
|
+
text-decoration: underline;
|
|
114
|
+
text-underline-offset: 2px;
|
|
115
|
+
}
|
|
116
|
+
.pretui-entity-meta {
|
|
117
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
118
|
+
color: var(--muted-foreground);
|
|
119
|
+
overflow: hidden;
|
|
120
|
+
text-overflow: ellipsis;
|
|
121
|
+
white-space: nowrap;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
</style>
|
|
125
|
+
</template>
|
|
126
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A record's identity row: a visual (icon or thumbnail) beside a title, an optional tag **Chip**, and a subtitle or meta line. Use it as the standard way a card, a person, a file or a linked record is presented in a list, a search result, a picker row or a header. If the record is a compact inline reference inside prose or a field, that is **RecordPill**. If it is a full tile, **FittedCard**. If the reference is broken, **BrokenLink**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@title?, @subtitle?, @tag?
|
|
9
|
+
@variant? 'icon' | 'thumbnail' (default 'icon')
|
|
10
|
+
@center?, @underline?
|
|
11
|
+
<:visual> <:meta>
|
|
12
|
+
Element: HTMLElement
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**`@variant` changes the visual slot's dress, not its content.** You always supply the visual through `<:visual>`; `icon` sizes and pads it as a glyph, `thumbnail` as an image. That factoring is why one component replaces two.
|
|
16
|
+
|
|
17
|
+
**`<:meta>` beats `@subtitle`.** When the second row needs real markup — a **RelativeTime**, a **Token**, two facts separated by a dot — use the block; when it is a string, use the arg. The block-wins precedence mirrors the boxel-ui originals this merges, so a port from either behaves the same.
|
|
18
|
+
|
|
19
|
+
`@center` centres the whole row (for a card header rather than a list row); `@underline` adds the hover underline that signals the row is a link target.
|
|
20
|
+
|
|
21
|
+
## Prior art
|
|
22
|
+
|
|
23
|
+
This is a **fresh merge of boxel-ui's `entity-icon-display` and `entity-thumbnail-display`** into one component, with the tag row reusing Pretui's **Chip**. Two components differing only in how their visual slot is dressed is exactly the kind of duplication a `@variant` axis exists to remove.
|
|
24
|
+
|
|
25
|
+
Against the field: **React Spectrum** has no entity display; the closest is a `ListView` `Item` with `Text`/`Image` slots. **Web Awesome** has none. **shadcn** has none — the recipe is a flex row with an avatar and two spans, rewritten in every project. **SLDS's `media-object`** is the closest named pattern, and this is essentially that plus a tag.
|
|
26
|
+
|
|
27
|
+
Where making it a component pays off is the same argument as **Toolbar**'s: the details every hand-rolled media row gets wrong — the title truncating rather than the visual shrinking, the subtitle's ink and size, the tag's alignment — are decided once. And because the tag is a **Chip** rather than a bespoke pill, a tag here and a status elsewhere are visibly the same object.
|
|
28
|
+
|
|
29
|
+
Where it is thin: **no trailing/actions slot.** A list row almost always wants something on the right — a chevron, a **Menu**, a count — and there is no block for it, so you wrap the whole thing in your own flex row. That is the clearest addition. Also no size axis, and no selected/active state.
|
|
30
|
+
|
|
31
|
+
## Accessibility
|
|
32
|
+
|
|
33
|
+
No pattern governs it; it is content layout, subject to WCAG **1.3.1** and **2.4.4 Link Purpose**.
|
|
34
|
+
|
|
35
|
+
Gaps, and the first two matter most because of where this component is used:
|
|
36
|
+
|
|
37
|
+
- **`@underline` implies the row is clickable, but nothing here makes it a link.** The component renders a `<div>`; the interactivity is entirely the caller's. The failure mode is the standard card-row one: a click handler on the wrapper `<div>` gives a target that is not focusable, not keyboard-operable and not announced as actionable. If an EntityDisplay is clickable, wrap it in a real `<a>` or `<button>`, and make sure it is not _also_ containing one.
|
|
38
|
+
- **The visual is whatever you yield, and nothing enforces its alt text.** A thumbnail `<img>` with no `alt` announces its filename; an icon with a `<title>` announces twice. For a decorative visual beside a title that already names the record, `aria-hidden` on the visual is usually correct — and nothing prompts for it.
|
|
39
|
+
- **Title, tag and subtitle are three sibling elements with no grouping.** A screen-reader user hears "Q3 Report Draft 3 days ago" as one run with no indication of which part is a status and which is a timestamp. **Chip**'s own note applies: a chip has no relationship to the property it is the value of.
|
|
40
|
+
- **The title is not a heading.** In a card header (`@center`) that is often what it should be, and there is no `@headingLevel` — the same gap **Panel**, **Toolbar** and **EmptyState** have.
|
|
41
|
+
- **Truncation behaviour is unstated** — check whether a long title ellipsizes without a full-text fallback, which is the **Toolbar** problem again.
|
|
42
|
+
- The subtitle's `--muted-foreground` at small size is the usual **1.4.3** thing to verify per theme.
|
|
43
|
+
|
|
44
|
+
## Theming
|
|
45
|
+
|
|
46
|
+
`--foreground` (title), `--muted-foreground` (subtitle and meta), plus **Chip**'s full token set for the tag and whatever the visual brings. `data-variant` and `data-center` are reflected on the root, so a stylesheet can dress icon rows and thumbnail rows differently without the component exposing more args.
|
|
47
|
+
|
|
48
|
+
The visual slot's icon and thumbnail sizes are fixed per variant. Because the tag is a real **Chip**, a theme that retunes `--pretui-chip-mix` moves entity tags along with every other chip — which is the intent, and worth knowing if you were about to tune chips for a status list and forgot they also appear here.
|
|
49
|
+
|
|
50
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
// Pretui — ErrorSummary: the list of blocking issues a refused submit focuses.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
4
|
+
import { fn } from '@ember/helper';
|
|
5
|
+
import { guidFor } from '@ember/object/internals';
|
|
6
|
+
import { modifier } from 'ember-modifier';
|
|
7
|
+
import { iconFor } from '../icon-registry';
|
|
8
|
+
import { FormContext, isBlocking, normalizeSeverity, sortIssues } from '../internal/forms-core';
|
|
9
|
+
import type { FormIssue, FormSeverity } from '../internal/forms-core';
|
|
10
|
+
|
|
11
|
+
// ── ErrorSummary ─────────────────────────────────────────────────────────
|
|
12
|
+
// The form-level list, and the reason nothing gets dropped.
|
|
13
|
+
//
|
|
14
|
+
// Ported in spirit from the GOV.UK / React Spectrum error-summary pattern
|
|
15
|
+
// (neither SLDS nor React Spectrum ships one as a component). Two deltas
|
|
16
|
+
// from the pattern as usually written:
|
|
17
|
+
//
|
|
18
|
+
// • Rows are BUTTONS, not `href="#id"` anchors. An anchor mutates the URL,
|
|
19
|
+
// and inside a Boxel card the URL is the card's — a fragment jump there
|
|
20
|
+
// is a navigation, not a focus move. The button calls focusPath() and
|
|
21
|
+
// lands focus on exactly the same element the anchor would have.
|
|
22
|
+
// • The shell is NOT Alert, even though it would have been
|
|
23
|
+
// one line. Alert hardcodes role='alert' (danger) / role='status' — a
|
|
24
|
+
// live region that would re-announce the whole list on every keystroke in
|
|
25
|
+
// live mode, and double-announce at submit on top of the focus move.
|
|
26
|
+
// The summary announces by TAKING FOCUS, which is the whole point of it.
|
|
27
|
+
//
|
|
28
|
+
// The correctness contract: every issue in the form appears here. An issue
|
|
29
|
+
// whose targetPath matched no rendered field is rendered with an explicit
|
|
30
|
+
// "not on this form" marking rather than being filtered away, because a
|
|
31
|
+
// dropped error is worse than an ugly one.
|
|
32
|
+
|
|
33
|
+
interface SummaryRow {
|
|
34
|
+
issue: FormIssue;
|
|
35
|
+
severity: FormSeverity;
|
|
36
|
+
routed: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface ErrorSummarySignature {
|
|
40
|
+
Args: {
|
|
41
|
+
/** Issues to summarise, when used WITHOUT a Form. */
|
|
42
|
+
issues?: FormIssue[];
|
|
43
|
+
/** The owning form's context. Supplied automatically by `form.Summary`. */
|
|
44
|
+
form?: FormContext;
|
|
45
|
+
/** Heading text. Defaults to a count sentence. */
|
|
46
|
+
title?: string;
|
|
47
|
+
/** aria-level for the heading — a card does not know its host's outline,
|
|
48
|
+
* so the level is a knob rather than a hardcoded <h2>. Default 3. */
|
|
49
|
+
headingLevel?: number;
|
|
50
|
+
/** Include warnings and info alongside errors. Default false. */
|
|
51
|
+
showAdvisory?: boolean;
|
|
52
|
+
/** Render even before a submit has been attempted. */
|
|
53
|
+
always?: boolean;
|
|
54
|
+
/** Add role='alert'. Off by default: the summary announces by taking
|
|
55
|
+
* focus, and a live region on top of that double-announces. */
|
|
56
|
+
announce?: boolean;
|
|
57
|
+
};
|
|
58
|
+
Blocks: { default: [] };
|
|
59
|
+
Element: HTMLDivElement;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export class ErrorSummary extends Component<ErrorSummarySignature> {
|
|
63
|
+
private guid = guidFor(this);
|
|
64
|
+
|
|
65
|
+
get id(): string {
|
|
66
|
+
return `${this.guid}-summary`;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
constructor(owner: unknown, args: ErrorSummarySignature['Args']) {
|
|
70
|
+
super(owner as never, args);
|
|
71
|
+
this.args.form?.registerSummary(this.id);
|
|
72
|
+
}
|
|
73
|
+
willDestroy(): void {
|
|
74
|
+
super.willDestroy();
|
|
75
|
+
this.args.form?.unregisterSummary(this.id);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
get sourceIssues(): FormIssue[] {
|
|
79
|
+
return this.args.issues ?? this.args.form?.issues ?? [];
|
|
80
|
+
}
|
|
81
|
+
get rows(): SummaryRow[] {
|
|
82
|
+
let issues = this.args.showAdvisory
|
|
83
|
+
? sortIssues(this.sourceIssues)
|
|
84
|
+
: sortIssues(this.sourceIssues.filter(isBlocking));
|
|
85
|
+
return issues.map((issue) => ({
|
|
86
|
+
issue,
|
|
87
|
+
severity: normalizeSeverity(issue.severity),
|
|
88
|
+
routed: this.isRouted(issue),
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
private isRouted(issue: FormIssue): boolean {
|
|
92
|
+
let form = this.args.form;
|
|
93
|
+
if (!form) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
// Before the first registration snapshot lands, assume routed — the
|
|
97
|
+
// alternative is a one-frame flash of "not on this form" on every issue.
|
|
98
|
+
return !form.settled || form.isClaimed(issue.targetPath);
|
|
99
|
+
}
|
|
100
|
+
/** Only mark unrouted rows when there is a form to be unrouted FROM. */
|
|
101
|
+
get marksUnrouted(): boolean {
|
|
102
|
+
return this.args.form !== undefined;
|
|
103
|
+
}
|
|
104
|
+
get visible(): boolean {
|
|
105
|
+
if (this.rows.length === 0) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
if (this.args.always) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
let form = this.args.form;
|
|
112
|
+
if (!form) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
// A submit-mode form is not "in error" until the user has tried.
|
|
116
|
+
return form.mode !== 'submit' || form.submitAttempted;
|
|
117
|
+
}
|
|
118
|
+
get title(): string {
|
|
119
|
+
if (this.args.title) {
|
|
120
|
+
return this.args.title;
|
|
121
|
+
}
|
|
122
|
+
let count = this.rows.length;
|
|
123
|
+
return count === 1
|
|
124
|
+
? 'There is 1 issue to fix'
|
|
125
|
+
: `There are ${count} issues to fix`;
|
|
126
|
+
}
|
|
127
|
+
get headingLevel(): string {
|
|
128
|
+
return String(this.args.headingLevel ?? 3);
|
|
129
|
+
}
|
|
130
|
+
get role(): string | undefined {
|
|
131
|
+
return this.args.announce ? 'alert' : undefined;
|
|
132
|
+
}
|
|
133
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- icons are
|
|
134
|
+
// resolved dynamically from the registry, which is any-typed by design
|
|
135
|
+
get glyph(): any {
|
|
136
|
+
return iconFor('circle-alert');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
claimFocus = modifier((el: HTMLElement) => {
|
|
140
|
+
if (this.args.form?.takeSummaryFocus()) {
|
|
141
|
+
el.focus();
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
goTo = (row: SummaryRow): void => {
|
|
146
|
+
this.args.form?.focusPath(row.issue.targetPath);
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
<template>
|
|
150
|
+
{{#if this.visible}}
|
|
151
|
+
<div
|
|
152
|
+
class='pretui-error-summary'
|
|
153
|
+
id={{this.id}}
|
|
154
|
+
tabindex='-1'
|
|
155
|
+
role={{this.role}}
|
|
156
|
+
{{this.claimFocus}}
|
|
157
|
+
data-test-pretui-error-summary
|
|
158
|
+
...attributes
|
|
159
|
+
>
|
|
160
|
+
<div class='pretui-error-summary-head'>
|
|
161
|
+
{{#let this.glyph as |Glyph|}}
|
|
162
|
+
{{#if Glyph}}
|
|
163
|
+
<Glyph
|
|
164
|
+
class='pretui-error-summary-glyph'
|
|
165
|
+
width='15'
|
|
166
|
+
height='15'
|
|
167
|
+
role='presentation'
|
|
168
|
+
/>
|
|
169
|
+
{{/if}}
|
|
170
|
+
{{/let}}
|
|
171
|
+
<div
|
|
172
|
+
class='pretui-error-summary-title'
|
|
173
|
+
role='heading'
|
|
174
|
+
aria-level={{this.headingLevel}}
|
|
175
|
+
>{{this.title}}</div>
|
|
176
|
+
</div>
|
|
177
|
+
{{#if (has-block)}}
|
|
178
|
+
<p class='pretui-error-summary-intro'>{{yield}}</p>
|
|
179
|
+
{{/if}}
|
|
180
|
+
<ul class='pretui-error-summary-list'>
|
|
181
|
+
{{#each this.rows key='@index' as |row|}}
|
|
182
|
+
<li class='pretui-error-summary-row' data-severity={{row.severity}}>
|
|
183
|
+
{{#if row.routed}}
|
|
184
|
+
<button
|
|
185
|
+
type='button'
|
|
186
|
+
class='pretui-error-summary-link'
|
|
187
|
+
{{on 'click' (fn this.goTo row)}}
|
|
188
|
+
>{{row.issue.message}}</button>
|
|
189
|
+
{{else}}
|
|
190
|
+
<span class='pretui-error-summary-orphan'>
|
|
191
|
+
<span class='pretui-error-summary-text'>{{row.issue.message}}</span>
|
|
192
|
+
{{#if this.marksUnrouted}}
|
|
193
|
+
<span
|
|
194
|
+
class='pretui-error-summary-badge'
|
|
195
|
+
title={{row.issue.targetPath}}
|
|
196
|
+
>no field on this form</span>
|
|
197
|
+
{{/if}}
|
|
198
|
+
</span>
|
|
199
|
+
{{/if}}
|
|
200
|
+
</li>
|
|
201
|
+
{{/each}}
|
|
202
|
+
</ul>
|
|
203
|
+
</div>
|
|
204
|
+
{{/if}}
|
|
205
|
+
<style scoped>
|
|
206
|
+
@layer PretComponent {
|
|
207
|
+
.pretui-error-summary {
|
|
208
|
+
--pretui-issue-hue: var(--pretui-issue-error, var(--destructive));
|
|
209
|
+
display: grid;
|
|
210
|
+
gap: var(--space-3, 8px);
|
|
211
|
+
padding: var(--space-4, 11px) var(--space-4, 11px)
|
|
212
|
+
calc(var(--space-4, 11px) - 2px);
|
|
213
|
+
border-radius: var(--radius-surface, 10px);
|
|
214
|
+
background: color-mix(
|
|
215
|
+
in oklch,
|
|
216
|
+
var(--pretui-issue-hue) var(--pretui-chip-mix, 10%),
|
|
217
|
+
var(--card)
|
|
218
|
+
);
|
|
219
|
+
box-shadow: var(
|
|
220
|
+
--pretui-shadow-card,
|
|
221
|
+
0 0 0 1px
|
|
222
|
+
color-mix(in oklch, var(--pretui-issue-hue) 28%, var(--border))
|
|
223
|
+
);
|
|
224
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
225
|
+
letter-spacing: var(--track-ui, 0.01em);
|
|
226
|
+
}
|
|
227
|
+
.pretui-error-summary:focus {
|
|
228
|
+
outline: none;
|
|
229
|
+
}
|
|
230
|
+
.pretui-error-summary:focus-visible {
|
|
231
|
+
outline: 2px solid var(--ring);
|
|
232
|
+
outline-offset: 2px;
|
|
233
|
+
}
|
|
234
|
+
.pretui-error-summary-head {
|
|
235
|
+
display: flex;
|
|
236
|
+
align-items: center;
|
|
237
|
+
gap: 7px;
|
|
238
|
+
min-width: 0;
|
|
239
|
+
}
|
|
240
|
+
.pretui-error-summary-glyph {
|
|
241
|
+
flex: none;
|
|
242
|
+
--icon-color: var(--pretui-issue-hue);
|
|
243
|
+
color: var(--pretui-issue-hue);
|
|
244
|
+
}
|
|
245
|
+
.pretui-error-summary-title {
|
|
246
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
247
|
+
font-weight: 600;
|
|
248
|
+
color: color-mix(
|
|
249
|
+
in oklch,
|
|
250
|
+
var(--foreground) 45%,
|
|
251
|
+
var(--pretui-issue-hue)
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
.pretui-error-summary-intro {
|
|
255
|
+
margin: 0;
|
|
256
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
257
|
+
color: var(--muted-foreground);
|
|
258
|
+
}
|
|
259
|
+
.pretui-error-summary-list {
|
|
260
|
+
margin: 0;
|
|
261
|
+
padding: 0 0 0 var(--space-4, 11px);
|
|
262
|
+
display: grid;
|
|
263
|
+
gap: 3px;
|
|
264
|
+
}
|
|
265
|
+
.pretui-error-summary-row {
|
|
266
|
+
--pretui-issue-hue: var(--pretui-issue-error, var(--destructive));
|
|
267
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
268
|
+
line-height: 17px;
|
|
269
|
+
color: color-mix(
|
|
270
|
+
in oklch,
|
|
271
|
+
var(--foreground) 22%,
|
|
272
|
+
var(--pretui-issue-hue)
|
|
273
|
+
);
|
|
274
|
+
list-style: disc;
|
|
275
|
+
}
|
|
276
|
+
.pretui-error-summary-row[data-severity='warning'] {
|
|
277
|
+
--pretui-issue-hue: var(--pretui-issue-warning, var(--warning, var(--boxel-warning)));
|
|
278
|
+
}
|
|
279
|
+
.pretui-error-summary-row[data-severity='info'] {
|
|
280
|
+
--pretui-issue-hue: var(--pretui-issue-info, var(--pretui-info, var(--boxel-blue)));
|
|
281
|
+
}
|
|
282
|
+
.pretui-error-summary-link {
|
|
283
|
+
padding: 0;
|
|
284
|
+
border: 0;
|
|
285
|
+
background: none;
|
|
286
|
+
font: inherit;
|
|
287
|
+
color: inherit;
|
|
288
|
+
text-align: left;
|
|
289
|
+
text-decoration: underline;
|
|
290
|
+
text-underline-offset: 2px;
|
|
291
|
+
cursor: pointer;
|
|
292
|
+
}
|
|
293
|
+
.pretui-error-summary-link:hover {
|
|
294
|
+
text-decoration-thickness: 2px;
|
|
295
|
+
}
|
|
296
|
+
.pretui-error-summary-link:focus-visible {
|
|
297
|
+
outline: 2px solid var(--ring);
|
|
298
|
+
outline-offset: 2px;
|
|
299
|
+
border-radius: 3px;
|
|
300
|
+
}
|
|
301
|
+
.pretui-error-summary-orphan {
|
|
302
|
+
display: inline-flex;
|
|
303
|
+
align-items: baseline;
|
|
304
|
+
gap: 6px;
|
|
305
|
+
flex-wrap: wrap;
|
|
306
|
+
}
|
|
307
|
+
.pretui-error-summary-badge {
|
|
308
|
+
font-family: var(--font-mono);
|
|
309
|
+
font-size: var(--text-ui-xs, 11px);
|
|
310
|
+
letter-spacing: var(--track-eyebrow, 0.08em);
|
|
311
|
+
text-transform: uppercase;
|
|
312
|
+
padding: 0 5px;
|
|
313
|
+
border-radius: 4px;
|
|
314
|
+
color: var(--muted-foreground);
|
|
315
|
+
background: var(--inset, var(--boxel-100));
|
|
316
|
+
box-shadow: var(--pretui-shadow-hairline, 0 0 0 1px var(--border));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
</style>
|
|
320
|
+
</template>
|
|
321
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
The form-level list of everything wrong, and the reason nothing gets dropped. Render it at the top of a **Form** so a refused submit has somewhere to land, and so a user can see the whole problem before hunting for it. It is not a replacement for per-field messages — **FormField** still renders its own — it is the index. For a single message about the form as a whole, use **Alert**; for one issue outside a field, use **FieldError**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@issues? — when used without a Form
|
|
9
|
+
@form? — supplied automatically by form.Summary
|
|
10
|
+
@title? — defaults to a count sentence
|
|
11
|
+
@headingLevel? — aria-level, default 3
|
|
12
|
+
@showAdvisory? — include warnings and info, default false
|
|
13
|
+
@always? — render before a submit has been attempted
|
|
14
|
+
@announce? — add role='alert', off by default
|
|
15
|
+
<:default>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**`@headingLevel` is a knob, not a hardcoded `<h2>`.** A card does not know its host's outline, so forcing a level would break document structure wherever the card is embedded. This is a Boxel-specific constraint the reference implementations do not have, and getting it wrong produces heading-order violations in every consuming page.
|
|
19
|
+
|
|
20
|
+
**The correctness contract: every issue in the form appears here.** An issue whose `targetPath` matched no rendered field is rendered with an explicit "not on this form" marking rather than being filtered away. A dropped error is worse than an ugly one, and this is the only component in the territory that can prove nothing was swallowed.
|
|
21
|
+
|
|
22
|
+
The `unroutedIssues` computation depends on `ClaimSet.settled` — a flag that distinguishes "no field has claimed this path" from "no field has registered yet". Without it the summary would flash every issue as unrouted on first paint.
|
|
23
|
+
|
|
24
|
+
## Prior art
|
|
25
|
+
|
|
26
|
+
The canonical spec is **GOV.UK's Error Summary**: render at the top of `<main>` before the `<h1>`, wrap in `role="alert"`, an `<h2>` reading "There is a problem", a `<ul>` of links each `href="#fieldId"`, move keyboard focus to the summary on submit, and keep the summary text verbatim-identical to the inline message. **React Spectrum** and **SLDS** ship neither — this pattern exists as guidance, not as a component, in both.
|
|
27
|
+
|
|
28
|
+
Two deliberate deltas from the pattern as usually written:
|
|
29
|
+
|
|
30
|
+
1. **Rows are buttons, not `href="#id"` anchors.** An anchor mutates the URL, and inside a Boxel card the URL is the _card's_ — a fragment jump there is a navigation, not a focus move. The button calls `focusPath()` and lands focus on exactly the element the anchor would have. This is the right call in this environment and it is worth noting that it costs you the ability to copy a link to a specific error.
|
|
31
|
+
2. **The shell is not **Alert\***\*, even though it would have been one line. Alert hardcodes `role="alert"` (danger) or `role="status"` — a live region that would re-announce the whole list on every keystroke in `live` mode, and double-announce at submit on top of the focus move. **The summary announces by taking focus\*\*, which is the whole point of it.
|
|
32
|
+
|
|
33
|
+
The third improvement over the pattern: GOV.UK's summary lists only the errors it was given. Pretui's marks unrouted issues explicitly, which is the difference between a summary you can trust and one you hope is complete.
|
|
34
|
+
|
|
35
|
+
## Accessibility
|
|
36
|
+
|
|
37
|
+
No APG pattern; the governing criteria are WCAG **3.3.1 Error Identification** and, with well-worded messages, **3.3.3 Error Suggestion**. The behavioural contract is GOV.UK's.
|
|
38
|
+
|
|
39
|
+
What is right:
|
|
40
|
+
|
|
41
|
+
- **Announcement by focus, not by live region.** `@announce` defaults to off, deliberately. Pairing `role="alert"` with a focus move double-announces; in `live` mode a live region would narrate the whole list on every keystroke.
|
|
42
|
+
- **Focus routing works through collapsed sections.** A summary row calls `focusPath()`, which walks up the section ancestry, opens each collapsed **FormSection** and clears its `hidden` attribute in the same tick so focus lands immediately. A user is never sent to a control they cannot see.
|
|
43
|
+
- Each row's target is resolved by preferring the yielded `controlId`, falling back to the first focusable element inside `[data-pretui-form-control]` (deliberately scoped so the help button is not a candidate), and finally to the field root, which carries `tabindex="-1"`.
|
|
44
|
+
- Heading level is authorable, so the summary does not break the host document's outline.
|
|
45
|
+
|
|
46
|
+
Gaps:
|
|
47
|
+
|
|
48
|
+
- **The summary is not focused automatically on render** — it is focused only when `Form.focusInvalid()` runs with `@focusOnInvalid='summary'`, or as the fallback when no invalid field element can be found. GOV.UK's pattern focuses the summary on page load after a server-side rejection; there is no equivalent hook here, so a form re-rendered with issues from a server round trip announces nothing until the user submits again.
|
|
49
|
+
- **Messages are printed verbatim from the rule author.** That is the right architectural choice — rewriting rule copy in a component is how enterprise forms end up lying about what failed — but it means WCAG 3.3.3 conformance depends entirely on how the rules were written, and no component can save you there.
|
|
50
|
+
- **`@showAdvisory` defaults to false**, so warnings and info are absent from the summary by default while still appearing on their fields. That is defensible (the summary is a blocking-issues index) but it means the summary is _not_ a complete list of what the form is saying unless you turn it on.
|
|
51
|
+
- The unrouted marking is visible text, not a distinct role or state — assistive tech hears it as part of the row, which is adequate but undifferentiated.
|
|
52
|
+
- Buttons rather than links means the rows do not appear in a screen reader's link list, which is where some users would look for them.
|
|
53
|
+
|
|
54
|
+
## Theming
|
|
55
|
+
|
|
56
|
+
`--destructive`, `--warning`, `--pretui-info` and their on-colours for the severity tiers; `--card` or `--inset` for the shell, `--border` and `--pretui-shadow-hairline` for its edge, `--foreground` and `--muted-foreground` for heading and body ink, plus **Token**'s tokens when rule provenance is shown.
|
|
57
|
+
|
|
58
|
+
Severity is carried by a glyph and a hue, as in **Alert**, so a field message, a summary row and a banner about the same thing read as one system. A theme that retunes those hues must retune them in all three places or the correspondence breaks — and because severity is conveyed by glyph _and_ hue, it survives WCAG 1.4.1 even if a theme's hues collapse.
|
|
59
|
+
|
|
60
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|