@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,48 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A property inspector built from a list of typed specs: rows, controls and values, assembled for you.
|
|
4
|
+
|
|
5
|
+
**PropertyRow** is one row; **ValueInput** is one control. This is the panel.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@specs (required) — the rows, in order
|
|
11
|
+
@values (required) — current values, keyed by spec.key
|
|
12
|
+
@layout? — default row layout; each spec may override
|
|
13
|
+
@disabled?
|
|
14
|
+
@onChange? — fires with the key and the new value
|
|
15
|
+
@onReset? — invoked by a row's reset control
|
|
16
|
+
|
|
17
|
+
<:custom> — receives [kind, value, spec, disabled] for kinds the sheet does not own
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**A row shows a reset control only when the spec is `modified` *and* `@onReset` is supplied.** Both conditions, because a reset that cannot reset is worse than no reset, and a dot on an unmodified row is noise.
|
|
21
|
+
|
|
22
|
+
**Values are keyed rather than positional**, so reordering `@specs` cannot silently reassign values.
|
|
23
|
+
|
|
24
|
+
**`<:custom>` is the escape hatch for kinds ValueInput does not own** — colour above all — and it receives the kind alongside the value, so one block can handle several.
|
|
25
|
+
|
|
26
|
+
## Prior art
|
|
27
|
+
|
|
28
|
+
figui3's property sheets and the inspector panels in design tools.
|
|
29
|
+
|
|
30
|
+
Where Pretui is better: the sheet is data-driven from typed specs rather than hand-assembled, so a panel of thirty properties is a list rather than thirty blocks of markup — and every row gets the label association, hint wiring and mixed-state handling right because **PropertyRow** does it once.
|
|
31
|
+
|
|
32
|
+
Where it is thinner: no grouping or sections within a sheet, no collapsible categories, no search across properties, and no per-row validation.
|
|
33
|
+
|
|
34
|
+
## Accessibility
|
|
35
|
+
|
|
36
|
+
- **Every row's accessibility comes from PropertyRow**, so label association and hint description are correct by construction rather than per call site.
|
|
37
|
+
- **`@disabled` applies to the sheet**, and rows mark themselves accordingly.
|
|
38
|
+
- **Key-based values mean a row's label and its control always agree**, which is the failure mode of positional assembly.
|
|
39
|
+
- **`<:custom>` inherits the row's yielded ids**, so a caller-supplied control is wired the same way a built-in one is — and a caller who ignores them breaks the association silently.
|
|
40
|
+
- **A long sheet is a long list of form controls.** Grouping is the caller's to provide, and without it a thirty-property panel is thirty tab stops.
|
|
41
|
+
|
|
42
|
+
## Theming
|
|
43
|
+
|
|
44
|
+
Everything comes from **PropertyRow** and **ValueInput**; the sheet adds only stacking.
|
|
45
|
+
|
|
46
|
+
That is the right shape: a property panel's appearance is its rows' appearance, and a sheet with its own surface would fight whichever inspector chrome it was placed in.
|
|
47
|
+
|
|
48
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// Pretui — PropertySheet usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Panel } from './panel';
|
|
6
|
+
import { PanelSection } from './panel-section';
|
|
7
|
+
import { PropertySheet } from './property-sheet';
|
|
8
|
+
import type { ValueOf, ValueSpec } from './value-input';
|
|
9
|
+
import { BLEND_OPTIONS } from '../demo-design-value';
|
|
10
|
+
|
|
11
|
+
const SHEET_SPECS: ValueSpec[] = [
|
|
12
|
+
{ key: 'name', kind: 'text', label: 'Name', placeholder: 'Untitled' },
|
|
13
|
+
{ key: 'visible', kind: 'toggle', label: 'Visible' },
|
|
14
|
+
{
|
|
15
|
+
key: 'opacity',
|
|
16
|
+
kind: 'number',
|
|
17
|
+
label: 'Opacity',
|
|
18
|
+
min: 0,
|
|
19
|
+
max: 100,
|
|
20
|
+
unit: '%',
|
|
21
|
+
precision: 0,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: 'blend',
|
|
25
|
+
kind: 'select',
|
|
26
|
+
label: 'Blend',
|
|
27
|
+
options: BLEND_OPTIONS,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
key: 'radius',
|
|
31
|
+
kind: 'number',
|
|
32
|
+
label: 'Radius',
|
|
33
|
+
min: 0,
|
|
34
|
+
max: 200,
|
|
35
|
+
unit: 'px',
|
|
36
|
+
precision: 0,
|
|
37
|
+
modified: true,
|
|
38
|
+
},
|
|
39
|
+
{ key: 'rotate', kind: 'angle', label: 'Rotate' },
|
|
40
|
+
{ key: 'shadow', kind: 'number', label: 'Shadow', unit: 'px', mixed: true },
|
|
41
|
+
{
|
|
42
|
+
key: 'origin',
|
|
43
|
+
kind: 'origin',
|
|
44
|
+
label: 'Origin',
|
|
45
|
+
layout: 'stack',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
class PropertySheetUsage extends Component {
|
|
50
|
+
@tracked values: Record<string, ValueOf> = {
|
|
51
|
+
name: 'Hero card',
|
|
52
|
+
visible: true,
|
|
53
|
+
opacity: 100,
|
|
54
|
+
blend: 'normal',
|
|
55
|
+
radius: 24,
|
|
56
|
+
rotate: 0,
|
|
57
|
+
shadow: null,
|
|
58
|
+
origin: { x: 50, y: 50 },
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
change = (key: string, value: ValueOf) => {
|
|
62
|
+
this.values = { ...this.values, [key]: value };
|
|
63
|
+
};
|
|
64
|
+
reset = (key: string) => {
|
|
65
|
+
this.values = { ...this.values, [key]: key === 'radius' ? 8 : null };
|
|
66
|
+
};
|
|
67
|
+
specs = SHEET_SPECS;
|
|
68
|
+
|
|
69
|
+
<template>
|
|
70
|
+
<FreestyleUsage
|
|
71
|
+
@name='PropertySheet'
|
|
72
|
+
@description='A property panel rendered from data. The point is not brevity — it is that a panel defined as ValueSpec[] can come from a card schema, a plugin manifest, or a diffing multi-selection, and still get every affordance the hand-written rows have: labels wired to controls, hints wired to aria-describedby, mixed state as text, a reset where a value differs from its default, and the container-query fold.'
|
|
73
|
+
@source='<PropertySheet @specs={{this.specs}} @values={{this.values}} @onChange={{this.change}} />'
|
|
74
|
+
>
|
|
75
|
+
<:example>
|
|
76
|
+
<div class='pretui-sheet-demo'>
|
|
77
|
+
<Panel
|
|
78
|
+
@title='Properties'
|
|
79
|
+
@eyebrow='Hero card'
|
|
80
|
+
@variant='inspector'
|
|
81
|
+
@scroll={{true}}
|
|
82
|
+
>
|
|
83
|
+
<PanelSection @title='Layer' @summary='8'>
|
|
84
|
+
<PropertySheet
|
|
85
|
+
@specs={{this.specs}}
|
|
86
|
+
@values={{this.values}}
|
|
87
|
+
@onChange={{this.change}}
|
|
88
|
+
@onReset={{this.reset}}
|
|
89
|
+
/>
|
|
90
|
+
</PanelSection>
|
|
91
|
+
</Panel>
|
|
92
|
+
</div>
|
|
93
|
+
</:example>
|
|
94
|
+
<:api as |Args|>
|
|
95
|
+
<Args.Array
|
|
96
|
+
@name='specs'
|
|
97
|
+
@description='The rows, in order. Each carries its key, kind, label, hint, per-kind knobs and its mixed / modified state.'
|
|
98
|
+
/>
|
|
99
|
+
<Args.Object
|
|
100
|
+
@name='values'
|
|
101
|
+
@description='Current values keyed by spec.key.'
|
|
102
|
+
/>
|
|
103
|
+
<Args.String
|
|
104
|
+
@name='layout'
|
|
105
|
+
@description="Default row layout ('row' | 'stack' | 'split'); each spec may override."
|
|
106
|
+
/>
|
|
107
|
+
<Args.Action
|
|
108
|
+
@name='onChange'
|
|
109
|
+
@description='Receives (key, value).'
|
|
110
|
+
/>
|
|
111
|
+
<Args.Action
|
|
112
|
+
@name='onReset'
|
|
113
|
+
@description='Receives the key. A row only shows a reset control when its spec is modified AND this is supplied.'
|
|
114
|
+
/>
|
|
115
|
+
<Args.Yield
|
|
116
|
+
@description='The custom block receives (kind, value, spec) for kinds ValueInput does not own.'
|
|
117
|
+
/>
|
|
118
|
+
</:api>
|
|
119
|
+
</FreestyleUsage>
|
|
120
|
+
<style scoped>
|
|
121
|
+
.pretui-sheet-demo {
|
|
122
|
+
max-width: 300px;
|
|
123
|
+
height: 380px;
|
|
124
|
+
display: grid;
|
|
125
|
+
}
|
|
126
|
+
</style>
|
|
127
|
+
</template>
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export const DEMOS_PROPERTY_SHEET: Record<string, unknown> = {
|
|
131
|
+
PropertySheet: PropertySheetUsage,
|
|
132
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Pretui — Prose: long-form text in the kit reading voice.
|
|
2
|
+
import type { TemplateOnlyComponent } from '@ember/component/template-only';
|
|
3
|
+
|
|
4
|
+
export interface ProseSignature {
|
|
5
|
+
Blocks: { default: [] };
|
|
6
|
+
Element: HTMLDivElement;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// The typographic reading surface — styles inline code per Law 3's quieter cousin.
|
|
10
|
+
export const Prose: TemplateOnlyComponent<ProseSignature> = <template>
|
|
11
|
+
<div class='pretui-prose' data-test-pretui-prose ...attributes>{{yield}}</div>
|
|
12
|
+
<style scoped>
|
|
13
|
+
@layer PretComponent {
|
|
14
|
+
.pretui-prose {
|
|
15
|
+
max-width: 62ch;
|
|
16
|
+
line-height: calc(var(--leading-body, 24px) / var(--text-body, 15px));
|
|
17
|
+
}
|
|
18
|
+
.pretui-prose :deep(p) {
|
|
19
|
+
margin: 0 0 var(--space-4, 11px);
|
|
20
|
+
}
|
|
21
|
+
.pretui-prose :deep(code) {
|
|
22
|
+
font-family: var(--font-mono);
|
|
23
|
+
font-size: 0.92em;
|
|
24
|
+
background: var(--inset, var(--boxel-100));
|
|
25
|
+
padding: 1px 5px;
|
|
26
|
+
border-radius: 5px;
|
|
27
|
+
box-shadow: var(--pretui-shadow-hairline, 0 0 0 1px var(--border));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
</style>
|
|
31
|
+
</template>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
The typographic reading surface: a measure-limited container that styles the prose you put inside it. Use it to wrap authored body copy — a card's description, a markdown render, a README, an article body. It does not parse anything; it is CSS with a boundary. If the content is a single short paragraph inside a form, it does not need this. If it is a code sample, put a `<pre>` inside it. If it is a machine value inline, use **Token**, which is the louder cousin of what this styles `<code>` as.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
<:default>
|
|
9
|
+
Element: HTMLDivElement
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
No args. Two things happen inside it, and they are both worth stating because they are what you are actually buying.
|
|
13
|
+
|
|
14
|
+
**`max-width: 62ch`.** The measure — the number of characters per line — is the single largest determinant of whether body copy is comfortable to read, and 62ch sits inside the 45–75 range typography research consistently lands on. Because it is `ch`, it tracks the font actually in use rather than assuming a pixel width. A card that renders prose full-bleed across a 1600px pane is unreadable, and this is the one line that prevents it.
|
|
15
|
+
|
|
16
|
+
**`line-height: calc(var(--leading-body) / var(--text-body))`.** The leading is expressed as a _ratio derived from two absolute tokens_, so a theme sets a body size and a leading in pixels — the way a type scale is actually designed — and the ratio falls out. Setting `line-height` as a bare number would decouple them and let a theme's leading drift when it retunes the size.
|
|
17
|
+
|
|
18
|
+
Paragraph margins (`0 0 var(--space-4)`) and inline `<code>` styling reach the yielded content through `:deep()`, which is the narrow, legitimate use of the escape hatch: the component must style markup it did not render.
|
|
19
|
+
|
|
20
|
+
## Prior art
|
|
21
|
+
|
|
22
|
+
**`@tailwindcss/typography`** (`prose`) is the reference and is enormously larger — it styles headings, lists, blockquotes, tables, figures, `<hr>`, links, and ships size and colour modifiers. **shadcn** has no prose component; its docs use the Tailwind plugin. **Web Awesome**, **Radix** and **React Spectrum** all ship nothing here — Spectrum's `Content`/`Text` are layout slots, not typographic surfaces.
|
|
23
|
+
|
|
24
|
+
Pretui's version is **deliberately two rules**, and the honest framing is that this is a floor, not a competitor to `prose`. What it gets right that the minimal hand-rolled version does not: the measure is enforced (most in-house prose styles forget it), and the leading is derived from the type scale rather than guessed.
|
|
25
|
+
|
|
26
|
+
What is missing versus `prose`, and it is a lot: **no heading styles, no list styles, no blockquote, no link treatment, no table styling, no `<pre>` block**. Content with an `<h3>` or a `<ul>` inside a Prose gets browser defaults, which will not match the kit. For a markdown render — the obvious use case — that is a real gap, and the practical consequence is that most markdown in this kit still looks like a browser default document below the paragraph level.
|
|
27
|
+
|
|
28
|
+
The `<code>` treatment is the one element it does style, and it is coordinated: quieter than **Token** (a plain `--inset` fill, no hue) so inline code recedes into prose while a Token stands out. That distinction is deliberate and is the kit's Law 3 in two registers.
|
|
29
|
+
|
|
30
|
+
## Accessibility
|
|
31
|
+
|
|
32
|
+
No pattern governs it. The relevant criteria are WCAG **1.4.8 Visual Presentation** (AAA), **1.4.12 Text Spacing** (AA) and **1.4.10 Reflow** (AA).
|
|
33
|
+
|
|
34
|
+
What is right, and it is genuinely more than most kits:
|
|
35
|
+
|
|
36
|
+
- **`max-width: 62ch` directly serves WCAG 1.4.8**, which asks for no more than 80 characters per line. Comfortably inside it.
|
|
37
|
+
- **Leading derived from the type scale** rather than hardcoded means a theme that increases body size gets proportional leading. WCAG **1.4.12** requires content to survive a user stylesheet setting line-height to 1.5× — since the leading here is a ratio on a `div` and paragraph margins are in `--space-4`, user overrides apply cleanly rather than fighting a fixed pixel `line-height`.
|
|
38
|
+
- **Reflow**: `max-width` with no `min-width` means the surface shrinks correctly at 320px.
|
|
39
|
+
|
|
40
|
+
Gaps:
|
|
41
|
+
|
|
42
|
+
- **Unstyled headings are a structural risk, not just a visual one.** Because `Prose` styles nothing above the paragraph, authors are tempted to fake headings with bold paragraphs — which produces content with no heading structure at all (**WCAG 1.3.1**, and a navigation failure for screen-reader users). Styling `<h2>`–`<h4>` would remove the temptation.
|
|
43
|
+
- **Links are unstyled**, so they inherit the browser's blue-and-underlined default, which will not match the theme and may not meet **1.4.3** against a themed background. It also means link/non-link distinction is whatever the UA decides.
|
|
44
|
+
- **Lists are unstyled**, so nested lists inherit default indentation that will not match the kit's spacing scale.
|
|
45
|
+
- **No `text-wrap: pretty` or `balance`**, so headings and short paragraphs get orphans. Minor, and a one-line improvement.
|
|
46
|
+
- **The `<code>` fill is `--inset` with a hairline**, at `0.92em`. That is small text at low contrast against a low-contrast fill; check per theme.
|
|
47
|
+
- Nothing is focusable; anything interactive inside is the caller's.
|
|
48
|
+
|
|
49
|
+
## Theming
|
|
50
|
+
|
|
51
|
+
`--leading-body` and `--text-body` (which together produce the line-height ratio), `--space-4` (paragraph spacing), and for inline code: `--font-mono`, `--inset`, `--border`, `--pretui-shadow-hairline`.
|
|
52
|
+
|
|
53
|
+
The `62ch` measure is fixed and is the one thing a theme most often wants to change — a display-face theme with a wide font may want 58ch, a condensed one 68ch. There is no token for it, so changing the measure means changing the component.
|
|
54
|
+
|
|
55
|
+
Because everything else inside is unstyled, **a theme's control over prose is limited to the type scale tokens**; heading, list and link appearance inside a Prose are the browser's, whatever the theme says.
|
|
56
|
+
|
|
57
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Pretui — Prose usage page.
|
|
2
|
+
import type { TemplateOnlyComponent } from '@ember/component/template-only';
|
|
3
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
4
|
+
import { Prose } from './prose';
|
|
5
|
+
|
|
6
|
+
const ProseUsage: TemplateOnlyComponent = <template>
|
|
7
|
+
<FreestyleUsage @name='Prose' @description='A restrained reading measure for authored text. Paragraph rhythm and inline machine values are styled without becoming a document renderer.' @source='<Prose><p>…</p></Prose>'>
|
|
8
|
+
<:example><Prose><p>The first-flush Gyokuro arrived from Shizuoka under lot <code>B-103</code>. Its reserve is unchanged after sensory review.</p><p>Use <code>records@2.4.0</code> when importing the supplier manifest.</p></Prose></:example>
|
|
9
|
+
<:api as |Args|><Args.Yield @name='default' @description='Semantic prose content.' /></:api>
|
|
10
|
+
</FreestyleUsage>
|
|
11
|
+
</template>;
|
|
12
|
+
|
|
13
|
+
export const DEMOS_PROSE: Record<string, unknown> = {
|
|
14
|
+
Prose: ProseUsage,
|
|
15
|
+
};
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// Pretui — PulsingBorder: a border that pulses or trails to draw attention to a surface.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { Chip } from './chip';
|
|
4
|
+
import { statusHue } from '../internal/ink';
|
|
5
|
+
import { clampNum, cssValue, styleFrom } from '../internal/texture';
|
|
6
|
+
|
|
7
|
+
// ── PulsingBorder ────────────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
/** `pulse` = breathing halo; `trail` = a light travelling the ring. */
|
|
10
|
+
export type PulsingBorderVariant = 'pulse' | 'trail';
|
|
11
|
+
|
|
12
|
+
/** Where the text affordance sits on the boundary. */
|
|
13
|
+
export type PulsingBorderMarker =
|
|
14
|
+
| 'top-start'
|
|
15
|
+
| 'top-end'
|
|
16
|
+
| 'bottom-start'
|
|
17
|
+
| 'bottom-end';
|
|
18
|
+
|
|
19
|
+
export interface PulsingBorderSignature {
|
|
20
|
+
Args: {
|
|
21
|
+
/** The text affordance — what the pulse MEANS ("Live", "Streaming", "Recording"). Law 6: a pulsing border alone is invisible to a screen reader and unindexable, so this always renders (visibly, or sr-only when `@marker={{false}}`). */
|
|
22
|
+
label?: string;
|
|
23
|
+
/** Is it actually live? False rests the ring on the neutral border color and stops all motion — the label should change with it. */
|
|
24
|
+
active?: boolean;
|
|
25
|
+
/** `pulse` (breathing halo) or `trail` (a light travelling the ring). */
|
|
26
|
+
variant?: PulsingBorderVariant;
|
|
27
|
+
/** Ring hue. Defaults to `statusHue(label)` — Law 2: the same word gets the same hue on every card. */
|
|
28
|
+
hue?: string;
|
|
29
|
+
/** Motion rate multiplier (1 = natural). */
|
|
30
|
+
speed?: number;
|
|
31
|
+
/** Ring thickness in px. Default 1.5. */
|
|
32
|
+
thickness?: number;
|
|
33
|
+
/** Render the affordance visibly on the boundary. False keeps it sr-only — for when the surrounding UI already carries the words. It never disappears entirely. */
|
|
34
|
+
marker?: boolean;
|
|
35
|
+
/** Corner of the boundary the affordance sits on. */
|
|
36
|
+
markerPlacement?: PulsingBorderMarker;
|
|
37
|
+
};
|
|
38
|
+
Blocks: {
|
|
39
|
+
/** The bounded content. */
|
|
40
|
+
default: [];
|
|
41
|
+
/** Replaces the affordance text with your own markup (Law 7: anything visual a caller might replace is a slot). */
|
|
42
|
+
label: [];
|
|
43
|
+
};
|
|
44
|
+
Element: HTMLDivElement;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The "this is live" boundary treatment — and the canonical Law 6 borderline
|
|
49
|
+
* case. A pulsing border on its own is information carried entirely by
|
|
50
|
+
* texture: invisible to a screen reader, unindexable, and gone from a still
|
|
51
|
+
* frame. So the affordance is not optional here. The component renders a
|
|
52
|
+
* `role='status'` marker (an ink `Chip`, reused rather than re-drawn) on the
|
|
53
|
+
* boundary itself; `@marker={{false}}` demotes it to sr-only text but never
|
|
54
|
+
* removes it.
|
|
55
|
+
*
|
|
56
|
+
* Ported in behavior from react-bits' ElectricBorder / StarBorder and
|
|
57
|
+
* motion-primitives' BorderTrail. Dropped: their canvas/WebGL electric
|
|
58
|
+
* distortion (Law 9), and their assumption that a border can say "live"
|
|
59
|
+
* unaccompanied. Improved: the ring is an inset `box-shadow` rather than a
|
|
60
|
+
* `border`, so turning it on never reflows the content (Law 1 — depth is one
|
|
61
|
+
* property); the halo animates `transform`/`opacity` only; and the resting
|
|
62
|
+
* state is a visible hairline + soft glow, so it survives the screenshot
|
|
63
|
+
* test (Law 8) and reduced motion identically.
|
|
64
|
+
*/
|
|
65
|
+
export class PulsingBorder extends Component<PulsingBorderSignature> {
|
|
66
|
+
get label(): string {
|
|
67
|
+
return this.args.label ?? 'Live';
|
|
68
|
+
}
|
|
69
|
+
get active(): boolean {
|
|
70
|
+
return this.args.active ?? true;
|
|
71
|
+
}
|
|
72
|
+
get variant(): PulsingBorderVariant {
|
|
73
|
+
return this.args.variant === 'trail' ? 'trail' : 'pulse';
|
|
74
|
+
}
|
|
75
|
+
get isTrail(): boolean {
|
|
76
|
+
return this.variant === 'trail';
|
|
77
|
+
}
|
|
78
|
+
get showMarker(): boolean {
|
|
79
|
+
return this.args.marker ?? true;
|
|
80
|
+
}
|
|
81
|
+
get markerPlacement(): PulsingBorderMarker {
|
|
82
|
+
return this.args.markerPlacement ?? 'top-start';
|
|
83
|
+
}
|
|
84
|
+
// Law 2: one hue in, a complete treatment out — and when the caller does
|
|
85
|
+
// not name one, derive it from the value so "Live" is the same hue on
|
|
86
|
+
// every card by every author.
|
|
87
|
+
get hue(): string {
|
|
88
|
+
return cssValue(this.args.hue) ?? statusHue(this.label);
|
|
89
|
+
}
|
|
90
|
+
get chipHue(): string {
|
|
91
|
+
return this.active ? this.hue : 'var(--muted-foreground)';
|
|
92
|
+
}
|
|
93
|
+
get style() {
|
|
94
|
+
let parts: string[] = [`--pretui-pb-hue: ${this.hue}`];
|
|
95
|
+
let speed = clampNum(this.args.speed, 0.05, 6);
|
|
96
|
+
if (speed !== undefined) parts.push(`--pretui-pb-speed: ${speed}`);
|
|
97
|
+
let thickness = clampNum(this.args.thickness, 0.5, 8);
|
|
98
|
+
if (thickness !== undefined) {
|
|
99
|
+
parts.push(`--pretui-pb-thickness: ${thickness}px`);
|
|
100
|
+
}
|
|
101
|
+
return styleFrom(parts);
|
|
102
|
+
}
|
|
103
|
+
<template>
|
|
104
|
+
<div
|
|
105
|
+
class='pretui-pb'
|
|
106
|
+
data-variant={{this.variant}}
|
|
107
|
+
data-active={{if this.active 'true' 'false'}}
|
|
108
|
+
data-marker={{this.markerPlacement}}
|
|
109
|
+
style={{this.style}}
|
|
110
|
+
data-test-pretui-pulsing-border
|
|
111
|
+
...attributes
|
|
112
|
+
>
|
|
113
|
+
<span class='pretui-pb-ring' aria-hidden='true'></span>
|
|
114
|
+
{{#if this.isTrail}}
|
|
115
|
+
<span class='pretui-pb-trail' aria-hidden='true'></span>
|
|
116
|
+
{{else}}
|
|
117
|
+
<span class='pretui-pb-halo' aria-hidden='true'></span>
|
|
118
|
+
{{/if}}
|
|
119
|
+
|
|
120
|
+
{{#if this.showMarker}}
|
|
121
|
+
<span
|
|
122
|
+
class='pretui-pb-marker'
|
|
123
|
+
role='status'
|
|
124
|
+
data-test-pretui-pulsing-border-marker
|
|
125
|
+
>
|
|
126
|
+
<Chip @hue={{this.chipHue}}>
|
|
127
|
+
{{#if (has-block 'label')}}{{yield to='label'}}{{else}}{{this.label}}{{/if}}
|
|
128
|
+
</Chip>
|
|
129
|
+
</span>
|
|
130
|
+
{{else}}
|
|
131
|
+
<span
|
|
132
|
+
class='pretui-pb-sr'
|
|
133
|
+
role='status'
|
|
134
|
+
data-test-pretui-pulsing-border-marker
|
|
135
|
+
>{{#if (has-block 'label')}}{{yield to='label'}}{{else}}{{this.label}}{{/if}}</span>
|
|
136
|
+
{{/if}}
|
|
137
|
+
|
|
138
|
+
<div class='pretui-pb-body'>{{yield}}</div>
|
|
139
|
+
</div>
|
|
140
|
+
<style scoped>
|
|
141
|
+
@property --pretui-pb-angle {
|
|
142
|
+
syntax: '<angle>';
|
|
143
|
+
inherits: false;
|
|
144
|
+
initial-value: 0deg;
|
|
145
|
+
}
|
|
146
|
+
@layer PretComponent {
|
|
147
|
+
.pretui-pb {
|
|
148
|
+
position: relative;
|
|
149
|
+
border-radius: var(--pretui-pb-radius, var(--radius-surface, 10px));
|
|
150
|
+
isolation: isolate;
|
|
151
|
+
}
|
|
152
|
+
/* Law 1: the boundary is a shadow, not a border — switching it on can
|
|
153
|
+
never reflow the content it wraps. */
|
|
154
|
+
.pretui-pb-ring {
|
|
155
|
+
position: absolute;
|
|
156
|
+
inset: 0;
|
|
157
|
+
border-radius: inherit;
|
|
158
|
+
pointer-events: none;
|
|
159
|
+
z-index: 2;
|
|
160
|
+
box-shadow: inset 0 0 0 var(--pretui-pb-thickness, 1.5px)
|
|
161
|
+
color-mix(
|
|
162
|
+
in oklch,
|
|
163
|
+
var(--pretui-pb-hue, var(--primary)) 72%,
|
|
164
|
+
transparent
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
.pretui-pb[data-active='false'] .pretui-pb-ring {
|
|
168
|
+
box-shadow: inset 0 0 0 var(--pretui-pb-thickness, 1.5px)
|
|
169
|
+
var(--border);
|
|
170
|
+
}
|
|
171
|
+
/* resting state = a soft static glow (screenshot test); the keyframes
|
|
172
|
+
only add the breathing on top of it */
|
|
173
|
+
.pretui-pb-halo {
|
|
174
|
+
position: absolute;
|
|
175
|
+
inset: 0;
|
|
176
|
+
border-radius: inherit;
|
|
177
|
+
pointer-events: none;
|
|
178
|
+
z-index: 0;
|
|
179
|
+
opacity: 0.42;
|
|
180
|
+
box-shadow: 0 0 0 3px
|
|
181
|
+
color-mix(
|
|
182
|
+
in oklch,
|
|
183
|
+
var(--pretui-pb-hue, var(--primary)) 30%,
|
|
184
|
+
transparent
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
@keyframes pretui-pb-breathe {
|
|
188
|
+
from {
|
|
189
|
+
opacity: 0.42;
|
|
190
|
+
transform: scale(1);
|
|
191
|
+
}
|
|
192
|
+
to {
|
|
193
|
+
opacity: 0;
|
|
194
|
+
transform: scale(1.028);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
.pretui-pb[data-active='true'] .pretui-pb-halo {
|
|
198
|
+
animation: pretui-pb-breathe calc(2.6s / var(--pretui-pb-speed, 1))
|
|
199
|
+
cubic-bezier(0.23, 1, 0.32, 1) infinite;
|
|
200
|
+
}
|
|
201
|
+
.pretui-pb[data-active='false'] .pretui-pb-halo {
|
|
202
|
+
opacity: 0;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/* trail: a conic sweep clipped to the ring band by a two-layer mask.
|
|
206
|
+
The angle is a registered custom property so the sweep is one
|
|
207
|
+
declaration; if @property is unavailable the fallback angle still
|
|
208
|
+
resolves and the ring rests as a static gradient boundary. */
|
|
209
|
+
.pretui-pb-trail {
|
|
210
|
+
position: absolute;
|
|
211
|
+
inset: 0;
|
|
212
|
+
border-radius: inherit;
|
|
213
|
+
pointer-events: none;
|
|
214
|
+
z-index: 1;
|
|
215
|
+
padding: calc(var(--pretui-pb-thickness, 1.5px) + 1px);
|
|
216
|
+
background: conic-gradient(
|
|
217
|
+
from var(--pretui-pb-angle, 0deg),
|
|
218
|
+
transparent 0turn 0.55turn,
|
|
219
|
+
color-mix(
|
|
220
|
+
in oklch,
|
|
221
|
+
var(--pretui-pb-hue, var(--primary)) 45%,
|
|
222
|
+
transparent
|
|
223
|
+
)
|
|
224
|
+
0.82turn,
|
|
225
|
+
var(--pretui-pb-hue, var(--primary)) 0.94turn,
|
|
226
|
+
transparent 1turn
|
|
227
|
+
);
|
|
228
|
+
mask-image: linear-gradient(rgb(0 0 0 / 1) 0 0),
|
|
229
|
+
linear-gradient(rgb(0 0 0 / 1) 0 0);
|
|
230
|
+
mask-clip: content-box, border-box;
|
|
231
|
+
mask-composite: exclude;
|
|
232
|
+
}
|
|
233
|
+
@keyframes pretui-pb-sweep {
|
|
234
|
+
to {
|
|
235
|
+
--pretui-pb-angle: 360deg;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
.pretui-pb[data-active='true'] .pretui-pb-trail {
|
|
239
|
+
animation: pretui-pb-sweep calc(4.5s / var(--pretui-pb-speed, 1))
|
|
240
|
+
linear infinite;
|
|
241
|
+
}
|
|
242
|
+
.pretui-pb[data-active='false'] .pretui-pb-trail {
|
|
243
|
+
opacity: 0.3;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.pretui-pb-marker {
|
|
247
|
+
position: absolute;
|
|
248
|
+
z-index: 3;
|
|
249
|
+
display: inline-flex;
|
|
250
|
+
line-height: 0;
|
|
251
|
+
}
|
|
252
|
+
.pretui-pb[data-marker='top-start'] .pretui-pb-marker {
|
|
253
|
+
top: 0;
|
|
254
|
+
left: var(--space-4, 11px);
|
|
255
|
+
transform: translateY(-50%);
|
|
256
|
+
}
|
|
257
|
+
.pretui-pb[data-marker='top-end'] .pretui-pb-marker {
|
|
258
|
+
top: 0;
|
|
259
|
+
right: var(--space-4, 11px);
|
|
260
|
+
transform: translateY(-50%);
|
|
261
|
+
}
|
|
262
|
+
.pretui-pb[data-marker='bottom-start'] .pretui-pb-marker {
|
|
263
|
+
bottom: 0;
|
|
264
|
+
left: var(--space-4, 11px);
|
|
265
|
+
transform: translateY(50%);
|
|
266
|
+
}
|
|
267
|
+
.pretui-pb[data-marker='bottom-end'] .pretui-pb-marker {
|
|
268
|
+
bottom: 0;
|
|
269
|
+
right: var(--space-4, 11px);
|
|
270
|
+
transform: translateY(50%);
|
|
271
|
+
}
|
|
272
|
+
.pretui-pb-body {
|
|
273
|
+
position: relative;
|
|
274
|
+
z-index: 1;
|
|
275
|
+
border-radius: inherit;
|
|
276
|
+
}
|
|
277
|
+
.pretui-pb-sr {
|
|
278
|
+
position: absolute;
|
|
279
|
+
width: 1px;
|
|
280
|
+
height: 1px;
|
|
281
|
+
margin: -1px;
|
|
282
|
+
padding: 0;
|
|
283
|
+
overflow: hidden;
|
|
284
|
+
clip-path: inset(50%);
|
|
285
|
+
white-space: nowrap;
|
|
286
|
+
border: 0;
|
|
287
|
+
}
|
|
288
|
+
@media (prefers-reduced-motion: reduce) {
|
|
289
|
+
.pretui-pb-halo,
|
|
290
|
+
.pretui-pb-trail {
|
|
291
|
+
animation: none;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
</style>
|
|
296
|
+
</template>
|
|
297
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A ring around a surface that says "this is live": a pulsing hairline plus a soft halo, with a **required** text marker on the boundary. Use it on something actively receiving updates — a streaming panel, a running job, a connected session. If the state is a value rather than a liveness, use **Chip** or **StatusChip**. If it is progress toward a known end, **ProgressBar**. If it is a decorative accent, do not use this at all — the marker is not optional, and the component will not let you have the glow without it.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@label? ('Live'), @active? (true)
|
|
9
|
+
@variant? 'pulse' | 'trail' (default 'pulse')
|
|
10
|
+
@marker? (default true), @markerPlacement? (default 'top-start')
|
|
11
|
+
@hue?
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
**`@marker={{false}}` demotes the marker to visually-hidden text — it never removes it.** That is the component's central rule and the source states the reasoning: **a pulsing border on its own is information carried entirely by texture** — invisible to a screen reader, unindexable, and gone from a still frame. So the affordance is not optional. The marker is an ink **Chip**, reused rather than re-drawn, carrying `role="status"`.
|
|
15
|
+
|
|
16
|
+
**The ring is an inset `box-shadow`, not a `border`**, so turning it on never reflows the content (Law 1 — depth is one property). Every hand-rolled version of this adds a border and shifts everything inside by a pixel.
|
|
17
|
+
|
|
18
|
+
**The halo animates `transform` and `opacity` only**, so it stays on the compositor.
|
|
19
|
+
|
|
20
|
+
**The resting state is a visible hairline plus a soft glow**, which means the component survives the screenshot test (Law 8) and reduced motion identically — a still frame of a live panel still reads as live.
|
|
21
|
+
|
|
22
|
+
`@hue` overrides the Law-2 derivation.
|
|
23
|
+
|
|
24
|
+
## Prior art
|
|
25
|
+
|
|
26
|
+
Ported in behaviour from **react-bits' `ElectricBorder` / `StarBorder`** and **motion-primitives' `BorderTrail`**.
|
|
27
|
+
|
|
28
|
+
**Dropped:** their canvas/WebGL electric distortion (Law 9 — no vendored engines), and — the substantive one — **their assumption that a border can say "live" unaccompanied.** All three upstreams are decorative components that people then use to convey state, and none of them carries text.
|
|
29
|
+
|
|
30
|
+
**Improved**, and each is concrete:
|
|
31
|
+
|
|
32
|
+
- **Inset `box-shadow` instead of a `border`**, so activation causes no reflow.
|
|
33
|
+
- **`transform`/`opacity`-only animation**, so the halo does not trigger layout or paint.
|
|
34
|
+
- **A resting state that is visible without motion** — the upstreams are invisible when static, so a reduced-motion user or a screenshot sees nothing at all.
|
|
35
|
+
- **The mandatory marker** (above).
|
|
36
|
+
|
|
37
|
+
Where it is thinner: no colour cycling, no gradient sweep beyond the `trail` variant, and no multi-hue effects. Those all belong to the decorative category this component deliberately left.
|
|
38
|
+
|
|
39
|
+
## Accessibility
|
|
40
|
+
|
|
41
|
+
No APG pattern; the criteria are WCAG **1.4.1 Use of Colour**, **4.1.3 Status Messages**, **2.2.2 Pause, Stop, Hide** and **2.3.3**.
|
|
42
|
+
|
|
43
|
+
This is the best-behaved decorative component in the kit, and the reason is the marker:
|
|
44
|
+
|
|
45
|
+
- **`role="status"` on the marker** means the liveness is announced, and it is announced as text rather than implied by a glow.
|
|
46
|
+
- **`@marker={{false}}` keeps the text, visually hidden** — so a caller who wants a clean surface still ships the information. Making the accessible affordance un-removable is a design pattern worth copying elsewhere in the kit (**Meter**'s required `@label` is the other example).
|
|
47
|
+
- **Colour is never the only channel**: hue plus a hairline plus a word.
|
|
48
|
+
- **The resting state is visible without motion**, so reduced-motion users are not left with an unmarked surface.
|
|
49
|
+
|
|
50
|
+
Gaps:
|
|
51
|
+
|
|
52
|
+
- **`role="status"` is a live region created with its content already in it.** The same problem **Alert**, **Toast**, **Spinner** and **LoadingState** have: a region that mounts complete is frequently not announced. If the point is to announce _becoming_ live, the marker should exist before `@active` flips — render the component with `@active={{false}}` rather than mounting it on activation.
|
|
53
|
+
- **`@label` defaults to `'Live'`**, so two live panels announce identically and neither says what is live.
|
|
54
|
+
- **`@active={{false}}` presumably stops the pulse**; whether the marker's text changes to say so is worth checking — a `role="status"` still reading "Live" on an inactive surface is worse than no marker.
|
|
55
|
+
- **The pulse runs indefinitely.** **WCAG 2.2.2** governs motion that starts automatically, lasts more than five seconds and runs alongside other content; a live panel qualifies, and there is no pause control. The reduced-motion path covers users who set the preference and no one else.
|
|
56
|
+
- Verify a `prefers-reduced-motion` rule exists — the source implies the resting state doubles as the reduced-motion state, which is the right design, but it must actually be wired.
|
|
57
|
+
- No `forced-colors` treatment; a glow drawn with `box-shadow` is commonly dropped in High Contrast mode, leaving only the marker — which is, at least, the important half.
|
|
58
|
+
|
|
59
|
+
## Theming
|
|
60
|
+
|
|
61
|
+
The Law-2 hue derivation (one hue in, ring, halo and marker tint all derived), `--card` and `--border` for the resting hairline, plus the **Chip** tokens the marker reuses (`--pretui-chip-mix`, `--pretui-ink-mix`) and the animation's duration and easing.
|
|
62
|
+
|
|
63
|
+
Because the ring is a `box-shadow` and the halo is a transform, a theme retunes intensity by changing the hue and the mix ratios rather than by changing geometry. A theme must keep the _resting_ hairline visible — it is what carries the state in a screenshot and under reduced motion, and a theme that tunes only the animated peak will produce a component that says nothing when still.
|
|
64
|
+
|
|
65
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|