@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,223 @@
|
|
|
1
|
+
// Pretui — AlertDialog: a modal confirmation that demands an explicit answer.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { guidFor } from '@ember/object/internals';
|
|
5
|
+
import { on } from '@ember/modifier';
|
|
6
|
+
import { Dialog } from './dialog';
|
|
7
|
+
import { Button } from './button';
|
|
8
|
+
import type { PretuiTone } from '../pretui-primitives';
|
|
9
|
+
import { listenDocumentCapture } from '../focus';
|
|
10
|
+
|
|
11
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
12
|
+
// AlertDialog
|
|
13
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
14
|
+
|
|
15
|
+
export interface AlertDialogSignature {
|
|
16
|
+
Args: {
|
|
17
|
+
/** controlled open state; omit for uncontrolled */
|
|
18
|
+
open?: boolean;
|
|
19
|
+
/** the uncontrolled starting state */
|
|
20
|
+
defaultOpen?: boolean;
|
|
21
|
+
/** fires on every transition, controlled or not */
|
|
22
|
+
onOpenChange?: (open: boolean) => void;
|
|
23
|
+
/** the question, as a string. `<:header>` takes markup instead. */
|
|
24
|
+
title?: string;
|
|
25
|
+
/** the consequence, as a string. `<:default>` takes markup instead. */
|
|
26
|
+
description?: string;
|
|
27
|
+
/** the confirm button's label (default 'Continue') */
|
|
28
|
+
confirmLabel?: string;
|
|
29
|
+
/** the cancel button's label (default 'Cancel') */
|
|
30
|
+
cancelLabel?: string;
|
|
31
|
+
/** tone of the confirm button (default 'danger' — this is the pattern
|
|
32
|
+
* for destructive actions, and a neutral confirm is the unusual case) */
|
|
33
|
+
tone?: PretuiTone;
|
|
34
|
+
/** puts the confirm button in its pending state without disabling it */
|
|
35
|
+
busy?: boolean;
|
|
36
|
+
size?: 's' | 'm' | 'l';
|
|
37
|
+
/** Escape cancels (default true). Outside clicks NEVER dismiss — that is
|
|
38
|
+
* the difference from Dialog, and it is not a knob. */
|
|
39
|
+
dismissOnEscape?: boolean;
|
|
40
|
+
onConfirm?: () => void;
|
|
41
|
+
onCancel?: () => void;
|
|
42
|
+
};
|
|
43
|
+
Blocks: {
|
|
44
|
+
trigger: [open: boolean, toggle: () => void];
|
|
45
|
+
header: [];
|
|
46
|
+
default: [];
|
|
47
|
+
footer: [confirm: () => void, cancel: () => void];
|
|
48
|
+
};
|
|
49
|
+
Element: HTMLDialogElement;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The destructive-confirm every shadcn app has, composed from `Dialog`.
|
|
54
|
+
*
|
|
55
|
+
* Four things separate it from a Dialog, and each one is a decision rather
|
|
56
|
+
* than a style:
|
|
57
|
+
*
|
|
58
|
+
* 1. **It is always modal.** A confirmation that can be ignored by clicking
|
|
59
|
+
* past it is not a confirmation.
|
|
60
|
+
* 2. **No dismiss on outside click.** A stray click must not read as an
|
|
61
|
+
* answer. `Dialog`'s single `@dismissible` flag conflates outside-click
|
|
62
|
+
* with Escape, so this passes `@dismissible={{false}}` and takes Escape
|
|
63
|
+
* itself — in the capture phase, so a host listening for Escape cannot
|
|
64
|
+
* make one keypress mean two things.
|
|
65
|
+
* 3. **Focus starts on Cancel.** Cancel is first in DOM order, so the native
|
|
66
|
+
* `<dialog>` focusing steps land there with no JS at all — the platform
|
|
67
|
+
* doing the work is both smaller and more reliable than a focus call.
|
|
68
|
+
* Reading order stays Cancel → Confirm, which is also the shadcn layout.
|
|
69
|
+
* 4. **`role='alertdialog'`**, which is what tells assistive technology this
|
|
70
|
+
* interrupts rather than presents, plus `aria-labelledby` on the question
|
|
71
|
+
* and `aria-describedby` on the consequence.
|
|
72
|
+
*
|
|
73
|
+
* **Better than shadcn/Radix:** Radix's `AlertDialogAction` closes the dialog
|
|
74
|
+
* on click whether or not the work succeeded, so a failed confirm leaves no
|
|
75
|
+
* surface to report the failure on. `@busy` here holds the dialog open with
|
|
76
|
+
* the confirm button in Button's *pending* state — `aria-busy` and inert, with
|
|
77
|
+
* focus retained, never the native `disabled` attribute that would drop focus
|
|
78
|
+
* onto the body mid-action.
|
|
79
|
+
*/
|
|
80
|
+
export class AlertDialog extends Component<AlertDialogSignature> {
|
|
81
|
+
private guid = guidFor(this);
|
|
82
|
+
@tracked private internalOpen = this.args.defaultOpen ?? false;
|
|
83
|
+
|
|
84
|
+
get isOpen(): boolean {
|
|
85
|
+
return this.args.open ?? this.internalOpen;
|
|
86
|
+
}
|
|
87
|
+
get titleId(): string {
|
|
88
|
+
return this.guid + '-title';
|
|
89
|
+
}
|
|
90
|
+
get descId(): string {
|
|
91
|
+
return this.guid + '-desc';
|
|
92
|
+
}
|
|
93
|
+
get confirmLabel(): string {
|
|
94
|
+
return this.args.confirmLabel ?? 'Continue';
|
|
95
|
+
}
|
|
96
|
+
get cancelLabel(): string {
|
|
97
|
+
return this.args.cancelLabel ?? 'Cancel';
|
|
98
|
+
}
|
|
99
|
+
get tone(): PretuiTone {
|
|
100
|
+
return this.args.tone ?? 'danger';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private setOpen(next: boolean) {
|
|
104
|
+
if (this.args.open === undefined) {
|
|
105
|
+
this.internalOpen = next;
|
|
106
|
+
}
|
|
107
|
+
this.args.onOpenChange?.(next);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
toggle = () => {
|
|
111
|
+
this.setOpen(!this.isOpen);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
confirm = () => {
|
|
115
|
+
// Pending is inert without being disabled: a second activation while the
|
|
116
|
+
// caller's work is in flight must not fire it twice, but the button has
|
|
117
|
+
// to stay focusable for the announcement to reach anyone.
|
|
118
|
+
if (this.args.busy) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.args.onConfirm?.();
|
|
122
|
+
if (!this.args.busy) {
|
|
123
|
+
this.setOpen(false);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
cancel = () => {
|
|
128
|
+
this.args.onCancel?.();
|
|
129
|
+
this.setOpen(false);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
/** Dialog requires an `@onClose`; with `@dismissible={{false}}` it is never
|
|
133
|
+
* called, but wiring it to cancel means a platform-level close (a future
|
|
134
|
+
* `requestClose`, a devtools call) still routes through one path. */
|
|
135
|
+
onPlatformClose = () => {
|
|
136
|
+
this.cancel();
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
onEscape = (event: Event) => {
|
|
140
|
+
if ((this.args.dismissOnEscape ?? true) === false) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
let ev = event as KeyboardEvent;
|
|
144
|
+
if (ev.key !== 'Escape' || !this.isOpen) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
ev.preventDefault();
|
|
148
|
+
ev.stopPropagation();
|
|
149
|
+
this.cancel();
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
<template>
|
|
153
|
+
{{#if (has-block 'trigger')}}
|
|
154
|
+
<span class='pretui-ad-trigger' data-test-pretui-alertdialog-trigger>
|
|
155
|
+
{{yield this.isOpen this.toggle to='trigger'}}
|
|
156
|
+
</span>
|
|
157
|
+
{{/if}}
|
|
158
|
+
|
|
159
|
+
<Dialog
|
|
160
|
+
@open={{this.isOpen}}
|
|
161
|
+
@onClose={{this.onPlatformClose}}
|
|
162
|
+
@dismissible={{false}}
|
|
163
|
+
@size={{@size}}
|
|
164
|
+
role='alertdialog'
|
|
165
|
+
aria-labelledby={{this.titleId}}
|
|
166
|
+
aria-describedby={{this.descId}}
|
|
167
|
+
data-test-pretui-alertdialog
|
|
168
|
+
...attributes
|
|
169
|
+
>
|
|
170
|
+
<:title>
|
|
171
|
+
<span id={{this.titleId}}>
|
|
172
|
+
{{#if (has-block 'header')}}{{yield to='header'}}{{else}}{{@title}}{{/if}}
|
|
173
|
+
</span>
|
|
174
|
+
</:title>
|
|
175
|
+
<:default>
|
|
176
|
+
{{#if this.isOpen}}
|
|
177
|
+
{{!-- Escape is taken in the capture phase and only while open, so
|
|
178
|
+
the listener's lifetime is exactly the dialog's open life. --}}
|
|
179
|
+
<span
|
|
180
|
+
class='pretui-ad-watch'
|
|
181
|
+
{{listenDocumentCapture 'keydown' this.onEscape}}
|
|
182
|
+
></span>
|
|
183
|
+
{{/if}}
|
|
184
|
+
<div id={{this.descId}}>
|
|
185
|
+
{{#if (has-block)}}{{yield}}{{else}}{{@description}}{{/if}}
|
|
186
|
+
</div>
|
|
187
|
+
</:default>
|
|
188
|
+
<:footer>
|
|
189
|
+
{{#if (has-block 'footer')}}
|
|
190
|
+
{{yield this.confirm this.cancel to='footer'}}
|
|
191
|
+
{{else}}
|
|
192
|
+
{{!-- Cancel first in DOM order: the native dialog focusing steps
|
|
193
|
+
land on the first focusable, so the safe choice is focused
|
|
194
|
+
without a single focus() call. --}}
|
|
195
|
+
<Button
|
|
196
|
+
@tone='neutral'
|
|
197
|
+
@appearance='outlined'
|
|
198
|
+
data-test-pretui-alertdialog-cancel
|
|
199
|
+
{{on 'click' this.cancel}}
|
|
200
|
+
>{{this.cancelLabel}}</Button>
|
|
201
|
+
<Button
|
|
202
|
+
@tone={{this.tone}}
|
|
203
|
+
@appearance='accent'
|
|
204
|
+
@busy={{@busy}}
|
|
205
|
+
data-test-pretui-alertdialog-confirm
|
|
206
|
+
{{on 'click' this.confirm}}
|
|
207
|
+
>{{this.confirmLabel}}</Button>
|
|
208
|
+
{{/if}}
|
|
209
|
+
</:footer>
|
|
210
|
+
</Dialog>
|
|
211
|
+
|
|
212
|
+
<style scoped>
|
|
213
|
+
@layer PretComponent {
|
|
214
|
+
.pretui-ad-trigger {
|
|
215
|
+
display: inline-flex;
|
|
216
|
+
}
|
|
217
|
+
.pretui-ad-watch {
|
|
218
|
+
display: none;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
</style>
|
|
222
|
+
</template>
|
|
223
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A **decision**, not a notification. The user must confirm or cancel before the app continues: delete a record, overwrite a file, leave a dirty form. It is a **Dialog** with a locked contract: a question, its consequence, Cancel and Confirm. Confirm defaults to `@tone='danger'`, because the pattern exists for destructive actions.
|
|
4
|
+
|
|
5
|
+
If the question is tiny and can sit next to its trigger, use **Popconfirm**. If the message informs rather than asks, and stays in flow, use **Alert**. If it is transient, **Toast**. If the answer needs a form, it is a **Dialog**, not an AlertDialog.
|
|
6
|
+
|
|
7
|
+
```mermaid
|
|
8
|
+
flowchart TD
|
|
9
|
+
Q{Needs a decision?}
|
|
10
|
+
Q -->|in flow, persistent| Alert
|
|
11
|
+
Q -->|transient| Toast
|
|
12
|
+
Q -->|tiny, next to trigger| Popconfirm
|
|
13
|
+
Q -->|blocks the app| AlertDialog
|
|
14
|
+
Q -->|has a form| Dialog
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## The contract
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
@open?, @defaultOpen?, @onOpenChange?
|
|
21
|
+
@title?, @description?
|
|
22
|
+
@confirmLabel? ('Continue'), @cancelLabel? ('Cancel')
|
|
23
|
+
@tone? (default 'danger' — the confirm button's tone)
|
|
24
|
+
@busy?, @size? ('s' | 'm' | 'l'), @dismissOnEscape? (default true)
|
|
25
|
+
@onConfirm?, @onCancel?
|
|
26
|
+
<:trigger as |open toggle|> — renders the opener, uncontrolled
|
|
27
|
+
<:header> — replaces @title with markup
|
|
28
|
+
<:default> — replaces @description with markup
|
|
29
|
+
<:footer as |confirm cancel|> — replaces the Cancel / Confirm pair
|
|
30
|
+
Element: HTMLDialogElement
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Controlled or not.** Pass `@open` and it is controlled. Omit it and `@defaultOpen` sets the starting state, with `<:trigger>` toggling it. `@onOpenChange` fires on every transition either way.
|
|
34
|
+
|
|
35
|
+
**An outside click never answers.** Dialog's one dismissible flag covers both the scrim and Escape, so AlertDialog turns it off and handles Escape itself. It listens in the capture phase and only while open, so one keypress cannot also reach a host shortcut. `@dismissOnEscape={{false}}` removes even that, leaving the two buttons as the only way out. Outside-click dismissal is not a knob.
|
|
36
|
+
|
|
37
|
+
**Confirm can wait for the work.** Confirm calls `@onConfirm` and closes, unless `@busy` is true once the handler returns. Then the dialog stays open and the confirm button goes pending through Button's own `@busy`: a spinner, `aria-busy="true"` and `aria-disabled`, never the native `disabled` attribute, so focus stays on it. A second activation while busy is ignored. When the caller clears `@busy` it closes the dialog through `@open` (or `@onOpenChange`), or leaves it open to report a failure in place.
|
|
38
|
+
|
|
39
|
+
Cancel calls `@onCancel`, then closes. A platform-level close routes through the same path.
|
|
40
|
+
|
|
41
|
+
## Prior art
|
|
42
|
+
|
|
43
|
+
**shadcn AlertDialog** is Radix AlertDialog: Root / Trigger / Portal / Overlay / Content, plus Header / Footer / Title / Description / Action / Cancel, with Content `size` `default | sm`. **Ant `Modal.confirm`** is imperative: `Modal.confirm({ title, onOk })`, and agents will emit that shape. **MUI** composes a plain Dialog with `aria-labelledby`. **React Spectrum** `AlertDialog` has a `variant` and focuses the primary button.
|
|
44
|
+
|
|
45
|
+
Where Pretui is better: **a failed confirm has somewhere to go.** Radix's `AlertDialogAction` closes the dialog on click whether or not the work succeeded. `@busy` holds it open with the button pending and still focused, so the result can be announced where the user is looking. **Focus lands on Cancel** with no script: Cancel is first in DOM order, and the native `<dialog>` focusing steps pick the first focusable. Spectrum focuses the destructive button, and that is the wrong default for this pattern.
|
|
46
|
+
|
|
47
|
+
Where it is thinner: **no imperative helper.** There is no promise-returning `confirm()` for the Ant shape. The caller renders the component and wires `@open`. **No media slot** for an icon or illustration beside the question.
|
|
48
|
+
|
|
49
|
+
## Accessibility
|
|
50
|
+
|
|
51
|
+
APG **Alert and Message Dialogs**. The element is the native `<dialog>` opened modally, with `role="alertdialog"`, `aria-labelledby` on the question and `aria-describedby` on the consequence. The ids are generated per instance, and the tests assert all three.
|
|
52
|
+
|
|
53
|
+
- **Initial focus is Cancel**, the least destructive choice. That comes from the native focusing steps, and the tests assert the precondition: Cancel is the first button in the dialog, Confirm the second.
|
|
54
|
+
- **Escape cancels, never confirms.** An outside click does nothing. The tests assert both.
|
|
55
|
+
- **Pending is announced, not disabled.** `aria-busy="true"` keeps the confirm button in the accessibility tree and focused while the work runs. The tests assert it carries `aria-busy`, is not natively disabled, and ignores a second activation.
|
|
56
|
+
- **The labels are the caller's job.** "Continue" is a weak default for a destructive action. Say what happens (`@confirmLabel='Delete project'`), and put the consequence in `@description`, which becomes the accessible description.
|
|
57
|
+
- **A custom `<:footer>` gives up the defaults.** Keep Cancel first in DOM order if you want the focus behaviour.
|
|
58
|
+
|
|
59
|
+
## Theming
|
|
60
|
+
|
|
61
|
+
AlertDialog adds no tokens of its own. It wears **Dialog**'s: `--card`, `--foreground`, `--muted-foreground`, `--border`, `--radius-surface`, `--pretui-shadow-overlay`, `--pretui-overlay-scrim`, `--text-heading`, `--weight-heading`, `--track-heading`, `--text-body`, `--leading-body`, `--space-3`, `--space-4` and `--space-6`. The buttons are **Button**'s: the confirm tone reads `--destructive` / `--destructive-foreground` for `danger`, and `--pretui-button-*` for size and shape.
|
|
62
|
+
|
|
63
|
+
A theme that retunes Dialog and Button retunes every AlertDialog with them. The Cancel-then-Confirm order and the outlined-then-accent pairing are fixed.
|
|
64
|
+
|
|
65
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
66
|
+
|
|
67
|
+
## React ecosystem
|
|
68
|
+
|
|
69
|
+
| Agent types | Give them |
|
|
70
|
+
| ----------------------------------- | ------------------------------------------- |
|
|
71
|
+
| `<AlertDialog open onOpenChange>` | `@open` / `@onOpenChange` |
|
|
72
|
+
| AlertDialogTitle / Description | `@title` / `@description`, or the blocks |
|
|
73
|
+
| AlertDialogAction / Cancel | the default footer, or `<:footer>` |
|
|
74
|
+
| `variant="destructive"` | `@tone='danger'` (the default) |
|
|
75
|
+
| Ant `onOk` / `onCancel`, `okText` | `@onConfirm` / `@onCancel`, `@confirmLabel` |
|
|
76
|
+
| `Modal.confirm({...})` (imperative) | render the component; no helper |
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// Pretui — AlertDialog usage page.
|
|
2
|
+
import GlimmerComponent from '@glimmer/component';
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
4
|
+
import { tracked } from '@glimmer/tracking';
|
|
5
|
+
import { AlertDialog } from './alert-dialog';
|
|
6
|
+
import { Button } from './button';
|
|
7
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
8
|
+
|
|
9
|
+
// ── AlertDialog ──────────────────────────────────────────────────────────
|
|
10
|
+
|
|
11
|
+
class AlertDialogUsage extends GlimmerComponent {
|
|
12
|
+
@tracked open = false;
|
|
13
|
+
@tracked busy = false;
|
|
14
|
+
@tracked log = '—';
|
|
15
|
+
|
|
16
|
+
setOpen = (next: boolean) => (this.open = next);
|
|
17
|
+
confirmed = () => (this.log = 'Deleted 47 records');
|
|
18
|
+
cancelled = () => (this.log = 'Cancelled');
|
|
19
|
+
setBusy = (value: boolean) => (this.busy = value);
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<FreestyleUsage
|
|
23
|
+
@name='AlertDialog'
|
|
24
|
+
@description='The destructive confirm, composed from Dialog. Four things separate it from a Dialog and each is a decision rather than a style: it is always modal, an outside click never dismisses it, focus starts on Cancel, and its role is alertdialog so assistive tech is told this interrupts rather than presents. Cancel is FIRST in DOM order, which means the native dialog focusing steps land on the safe choice with no focus() call at all — the platform does the work. Escape is taken in the capture phase, so a host page that also listens for Escape cannot make one keypress mean two things.'
|
|
25
|
+
>
|
|
26
|
+
<:example>
|
|
27
|
+
<div class='oc-row'>
|
|
28
|
+
<AlertDialog
|
|
29
|
+
@open={{this.open}}
|
|
30
|
+
@onOpenChange={{this.setOpen}}
|
|
31
|
+
@title='Delete 47 records?'
|
|
32
|
+
@description='They will be removed from the index immediately and from the archive at the next sweep. This cannot be undone.'
|
|
33
|
+
@confirmLabel='Delete records'
|
|
34
|
+
@cancelLabel='Keep them'
|
|
35
|
+
@busy={{this.busy}}
|
|
36
|
+
@onConfirm={{this.confirmed}}
|
|
37
|
+
@onCancel={{this.cancelled}}
|
|
38
|
+
>
|
|
39
|
+
<:trigger as |isOpen toggle|>
|
|
40
|
+
<Button
|
|
41
|
+
@tone='danger'
|
|
42
|
+
@appearance='outlined'
|
|
43
|
+
{{on 'click' toggle}}
|
|
44
|
+
>{{if isOpen 'Close' 'Delete records…'}}</Button>
|
|
45
|
+
</:trigger>
|
|
46
|
+
</AlertDialog>
|
|
47
|
+
<span class='oc-log'>last action: <strong>{{this.log}}</strong></span>
|
|
48
|
+
</div>
|
|
49
|
+
<p class='oc-hint'>Open it and press Tab once: focus is already on
|
|
50
|
+
<em>Keep them</em>, so the first thing the keyboard can do is the safe
|
|
51
|
+
thing. Click the scrim and nothing happens. Escape cancels.</p>
|
|
52
|
+
</:example>
|
|
53
|
+
<:api as |Args|>
|
|
54
|
+
<Args.Base
|
|
55
|
+
@name='open / onOpenChange / defaultOpen'
|
|
56
|
+
@description='The controlled and uncontrolled halves of one contract. onClose alone is never enough — a parent that can be told the dialog closed but cannot open it has not been given control of it.'
|
|
57
|
+
@hideControls={{true}}
|
|
58
|
+
/>
|
|
59
|
+
<Args.String
|
|
60
|
+
@name='title'
|
|
61
|
+
@description='The question. The header block takes markup instead, and either way the element carries the id that aria-labelledby points at.'
|
|
62
|
+
@value='Delete 47 records?'
|
|
63
|
+
@hideControls={{true}}
|
|
64
|
+
/>
|
|
65
|
+
<Args.String
|
|
66
|
+
@name='description'
|
|
67
|
+
@description='The consequence, wired as aria-describedby. The default block takes markup instead.'
|
|
68
|
+
@hideControls={{true}}
|
|
69
|
+
/>
|
|
70
|
+
<Args.Bool
|
|
71
|
+
@name='busy'
|
|
72
|
+
@description='Holds the dialog open with the confirm button pending. Radix closes on click whether or not the work succeeded, which leaves a failed confirm with no surface to report on. Pending here is React Aria semantics — aria-busy with focus retained, never the native disabled attribute, which would drop focus on the body mid-action.'
|
|
73
|
+
@value={{this.busy}}
|
|
74
|
+
@defaultValue={{false}}
|
|
75
|
+
@onInput={{this.setBusy}}
|
|
76
|
+
/>
|
|
77
|
+
<Args.Base
|
|
78
|
+
@name='tone / confirmLabel / cancelLabel / size'
|
|
79
|
+
@description='Tone defaults to danger because that is the pattern; a neutral confirm is the unusual case. The two labels should name the verb, not say Yes and No — a button reading Delete records is answerable without re-reading the question.'
|
|
80
|
+
@hideControls={{true}}
|
|
81
|
+
/>
|
|
82
|
+
<Args.Base
|
|
83
|
+
@name='dismissOnEscape'
|
|
84
|
+
@description='Escape cancels by default. Outside clicks NEVER dismiss and that is deliberately not a knob: a stray click must not read as an answer.'
|
|
85
|
+
@hideControls={{true}}
|
|
86
|
+
/>
|
|
87
|
+
<Args.Yield
|
|
88
|
+
@name='trigger / header / default / footer'
|
|
89
|
+
@description='The overlay block set. The footer block receives confirm and cancel, so a caller replacing the buttons keeps the wiring. Radix compound children map one to one onto these blocks — AlertDialogTitle is the header block, AlertDialogFooter is the footer block.'
|
|
90
|
+
@hideControls={{true}}
|
|
91
|
+
/>
|
|
92
|
+
</:api>
|
|
93
|
+
</FreestyleUsage>
|
|
94
|
+
|
|
95
|
+
<style scoped>
|
|
96
|
+
.oc-row {
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
gap: var(--space-4, 11px);
|
|
100
|
+
flex-wrap: wrap;
|
|
101
|
+
}
|
|
102
|
+
.oc-log {
|
|
103
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
104
|
+
color: var(--muted-foreground);
|
|
105
|
+
}
|
|
106
|
+
.oc-log strong {
|
|
107
|
+
color: var(--foreground);
|
|
108
|
+
font-weight: 600;
|
|
109
|
+
}
|
|
110
|
+
.oc-hint {
|
|
111
|
+
margin: var(--space-4, 11px) 0 0;
|
|
112
|
+
max-width: 62ch;
|
|
113
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
114
|
+
line-height: 1.6;
|
|
115
|
+
color: var(--muted-foreground);
|
|
116
|
+
}
|
|
117
|
+
.oc-hint em {
|
|
118
|
+
font-style: normal;
|
|
119
|
+
font-weight: 600;
|
|
120
|
+
color: var(--foreground);
|
|
121
|
+
}
|
|
122
|
+
</style>
|
|
123
|
+
</template>
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export const DEMOS_ALERT_DIALOG: Record<string, unknown> = {
|
|
127
|
+
AlertDialog: AlertDialogUsage,
|
|
128
|
+
};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// Pretui — Alert: an inline message with a tone, a title and an optional action.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { htmlSafe } from '@ember/template';
|
|
4
|
+
import AlertTriangleIcon from '@cardstack/boxel-icons/alert-triangle';
|
|
5
|
+
import CheckIcon from '@cardstack/boxel-icons/check';
|
|
6
|
+
import InfoIcon from '@cardstack/boxel-icons/info-small';
|
|
7
|
+
import XIcon from '@cardstack/boxel-icons/x';
|
|
8
|
+
import { keepStyle, type KeptProperty } from '../internal/keep-style';
|
|
9
|
+
import { resolveTone } from '../pretui-primitives';
|
|
10
|
+
import type { PretuiToneArg } from '../pretui-primitives';
|
|
11
|
+
import { VisuallyHidden } from './visually-hidden';
|
|
12
|
+
|
|
13
|
+
type AlertTone = 'info' | 'success' | 'warning' | 'danger';
|
|
14
|
+
const ALERT_TONES: readonly AlertTone[] = [
|
|
15
|
+
'info',
|
|
16
|
+
'success',
|
|
17
|
+
'warning',
|
|
18
|
+
'danger',
|
|
19
|
+
];
|
|
20
|
+
// shadcn's Alert has one `variant` enum rather than a tone. Both of its
|
|
21
|
+
// values map onto tones this component already paints.
|
|
22
|
+
const ALERT_VARIANTS: Record<string, AlertTone> = {
|
|
23
|
+
default: 'info',
|
|
24
|
+
destructive: 'danger',
|
|
25
|
+
};
|
|
26
|
+
// Each tone names its fill and the fill's paired foreground (the ink that
|
|
27
|
+
// reads on the disc). The text is `--foreground`: the `-ink` tokens are only
|
|
28
|
+
// guaranteed on `--background`, `--card` and `--muted`, not on the tint.
|
|
29
|
+
const ALERT_COLORS: Record<AlertTone, { hue: string; onHue: string }> = {
|
|
30
|
+
info: {
|
|
31
|
+
hue: 'var(--info)',
|
|
32
|
+
onHue: 'var(--info-foreground)',
|
|
33
|
+
},
|
|
34
|
+
success: {
|
|
35
|
+
hue: 'var(--success)',
|
|
36
|
+
onHue: 'var(--success-foreground)',
|
|
37
|
+
},
|
|
38
|
+
warning: {
|
|
39
|
+
hue: 'var(--warning)',
|
|
40
|
+
onHue: 'var(--warning-foreground)',
|
|
41
|
+
},
|
|
42
|
+
danger: {
|
|
43
|
+
hue: 'var(--destructive)',
|
|
44
|
+
onHue: 'var(--destructive-foreground)',
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
const ALERT_ICONS = {
|
|
48
|
+
info: InfoIcon,
|
|
49
|
+
success: CheckIcon,
|
|
50
|
+
warning: AlertTriangleIcon,
|
|
51
|
+
danger: XIcon,
|
|
52
|
+
};
|
|
53
|
+
// The glyph is hidden from assistive technology, so the tone is spoken as a
|
|
54
|
+
// word instead. Without it, `info`, `success` and `warning` all share
|
|
55
|
+
// `role="status"` and are announced identically.
|
|
56
|
+
const ALERT_TONE_LABELS: Record<AlertTone, string> = {
|
|
57
|
+
info: 'Info',
|
|
58
|
+
success: 'Success',
|
|
59
|
+
warning: 'Warning',
|
|
60
|
+
danger: 'Error',
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export interface AlertSignature {
|
|
64
|
+
Args: {
|
|
65
|
+
/** accepts the React tone spellings — `destructive`/`error` → danger,
|
|
66
|
+
* `positive` → success, `notice` → warning. Tones outside the four an
|
|
67
|
+
* Alert paints fall back to `info` rather than emitting a dead
|
|
68
|
+
* `data-tone`. */
|
|
69
|
+
tone?: AlertTone | PretuiToneArg;
|
|
70
|
+
title?: string;
|
|
71
|
+
/** alias — shadcn's one-enum Alert API (`default` | `destructive`) */
|
|
72
|
+
variant?: 'default' | 'destructive';
|
|
73
|
+
/** the tone word a screen reader hears before the title, in place of the
|
|
74
|
+
* hidden glyph. Defaults by tone: Info, Success, Warning, Error. */
|
|
75
|
+
toneLabel?: string;
|
|
76
|
+
};
|
|
77
|
+
Blocks: { default: []; action: [] };
|
|
78
|
+
Element: HTMLDivElement;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export class Alert extends Component<AlertSignature> {
|
|
82
|
+
get tone(): AlertTone {
|
|
83
|
+
let fromVariant = this.args.variant
|
|
84
|
+
? ALERT_VARIANTS[this.args.variant]
|
|
85
|
+
: undefined;
|
|
86
|
+
return resolveTone(this.args.tone, ALERT_TONES, fromVariant ?? 'info');
|
|
87
|
+
}
|
|
88
|
+
get role() {
|
|
89
|
+
return this.tone === 'danger' ? 'alert' : 'status';
|
|
90
|
+
}
|
|
91
|
+
get hueStyle() {
|
|
92
|
+
let { hue, onHue } = ALERT_COLORS[this.tone];
|
|
93
|
+
return htmlSafe(`--pretui-alert-hue: ${hue}; --pretui-alert-on-hue: ${onHue}`,
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
// The same properties again, kept on top of a caller's `style`: a caller's
|
|
97
|
+
// `style` attribute replaces the component's own, and the tint, hairline
|
|
98
|
+
// and glyph disc all read these properties.
|
|
99
|
+
get keptStyle(): KeptProperty[] {
|
|
100
|
+
let { hue, onHue } = ALERT_COLORS[this.tone];
|
|
101
|
+
return [
|
|
102
|
+
{ property: '--pretui-alert-hue', value: hue, strength: 'arg' },
|
|
103
|
+
{ property: '--pretui-alert-on-hue', value: onHue, strength: 'arg' },
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
get Glyph() {
|
|
107
|
+
return ALERT_ICONS[this.tone];
|
|
108
|
+
}
|
|
109
|
+
get spokenTone(): string {
|
|
110
|
+
return `${this.args.toneLabel ?? ALERT_TONE_LABELS[this.tone]}:`;
|
|
111
|
+
}
|
|
112
|
+
<template>
|
|
113
|
+
<div class='pretui-alert' role={{this.role}} style={{this.hueStyle}} {{keepStyle this.keptStyle}} data-test-pretui-alert ...attributes>
|
|
114
|
+
<span class='pretui-alert-glyph' aria-hidden='true'>
|
|
115
|
+
<this.Glyph width='12' height='12' />
|
|
116
|
+
</span>
|
|
117
|
+
<VisuallyHidden>{{this.spokenTone}}</VisuallyHidden>
|
|
118
|
+
<div class='pretui-alert-body'>
|
|
119
|
+
{{#if @title}}<p class='pretui-alert-title'>{{@title}}</p>{{/if}}
|
|
120
|
+
{{#if (has-block)}}<div>{{yield}}</div>{{/if}}
|
|
121
|
+
{{#if (has-block 'action')}}<div class='pretui-alert-action'>{{yield to='action'}}</div>{{/if}}
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
<style scoped>
|
|
125
|
+
@layer PretComponent {
|
|
126
|
+
.pretui-alert {
|
|
127
|
+
--pretui-alert-mix: 20%;
|
|
128
|
+
display: flex;
|
|
129
|
+
gap: var(--boxel-sp-xs);
|
|
130
|
+
padding: var(--boxel-sp-2xs) var(--boxel-sp-xs);
|
|
131
|
+
border-radius: var(--boxel-border-radius);
|
|
132
|
+
background-color: color-mix(in oklch, var(--pretui-alert-hue) var(--pretui-alert-mix), var(--card));
|
|
133
|
+
color: var(--foreground);
|
|
134
|
+
box-shadow: 0 0 0 1px color-mix(in oklch, var(--pretui-alert-hue) 25%, var(--border));
|
|
135
|
+
font-size: var(--boxel-font-size-xs);
|
|
136
|
+
}
|
|
137
|
+
.pretui-alert-glyph {
|
|
138
|
+
width: 1rem;
|
|
139
|
+
height: 1rem;
|
|
140
|
+
border-radius: 50%;
|
|
141
|
+
flex: none;
|
|
142
|
+
display: grid;
|
|
143
|
+
place-items: center;
|
|
144
|
+
background-color: var(--pretui-alert-hue);
|
|
145
|
+
color: var(--pretui-alert-on-hue);
|
|
146
|
+
margin-top: 1px;
|
|
147
|
+
}
|
|
148
|
+
.pretui-alert-body {
|
|
149
|
+
display: grid;
|
|
150
|
+
gap: var(--boxel-sp-6xs);
|
|
151
|
+
min-width: 0;
|
|
152
|
+
}
|
|
153
|
+
.pretui-alert-title {
|
|
154
|
+
margin: 0;
|
|
155
|
+
font-weight: 600;
|
|
156
|
+
}
|
|
157
|
+
.pretui-alert-action {
|
|
158
|
+
margin-top: var(--boxel-sp-3xs);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
</style>
|
|
162
|
+
</template>
|
|
163
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
An inline banner carrying a tone: something succeeded, something needs attention, something failed. It sits **in the flow of the page**, next to the thing it is about. Use it for state that persists — a form-level failure, a warning about a record's condition, a note about what a panel is showing. If the message is transient and about an action just taken, use **Toast**. If it belongs to one field, use **FieldError**. If it is the whole content of an empty region, use **EmptyState**.
|
|
4
|
+
|
|
5
|
+
**Callout** is this same class re-exported under another name, and `callout.md` documents it too, so a change to the tones, roles, glyph or tone word here must also be made there.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@tone? 'info' | 'success' | 'warning' | 'danger' (default 'info')
|
|
11
|
+
@title?
|
|
12
|
+
@toneLabel? (default by tone: 'Info' | 'Success' | 'Warning' | 'Error')
|
|
13
|
+
<:default> <:action>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**One hue in, a complete treatment out.** This is the kit's Law 2, and Alert is its clearest expression: `@tone` selects the hue and on-hue custom properties (`--pretui-alert-hue`, `--pretui-alert-on-hue`), and the stylesheet derives the tints from the hue with `color-mix` — a 20% tint over `--card` for the background, a 25% mix with `--border` for the hairline, and the hue neat for the glyph disc. Text uses `--foreground`, so the tint, hairline and disc carry the tone, and the glyph uses the fill's paired `-foreground`. No semantic hexes are baked in anywhere. Adding a fifth tone is one entry in the color map.
|
|
17
|
+
|
|
18
|
+
Each tone has its own icon from `@cardstack/boxel-icons` (Info, Check, Alert Triangle and X), painted in the tone's `-foreground`. **FieldError** and **ErrorSummary** mark severity with their own glyphs and the same four hues, so a field message, a summary row and a banner about the same thing still read as one system.
|
|
19
|
+
|
|
20
|
+
**The role flips with the tone**: `danger` gets `role="alert"` (assertive), everything else gets `role="status"` (polite). That is a real decision, not a default — see below.
|
|
21
|
+
|
|
22
|
+
## Prior art
|
|
23
|
+
|
|
24
|
+
**Web Awesome `wa-callout`** takes `variant` (`brand|success|neutral|warning|danger`), `appearance` (`accent|filled|outlined|plain`) and `size`, with icon and default slots — a fuller treatment grid, and no ARIA at all (it is presentational by design, leaving the live-region decision to the caller). **shadcn `Alert`** is `default`/`destructive` with `AlertTitle`/`AlertDescription` and hardcodes `role="alert"` on every instance. **React Spectrum `InlineAlert`** has `variant` (`neutral|info|positive|notice|negative`) and, notably, `autoFocus` — it moves focus to itself rather than relying on a live region.
|
|
25
|
+
|
|
26
|
+
Where Pretui is better than shadcn: **shadcn puts `role="alert"` on an informational banner**, which means an assertive interruption for a message that says "3 records imported". Pretui's tone-driven role is the right granularity — assertive for failures, polite for everything else — and it costs one getter.
|
|
27
|
+
|
|
28
|
+
Where Pretui is better than Web Awesome: the `color-mix` derivation. Web Awesome's variants are enumerated stylesheets; a new tone means a new block. Here the recipe is written once.
|
|
29
|
+
|
|
30
|
+
Where it is thinner: no `appearance` axis (Web Awesome's outlined/plain callouts have no equivalent), no dismiss affordance, no icon slot — the icon is fixed per tone.
|
|
31
|
+
|
|
32
|
+
## Accessibility
|
|
33
|
+
|
|
34
|
+
Governing pattern: APG **Alert** (`role="alert"`, nothing else required) and the live-region rules generally.
|
|
35
|
+
|
|
36
|
+
What is right: the assertive/polite split by tone, and the fact that both `alert` and `status` carry implicit `aria-atomic="true"`, so the whole banner is re-read rather than just the changed fragment. The glyph is `aria-hidden`, so the banner is not announced as an image first. The role alone cannot carry the tone: it singles out `danger`, and `info`, `success` and `warning` all share `role="status"`. So a visually hidden tone word sits where the glyph is, and the banner is announced as "Warning: Low credit", the way GOV.UK's warning text carries a hidden "Warning". `@toneLabel` replaces the word, for a translation or a more exact one such as "Caution" on a delete confirmation.
|
|
37
|
+
|
|
38
|
+
Gaps, and one is significant:
|
|
39
|
+
|
|
40
|
+
- **The live region is created together with its content.** A live region must exist in the DOM _before_ its content changes to be reliably announced. `{{#if this.showAlert}}<Alert>` mounts the region and its text in the same frame, and several screen readers will say nothing. `role="alert"` is partly exempt — some readers do announce alerts inserted with content already present — but `role="status"` generally is not, so **`info`/`success`/`warning` alerts frequently announce nothing at all**. The fix is the pattern React Aria and Web Awesome both use: one persistent, empty, visually-hidden region that messages are written into. Render the Alert always and toggle its content, or pair it with such a region.
|
|
41
|
+
- **`role="alert"` on a persistent banner is wrong in the other direction.** An Alert that is always present (a standing warning on a record) will be announced on every re-render that touches it. Alerts are for messages that _appear_.
|
|
42
|
+
- **Text is `--foreground`, not the tone's `-ink`.** The `-ink` tokens are only guaranteed on `--background`, `--card` and `--muted`, and the 20% tint is none of those: the default `--destructive-ink` measures under 4.5:1 on the danger tint. `--foreground` clears 4.5:1 on all four tints in light and dark. The glyph disc pairs each fill with its `-foreground`.
|
|
43
|
+
- No dismiss control, so nothing to make keyboard-accessible — which is the honest upside of the smaller API.
|
|
44
|
+
|
|
45
|
+
## Theming
|
|
46
|
+
|
|
47
|
+
`--info`, `--success`, `--warning`, `--destructive` (the four tone hues); `--foreground` (text); `--info-foreground`, `--success-foreground`, `--warning-foreground`, `--destructive-foreground` (the glyph's ink on its disc); `--card` (the mix base), `--border` (mixed into the hairline), and the `--boxel-sp-*`, `--boxel-border-radius` and `--boxel-font-size-xs` tokens for geometry and type. The 20% tint strength is the component's own `--pretui-alert-mix`, set on `.pretui-alert`; a caller can override it per instance. A caller's `style` attribute does not remove the tone's hue and on-hue properties: they are written again on top of it.
|
|
48
|
+
|
|
49
|
+
A theme retunes the entire component by retuning those four hues. Because every derived color is a mix against `--card`, dark mode gets correct dark treatments automatically, but a theme **must** define the four hues at a luminance that survives a 20% mix against a dark `--card`, or all four alerts converge on the same near-black rectangle.
|
|
50
|
+
|
|
51
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
52
|
+
|
|
53
|
+
## React ecosystem
|
|
54
|
+
|
|
55
|
+
Tremor/WA `Callout` is this component under that name (**Callout**). shadcn Alert is too
|
|
56
|
+
(but they hardcode `role=alert` on info — we do not). Page-level
|
|
57
|
+
outcome is **Result**. Transient is **Toast**.
|