@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,57 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A signature capture surface with a typed-name alternative beside it.
|
|
4
|
+
|
|
5
|
+
The alternative is not a convenience — it is the only path for anyone who cannot draw with a pointer, and it is the reason this component is usable at all.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@label? — the visible label. Defaults to 'Signature'
|
|
11
|
+
@description? — helper text under the surface, wired via aria-describedby
|
|
12
|
+
@signerName? — who is signing; used in the image alt text and as the typed default
|
|
13
|
+
@defaultStrokes?, @defaultTypedName? — rehydration from a previous @onChange payload
|
|
14
|
+
@defaultMode? — which method is offered first. 'draw' by default
|
|
15
|
+
@hideTypedAlternative? — strongly discouraged; see below
|
|
16
|
+
@penColor? — opaque hex or rgb(); defaults to the resolved token ink
|
|
17
|
+
@minWidth? — thinnest stroke in px, clamped to [0.1, 10]
|
|
18
|
+
@maxWidth? — thickest stroke in px, clamped to [0.5, 30]
|
|
19
|
+
@dotSize? — radius of a single tap dot in px, clamped to [0, 20]
|
|
20
|
+
@height? — surface height in px, clamped to [80, 600]. Default 180
|
|
21
|
+
@required? — marks the control required and says so in the label
|
|
22
|
+
@onChange? — fires on every stroke, clear, typed keystroke and mode change
|
|
23
|
+
|
|
24
|
+
<:default> — receives an api: clear, toSVG, toPNG, isEmpty, value
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**`@hideTypedAlternative` is documented as discouraged in the signature itself.** It exists so a caller with a genuinely different fallback can say so out loud, rather than being unable to express that. Using it without one leaves a control that a large group of people simply cannot complete.
|
|
28
|
+
|
|
29
|
+
**Every numeric arg is clamped**, so a caller cannot produce an unusable pen or a surface too small to sign on.
|
|
30
|
+
|
|
31
|
+
**`@onChange` fires on everything** — strokes, clears, typed keystrokes, mode changes — so a form always holds the current state rather than needing to poll.
|
|
32
|
+
|
|
33
|
+
**The block yields an imperative api** because export is inherently imperative: `toSVG` and `toPNG` are called when a form submits, not rendered.
|
|
34
|
+
|
|
35
|
+
## Prior art
|
|
36
|
+
|
|
37
|
+
The signature-pad libraries that wrap a canvas. The comparison worth making is not with their drawing quality but with their scope: a canvas with strokes on it is not a signature control, because it has exactly one input method.
|
|
38
|
+
|
|
39
|
+
Where Pretui is better: the typed alternative is part of the component, with the mode change reported like any other change, rather than being something each product bolts on beside it.
|
|
40
|
+
|
|
41
|
+
Where it is thinner: no pressure or tilt input, no stroke smoothing options beyond the width range, no timestamp or audit metadata in the payload, and no verification of any kind — this captures a mark, it does not attest to anything.
|
|
42
|
+
|
|
43
|
+
## Accessibility
|
|
44
|
+
|
|
45
|
+
- **The typed alternative is the accessibility story.** Drawing is a fine-motor pointer gesture with no keyboard equivalent that means anything; the typed name is the equal path, and it is why hiding it is called out in the contract.
|
|
46
|
+
- **The rendered signature carries `role='img'` with alt text built from `@signerName`**, so an exported mark is described rather than being an unlabelled graphic.
|
|
47
|
+
- **`@description` is wired through `aria-describedby`**, giving a place for "sign with your mouse or type your name" that is not a placeholder.
|
|
48
|
+
- **`@required` says so in the label** rather than only setting an attribute — the asterisk is `aria-hidden` and the word is in the name.
|
|
49
|
+
- **Mode changes are reported through `@onChange`**, so a form knows which method produced the value.
|
|
50
|
+
|
|
51
|
+
## Theming
|
|
52
|
+
|
|
53
|
+
`--pretui-sigpad-paper` (the surface), `--pretui-sigpad-ink` (the default pen), `--pretui-sigpad-radius`, `--pretui-sigpad-script` (the typeface the typed name renders in), over `--pretui-shadow-control`.
|
|
54
|
+
|
|
55
|
+
`--pretui-sigpad-script` is the one that matters for the typed path: a typed signature set in the interface font reads as a text field, and set in a script face it reads as a signature. A theme that leaves it unset makes the alternative feel like a lesser option, which is exactly what it must not be.
|
|
56
|
+
|
|
57
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// Pretui — SignaturePad usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { SignaturePad } from './signature-pad';
|
|
6
|
+
import type { SignatureValue } from './signature-pad';
|
|
7
|
+
import { Token } from './token';
|
|
8
|
+
|
|
9
|
+
const MODES: string[] = ['draw', 'type'];
|
|
10
|
+
|
|
11
|
+
// ── SignaturePad ─────────────────────────────────────────────────────────
|
|
12
|
+
|
|
13
|
+
class SignaturePadUsage extends Component {
|
|
14
|
+
modes = MODES;
|
|
15
|
+
|
|
16
|
+
@tracked label = 'Contractor signature';
|
|
17
|
+
@tracked description =
|
|
18
|
+
'Sign with a pointer, or switch to Type and enter your full name.';
|
|
19
|
+
@tracked signerName = '';
|
|
20
|
+
@tracked defaultMode = 'draw';
|
|
21
|
+
@tracked hideTypedAlternative = false;
|
|
22
|
+
@tracked penColor = '';
|
|
23
|
+
@tracked minWidth = 0.7;
|
|
24
|
+
@tracked maxWidth = 2.4;
|
|
25
|
+
@tracked dotSize = 1.6;
|
|
26
|
+
@tracked height = 180;
|
|
27
|
+
@tracked required = false;
|
|
28
|
+
@tracked last: SignatureValue | undefined;
|
|
29
|
+
|
|
30
|
+
setLabel = (v: string) => (this.label = v);
|
|
31
|
+
setDescription = (v: string) => (this.description = v);
|
|
32
|
+
setSignerName = (v: string) => (this.signerName = v);
|
|
33
|
+
setDefaultMode = (v: string) => (this.defaultMode = v);
|
|
34
|
+
setHideTyped = (v: boolean) => (this.hideTypedAlternative = v);
|
|
35
|
+
setPenColor = (v: string) => (this.penColor = v);
|
|
36
|
+
setMinWidth = (v: number | null) => (this.minWidth = v ?? 0.7);
|
|
37
|
+
setMaxWidth = (v: number | null) => (this.maxWidth = v ?? 2.4);
|
|
38
|
+
setDotSize = (v: number | null) => (this.dotSize = v ?? 1.6);
|
|
39
|
+
setHeight = (v: number | null) => (this.height = v ?? 180);
|
|
40
|
+
setRequired = (v: boolean) => (this.required = v);
|
|
41
|
+
noteChange = (value: SignatureValue) => (this.last = value);
|
|
42
|
+
|
|
43
|
+
get defaultModeValue(): 'draw' | 'type' {
|
|
44
|
+
return this.defaultMode === 'type' ? 'type' : 'draw';
|
|
45
|
+
}
|
|
46
|
+
get penColorValue(): string | undefined {
|
|
47
|
+
return this.penColor.trim() === '' ? undefined : this.penColor;
|
|
48
|
+
}
|
|
49
|
+
get signerNameValue(): string | undefined {
|
|
50
|
+
return this.signerName.trim() === '' ? undefined : this.signerName;
|
|
51
|
+
}
|
|
52
|
+
get modeText(): string {
|
|
53
|
+
return this.last?.mode ?? '—';
|
|
54
|
+
}
|
|
55
|
+
get emptyText(): string {
|
|
56
|
+
return this.last ? String(this.last.isEmpty) : '—';
|
|
57
|
+
}
|
|
58
|
+
get strokeText(): string {
|
|
59
|
+
return this.last ? this.last.strokes.length + ' strokes' : '—';
|
|
60
|
+
}
|
|
61
|
+
get usage(): string {
|
|
62
|
+
return [
|
|
63
|
+
'<SignaturePad',
|
|
64
|
+
" @label='" + this.label + "'",
|
|
65
|
+
" @defaultMode='" + this.defaultMode + "'",
|
|
66
|
+
' @height={{' + this.height + '}}',
|
|
67
|
+
' @onChange={{this.persist}}',
|
|
68
|
+
' as |sig|',
|
|
69
|
+
'>',
|
|
70
|
+
' <button type="button" disabled={{sig.isEmpty}}>Save</button>',
|
|
71
|
+
'</SignaturePad>',
|
|
72
|
+
].join('\n');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
<template>
|
|
76
|
+
<FreestyleUsage
|
|
77
|
+
@name='SignaturePad'
|
|
78
|
+
@description="Variable-width Bézier capture over pointer events, on a vendored signature_pad. Four things here are the reason most signature pads are bad. The backing store is scaled by devicePixelRatio, so strokes are not soft on a retina screen. A resize replays the stroke data instead of losing it — drag the height knob mid-signature and watch it survive the wipe that changing canvas.width always causes. The engine runs with throttle 0, which means it schedules no timer at all, so nothing here can outlive the element or hang a test run. And the typed-name alternative is a full peer of drawing, not a courtesy: same onChange payload, same isEmpty semantics, same SVG and PNG output, reachable by Tab alone — because a pointer-only input is not an input for everyone. @onChange emits the STROKE DATA, never a picture; the block yields toSVG() and toPNG() for when you actually want one, SVG first."
|
|
79
|
+
@source={{this.usage}}
|
|
80
|
+
>
|
|
81
|
+
<:example>
|
|
82
|
+
<SignaturePad
|
|
83
|
+
@label={{this.label}}
|
|
84
|
+
@description={{this.description}}
|
|
85
|
+
@signerName={{this.signerNameValue}}
|
|
86
|
+
@defaultMode={{this.defaultModeValue}}
|
|
87
|
+
@hideTypedAlternative={{this.hideTypedAlternative}}
|
|
88
|
+
@penColor={{this.penColorValue}}
|
|
89
|
+
@minWidth={{this.minWidth}}
|
|
90
|
+
@maxWidth={{this.maxWidth}}
|
|
91
|
+
@dotSize={{this.dotSize}}
|
|
92
|
+
@height={{this.height}}
|
|
93
|
+
@required={{this.required}}
|
|
94
|
+
@onChange={{this.noteChange}}
|
|
95
|
+
>
|
|
96
|
+
<p class='cap-readout'>
|
|
97
|
+
<span class='cap-readoutLabel'>@onChange</span>
|
|
98
|
+
<Token @value={{this.modeText}} />
|
|
99
|
+
<Token @value={{this.emptyText}} />
|
|
100
|
+
<Token @value={{this.strokeText}} />
|
|
101
|
+
</p>
|
|
102
|
+
</SignaturePad>
|
|
103
|
+
</:example>
|
|
104
|
+
|
|
105
|
+
<:api as |Args|>
|
|
106
|
+
<Args.String
|
|
107
|
+
@name='label'
|
|
108
|
+
@value={{this.label}}
|
|
109
|
+
@defaultValue='Signature'
|
|
110
|
+
@description='The visible label, and the stem of the canvas accessible name.'
|
|
111
|
+
@onInput={{this.setLabel}}
|
|
112
|
+
/>
|
|
113
|
+
<Args.String
|
|
114
|
+
@name='description'
|
|
115
|
+
@value={{this.description}}
|
|
116
|
+
@description='Helper text under the surface, wired through aria-describedby to whichever input is active.'
|
|
117
|
+
@onInput={{this.setDescription}}
|
|
118
|
+
/>
|
|
119
|
+
<Args.String
|
|
120
|
+
@name='signerName'
|
|
121
|
+
@value={{this.signerName}}
|
|
122
|
+
@description='Who is signing. Used in the exported image alt text, and as the initial typed name.'
|
|
123
|
+
@onInput={{this.setSignerName}}
|
|
124
|
+
/>
|
|
125
|
+
<Args.String
|
|
126
|
+
@name='defaultMode'
|
|
127
|
+
@value={{this.defaultMode}}
|
|
128
|
+
@options={{this.modes}}
|
|
129
|
+
@defaultValue='draw'
|
|
130
|
+
@description='Which signing method is offered first.'
|
|
131
|
+
@onInput={{this.setDefaultMode}}
|
|
132
|
+
/>
|
|
133
|
+
<Args.Bool
|
|
134
|
+
@name='hideTypedAlternative'
|
|
135
|
+
@value={{this.hideTypedAlternative}}
|
|
136
|
+
@defaultValue={{false}}
|
|
137
|
+
@description='Strongly discouraged — it removes the only path for anyone who cannot draw with a pointer. It exists so a caller with a genuinely different fallback has to say so out loud.'
|
|
138
|
+
@onInput={{this.setHideTyped}}
|
|
139
|
+
/>
|
|
140
|
+
<Args.String
|
|
141
|
+
@name='penColor'
|
|
142
|
+
@value={{this.penColor}}
|
|
143
|
+
@description='Ink colour. Opaque hex or rgb() only; anything else falls back to the ink resolved from the theme token, which is also what happens when this is left empty.'
|
|
144
|
+
@onInput={{this.setPenColor}}
|
|
145
|
+
/>
|
|
146
|
+
<Args.Number
|
|
147
|
+
@name='minWidth'
|
|
148
|
+
@value={{this.minWidth}}
|
|
149
|
+
@min={{0.1}}
|
|
150
|
+
@max={{10}}
|
|
151
|
+
@step={{0.1}}
|
|
152
|
+
@defaultValue={{0.7}}
|
|
153
|
+
@description='Thinnest stroke in px — the fast end of the velocity taper.'
|
|
154
|
+
@onInput={{this.setMinWidth}}
|
|
155
|
+
/>
|
|
156
|
+
<Args.Number
|
|
157
|
+
@name='maxWidth'
|
|
158
|
+
@value={{this.maxWidth}}
|
|
159
|
+
@min={{0.5}}
|
|
160
|
+
@max={{30}}
|
|
161
|
+
@step={{0.1}}
|
|
162
|
+
@defaultValue={{2.4}}
|
|
163
|
+
@description='Thickest stroke in px — the slow end. Widen the gap for a more calligraphic line.'
|
|
164
|
+
@onInput={{this.setMaxWidth}}
|
|
165
|
+
/>
|
|
166
|
+
<Args.Number
|
|
167
|
+
@name='dotSize'
|
|
168
|
+
@value={{this.dotSize}}
|
|
169
|
+
@min={{0}}
|
|
170
|
+
@max={{20}}
|
|
171
|
+
@step={{0.1}}
|
|
172
|
+
@defaultValue={{1.6}}
|
|
173
|
+
@description='Radius of a single tap dot, so a full stop is not invisible.'
|
|
174
|
+
@onInput={{this.setDotSize}}
|
|
175
|
+
/>
|
|
176
|
+
<Args.Number
|
|
177
|
+
@name='height'
|
|
178
|
+
@value={{this.height}}
|
|
179
|
+
@min={{60}}
|
|
180
|
+
@max={{700}}
|
|
181
|
+
@defaultValue={{180}}
|
|
182
|
+
@description='Surface height in px, clamped to [80, 600]. Change it mid-signature: the strokes are replayed onto the new backing store rather than wiped.'
|
|
183
|
+
@onInput={{this.setHeight}}
|
|
184
|
+
/>
|
|
185
|
+
<Args.Bool
|
|
186
|
+
@name='required'
|
|
187
|
+
@value={{this.required}}
|
|
188
|
+
@defaultValue={{false}}
|
|
189
|
+
@description='Marks the control required, with a visually-hidden "(required)" inside the label so it reaches AT.'
|
|
190
|
+
@onInput={{this.setRequired}}
|
|
191
|
+
/>
|
|
192
|
+
<Args.Object
|
|
193
|
+
@name='onChange'
|
|
194
|
+
@value={{this.last}}
|
|
195
|
+
@description='Receives { mode, strokes, typedName, isEmpty } on every stroke, clear, typed keystroke and method change. Stroke data, not an image — the caller decides what to persist.'
|
|
196
|
+
/>
|
|
197
|
+
<Args.Yield
|
|
198
|
+
@name='default'
|
|
199
|
+
@description='Receives the handle: mode, isEmpty, value, clear(), toSVG(), toPNG(), altText.'
|
|
200
|
+
/>
|
|
201
|
+
</:api>
|
|
202
|
+
</FreestyleUsage>
|
|
203
|
+
|
|
204
|
+
<style scoped>
|
|
205
|
+
.cap-readout {
|
|
206
|
+
display: flex;
|
|
207
|
+
align-items: center;
|
|
208
|
+
gap: 8px;
|
|
209
|
+
margin: 10px 0 0;
|
|
210
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
211
|
+
color: var(--muted-foreground);
|
|
212
|
+
}
|
|
213
|
+
.cap-readoutLabel {
|
|
214
|
+
font-family: var(--font-mono);
|
|
215
|
+
}
|
|
216
|
+
</style>
|
|
217
|
+
</template>
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export const DEMOS_SIGNATURE_PAD: Record<string, unknown> = {
|
|
221
|
+
SignaturePad: SignaturePadUsage,
|
|
222
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Pretui — Skeleton: a placeholder shape shown while content loads.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { cssDeclaration, cssStyleFrom } from '../pretui-css';
|
|
4
|
+
|
|
5
|
+
export interface SkeletonSignature {
|
|
6
|
+
Args: { width?: string; height?: string };
|
|
7
|
+
Element: HTMLSpanElement;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export class Skeleton extends Component<SkeletonSignature> {
|
|
11
|
+
get style() {
|
|
12
|
+
return cssStyleFrom([
|
|
13
|
+
cssDeclaration('--_w', this.args.width ?? '100%'),
|
|
14
|
+
cssDeclaration('--_h', this.args.height ?? '12px'),
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
<template>
|
|
18
|
+
<span class='pretui-skeleton' style={{this.style}} aria-hidden='true' data-test-pretui-skeleton ...attributes></span>
|
|
19
|
+
<style scoped>
|
|
20
|
+
@layer PretComponent {
|
|
21
|
+
@keyframes pretui-shimmer {
|
|
22
|
+
from {
|
|
23
|
+
background-position: 200% 0;
|
|
24
|
+
}
|
|
25
|
+
to {
|
|
26
|
+
background-position: -200% 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
.pretui-skeleton {
|
|
30
|
+
display: block;
|
|
31
|
+
width: var(--_w, 100%);
|
|
32
|
+
height: var(--_h, 12px);
|
|
33
|
+
border-radius: 6px;
|
|
34
|
+
background: linear-gradient(90deg, var(--inset, var(--boxel-100)) 40%, var(--hover, var(--boxel-100)) 50%, var(--inset, var(--boxel-100)) 60%);
|
|
35
|
+
background-size: 200% 100%;
|
|
36
|
+
animation: pretui-shimmer 1.6s linear infinite;
|
|
37
|
+
}
|
|
38
|
+
@media (prefers-reduced-motion: reduce) {
|
|
39
|
+
.pretui-skeleton {
|
|
40
|
+
animation: none;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
</style>
|
|
45
|
+
</template>
|
|
46
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A shimmering grey rectangle standing in for content that has not arrived. Use it when you know the _shape_ of what is coming — a title line, three rows, an avatar — because a skeleton that matches the eventual layout prevents the reflow jolt that a spinner does not. If you do not know the shape, use **Spinner** or **LoadingState**. If the content will never arrive, **EmptyState**. If a specific reference is gone, **BrokenLink**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@width? (default '100%'), @height? (default '12px')
|
|
9
|
+
Element: HTMLSpanElement
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Two args, both CSS length strings. Compose several to sketch a layout; there is no variant system, no `count`, no `circle` mode.
|
|
13
|
+
|
|
14
|
+
**Both dimensions go through the kit's CSS guard.** `get style()` builds each declaration with `cssDeclaration`, so a value that fails the allowlist is dropped whole and the stylesheet's own `100%` / `12px` paints instead — the caller loses their override, never the component's rendering.
|
|
15
|
+
|
|
16
|
+
That guard is the load-bearing part, and it is worth being precise about why the shape alone is not enough. Writing the value into a custom property the component chose (`--_w`, never a caller-supplied property name) stops the value becoming a _property_; it does not stop it becoming a second _declaration_. Unguarded, a `@width` of `0px; background: red` renders as `--_w: 0px; background: red; --_h: 12px` — a live declaration the caller chose. `components/skeleton.test.gts` pins the refusal: that input renders `--_h: 12px`, the width dropped whole and the stylesheet's own `var(--_w, 100%)` painting in its place. A chosen property name plus a validated value is the pattern to copy anywhere caller data reaches CSS; the property name on its own is half of it.
|
|
17
|
+
|
|
18
|
+
The shimmer is a 200%-wide three-stop `linear-gradient` scrolled by `background-position` — one animation, no pseudo-element, no overlay.
|
|
19
|
+
|
|
20
|
+
## Prior art
|
|
21
|
+
|
|
22
|
+
**Web Awesome `wa-skeleton`** takes `effect` (`none | sheen | pulse`) and exposes `--color` and `--sheen-color`; you size it with CSS. **shadcn `Skeleton`** is a `<div>` with `animate-pulse` and a rounded background — you size it with Tailwind classes. **React Spectrum** has no skeleton; it uses `ProgressCircle` and content-shift avoidance instead.
|
|
23
|
+
|
|
24
|
+
Pretui sits between the two: args rather than classes for size (so a call site does not need a styling system), and no effect axis. The improvement over shadcn is that **sizing is part of the API**, which means a skeleton is one self-describing element rather than an element plus a class soup. The improvement over Web Awesome is smaller — really just that the default 12px height matches the kit's body line box, so a bare `<Skeleton />` already looks like a line of text.
|
|
25
|
+
|
|
26
|
+
Where it is behind: **no `pulse` alternative and no shape variants.** Web Awesome's `pulse` is the calmer effect and the one to prefer for large areas; a circular skeleton for avatars needs `border-radius` passed through `...attributes`, which works but is undiscoverable. The 6px radius is fixed.
|
|
27
|
+
|
|
28
|
+
## Accessibility
|
|
29
|
+
|
|
30
|
+
No APG pattern. Relevant criteria: WCAG **2.2.2 Pause, Stop, Hide**, **4.1.3 Status Messages**, **1.4.1**.
|
|
31
|
+
|
|
32
|
+
What is right, and it is the important call:
|
|
33
|
+
|
|
34
|
+
- **`aria-hidden="true"`.** Skeletons are pure decoration and are correctly removed from the accessibility tree. A page of twenty skeletons announces nothing, which is exactly right — the alternative (each one announced as an unlabelled region) is the common mistake.
|
|
35
|
+
- **`prefers-reduced-motion: reduce` stops the animation entirely**, leaving a static grey block. That is the correct treatment for a decorative shimmer: unlike **Spinner**, where stopping the motion removes the meaning, a skeleton conveys everything it needs to by being there.
|
|
36
|
+
|
|
37
|
+
Gaps — all of them at the composition level, which is where they belong:
|
|
38
|
+
|
|
39
|
+
- **Nothing announces that content is loading, or that it has arrived.** Because the skeletons are `aria-hidden`, a screen-reader user gets _silence_ during the wait and then content appearing with no transition signal. The caller must supply a `role="status"` region — and it must exist in the DOM before the change, which is the usual live-region requirement. This is the single thing to get right when using Skeleton.
|
|
40
|
+
- **`aria-busy="true"`** on the region being replaced is the other half, and nothing here sets or suggests it.
|
|
41
|
+
- **The animation runs indefinitely.** WCAG 2.2.2 governs motion that starts automatically, lasts more than five seconds and runs in parallel with other content. A slow load with a screenful of skeletons qualifies, and there is no pause control — only the reduced-motion branch, which covers users who have set the preference and no one else.
|
|
42
|
+
- **`role="presentation"` semantics via `aria-hidden` also hide any real content** placed inside a Skeleton. Do not nest content in one; it is meant to be empty.
|
|
43
|
+
- The gray-on-gray gradient (`--inset` → `--hover` → `--inset`) is intentionally low contrast and carries no information, so **1.4.11** does not apply — but a theme that raises the contrast turns skeletons into visual noise.
|
|
44
|
+
|
|
45
|
+
## Theming
|
|
46
|
+
|
|
47
|
+
`--inset` (base) and `--hover` (the sheen's bright stop). That is the entire palette, and the two are adjacent by design — the shimmer should be barely perceptible.
|
|
48
|
+
|
|
49
|
+
The 6px radius, 1.6s duration, `linear` easing and 200% gradient width are fixed. A theme cannot slow the shimmer or change its shape; retuning `--inset` and `--hover` closer together or further apart is the only available adjustment, and a theme that makes them very different will produce a distractingly strobing page. If you need circular skeletons for avatars, pass `style="border-radius: 50%"` through `...attributes` at the call site.
|
|
50
|
+
|
|
51
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
52
|
+
|
|
53
|
+
## React ecosystem
|
|
54
|
+
|
|
55
|
+
Accept `width` / `height` / `radius` / `count`. Law 8: the skeleton
|
|
56
|
+
must match the shape of the real content (AspectRatio for media).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Pretui — Skeleton usage page.
|
|
2
|
+
import GlimmerComponent from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { Skeleton } from './skeleton';
|
|
6
|
+
|
|
7
|
+
// ── Skeleton ← skeleton-placeholder/usage.gts ────────────────────────────
|
|
8
|
+
// Dropped knobs: animation (wave/pulse/none — Pretui ships one shimmer;
|
|
9
|
+
// reduced-motion turns it off in CSS).
|
|
10
|
+
class SkeletonUsage extends GlimmerComponent {
|
|
11
|
+
@tracked width = '200px';
|
|
12
|
+
@tracked height = '20px';
|
|
13
|
+
setWidth = (v: string) => (this.width = v);
|
|
14
|
+
setHeight = (v: string) => (this.height = v);
|
|
15
|
+
<template>
|
|
16
|
+
<FreestyleUsage
|
|
17
|
+
@name='Skeleton'
|
|
18
|
+
@description='A skeleton placeholder component to show loading states'
|
|
19
|
+
>
|
|
20
|
+
<:example>
|
|
21
|
+
<div class='skeleton-stack'>
|
|
22
|
+
<Skeleton @width={{this.width}} @height={{this.height}} />
|
|
23
|
+
<Skeleton @width='140px' @height='12px' />
|
|
24
|
+
<Skeleton @width='80px' @height='12px' />
|
|
25
|
+
</div>
|
|
26
|
+
</:example>
|
|
27
|
+
<:api as |Args|>
|
|
28
|
+
<Args.String
|
|
29
|
+
@name='width'
|
|
30
|
+
@description='Width of the skeleton (px or %)'
|
|
31
|
+
@defaultValue='100%'
|
|
32
|
+
@value={{this.width}}
|
|
33
|
+
@onInput={{this.setWidth}}
|
|
34
|
+
/>
|
|
35
|
+
<Args.String
|
|
36
|
+
@name='height'
|
|
37
|
+
@description='Height of the skeleton (px or %)'
|
|
38
|
+
@defaultValue='12px'
|
|
39
|
+
@value={{this.height}}
|
|
40
|
+
@onInput={{this.setHeight}}
|
|
41
|
+
/>
|
|
42
|
+
</:api>
|
|
43
|
+
</FreestyleUsage>
|
|
44
|
+
<style scoped>
|
|
45
|
+
.skeleton-stack {
|
|
46
|
+
width: 240px;
|
|
47
|
+
display: grid;
|
|
48
|
+
gap: var(--space-3, 8px);
|
|
49
|
+
}
|
|
50
|
+
</style>
|
|
51
|
+
</template>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export const DEMOS_SKELETON: Record<string, unknown> = {
|
|
55
|
+
Skeleton: SkeletonUsage,
|
|
56
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Pretui — SkipLink: the first focusable control, a way past the chrome to the main content.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
|
|
4
|
+
export interface SkipLinkSignature {
|
|
5
|
+
Args: {
|
|
6
|
+
/** The in-page target (default '#main'). Give that element the matching id. */
|
|
7
|
+
href?: string;
|
|
8
|
+
/** The link text (default 'Skip to content'). */
|
|
9
|
+
label?: string;
|
|
10
|
+
};
|
|
11
|
+
Element: HTMLAnchorElement;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* WCAG 2.4.1 Bypass Blocks. Put it first in the pane, before the header and
|
|
16
|
+
* navigation. It is off screen until it receives focus, then appears at the
|
|
17
|
+
* top start corner of the nearest positioned ancestor so the keyboard user can see where they are. It is a plain
|
|
18
|
+
* in-page anchor, so it needs no router. The target should be focusable
|
|
19
|
+
* (`tabindex='-1'` on a `<main>`) so focus actually moves there, not only the
|
|
20
|
+
* scroll position.
|
|
21
|
+
*/
|
|
22
|
+
export class SkipLink extends Component<SkipLinkSignature> {
|
|
23
|
+
get href(): string {
|
|
24
|
+
return this.args.href ?? '#main';
|
|
25
|
+
}
|
|
26
|
+
get label(): string {
|
|
27
|
+
return this.args.label ?? 'Skip to content';
|
|
28
|
+
}
|
|
29
|
+
<template>
|
|
30
|
+
<a class='pretui-skip-link' href={{this.href}} data-test-pretui-skip-link ...attributes>{{this.label}}</a>
|
|
31
|
+
<style scoped>
|
|
32
|
+
@layer PretComponent {
|
|
33
|
+
.pretui-skip-link {
|
|
34
|
+
position: absolute;
|
|
35
|
+
inset-block-start: var(--space-3, 0.5rem);
|
|
36
|
+
inset-inline-start: var(--space-3, 0.5rem);
|
|
37
|
+
z-index: var(--pretui-z-toast, 100);
|
|
38
|
+
padding: var(--space-2, 0.375rem) var(--space-4, 0.6875rem);
|
|
39
|
+
border-radius: var(--radius-control, 6px);
|
|
40
|
+
background: var(--primary);
|
|
41
|
+
color: var(--primary-foreground);
|
|
42
|
+
font-family: var(--font-sans);
|
|
43
|
+
font-size: var(--text-ui-md, 0.78rem);
|
|
44
|
+
font-weight: 600;
|
|
45
|
+
text-decoration: none;
|
|
46
|
+
box-shadow: var(--pretui-shadow-raised, 0 0 0 1px var(--border));
|
|
47
|
+
}
|
|
48
|
+
/* Off screen but in the tab order and the accessibility tree until it
|
|
49
|
+
has focus: the clip pattern, not display: none. */
|
|
50
|
+
.pretui-skip-link:not(:focus) {
|
|
51
|
+
inline-size: 1px;
|
|
52
|
+
block-size: 1px;
|
|
53
|
+
padding: 0;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
clip-path: inset(50%);
|
|
56
|
+
white-space: nowrap;
|
|
57
|
+
}
|
|
58
|
+
.pretui-skip-link:focus-visible {
|
|
59
|
+
outline: 2px solid var(--ring);
|
|
60
|
+
outline-offset: 2px;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
</style>
|
|
64
|
+
</template>
|
|
65
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
**The first focusable control in a pane**: a link past the header and navigation to the main content. It satisfies WCAG 2.4.1 Bypass Blocks. It is off screen until it receives focus, then appears in the top start corner, so a keyboard user sees where the first Tab took them.
|
|
4
|
+
|
|
5
|
+
Put exactly one SkipLink first in the pane, before any header or navigation. For other screen-reader-only text, use **VisuallyHidden**.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@href? (default '#main')
|
|
11
|
+
@label? (default 'Skip to content')
|
|
12
|
+
Element: HTMLAnchorElement
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**A plain in-page anchor.** It needs no router and no script: following it moves the document to the element with the matching id. Give the target `tabindex='-1'`, for example `<main id='main' tabindex='-1'>`, so focus moves there too, not only the scroll position. Without it, the next Tab starts from the top again in some browsers.
|
|
16
|
+
|
|
17
|
+
**Hidden with the clip pattern until focused.** Unfocused, it is 1px and clipped, but it stays in the tab order and the accessibility tree. Focused, it is a solid primary-toned pill, absolutely positioned in the top start corner of the nearest positioned ancestor.
|
|
18
|
+
|
|
19
|
+
## Prior art
|
|
20
|
+
|
|
21
|
+
**Chakra `SkipNavLink` / `SkipNavContent`** pairs the link with a target component that carries the id. **Gov.uk and USWDS** ship a skip link as a class on an anchor. Most other React kits (Radix, MUI, Ant, Mantine) have none, and agents hand-roll an `sr-only focus:not-sr-only` anchor.
|
|
22
|
+
|
|
23
|
+
Where Pretui is better: the hidden state keeps the link reachable. Hand-rolled versions often use `display: none` until focus, which never receives focus at all. Where it is thinner: **no target component**. Chakra's `SkipNavContent` sets the id and `tabindex` for you; here you put them on your `<main>`.
|
|
24
|
+
|
|
25
|
+
## Accessibility
|
|
26
|
+
|
|
27
|
+
No APG pattern. WCAG 2.4.1 and the conventions around it.
|
|
28
|
+
|
|
29
|
+
- **It is a real link.** `<a href>`, in the natural tab order with no `tabindex` and no `aria-hidden`. The tests assert the tag, the default `href` and label, and that it can take focus.
|
|
30
|
+
- **It must come first.** A skip link after the navigation skips nothing. Render it before the header.
|
|
31
|
+
- **The target must accept focus.** Put `tabindex='-1'` on it so focus moves with the scroll.
|
|
32
|
+
- **The label says where it goes.** "Skip to content" is the convention. Use "Skip to results" or similar when the main region has a more specific job.
|
|
33
|
+
- **The focus ring is always shown** on `:focus-visible`.
|
|
34
|
+
|
|
35
|
+
## Theming
|
|
36
|
+
|
|
37
|
+
`--primary` and `--primary-foreground` (the revealed pill), `--radius-control`, `--pretui-shadow-raised`, `--ring` (focus ring), `--font-sans`, `--text-ui-md`, `--space-2`, `--space-3` and `--space-4`, and `--pretui-z-toast`, so it sits above page chrome while it is visible.
|
|
38
|
+
|
|
39
|
+
The corner position and the clip-until-focus behaviour are fixed.
|
|
40
|
+
|
|
41
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
42
|
+
|
|
43
|
+
## React ecosystem
|
|
44
|
+
|
|
45
|
+
| Agent types | Give them |
|
|
46
|
+
| ------------------------------------------- | ------------------------------------------ |
|
|
47
|
+
| Chakra `<SkipNavLink>` | `<SkipLink />` |
|
|
48
|
+
| Chakra `<SkipNavContent>` | `id='main' tabindex='-1'` on your `<main>` |
|
|
49
|
+
| `<a className="sr-only focus:not-sr-only">` | `<SkipLink @href @label />` |
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Pretui — SkipLink usage page.
|
|
2
|
+
import type { TemplateOnlyComponent } from '@ember/component/template-only';
|
|
3
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
4
|
+
import { SkipLink } from './skip-link';
|
|
5
|
+
|
|
6
|
+
const SOURCE = "<SkipLink @href='#main' />\n<header>…</header>\n<main id='main' tabindex='-1'>…</main>";
|
|
7
|
+
|
|
8
|
+
const SkipLinkUsage: TemplateOnlyComponent = <template>
|
|
9
|
+
<FreestyleUsage
|
|
10
|
+
@name='SkipLink'
|
|
11
|
+
@description='The first focusable control in a pane: a way past the header and navigation to the main content (WCAG 2.4.1). It is off screen until it has focus. Tab into the demo frame to see it.'
|
|
12
|
+
@source={{SOURCE}}
|
|
13
|
+
>
|
|
14
|
+
<:example>
|
|
15
|
+
<div class='sk-demo'>
|
|
16
|
+
<SkipLink @href='#sk-demo-main' />
|
|
17
|
+
<nav class='sk-demo-nav'><a href='#sk-demo-main'>Lots</a> <a href='#sk-demo-main'>Roasts</a> <a href='#sk-demo-main'>Orders</a></nav>
|
|
18
|
+
<main id='sk-demo-main' class='sk-demo-main' tabindex='-1'>Main content</main>
|
|
19
|
+
</div>
|
|
20
|
+
</:example>
|
|
21
|
+
<:api as |Args|>
|
|
22
|
+
<Args.String @name='href' @defaultValue='#main' @description='The in-page target. Give it the matching id and tabindex=-1.' />
|
|
23
|
+
<Args.String @name='label' @defaultValue='Skip to content' />
|
|
24
|
+
</:api>
|
|
25
|
+
</FreestyleUsage>
|
|
26
|
+
<style scoped>
|
|
27
|
+
.sk-demo {
|
|
28
|
+
position: relative;
|
|
29
|
+
padding: var(--space-6, 1.25rem) var(--space-4, 0.6875rem) var(--space-4, 0.6875rem);
|
|
30
|
+
border-radius: var(--radius-surface, 10px);
|
|
31
|
+
box-shadow: 0 0 0 1px var(--border);
|
|
32
|
+
}
|
|
33
|
+
.sk-demo-nav {
|
|
34
|
+
display: flex;
|
|
35
|
+
gap: var(--space-4, 0.6875rem);
|
|
36
|
+
font-size: var(--text-ui-md, 0.78rem);
|
|
37
|
+
}
|
|
38
|
+
.sk-demo-main {
|
|
39
|
+
margin-block-start: var(--space-4, 0.6875rem);
|
|
40
|
+
color: var(--muted-foreground);
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
43
|
+
</template>;
|
|
44
|
+
|
|
45
|
+
export const DEMOS_SKIP_LINK: Record<string, unknown> = {
|
|
46
|
+
SkipLink: SkipLinkUsage,
|
|
47
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
**SlideOver** is **Drawer** under a name that cannot collide. shadcn calls this edge-anchored panel `Sheet`, but **Pretui `Sheet` is a spreadsheet**, so an agent that types Sheet for a slide-over gets the wrong component. SlideOver is the same export as Drawer, and the **Drawer** writeup carries the depth. A centred overlay is **Dialog**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@open?, @onClose?, @onOpenChange?
|
|
9
|
+
@label? — the accessible name
|
|
10
|
+
@placement? ('start' | 'end' | 'bottom'; default 'end'; the React spellings map)
|
|
11
|
+
@dismissible? (default true)
|
|
12
|
+
<:title> <:default> <:footer>
|
|
13
|
+
Element: HTMLDialogElement
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Identical to Drawer: a native `<dialog>` opened with `showModal()` and placed against one edge.
|
|
17
|
+
|
|
18
|
+
## Prior art
|
|
19
|
+
|
|
20
|
+
**shadcn `Sheet`** is Radix Dialog with a `side` of `top | right | bottom | left`. **MUI `Drawer`** takes `anchor`, `open`, `onClose` and `variant` (`temporary | persistent | permanent`). **Ant `Drawer`** takes `placement`, `open`, `onClose`, `size`, `extra` and `footer`. **Web Awesome `wa-drawer`** takes `placement` and `open`.
|
|
21
|
+
|
|
22
|
+
Drawer's placements are logical, so `end` is on the left in RTL. It has no `top` placement and no persistent or permanent mode. A panel that stays in the layout is **SplitPanes** or a sidebar, not a modal drawer.
|
|
23
|
+
|
|
24
|
+
## Accessibility
|
|
25
|
+
|
|
26
|
+
Identical to Drawer: APG **Dialog (Modal)**. A drawer is a dialog with geometry. `showModal()` supplies the focus trap, Escape, `::backdrop`, inert background and stacking. `@label` is the only labelling route, so pass it as well as any `<:title>`.
|
|
27
|
+
|
|
28
|
+
## Theming
|
|
29
|
+
|
|
30
|
+
Identical to Drawer: `--pretui-drawer-size`, `--card`, `--foreground`, `--muted-foreground`, `--border`, `--radius-surface`, `--pretui-shadow-overlay`, `--pretui-overlay-scrim`, `--text-heading`, `--weight-heading`, `--track-heading`, `--text-body`, `--leading-body`, `--space-3`, `--space-4` and `--space-6`.
|
|
31
|
+
|
|
32
|
+
## React ecosystem
|
|
33
|
+
|
|
34
|
+
| shadcn / MUI / Ant | Pretui |
|
|
35
|
+
| ----------------------------- | ------------------------------ |
|
|
36
|
+
| shadcn `<Sheet side="right">` | `<SlideOver @placement='end'>` |
|
|
37
|
+
| MUI `anchor="left"` | `@placement='start'` |
|
|
38
|
+
| Ant `placement="bottom"` | `@placement='bottom'` |
|
|
39
|
+
| `open` / `onClose` | `@open` / `@onClose` |
|
|
40
|
+
| `SheetTitle` | `<:title>` plus `@label` |
|
|
41
|
+
| MUI `variant="permanent"` | **SplitPanes**, not a drawer |
|