@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,90 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A selectable, keyboard-navigable, load-aware row collection: `<ul>`/`<li>` semantics, one tab stop with arrows within, the same `DataSource` selection model **DataTable** uses, and the same loading, empty and error chrome. It is what a **DataTable** becomes when the pane is too narrow for columns — the same rows, one **Item** per `<li>`.
|
|
4
|
+
|
|
5
|
+
The kit has other things that draw rows, and none of them is this. **Feed** is `role='feed'`: a stream of independently authored articles with PageUp/PageDown paging and no selection. **Grid** wraps boxel-ui's tile container, a layout with no keyboard model. **DataGrid** is a table. **Masonry** is a column-major wall. **Item** is the row atom this component puts inside each `<li>`; it also stands alone. When a row should open into detail, use List's `<:expanded>` rather than **Collapsible** or **Accordion**: their trigger is a `<button>`, so a rich row summary can't go inside it, and their regions stay mounted while closed.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@items? | @options? | @dataSource? — the collection (any spelling); OR
|
|
11
|
+
@load?, @loadKey? — an async loader, re-run when the key changes
|
|
12
|
+
@key? — (row, index) => RowKey
|
|
13
|
+
@label? — the list's accessible name (default 'List')
|
|
14
|
+
@size? — xs|s|m|l|xl; sm/md/lg accepted
|
|
15
|
+
@selectionMode? — none|single|multi
|
|
16
|
+
@selected?, @defaultSelected?, @onSelectionChange?
|
|
17
|
+
@onActivate? — (row, index): Enter on the focused row
|
|
18
|
+
@rowLabel? — (row, index) => the row's accessible name
|
|
19
|
+
@expandedKeys?, @defaultExpandedKeys?, @onExpandedChange?
|
|
20
|
+
@divided? (default true), @bordered?
|
|
21
|
+
@busy? | @loading? — aria-busy without replacing the rows
|
|
22
|
+
@itemNoun?, @emptyTitle?, @emptyMessage?, @loadingLabel?, @skeletonRows?
|
|
23
|
+
<:item as |row index api|> — api is { index, selected, active, toggle }
|
|
24
|
+
<:expanded as |row index|> — per-row detail; supplying it turns on the expander
|
|
25
|
+
<:header> <:footer> — inside the frame
|
|
26
|
+
<:empty> <:loading> <:error> — replace DataShell's defaults
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Selection is controlled or uncontrolled by the same rule as DataTable:** pass `@selected` and the component stops keeping its own copy; leave it out and it keeps state and still calls `@onSelectionChange`. In `multi` mode the control is a checkbox; in `single` it is a radio, and every radio shares one `name` so the browser enforces the single choice.
|
|
30
|
+
|
|
31
|
+
**Keys are handled only when the row itself has focus.** ArrowDown/ArrowUp move the cursor, Home/End jump to the ends, Space toggles selection, Enter calls `@onActivate`. A caret in a text field inside a row still gets Home/End and Space types a space, because the handler checks that the event target is the `<li>`.
|
|
32
|
+
|
|
33
|
+
**`@onActivate` is not a link.** A row with one obvious destination should carry a real `<a>` inside `<:item>` (**Item** has an `href` arg for exactly this); the activate callback is for rows whose action is not navigation.
|
|
34
|
+
|
|
35
|
+
**`@rowLabel` defaults to "Row N".** That is honest and poor. Pass it: it names the selection control, the expander and the detail region, and there is nothing else to name them.
|
|
36
|
+
|
|
37
|
+
**Expansion is DataTable's, row for row.** Supplying `<:expanded>` adds an expander button to every row, after the selection control (the same column order as DataTable, so a pane that switches between the two keeps the chevron in place). `@expandedKeys` controls which rows are open and `@defaultExpandedKeys` seeds the uncontrolled case; `@onExpandedChange` reports every change either way. Both components share one `ExpansionState`, so the rule cannot drift. **A row's detail renders only while it is open**: fifty collapsed rows render fifty summaries and no bodies. The detail sits inside the row's `<li>`, below the summary, so the selected tint runs through it. Clicks inside the detail never activate the row, and expanding never changes selection. The detail takes `tabindex='-1'`, so a click on its text focuses the detail rather than the row, and the row's Enter and Space don't fire from there. If focus is inside a detail when its row collapses (by the expander, a controlled `@expandedKeys` change or a reload), focus moves to that row's expander rather than falling to `<body>`.
|
|
38
|
+
|
|
39
|
+
## Prior art
|
|
40
|
+
|
|
41
|
+
**Ant `List`** takes `dataSource`, `renderItem`, `loadMore`, `pagination`, `bordered`, `split` and `size`, and pairs with `List.Item` and `List.Item.Meta`. **MUI `List`** is `List` + `ListItem` + `ListItemButton` + `ListItemText`, with no data contract. **Mantine `List`** is typographic. **React Aria `GridList`** is the accessibility reference for a selectable list and takes on `role='grid'` with row-level focus. **shadcn** has no list; its `Item` is the row atom.
|
|
42
|
+
|
|
43
|
+
Where this is better: **one tab stop and a roving cursor**, which none of Ant, MUI or Mantine provide — their lists are either static or a Tab per row. **Selection state lives on a real control with a real name**, not on the row's class. **Load, empty and error states are built in** through **DataShell**, with `@busy` keeping the rows in place rather than swapping them for a spinner. **The `<:item>` block yields a row API**, so a row can render its own selected or active treatment without re-deriving it.
|
|
44
|
+
|
|
45
|
+
Where it is thinner: **no `role='grid'` and no arrow-key travel into a row's controls** — React Aria's `GridList` does both; here the row is the focus stop and its contents are reached by Tab. **No `loadMore` and no built-in paging** (Ant has both; the kit's answer is **InfiniteScroll**, a stub, or paging in the caller). **No drag-reorder** (**Reorder** is the kit's). **No `itemLayout='vertical'`**; the row's shape is **Item**'s.
|
|
46
|
+
|
|
47
|
+
Ant's `List.Item.Meta` hard-codes an `<h4>` for every row title. The row here is **Item**, which emits a `<span>` and leaves headings to the caller.
|
|
48
|
+
|
|
49
|
+
## Accessibility
|
|
50
|
+
|
|
51
|
+
Governing pattern: a native list. `role='listbox'` is deliberately not claimed, and the test file asserts the `<ul>` carries no role: an option's children are presentational, so a row holding a link, a button or a named avatar would lose all of it, and the realm's `require-presentational-children` lint reports exactly that in the caller's file. A list of rich rows is a list.
|
|
52
|
+
|
|
53
|
+
What the component does, from its rendered markup and its tests:
|
|
54
|
+
|
|
55
|
+
- **The `<ul>` is named** from `@label`.
|
|
56
|
+
- **Exactly one `<li>` is in the tab sequence** (`tabindex='0'`, the rest `-1`), and the stop roves with ArrowDown, ArrowUp, Home and End. Focus arriving by click or by Tab from outside is followed rather than stolen.
|
|
57
|
+
- **Selection is a real `<input type='checkbox'>` or `<input type='radio'>`** with an `aria-label` from `@rowLabel`; radios share one `name`. Space on the focused row toggles it, and the row carries `data-selected` for CSS.
|
|
58
|
+
- **Enter on the focused row calls `@onActivate`** and does not select.
|
|
59
|
+
- **The expander is a native `<button type='button'>`** with `aria-expanded`, an `aria-label` built from `@rowLabel` ("Expand Gyokuro" / "Collapse Gyokuro"), and `aria-controls` naming the detail **only while it is open**, since a collapsed row's detail does not exist. Enter and Space come from the button; the row's own keys are unchanged, and there is no ArrowRight/ArrowLeft expansion, which belongs to a tree grid.
|
|
60
|
+
- **The open detail is a `role='region'`** named "{row label} details".
|
|
61
|
+
- **An empty collection renders the EmptyState**, not an empty `<ul>`.
|
|
62
|
+
- **`@busy` sets `aria-busy`** on the root and dims it without unmounting the rows.
|
|
63
|
+
|
|
64
|
+
The caller's failures to avoid: a row whose only action is a click handler on the `<li>` is not reachable as a link and does not announce as one — put an `<a>` in the row; a row with no `@rowLabel` has selection controls named "Row 1", "Row 2"; and selection is shown by a background tint plus a rule down the inline start, so a stylesheet that removes the rule leaves color as the only signal.
|
|
65
|
+
|
|
66
|
+
## Theming
|
|
67
|
+
|
|
68
|
+
Consumed directly: `--foreground`, `--muted-foreground`, `--card`, `--border`, `--primary`, `--primary-foreground`, `--ring`, `--radius-surface`, `--hover`, `--input`, `--field`, `--text-ui-md`, `--text-ui-sm`, `--track-ui`, `--space-3`, `--space-4`, `--pretui-shadow-hairline`, `--pretui-control-rest`, `--pretui-control-border`, `--pretui-edge-highlight`, `--pretui-selected`.
|
|
69
|
+
|
|
70
|
+
The selection control is drawn by the same declarations **DataTable** uses (15px, 5px radius, `--primary` fill with a `--primary-foreground` check), so a theme that retunes `--pretui-control-rest` and `--pretui-control-border` retunes both listings' checkboxes together. Density is one axis through `@size` on the root `font-size`. Coarse pointers get a 44px row floor and 20px controls without changing the fine-pointer rhythm.
|
|
71
|
+
|
|
72
|
+
The expander matches DataTable's: a 1.7em ghost button with a `›` chevron that turns 90° when open (no transition under `prefers-reduced-motion`), 2.4em on coarse pointers. The detail is padded like the row, with a `--border` hairline above it.
|
|
73
|
+
|
|
74
|
+
Each row's summary line is `container-type: inline-size`, which is what lets an **Item** inside it wrap its trailing meta under the body at 22rem.
|
|
75
|
+
|
|
76
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
77
|
+
|
|
78
|
+
## React ecosystem
|
|
79
|
+
|
|
80
|
+
| React | Pretui |
|
|
81
|
+
| --------------------------------------------- | ----------------------------------- |
|
|
82
|
+
| `dataSource` / `items` / `options` | `@items` (all three spellings land) |
|
|
83
|
+
| `renderItem` | `<:item as \|row index api\|>` |
|
|
84
|
+
| `loadMore` | not built; see **InfiniteScroll** |
|
|
85
|
+
| `bordered` / `split` | `@bordered` / `@divided` |
|
|
86
|
+
| `size` | `@size` |
|
|
87
|
+
| `selectionMode` / `selectedKeys` (React Aria) | `@selectionMode` / `@selected` |
|
|
88
|
+
| `onAction` (React Aria) | `@onActivate` |
|
|
89
|
+
| Ant `expandable` / an accordion per row | `<:expanded>` + `@expandedKeys` |
|
|
90
|
+
| `isPending` (React Aria) | `@busy` |
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// Pretui — List usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Chip } from './chip';
|
|
6
|
+
import { StatusChip } from './status-chip';
|
|
7
|
+
import { Item } from './item';
|
|
8
|
+
import { List } from './list';
|
|
9
|
+
import type { ListingSizeArg } from '../internal/reading-listing';
|
|
10
|
+
import type { RowKey, SelectionMode } from '../data-component';
|
|
11
|
+
import { LOTS, MODES, SIZES, lotLabel } from '../examples-listing';
|
|
12
|
+
import type { Lot } from '../examples-listing';
|
|
13
|
+
|
|
14
|
+
class ListUsage extends Component {
|
|
15
|
+
modes = MODES;
|
|
16
|
+
sizes = SIZES;
|
|
17
|
+
lots = LOTS;
|
|
18
|
+
|
|
19
|
+
@tracked selectionMode: SelectionMode = 'multi';
|
|
20
|
+
@tracked size: ListingSizeArg = 'm';
|
|
21
|
+
@tracked divided = true;
|
|
22
|
+
@tracked bordered = true;
|
|
23
|
+
@tracked lastSelection = '—';
|
|
24
|
+
@tracked lastActivated = '—';
|
|
25
|
+
@tracked lastExpanded = 'none';
|
|
26
|
+
|
|
27
|
+
setSelectionMode = (v: string) => (this.selectionMode = v as SelectionMode);
|
|
28
|
+
setSize = (v: string) => (this.size = v as ListingSizeArg);
|
|
29
|
+
setDivided = (v: boolean) => (this.divided = v);
|
|
30
|
+
setBordered = (v: boolean) => (this.bordered = v);
|
|
31
|
+
onExpandedChange = (keys: RowKey[]) => {
|
|
32
|
+
this.lastExpanded = keys.length ? keys.join(', ') : 'none';
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
rowKey = (row: Lot): RowKey => row.id;
|
|
36
|
+
rowLabel = (row: Lot): string => lotLabel(row);
|
|
37
|
+
onSelectionChange = (keys: RowKey[]) => {
|
|
38
|
+
this.lastSelection = keys.length ? keys.join(', ') : 'none';
|
|
39
|
+
};
|
|
40
|
+
onActivate = (row: Lot) => {
|
|
41
|
+
this.lastActivated = row.id;
|
|
42
|
+
};
|
|
43
|
+
meta = (row: Lot): string => String(row.kg) + ' kg';
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<FreestyleUsage
|
|
47
|
+
@name='List'
|
|
48
|
+
@slug='list'
|
|
49
|
+
@description='The row collection: ul/li semantics, one tab stop with arrows within, the same DataSource selection model DataTable uses, and the same loading / empty / error chrome. It is what a DataTable becomes when the pane is too narrow for columns.'
|
|
50
|
+
>
|
|
51
|
+
<:example>
|
|
52
|
+
<div class='ls-demo'>
|
|
53
|
+
<div class='ls-readout'>
|
|
54
|
+
<span>selected
|
|
55
|
+
<strong>{{this.lastSelection}}</strong></span>
|
|
56
|
+
<span>activated
|
|
57
|
+
<strong>{{this.lastActivated}}</strong></span>
|
|
58
|
+
<span>expanded
|
|
59
|
+
<strong>{{this.lastExpanded}}</strong></span>
|
|
60
|
+
</div>
|
|
61
|
+
<p class='ls-hint'>Tab to the list, then ↑/↓ to walk it, Home/End for
|
|
62
|
+
the ends, Space to select, Enter to open.</p>
|
|
63
|
+
|
|
64
|
+
<List
|
|
65
|
+
@items={{this.lots}}
|
|
66
|
+
@key={{this.rowKey}}
|
|
67
|
+
@rowLabel={{this.rowLabel}}
|
|
68
|
+
@label='Lots on the desk'
|
|
69
|
+
@size={{this.size}}
|
|
70
|
+
@selectionMode={{this.selectionMode}}
|
|
71
|
+
@divided={{this.divided}}
|
|
72
|
+
@bordered={{this.bordered}}
|
|
73
|
+
@itemNoun='lot'
|
|
74
|
+
@onSelectionChange={{this.onSelectionChange}}
|
|
75
|
+
@onActivate={{this.onActivate}}
|
|
76
|
+
@onExpandedChange={{this.onExpandedChange}}
|
|
77
|
+
>
|
|
78
|
+
<:header>Twelve lots, newest first</:header>
|
|
79
|
+
<:item as |row|>
|
|
80
|
+
<Item @title={{row.tea}} @description={{row.supplier}}>
|
|
81
|
+
<:leading>
|
|
82
|
+
<Chip @label={{row.id}} />
|
|
83
|
+
</:leading>
|
|
84
|
+
<:trailing>
|
|
85
|
+
{{this.meta row}}
|
|
86
|
+
</:trailing>
|
|
87
|
+
<:actions>
|
|
88
|
+
<StatusChip @value={{row.grade}} />
|
|
89
|
+
</:actions>
|
|
90
|
+
</Item>
|
|
91
|
+
</:item>
|
|
92
|
+
<:expanded as |row|>
|
|
93
|
+
<p class='ls-detail'>{{row.note}}</p>
|
|
94
|
+
<p class='ls-detail-meta'>{{row.place}} · {{row.price}}</p>
|
|
95
|
+
</:expanded>
|
|
96
|
+
</List>
|
|
97
|
+
</div>
|
|
98
|
+
</:example>
|
|
99
|
+
<:api as |Args|>
|
|
100
|
+
<Args.Object
|
|
101
|
+
@name='items'
|
|
102
|
+
@value={{this.lots}}
|
|
103
|
+
@description='The collection. items is the flat-collection noun; options and dataSource are accepted aliases so a shadcn or Ant shaped call still lands. Supply EITHER items or load.'
|
|
104
|
+
/>
|
|
105
|
+
<Args.Action
|
|
106
|
+
@name='rowLabel'
|
|
107
|
+
@description='(row, index) => string. The row’s accessible name, used on its selection control. It defaults to "Row N", which is honest but poor — pass this.'
|
|
108
|
+
/>
|
|
109
|
+
<Args.String
|
|
110
|
+
@name='selectionMode'
|
|
111
|
+
@value={{this.selectionMode}}
|
|
112
|
+
@options={{this.modes}}
|
|
113
|
+
@defaultValue='none'
|
|
114
|
+
@description="'none', 'single' or 'multi'. Selection is a real checkbox or radio with its own name, never a listbox option: an option’s children are presentational, so a row holding a link, a button or a named avatar would lose all of it. A list of rich rows is a list."
|
|
115
|
+
@onInput={{this.setSelectionMode}}
|
|
116
|
+
/>
|
|
117
|
+
<Args.String
|
|
118
|
+
@name='size'
|
|
119
|
+
@value={{this.size}}
|
|
120
|
+
@options={{this.sizes}}
|
|
121
|
+
@defaultValue='m'
|
|
122
|
+
@description='Density on the house scale. Coarse pointers get a 44px row floor regardless, without changing the fine-pointer rhythm.'
|
|
123
|
+
@onInput={{this.setSize}}
|
|
124
|
+
/>
|
|
125
|
+
<Args.Bool
|
|
126
|
+
@name='divided'
|
|
127
|
+
@value={{this.divided}}
|
|
128
|
+
@defaultValue={{true}}
|
|
129
|
+
@description='Hairline between rows.'
|
|
130
|
+
@onInput={{this.setDivided}}
|
|
131
|
+
/>
|
|
132
|
+
<Args.Bool
|
|
133
|
+
@name='bordered'
|
|
134
|
+
@value={{this.bordered}}
|
|
135
|
+
@defaultValue={{false}}
|
|
136
|
+
@description='Frame the whole list, header and footer included.'
|
|
137
|
+
@onInput={{this.setBordered}}
|
|
138
|
+
/>
|
|
139
|
+
<Args.Action
|
|
140
|
+
@name='onExpandedChange'
|
|
141
|
+
@description='(keys) => void. Supplying an expanded block (row, index) adds an expander button to every row, after the selection control. A row’s detail renders only while it is open, so a long list of collapsed rows renders no bodies. expandedKeys controls which rows are open, defaultExpandedKeys seeds them, and onExpandedChange reports every change either way, by the same rule as DataTable.'
|
|
142
|
+
/>
|
|
143
|
+
<Args.Action
|
|
144
|
+
@name='onActivate'
|
|
145
|
+
@description='(row, index) => void — Enter on the focused row. A row with one obvious destination should carry a real anchor inside the item block instead; a click handler on a row is not a link.'
|
|
146
|
+
/>
|
|
147
|
+
<Args.Object
|
|
148
|
+
@name='selected'
|
|
149
|
+
@description='Controlled selection (array of row keys); defaultSelected seeds the uncontrolled case, onSelectionChange reports every change either way.'
|
|
150
|
+
/>
|
|
151
|
+
<Args.Bool
|
|
152
|
+
@name='busy'
|
|
153
|
+
@value={{false}}
|
|
154
|
+
@defaultValue={{false}}
|
|
155
|
+
@description='A caller-driven pending state: aria-busy without replacing the rows, so focus and scroll position survive. loading is accepted as an alias. This is React Aria’s isPending semantics rather than a disabled swap.'
|
|
156
|
+
@hideControls={{true}}
|
|
157
|
+
/>
|
|
158
|
+
<Args.Yield
|
|
159
|
+
@description='Named blocks: item (row, index, api) where api is { index, selected, active, toggle }; expanded (row, index) for the per-row detail; header and footer inside the frame; and loading / empty / error.'
|
|
160
|
+
@hideControls={{true}}
|
|
161
|
+
/>
|
|
162
|
+
</:api>
|
|
163
|
+
</FreestyleUsage>
|
|
164
|
+
<style scoped>
|
|
165
|
+
.ls-demo {
|
|
166
|
+
display: grid;
|
|
167
|
+
gap: var(--space-4, 11px);
|
|
168
|
+
min-width: 0;
|
|
169
|
+
}
|
|
170
|
+
.ls-readout {
|
|
171
|
+
display: flex;
|
|
172
|
+
flex-wrap: wrap;
|
|
173
|
+
gap: var(--space-4, 11px);
|
|
174
|
+
font-family: var(--font-mono);
|
|
175
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
176
|
+
color: var(--muted-foreground);
|
|
177
|
+
}
|
|
178
|
+
.ls-readout strong {
|
|
179
|
+
color: var(--foreground);
|
|
180
|
+
font-weight: 500;
|
|
181
|
+
}
|
|
182
|
+
.ls-detail,
|
|
183
|
+
.ls-detail-meta {
|
|
184
|
+
margin: 0;
|
|
185
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
186
|
+
line-height: 1.5;
|
|
187
|
+
}
|
|
188
|
+
.ls-detail-meta {
|
|
189
|
+
color: var(--muted-foreground);
|
|
190
|
+
font-family: var(--font-mono);
|
|
191
|
+
}
|
|
192
|
+
.ls-hint {
|
|
193
|
+
margin: 0;
|
|
194
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
195
|
+
color: var(--muted-foreground);
|
|
196
|
+
}
|
|
197
|
+
</style>
|
|
198
|
+
</template>
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export const DEMOS_LIST: Record<string, unknown> = {
|
|
202
|
+
List: ListUsage,
|
|
203
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
**Loader** is **Spinner** under the name shadcn and Mantine use. The export is the same class. Import it when a port already says Loader; the **Spinner** writeup carries the depth. Ant's `Spin` wrapping its children is a different component — that is **LoadingOverlay** — and a labelled "Loading…" row is **LoadingState**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@size? — pixels, or any spelling of the xs · s · m · l · xl scale
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Identical to Spinner. Colour is `currentColor`, so tint the wrapper, not the component.
|
|
12
|
+
|
|
13
|
+
## Prior art
|
|
14
|
+
|
|
15
|
+
**Mantine `Loader`** has a `type` enum (oval, bars, dots) and its own `color`; **shadcn `Spinner`** is a single SVG that takes a `className`; **Ant `Spin`** adds `spinning`, a `tip` and children to overlay. Spinner is one ring with one size arg. It inherits ink instead of taking a colour, which is what lets it sit inside any **Button** tone unchanged, and it has no wrapping mode.
|
|
16
|
+
|
|
17
|
+
## Accessibility
|
|
18
|
+
|
|
19
|
+
No APG pattern. Spinner renders `role="status"` with `aria-label="Loading"`; pass a more specific `aria-label` through `...attributes` so several spinners on one page do not all say the same thing. The region mounts with its name already in place, so the announcement is not guaranteed — write "Loaded 24 results" into a persistent live region when loading ends. Reduced motion slows the rotation to 2.8s rather than stopping it.
|
|
20
|
+
|
|
21
|
+
## Theming
|
|
22
|
+
|
|
23
|
+
`currentColor` for both the track (at 25% alpha) and the indicator; there are no spinner-specific tokens. The 1.5px stroke, 0.7s period and 13px default size are fixed. A theme only needs `--foreground`, `--muted-foreground` and each Button tone's on-color to read at 25% alpha.
|
|
24
|
+
|
|
25
|
+
## React ecosystem
|
|
26
|
+
|
|
27
|
+
| shadcn / Mantine / Ant | Pretui |
|
|
28
|
+
| ------------------------------ | ------------------------------------------- |
|
|
29
|
+
| `Loader` / `Spinner` `size` | `@size` |
|
|
30
|
+
| Mantine `type` | one ring; no enum |
|
|
31
|
+
| Mantine `color` | wrapper `color`, inherited |
|
|
32
|
+
| Ant `Spin spinning` + children | **LoadingOverlay** |
|
|
33
|
+
| Ant `tip` | **LoadingState** / **LoadingOverlay** label |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Pretui — Loader usage page.
|
|
2
|
+
import type { TemplateOnlyComponent } from '@ember/component/template-only';
|
|
3
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
4
|
+
import { Loader } from './loader';
|
|
5
|
+
|
|
6
|
+
const LoaderUsage: TemplateOnlyComponent = <template>
|
|
7
|
+
<FreestyleUsage
|
|
8
|
+
@name='Loader'
|
|
9
|
+
@description='Spinner under the shadcn and Mantine name: an indeterminate ring that takes its colour from the surrounding text. Import it when a port already says Loader; the component and its writeup are Spinner.'
|
|
10
|
+
@source='<Loader @size={{20}} />'
|
|
11
|
+
>
|
|
12
|
+
<:example>
|
|
13
|
+
<Loader @size={{20}} />
|
|
14
|
+
<span class='tint-primary'><Loader @size={{20}} /></span>
|
|
15
|
+
<span class='tint-danger'><Loader @size={{20}} /></span>
|
|
16
|
+
</:example>
|
|
17
|
+
<:api as |Args|>
|
|
18
|
+
<Args.Number @name='size' @defaultValue={{13}} @description='Pixels, or any spelling of the xs · s · m · l · xl scale.' />
|
|
19
|
+
</:api>
|
|
20
|
+
</FreestyleUsage>
|
|
21
|
+
<style scoped>
|
|
22
|
+
.tint-primary {
|
|
23
|
+
color: var(--pretui-primary-ink, var(--boxel-highlight-hover));
|
|
24
|
+
display: inline-flex;
|
|
25
|
+
}
|
|
26
|
+
.tint-danger {
|
|
27
|
+
color: var(--pretui-destructive-ink, var(--boxel-danger));
|
|
28
|
+
display: inline-flex;
|
|
29
|
+
}
|
|
30
|
+
</style>
|
|
31
|
+
</template>;
|
|
32
|
+
|
|
33
|
+
export const DEMOS_LOADER: Record<string, unknown> = {
|
|
34
|
+
Loader: LoaderUsage,
|
|
35
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// Pretui — LoadingOverlay: a scrim and spinner over a region whose content stays mounted.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { Spinner } from './spinner';
|
|
4
|
+
import type { PretuiSizeArg } from '../pretui-primitives';
|
|
5
|
+
|
|
6
|
+
export interface LoadingOverlaySignature {
|
|
7
|
+
Args: {
|
|
8
|
+
/** Show the overlay. The content underneath renders either way. */
|
|
9
|
+
open?: boolean;
|
|
10
|
+
/** What is loading, announced and shown under the spinner (default 'Loading'). */
|
|
11
|
+
label?: string;
|
|
12
|
+
/** Paint the label under the spinner; it is announced either way. */
|
|
13
|
+
showLabel?: boolean;
|
|
14
|
+
/** Frost the content under the scrim instead of only tinting it. */
|
|
15
|
+
blur?: boolean;
|
|
16
|
+
/** Make the content inert while open, so a half-loaded form cannot be edited. */
|
|
17
|
+
lock?: boolean;
|
|
18
|
+
/** Spinner size on the kit scale, or pixels (default 'l'). */
|
|
19
|
+
size?: number | PretuiSizeArg;
|
|
20
|
+
};
|
|
21
|
+
Blocks: {
|
|
22
|
+
default: [];
|
|
23
|
+
};
|
|
24
|
+
Element: HTMLDivElement;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The region keeps its content: the overlay sits over it rather than
|
|
29
|
+
* replacing it, so nothing reflows when loading starts or stops (Law 8).
|
|
30
|
+
* Skeleton is for content that does not exist yet, Spinner is inline, and
|
|
31
|
+
* LoadingState is a whole scene.
|
|
32
|
+
*
|
|
33
|
+
* `aria-busy` goes on the region, so assistive technology holds off reading
|
|
34
|
+
* changes until it clears. The status is one live region that stays mounted,
|
|
35
|
+
* so the announcement is not lost to a mount in the same frame. `@lock` adds
|
|
36
|
+
* `inert` to the content, which removes it from the tab order and the
|
|
37
|
+
* accessibility tree until loading ends.
|
|
38
|
+
*/
|
|
39
|
+
export class LoadingOverlay extends Component<LoadingOverlaySignature> {
|
|
40
|
+
get open(): boolean {
|
|
41
|
+
return this.args.open ?? false;
|
|
42
|
+
}
|
|
43
|
+
get label(): string {
|
|
44
|
+
return this.args.label ?? 'Loading';
|
|
45
|
+
}
|
|
46
|
+
get locked(): boolean {
|
|
47
|
+
return this.open && (this.args.lock ?? false);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
<template>
|
|
51
|
+
<div
|
|
52
|
+
class='pretui-loading-overlay'
|
|
53
|
+
aria-busy={{if this.open 'true' 'false'}}
|
|
54
|
+
data-open={{if this.open 'true' 'false'}}
|
|
55
|
+
data-test-pretui-loading-overlay
|
|
56
|
+
...attributes
|
|
57
|
+
>
|
|
58
|
+
<div class='pretui-lo-content' inert={{this.locked}} data-test-pretui-loading-overlay-content>
|
|
59
|
+
{{yield}}
|
|
60
|
+
</div>
|
|
61
|
+
<div class='pretui-lo-status' role='status' data-test-pretui-loading-overlay-status>
|
|
62
|
+
{{#if this.open}}<span class='pretui-lo-sr'>{{this.label}}</span>{{/if}}
|
|
63
|
+
</div>
|
|
64
|
+
{{#if this.open}}
|
|
65
|
+
<div class='pretui-lo-scrim' data-blur={{if @blur 'true' 'false'}} aria-hidden='true' data-test-pretui-loading-overlay-scrim>
|
|
66
|
+
<Spinner @size={{if @size @size 'l'}} aria-hidden='true' role='presentation' />
|
|
67
|
+
{{#if @showLabel}}<span class='pretui-lo-label'>{{this.label}}</span>{{/if}}
|
|
68
|
+
</div>
|
|
69
|
+
{{/if}}
|
|
70
|
+
</div>
|
|
71
|
+
<style scoped>
|
|
72
|
+
@layer PretComponent {
|
|
73
|
+
.pretui-loading-overlay {
|
|
74
|
+
position: relative;
|
|
75
|
+
isolation: isolate;
|
|
76
|
+
min-inline-size: 0;
|
|
77
|
+
}
|
|
78
|
+
.pretui-lo-scrim {
|
|
79
|
+
position: absolute;
|
|
80
|
+
inset: 0;
|
|
81
|
+
z-index: 1;
|
|
82
|
+
display: flex;
|
|
83
|
+
flex-direction: column;
|
|
84
|
+
align-items: center;
|
|
85
|
+
justify-content: center;
|
|
86
|
+
gap: var(--space-2, 0.5rem);
|
|
87
|
+
border-radius: inherit;
|
|
88
|
+
color: var(--foreground);
|
|
89
|
+
background: color-mix(in oklch, var(--card) var(--pretui-loading-overlay-mix, 72%), transparent);
|
|
90
|
+
animation: pretui-lo-in var(--pretui-dur-snap, 160ms) var(--pretui-ease-snap, ease-out) both;
|
|
91
|
+
}
|
|
92
|
+
.pretui-lo-scrim[data-blur='true'] {
|
|
93
|
+
backdrop-filter: blur(var(--pretui-loading-overlay-blur, 3px));
|
|
94
|
+
}
|
|
95
|
+
.pretui-lo-label {
|
|
96
|
+
font-size: var(--text-ui-sm, 0.8125rem);
|
|
97
|
+
color: var(--muted-foreground);
|
|
98
|
+
}
|
|
99
|
+
.pretui-lo-sr {
|
|
100
|
+
position: absolute;
|
|
101
|
+
inline-size: 1px;
|
|
102
|
+
block-size: 1px;
|
|
103
|
+
overflow: hidden;
|
|
104
|
+
clip-path: inset(50%);
|
|
105
|
+
white-space: nowrap;
|
|
106
|
+
}
|
|
107
|
+
@keyframes pretui-lo-in {
|
|
108
|
+
from {
|
|
109
|
+
opacity: 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
@media (prefers-reduced-motion: reduce) {
|
|
113
|
+
.pretui-lo-scrim {
|
|
114
|
+
animation: none;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
</style>
|
|
119
|
+
</template>
|
|
120
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A **scrim and spinner over a region whose content is still there**. The content does not unmount when loading starts, so nothing reflows when it stops (Law 8). Wrap the region, a form being saved or a table being refreshed, and bind `@open` to the pending state.
|
|
4
|
+
|
|
5
|
+
Reach for a neighbour when the situation is different:
|
|
6
|
+
|
|
7
|
+
- **Skeleton** when there is no content yet to cover.
|
|
8
|
+
- **Spinner** for an inline busy mark beside a label or inside a button.
|
|
9
|
+
- **LoadingState** when the whole scene is loading and there is nothing to keep.
|
|
10
|
+
- **Backdrop** for the scrim behind a layered surface such as a dialog.
|
|
11
|
+
|
|
12
|
+
LoadingOverlay covers one region in place.
|
|
13
|
+
|
|
14
|
+
## The contract
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
@open? (default false)
|
|
18
|
+
@label? (default 'Loading'), @showLabel?
|
|
19
|
+
@blur?, @lock?
|
|
20
|
+
@size? (the spinner, on the kit scale or in pixels; default 'l')
|
|
21
|
+
<:default> — the region; it stays mounted
|
|
22
|
+
Element: HTMLDivElement
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**The content is always rendered.** The overlay is a sibling layer over it, absolutely positioned inside the region, never a replacement for it. Toggling `@open` does not re-create the content, so focus, scroll position and half-typed input survive a save.
|
|
26
|
+
|
|
27
|
+
**One announcement, always mounted.** The region carries a `role="status"` element for its whole life. Opening puts `@label` into it, so screen readers hear "Saving billing details" rather than missing a live region that was mounted in the same frame as its text. The spinner inside the scrim is hidden from assistive technology, so the label is announced once.
|
|
28
|
+
|
|
29
|
+
**`@lock` is the guard against editing half-loaded fields.** While open, it sets `inert` on the content, which takes it out of the tab order and the accessibility tree. Without `@lock`, the scrim blocks the pointer but a keyboard user can still tab into the region. That is right for a background refresh and wrong for a submit.
|
|
30
|
+
|
|
31
|
+
`@showLabel` paints the label under the spinner. `@blur` frosts the content under the scrim instead of only tinting it.
|
|
32
|
+
|
|
33
|
+
## Prior art
|
|
34
|
+
|
|
35
|
+
**Mantine LoadingOverlay** takes `visible`, `loaderProps`, `overlayProps` (blur, colour, opacity) and `zIndex`, and expects the caller to make the parent `position: relative`. **Ant Spin** wraps its children with `spinning` and a `tip`, and blurs the content. **Chakra** has no component; it is Overlay plus Spinner by composition.
|
|
36
|
+
|
|
37
|
+
Where Pretui is better: **the region is part of the component**, so there is no "remember to make the parent relative". **`aria-busy` is set on the region**, which Mantine does not do and Ant only does on its spinner. **Locking is one switch**: neither Mantine nor Ant stops a keyboard user from tabbing into a covered form. **The announcement survives**, because the status element exists before the text arrives.
|
|
38
|
+
|
|
39
|
+
Where it is thinner: **no delay.** Ant's `delay` holds the spinner back for fast operations to avoid a flash, and here that is the caller's job. There is **no custom loader slot**, because the spinner is the kit's Spinner. **No progress value**: use **ProgressBar** inside the region for determinate work.
|
|
40
|
+
|
|
41
|
+
## Accessibility
|
|
42
|
+
|
|
43
|
+
No APG pattern. What matters is the busy state and one clear announcement.
|
|
44
|
+
|
|
45
|
+
- **`aria-busy`** is `"true"` on the region while open and `"false"` otherwise. The tests assert both.
|
|
46
|
+
- **The status region** is `role="status"`, mounted for the component's whole life and empty while closed. It holds `@label` while open. The tests assert the text and that there is exactly one status element: the spinner's own role is replaced with `presentation` and hidden.
|
|
47
|
+
- **`@lock`** sets `inert` on the content only while open, and clears it when loading ends. The tests assert all three states and that `inert` stays off without `@lock`.
|
|
48
|
+
- **The scrim is `aria-hidden`**. It is decoration, and the status region carries the meaning.
|
|
49
|
+
- **Say what is loading.** "Loading" is the fallback, but "Saving billing details" tells a screen reader user what they are waiting for. The label is the caller's to write.
|
|
50
|
+
- **Focus is the caller's job.** If the element that had focus becomes inert under `@lock`, focus moves to the body. Return it when the work finishes if it matters.
|
|
51
|
+
|
|
52
|
+
## Theming
|
|
53
|
+
|
|
54
|
+
`--pretui-loading-overlay-mix` (how opaque the scrim is: `--card` mixed with transparent, default 72%), `--pretui-loading-overlay-blur` (the `@blur` radius, default 3px), `--card`, `--foreground` (spinner ink), `--muted-foreground` (the painted label), `--text-ui-sm`, `--space-2` (the gap between spinner and label), `--pretui-dur-snap` and `--pretui-ease-snap` (the fade-in).
|
|
55
|
+
|
|
56
|
+
The scrim mixes against `--card`, so dark mode gets a dark scrim without asking. The fade-in is skipped under `prefers-reduced-motion`. Covering the region edge to edge and inheriting its corner radius are fixed.
|
|
57
|
+
|
|
58
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
59
|
+
|
|
60
|
+
## React ecosystem
|
|
61
|
+
|
|
62
|
+
| Agent types | Give them |
|
|
63
|
+
| ---------------------------------------- | -------------------------------------- |
|
|
64
|
+
| Mantine `<LoadingOverlay visible>` | `@open` |
|
|
65
|
+
| Ant `<Spin spinning tip>` around content | `@open` + `@label` + `@showLabel` |
|
|
66
|
+
| `overlayProps={{ blur }}` | `@blur` |
|
|
67
|
+
| `loaderProps={{ size }}` | `@size` |
|
|
68
|
+
| `zIndex` | not needed: the overlay stacks locally |
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Pretui — LoadingOverlay usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { LoadingOverlay } from './loading-overlay';
|
|
6
|
+
import { Input } from './input';
|
|
7
|
+
import { Button } from './button';
|
|
8
|
+
|
|
9
|
+
export class LoadingOverlayUsage extends Component {
|
|
10
|
+
@tracked open = true;
|
|
11
|
+
@tracked label = 'Saving billing details';
|
|
12
|
+
@tracked showLabel = true;
|
|
13
|
+
@tracked blur = false;
|
|
14
|
+
@tracked lock = true;
|
|
15
|
+
@tracked accountName = 'Northwind Roasters';
|
|
16
|
+
setOpen = (v: boolean) => (this.open = v);
|
|
17
|
+
setLabel = (v: string) => (this.label = v);
|
|
18
|
+
setShowLabel = (v: boolean) => (this.showLabel = v);
|
|
19
|
+
setBlur = (v: boolean) => (this.blur = v);
|
|
20
|
+
setLock = (v: boolean) => (this.lock = v);
|
|
21
|
+
setAccountName = (v: string) => (this.accountName = v);
|
|
22
|
+
get usage() {
|
|
23
|
+
let bits = [`@open={{${this.open}}}`, `@label='${this.label}'`];
|
|
24
|
+
if (this.showLabel) bits.push('@showLabel={{true}}');
|
|
25
|
+
if (this.blur) bits.push('@blur={{true}}');
|
|
26
|
+
if (this.lock) bits.push('@lock={{true}}');
|
|
27
|
+
return `<LoadingOverlay ${bits.join(' ')}>\n …the form…\n</LoadingOverlay>`;
|
|
28
|
+
}
|
|
29
|
+
<template>
|
|
30
|
+
<FreestyleUsage
|
|
31
|
+
@name='LoadingOverlay'
|
|
32
|
+
@description='A scrim and spinner over a region whose content stays mounted, so nothing reflows when loading starts or stops. The region is aria-busy while open, and @lock makes the content inert so a half-saved form cannot be edited. Skeleton is for content that does not exist yet; Spinner is inline.'
|
|
33
|
+
@source={{this.usage}}
|
|
34
|
+
>
|
|
35
|
+
<:example>
|
|
36
|
+
<LoadingOverlay
|
|
37
|
+
@open={{this.open}}
|
|
38
|
+
@label={{this.label}}
|
|
39
|
+
@showLabel={{this.showLabel}}
|
|
40
|
+
@blur={{this.blur}}
|
|
41
|
+
@lock={{this.lock}}
|
|
42
|
+
>
|
|
43
|
+
<div class='lo-demo-form'>
|
|
44
|
+
<Input @value={{this.accountName}} @onInput={{this.setAccountName}} aria-label='Account name' />
|
|
45
|
+
<Input @value='accounts@northwind.example' aria-label='Billing email' />
|
|
46
|
+
<Button @appearance='accent'>Save</Button>
|
|
47
|
+
</div>
|
|
48
|
+
</LoadingOverlay>
|
|
49
|
+
</:example>
|
|
50
|
+
<:api as |Args|>
|
|
51
|
+
<Args.Bool
|
|
52
|
+
@name='open'
|
|
53
|
+
@defaultValue={{false}}
|
|
54
|
+
@value={{this.open}}
|
|
55
|
+
@description='Show the overlay. The content underneath renders either way.'
|
|
56
|
+
@onInput={{this.setOpen}}
|
|
57
|
+
/>
|
|
58
|
+
<Args.String
|
|
59
|
+
@name='label'
|
|
60
|
+
@defaultValue='Loading'
|
|
61
|
+
@value={{this.label}}
|
|
62
|
+
@description='What is loading. Announced through the status region whether or not it is painted.'
|
|
63
|
+
@onInput={{this.setLabel}}
|
|
64
|
+
/>
|
|
65
|
+
<Args.Bool
|
|
66
|
+
@name='showLabel'
|
|
67
|
+
@defaultValue={{false}}
|
|
68
|
+
@value={{this.showLabel}}
|
|
69
|
+
@description='Paint the label under the spinner.'
|
|
70
|
+
@onInput={{this.setShowLabel}}
|
|
71
|
+
/>
|
|
72
|
+
<Args.Bool
|
|
73
|
+
@name='blur'
|
|
74
|
+
@defaultValue={{false}}
|
|
75
|
+
@value={{this.blur}}
|
|
76
|
+
@description='Frost the content under the scrim instead of only tinting it.'
|
|
77
|
+
@onInput={{this.setBlur}}
|
|
78
|
+
/>
|
|
79
|
+
<Args.Bool
|
|
80
|
+
@name='lock'
|
|
81
|
+
@defaultValue={{false}}
|
|
82
|
+
@value={{this.lock}}
|
|
83
|
+
@description='Make the content inert while open: out of the tab order and the accessibility tree.'
|
|
84
|
+
@onInput={{this.setLock}}
|
|
85
|
+
/>
|
|
86
|
+
<Args.Yield @name='default' @description='The region being loaded. It stays mounted.' />
|
|
87
|
+
</:api>
|
|
88
|
+
</FreestyleUsage>
|
|
89
|
+
<style scoped>
|
|
90
|
+
.lo-demo-form {
|
|
91
|
+
display: grid;
|
|
92
|
+
gap: var(--space-2, 0.5rem);
|
|
93
|
+
padding: var(--space-4, 1rem);
|
|
94
|
+
max-inline-size: 22rem;
|
|
95
|
+
}
|
|
96
|
+
</style>
|
|
97
|
+
</template>
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export const DEMOS_LOADING_OVERLAY: Record<string, unknown> = {
|
|
101
|
+
LoadingOverlay: LoadingOverlayUsage,
|
|
102
|
+
};
|