@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,339 @@
|
|
|
1
|
+
// Pretui — ColorArea: a two-channel colour plane painted from the colour engine.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { modifier } from 'ember-modifier';
|
|
4
|
+
import { on } from '@ember/modifier';
|
|
5
|
+
import { cssDeclaration, cssStyleFrom } from '../pretui-css';
|
|
6
|
+
import { dragsSurface } from '../internal/design-tools';
|
|
7
|
+
import type { SurfaceFrame } from '../internal/design-tools';
|
|
8
|
+
import { areaColorAt, paintArea, areaPosition, channelValueText, clamp, cssFor, inkOn, round, spaceSpec, stepFor, withAlpha } from '../color-engine';
|
|
9
|
+
import type { ColorValue, GamutId } from '../color-engine';
|
|
10
|
+
|
|
11
|
+
// ── Modifiers ────────────────────────────────────────────────────────────
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Paints the area canvas. The engine returns raw RGBA; this puts it on the
|
|
15
|
+
* canvas at native resolution and lets CSS scale it up smoothly.
|
|
16
|
+
*
|
|
17
|
+
* Owning the paint in a modifier is what makes it legal: it re-runs when its
|
|
18
|
+
* arguments change, never on a loop, and there is nothing to tear down
|
|
19
|
+
* because nothing outlives the call. Contrast upstream, which posts to a
|
|
20
|
+
* Worker built from an object URL — a lifetime that must be terminated and a
|
|
21
|
+
* URL that must be revoked, both of which the realm's no-unowned-timers law
|
|
22
|
+
* exists to prevent people from forgetting.
|
|
23
|
+
*/
|
|
24
|
+
export const paintsArea = modifier(
|
|
25
|
+
(
|
|
26
|
+
element: HTMLCanvasElement,
|
|
27
|
+
[base, gamut, size]: [ColorValue, GamutId, number],
|
|
28
|
+
) => {
|
|
29
|
+
let context = element.getContext('2d');
|
|
30
|
+
if (!context) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
let paint = paintArea(base, gamut, size);
|
|
34
|
+
if (element.width !== paint.size) {
|
|
35
|
+
element.width = paint.size;
|
|
36
|
+
}
|
|
37
|
+
if (element.height !== paint.size) {
|
|
38
|
+
element.height = paint.size;
|
|
39
|
+
}
|
|
40
|
+
// `createImageData` + `set` rather than `new ImageData(buffer, …)`: the
|
|
41
|
+
// constructor overload is typed against a specific ArrayBuffer variance
|
|
42
|
+
// that a plain Uint8ClampedArray does not satisfy under the realm's TS
|
|
43
|
+
// lib, and this path allocates the same amount.
|
|
44
|
+
let image = context.createImageData(paint.size, paint.size);
|
|
45
|
+
image.data.set(paint.data);
|
|
46
|
+
context.putImageData(image, 0, 0);
|
|
47
|
+
},
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
// ── ColorArea ────────────────────────────────────────────────────────────
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The 2D plane. Which two channels it shows depends on the space: saturation
|
|
54
|
+
* × value for the RGB-ish models, chroma × lightness for OKLCH/P3/Rec.2020,
|
|
55
|
+
* a × b for OKLab. The third channel is the slider beside it.
|
|
56
|
+
*
|
|
57
|
+
* **Accessibility model.** A 2D control cannot be one `role="slider"` — a
|
|
58
|
+
* single `aria-valuenow` cannot express two axes, which is the flaw in both
|
|
59
|
+
* sources (upstream sets none at all; figui3 sets `aria-valuenow` to the
|
|
60
|
+
* vertical axis only and papers over it with `aria-valuetext`). This renders
|
|
61
|
+
* TWO real range inputs, one per axis, each with its own label and spoken
|
|
62
|
+
* value. Both are transparent and cover the plane, so either tab stop drives
|
|
63
|
+
* both axes from the keyboard, and the focus ring is drawn on the thumb.
|
|
64
|
+
*/
|
|
65
|
+
export interface ColorAreaSignature {
|
|
66
|
+
Args: {
|
|
67
|
+
color: ColorValue;
|
|
68
|
+
gamut: GamutId;
|
|
69
|
+
/** Paint resolution. 96 is ~10ms; 128 is ~36ms and visibly crisper on
|
|
70
|
+
* a large picker. */
|
|
71
|
+
resolution?: number;
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
onChange: (color: ColorValue) => void;
|
|
74
|
+
onCommit?: () => void;
|
|
75
|
+
};
|
|
76
|
+
Element: HTMLDivElement;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export class ColorArea extends Component<ColorAreaSignature> {
|
|
80
|
+
get spec() {
|
|
81
|
+
return spaceSpec(this.args.color.space);
|
|
82
|
+
}
|
|
83
|
+
get modelSpec() {
|
|
84
|
+
return spaceSpec(this.spec.area.model);
|
|
85
|
+
}
|
|
86
|
+
get xChannel() {
|
|
87
|
+
return this.modelSpec.channels[this.spec.area.x]!;
|
|
88
|
+
}
|
|
89
|
+
get yChannel() {
|
|
90
|
+
return this.modelSpec.channels[this.spec.area.y]!;
|
|
91
|
+
}
|
|
92
|
+
get position() {
|
|
93
|
+
return areaPosition(this.args.color);
|
|
94
|
+
}
|
|
95
|
+
get resolution() {
|
|
96
|
+
return clamp(this.args.resolution ?? 96, 16, 256);
|
|
97
|
+
}
|
|
98
|
+
get thumbStyle() {
|
|
99
|
+
let point = this.position;
|
|
100
|
+
return cssStyleFrom([
|
|
101
|
+
'--pretui-area-x: ' + round(clamp(point.x, 0, 1) * 100, 3) + '%',
|
|
102
|
+
'--pretui-area-y: ' + round(clamp(point.y, 0, 1) * 100, 3) + '%',
|
|
103
|
+
cssDeclaration(
|
|
104
|
+
'--pretui-area-thumb-color',
|
|
105
|
+
cssFor(withAlpha(this.args.color, 1)),
|
|
106
|
+
),
|
|
107
|
+
// `inkOn` returns the literal 'black' | 'white' — a closed enum, not
|
|
108
|
+
// caller text — but it costs nothing to send it through the guard too.
|
|
109
|
+
cssDeclaration('--pretui-area-thumb-ink', inkOn(this.args.color)),
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
/** Display value on each axis, for the range inputs. */
|
|
113
|
+
get xValue() {
|
|
114
|
+
let min = this.xChannel.min;
|
|
115
|
+
return round(min + (this.xChannel.max - min) * this.position.x, 4);
|
|
116
|
+
}
|
|
117
|
+
get yValue() {
|
|
118
|
+
let min = this.yChannel.min;
|
|
119
|
+
return round(min + (this.yChannel.max - min) * (1 - this.position.y), 4);
|
|
120
|
+
}
|
|
121
|
+
get xValueText() {
|
|
122
|
+
return channelValueText(this.modelSpec, this.spec.area.x, this.xValue);
|
|
123
|
+
}
|
|
124
|
+
get yValueText() {
|
|
125
|
+
return channelValueText(this.modelSpec, this.spec.area.y, this.yValue);
|
|
126
|
+
}
|
|
127
|
+
get groupLabel() {
|
|
128
|
+
return `${this.xChannel.label} and ${this.yChannel.label}`;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
private emit(fx: number, fy: number) {
|
|
132
|
+
this.args.onChange(areaColorAt(this.args.color, fx, fy));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Pointer handling is `dragsSurface` from the design-tools port — one
|
|
136
|
+
* drag primitive for the kit, not a second one here. It gives pointer
|
|
137
|
+
* capture (so a drag survives leaving the plane), touch, and the
|
|
138
|
+
* press-origin element, all of which a hand-rolled area picker gets
|
|
139
|
+
* wrong. */
|
|
140
|
+
handleDrag = (frame: SurfaceFrame) => {
|
|
141
|
+
if (this.args.disabled) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
this.emit(frame.nx, frame.ny);
|
|
145
|
+
if (frame.phase === 'end') {
|
|
146
|
+
this.args.onCommit?.();
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
handleX = (event: Event) => {
|
|
151
|
+
let input = event.target as HTMLInputElement;
|
|
152
|
+
let span = this.xChannel.max - this.xChannel.min;
|
|
153
|
+
let fx = span === 0 ? 0 : (Number(input.value) - this.xChannel.min) / span;
|
|
154
|
+
this.emit(fx, this.position.y);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
handleY = (event: Event) => {
|
|
158
|
+
let input = event.target as HTMLInputElement;
|
|
159
|
+
let span = this.yChannel.max - this.yChannel.min;
|
|
160
|
+
let fy =
|
|
161
|
+
span === 0 ? 0 : 1 - (Number(input.value) - this.yChannel.min) / span;
|
|
162
|
+
this.emit(this.position.x, fy);
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Both inputs get the SAME handler, so whichever axis has focus can drive
|
|
167
|
+
* either one. Without this, tabbing to the vertical axis and pressing
|
|
168
|
+
* ArrowLeft would do nothing — a keyboard user would have to know which
|
|
169
|
+
* invisible input they were on, which is exactly the kind of thing that
|
|
170
|
+
* makes a "keyboard accessible" widget unusable in practice.
|
|
171
|
+
*/
|
|
172
|
+
handleKey = (rawEvent: Event) => {
|
|
173
|
+
let event = rawEvent as KeyboardEvent;
|
|
174
|
+
let key = event.key;
|
|
175
|
+
let horizontal = key === 'ArrowLeft' || key === 'ArrowRight';
|
|
176
|
+
let vertical = key === 'ArrowUp' || key === 'ArrowDown';
|
|
177
|
+
let corner = key === 'Home' || key === 'End';
|
|
178
|
+
if (!horizontal && !vertical && !corner) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
event.preventDefault();
|
|
182
|
+
let point = this.position;
|
|
183
|
+
|
|
184
|
+
if (corner) {
|
|
185
|
+
// Home/End move along the axis the focused input owns, which is what
|
|
186
|
+
// a screen-reader user is told they are on. Neither source implements
|
|
187
|
+
// Home/End on the area at all.
|
|
188
|
+
let isY = (event.target as HTMLElement).classList.contains(
|
|
189
|
+
'pretui-area-axis-y',
|
|
190
|
+
);
|
|
191
|
+
if (isY) {
|
|
192
|
+
this.emit(point.x, key === 'Home' ? 1 : 0);
|
|
193
|
+
} else {
|
|
194
|
+
this.emit(key === 'Home' ? 0 : 1, point.y);
|
|
195
|
+
}
|
|
196
|
+
this.args.onCommit?.();
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
let channel = horizontal ? this.xChannel : this.yChannel;
|
|
201
|
+
let span = channel.max - channel.min;
|
|
202
|
+
let step = stepFor(channel, {
|
|
203
|
+
shiftKey: event.shiftKey,
|
|
204
|
+
altKey: event.altKey,
|
|
205
|
+
});
|
|
206
|
+
let fraction = span === 0 ? 0 : step / span;
|
|
207
|
+
let direction = key === 'ArrowRight' || key === 'ArrowUp' ? 1 : -1;
|
|
208
|
+
|
|
209
|
+
if (horizontal) {
|
|
210
|
+
this.emit(clamp(point.x + fraction * direction, 0, 1), point.y);
|
|
211
|
+
} else {
|
|
212
|
+
// y is inverted: screen-down is channel-down.
|
|
213
|
+
this.emit(point.x, clamp(point.y - fraction * direction, 0, 1));
|
|
214
|
+
}
|
|
215
|
+
this.args.onCommit?.();
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
<template>
|
|
219
|
+
<div
|
|
220
|
+
class='pretui-area'
|
|
221
|
+
role='group'
|
|
222
|
+
aria-label={{this.groupLabel}}
|
|
223
|
+
style={{this.thumbStyle}}
|
|
224
|
+
data-disabled={{if @disabled 'true'}}
|
|
225
|
+
data-test-pretui-color-area
|
|
226
|
+
{{dragsSurface this.handleDrag @disabled}}
|
|
227
|
+
...attributes
|
|
228
|
+
>
|
|
229
|
+
<canvas
|
|
230
|
+
class='pretui-area-canvas'
|
|
231
|
+
aria-hidden='true'
|
|
232
|
+
{{paintsArea @color @gamut this.resolution}}
|
|
233
|
+
></canvas>
|
|
234
|
+
<span class='pretui-area-thumb' aria-hidden='true'></span>
|
|
235
|
+
<input
|
|
236
|
+
type='range'
|
|
237
|
+
class='pretui-area-axis pretui-area-axis-x'
|
|
238
|
+
aria-label={{this.xChannel.label}}
|
|
239
|
+
aria-valuetext={{this.xValueText}}
|
|
240
|
+
min={{this.xChannel.min}}
|
|
241
|
+
max={{this.xChannel.max}}
|
|
242
|
+
step={{this.xChannel.step}}
|
|
243
|
+
value={{this.xValue}}
|
|
244
|
+
disabled={{@disabled}}
|
|
245
|
+
{{on 'input' this.handleX}}
|
|
246
|
+
{{on 'keydown' this.handleKey}}
|
|
247
|
+
/>
|
|
248
|
+
<input
|
|
249
|
+
type='range'
|
|
250
|
+
class='pretui-area-axis pretui-area-axis-y'
|
|
251
|
+
aria-label={{this.yChannel.label}}
|
|
252
|
+
aria-valuetext={{this.yValueText}}
|
|
253
|
+
min={{this.yChannel.min}}
|
|
254
|
+
max={{this.yChannel.max}}
|
|
255
|
+
step={{this.yChannel.step}}
|
|
256
|
+
value={{this.yValue}}
|
|
257
|
+
disabled={{@disabled}}
|
|
258
|
+
{{on 'input' this.handleY}}
|
|
259
|
+
{{on 'keydown' this.handleKey}}
|
|
260
|
+
/>
|
|
261
|
+
</div>
|
|
262
|
+
<style scoped>
|
|
263
|
+
@layer PretComponent {
|
|
264
|
+
.pretui-area {
|
|
265
|
+
position: relative;
|
|
266
|
+
display: block;
|
|
267
|
+
width: 100%;
|
|
268
|
+
aspect-ratio: var(--pretui-area-ratio, 4 / 3);
|
|
269
|
+
border-radius: calc(var(--radius) / 1.6);
|
|
270
|
+
overflow: hidden;
|
|
271
|
+
box-shadow: inset 0 0 0 1px
|
|
272
|
+
color-mix(in oklch, var(--foreground) 16%, transparent);
|
|
273
|
+
touch-action: none;
|
|
274
|
+
cursor: crosshair;
|
|
275
|
+
/* the faded out-of-gamut pixels are drawn OVER this, so the plate
|
|
276
|
+
colour is what "unreachable" reads against */
|
|
277
|
+
background: var(--card);
|
|
278
|
+
}
|
|
279
|
+
.pretui-area[data-disabled='true'] {
|
|
280
|
+
cursor: not-allowed;
|
|
281
|
+
opacity: 0.55;
|
|
282
|
+
}
|
|
283
|
+
.pretui-area-canvas {
|
|
284
|
+
display: block;
|
|
285
|
+
width: 100%;
|
|
286
|
+
height: 100%;
|
|
287
|
+
/* the canvas is painted at 96²–128² and scaled up; smooth is
|
|
288
|
+
correct here — the plane genuinely is continuous */
|
|
289
|
+
image-rendering: auto;
|
|
290
|
+
}
|
|
291
|
+
.pretui-area-thumb {
|
|
292
|
+
position: absolute;
|
|
293
|
+
left: var(--pretui-area-x, 50%);
|
|
294
|
+
top: var(--pretui-area-y, 50%);
|
|
295
|
+
width: var(--pretui-area-thumb-size, 16px);
|
|
296
|
+
height: var(--pretui-area-thumb-size, 16px);
|
|
297
|
+
margin-left: calc(var(--pretui-area-thumb-size, 16px) / -2);
|
|
298
|
+
margin-top: calc(var(--pretui-area-thumb-size, 16px) / -2);
|
|
299
|
+
border-radius: 50%;
|
|
300
|
+
background: var(--pretui-area-thumb-color, transparent);
|
|
301
|
+
box-shadow:
|
|
302
|
+
0 0 0 2px var(--pretui-area-thumb-ink, var(--boxel-light)),
|
|
303
|
+
0 0 0 3.5px rgb(0 0 0 / 0.35);
|
|
304
|
+
pointer-events: none;
|
|
305
|
+
/* `raised` is the tier for layering INSIDE one component's own box:
|
|
306
|
+
the thumb over its canvas. It must never compete with anything
|
|
307
|
+
outside the picker. */
|
|
308
|
+
z-index: var(--pretui-z-raised, 1);
|
|
309
|
+
}
|
|
310
|
+
/* focus lands on an invisible input; the ring belongs on the thumb.
|
|
311
|
+
The thumb is absolutely positioned, so the doubled transparent
|
|
312
|
+
outline cannot move anything; it exists only for forced-colors
|
|
313
|
+
mode, which paints no box-shadow and would otherwise leave the
|
|
314
|
+
plane with no focus indicator at all. */
|
|
315
|
+
.pretui-area:has(.pretui-area-axis:focus-visible) .pretui-area-thumb {
|
|
316
|
+
outline: 2px solid transparent;
|
|
317
|
+
outline-offset: 2px;
|
|
318
|
+
box-shadow:
|
|
319
|
+
0 0 0 2px var(--pretui-area-thumb-ink, var(--boxel-light)),
|
|
320
|
+
0 0 0 4px var(--ring);
|
|
321
|
+
}
|
|
322
|
+
.pretui-area-axis {
|
|
323
|
+
position: absolute;
|
|
324
|
+
inset: 0;
|
|
325
|
+
width: 100%;
|
|
326
|
+
height: 100%;
|
|
327
|
+
margin: 0;
|
|
328
|
+
opacity: 0;
|
|
329
|
+
appearance: none;
|
|
330
|
+
-webkit-appearance: none;
|
|
331
|
+
background: transparent;
|
|
332
|
+
/* the drag is owned by the surface modifier; the inputs exist for
|
|
333
|
+
the keyboard and the accessibility tree only */
|
|
334
|
+
pointer-events: none;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
</style>
|
|
338
|
+
</template>
|
|
339
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
The two-channel picking plane of a colour tool: a gradient surface where one axis is one channel and the other is another, with a thumb you can move by pointer or by keyboard.
|
|
4
|
+
|
|
5
|
+
It is a building block of **ColorPicker**. Reach for it when composing a colour tool.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@color (required) — the current colour
|
|
11
|
+
@gamut (required) — the gamut the plane is painted and clamped against
|
|
12
|
+
@resolution? — paint resolution. 96 is ~10ms; 128 is ~36ms and visibly crisper
|
|
13
|
+
on a large picker
|
|
14
|
+
@disabled?
|
|
15
|
+
@onChange (required) — fires as the colour moves
|
|
16
|
+
@onCommit? — fires once when a gesture ends
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**`@resolution` is a real performance knob with a documented cost.** The plane is painted per render, and the two numbers in the contract are measurements rather than guesses — a large picker earns the crisper paint, a small one does not.
|
|
20
|
+
|
|
21
|
+
**The gamut is an argument, not an assumption.** The plane is painted for the gamut it is told about, so a colour outside it is visibly outside rather than silently clamped into the surface.
|
|
22
|
+
|
|
23
|
+
**`@onChange` and `@onCommit` split continuous movement from gesture end**, the same way **ChannelSlider** does.
|
|
24
|
+
|
|
25
|
+
## Prior art
|
|
26
|
+
|
|
27
|
+
**hdr-color-input's area picker.**
|
|
28
|
+
|
|
29
|
+
Where Pretui is better: the accessibility model below, and the gamut being explicit rather than implicit.
|
|
30
|
+
|
|
31
|
+
Where it is thinner: no zoom into a region of the plane, no alternate channel pairings beyond what the picker's space provides, and no touch-specific magnifier — a fingertip covers the thumb it is moving.
|
|
32
|
+
|
|
33
|
+
## Accessibility
|
|
34
|
+
|
|
35
|
+
**A 2D control cannot be one slider, and this is the component where that matters most.** A single `role='slider'` has one value; a plane has two, and announcing a colour as one number is meaningless.
|
|
36
|
+
|
|
37
|
+
- **The plane is a `role='group'`** containing **two named sliders**, one per axis, each with its own label and its own value text. That is the only arrangement that lets a keyboard user move in both dimensions and be told where they are in each.
|
|
38
|
+
- **Each axis announces a sentence**, not a coordinate.
|
|
39
|
+
- **The painted surface itself is `aria-hidden`**, as is the thumb — they are the visual expression of two values that are already announced.
|
|
40
|
+
- **Keyboard movement is per axis**, which is what the two-slider model buys: arrows move one channel at a time, deliberately, rather than dragging a point around a plane.
|
|
41
|
+
- **A picking plane is the hardest part of any color tool to use without sight**, and this arrangement does not make it easy — it makes it _possible_, which no single-slider or canvas-only implementation does.
|
|
42
|
+
|
|
43
|
+
## Theming
|
|
44
|
+
|
|
45
|
+
`--pretui-area-x` and `--pretui-area-y` (the thumb's position), `--pretui-area-thumb-size`, `--pretui-area-thumb-color` and `--pretui-area-thumb-ink`, `--pretui-area-ratio` (the plane's shape).
|
|
46
|
+
|
|
47
|
+
Splitting the thumb's fill from its ink is what keeps it visible over the whole plane: the thumb sits on every color the surface can show, so a theme sets a ring and a contrasting core rather than one color that will disappear somewhere on the gradient.
|
|
48
|
+
|
|
49
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Pretui — ColorArea usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { parseColor } from '../color-engine';
|
|
5
|
+
import type { ColorValue, GamutId } from '../color-engine';
|
|
6
|
+
import { ColorArea } from './color-area';
|
|
7
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
8
|
+
import { GAMUT_NAMES } from '../internal/color-fixtures';
|
|
9
|
+
|
|
10
|
+
// ── ColorArea ────────────────────────────────────────────────────────────
|
|
11
|
+
class ColorAreaUsage extends Component {
|
|
12
|
+
@tracked color: ColorValue = parseColor('oklch(0.66 0.19 25)')!;
|
|
13
|
+
@tracked gamut = 'srgb';
|
|
14
|
+
gamuts = GAMUT_NAMES;
|
|
15
|
+
setColor = (next: ColorValue) => (this.color = next);
|
|
16
|
+
setGamut = (v: string) => (this.gamut = v);
|
|
17
|
+
get gamutId(): GamutId {
|
|
18
|
+
return this.gamut as GamutId;
|
|
19
|
+
}
|
|
20
|
+
get usage() {
|
|
21
|
+
return '<ColorArea @color={{this.color}} @gamut="srgb" @onChange={{this.setColor}} />';
|
|
22
|
+
}
|
|
23
|
+
<template>
|
|
24
|
+
<FreestyleUsage
|
|
25
|
+
@name='ColorArea'
|
|
26
|
+
@description="The 2D plane — chroma × lightness here, because the colour is OKLCH. Regions OUTSIDE the selected gamut are painted faded, so the gamut boundary is something you can see and aim at rather than a flat band that lies about what is selectable. Switch the gamut knob to P3 and watch the reachable area grow."
|
|
27
|
+
@source={{this.usage}}
|
|
28
|
+
>
|
|
29
|
+
<:example>
|
|
30
|
+
<ColorArea
|
|
31
|
+
@color={{this.color}}
|
|
32
|
+
@gamut={{this.gamutId}}
|
|
33
|
+
@onChange={{this.setColor}}
|
|
34
|
+
/>
|
|
35
|
+
</:example>
|
|
36
|
+
<:api as |Args|>
|
|
37
|
+
<Args.String
|
|
38
|
+
@name='gamut'
|
|
39
|
+
@defaultValue='srgb'
|
|
40
|
+
@options={{this.gamuts}}
|
|
41
|
+
@description='Which gamut counts as reachable. Unreachable pixels are drawn faded.'
|
|
42
|
+
@value={{this.gamut}}
|
|
43
|
+
@onInput={{this.setGamut}}
|
|
44
|
+
/>
|
|
45
|
+
<Args.Number
|
|
46
|
+
@name='resolution'
|
|
47
|
+
@defaultValue={{96}}
|
|
48
|
+
@description='Paint resolution. 96² is ~10ms; 128² is ~36ms and crisper on a large picker. Painted synchronously inside a modifier — no worker, so no lifetime to leak.'
|
|
49
|
+
@value={{96}}
|
|
50
|
+
/>
|
|
51
|
+
<Args.Action
|
|
52
|
+
@name='onChange'
|
|
53
|
+
@description='Receives a ColorValue on every pointer move and arrow press.'
|
|
54
|
+
/>
|
|
55
|
+
</:api>
|
|
56
|
+
<:description>
|
|
57
|
+
<p>Two real
|
|
58
|
+
<code><input type="range"></code>
|
|
59
|
+
elements sit invisibly over the plane, one per axis, each with its own
|
|
60
|
+
label and spoken value — a single
|
|
61
|
+
<code>aria-valuenow</code>
|
|
62
|
+
cannot express two axes. Either tab stop drives both axes, so a
|
|
63
|
+
keyboard user never has to know which invisible input they are on.
|
|
64
|
+
Home/End move along the focused axis.</p>
|
|
65
|
+
</:description>
|
|
66
|
+
</FreestyleUsage>
|
|
67
|
+
</template>
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export const DEMOS_COLOR_AREA: Record<string, unknown> = {
|
|
71
|
+
ColorArea: ColorAreaUsage,
|
|
72
|
+
};
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// Pretui — ColorField: a colour value as a form field with a picker popover.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { on } from '@ember/modifier';
|
|
5
|
+
import { Popover } from './popover';
|
|
6
|
+
import { FormField } from './form-field';
|
|
7
|
+
import { describeColor, parseColor, toHex } from '../color-engine';
|
|
8
|
+
import type { ColorValue, GamutId, SpaceId } from '../color-engine';
|
|
9
|
+
import { ColorPalette } from './color-palette';
|
|
10
|
+
import { ColorPicker } from './color-picker';
|
|
11
|
+
import type { ColorFormat } from './color-picker';
|
|
12
|
+
import { SwatchChip } from './swatch-chip';
|
|
13
|
+
|
|
14
|
+
// ── ColorField ───────────────────────────────────────────────────────────
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The small surface that OPENS the picker: a labelled form field whose
|
|
18
|
+
* control is a swatch trigger plus a hex text input, with the full picker in
|
|
19
|
+
* a popover.
|
|
20
|
+
*
|
|
21
|
+
* Composed rather than rebuilt: `FormField` (forms-core) owns the label,
|
|
22
|
+
* description, required marking, issue routing and describedby wiring;
|
|
23
|
+
* `Popover` (overlay) owns placement, dismissal, Escape and focus return;
|
|
24
|
+
* `Swatch` is the trigger face. Nothing here re-implements any of that —
|
|
25
|
+
* which is the point of having the foundations.
|
|
26
|
+
*/
|
|
27
|
+
export interface ColorFieldSignature {
|
|
28
|
+
Args: {
|
|
29
|
+
label?: string;
|
|
30
|
+
value?: string;
|
|
31
|
+
defaultValue?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
required?: boolean;
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
/** Path for form issue routing. */
|
|
36
|
+
path?: string;
|
|
37
|
+
space?: SpaceId;
|
|
38
|
+
gamut?: GamutId;
|
|
39
|
+
noAlpha?: boolean;
|
|
40
|
+
format?: ColorFormat;
|
|
41
|
+
/** Quick-pick swatches shown above the picker. */
|
|
42
|
+
presets?: string[];
|
|
43
|
+
onValueChange?: (value: string) => void;
|
|
44
|
+
};
|
|
45
|
+
Element: HTMLDivElement;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export class ColorField extends Component<ColorFieldSignature> {
|
|
49
|
+
@tracked private internal: string | null = null;
|
|
50
|
+
|
|
51
|
+
get value(): string {
|
|
52
|
+
return this.args.value ?? this.internal ?? this.args.defaultValue ?? '';
|
|
53
|
+
}
|
|
54
|
+
get parsed(): ColorValue | null {
|
|
55
|
+
return parseColor(this.value);
|
|
56
|
+
}
|
|
57
|
+
get display(): string {
|
|
58
|
+
let parsed = this.parsed;
|
|
59
|
+
return parsed ? toHex(parsed) : '';
|
|
60
|
+
}
|
|
61
|
+
get triggerLabel(): string {
|
|
62
|
+
let parsed = this.parsed;
|
|
63
|
+
return parsed
|
|
64
|
+
? `Colour: ${describeColor(parsed, this.args.gamut ?? 'srgb')}`
|
|
65
|
+
: 'Choose a colour';
|
|
66
|
+
}
|
|
67
|
+
get swatchColor(): string {
|
|
68
|
+
return this.value || 'transparent';
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
handleChange = (next: string) => {
|
|
72
|
+
if (this.args.value === undefined) {
|
|
73
|
+
this.internal = next;
|
|
74
|
+
}
|
|
75
|
+
this.args.onValueChange?.(next);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
<template>
|
|
79
|
+
<FormField
|
|
80
|
+
@label={{@label}}
|
|
81
|
+
@path={{@path}}
|
|
82
|
+
@description={{@description}}
|
|
83
|
+
@required={{@required}}
|
|
84
|
+
@disabled={{@disabled}}
|
|
85
|
+
data-test-pretui-color-field
|
|
86
|
+
...attributes
|
|
87
|
+
>
|
|
88
|
+
<:control as |control|>
|
|
89
|
+
<div class='pretui-colorfield'>
|
|
90
|
+
<Popover @placement='bottom-start' @label='Colour picker'>
|
|
91
|
+
<:trigger as |open toggle|>
|
|
92
|
+
<button
|
|
93
|
+
type='button'
|
|
94
|
+
class='pretui-colorfield-trigger'
|
|
95
|
+
id={{control.id}}
|
|
96
|
+
aria-expanded={{if open 'true' 'false'}}
|
|
97
|
+
aria-haspopup='dialog'
|
|
98
|
+
aria-label={{this.triggerLabel}}
|
|
99
|
+
disabled={{@disabled}}
|
|
100
|
+
{{on 'click' toggle}}
|
|
101
|
+
>
|
|
102
|
+
<SwatchChip
|
|
103
|
+
@color={{this.swatchColor}}
|
|
104
|
+
@shape='square'
|
|
105
|
+
@size={{18}}
|
|
106
|
+
aria-hidden='true'
|
|
107
|
+
/>
|
|
108
|
+
<span class='pretui-colorfield-value'>{{this.display}}</span>
|
|
109
|
+
</button>
|
|
110
|
+
</:trigger>
|
|
111
|
+
<:default>
|
|
112
|
+
<div class='pretui-colorfield-panel'>
|
|
113
|
+
{{#if @presets}}
|
|
114
|
+
<ColorPalette
|
|
115
|
+
@colors={{@presets}}
|
|
116
|
+
@value={{this.value}}
|
|
117
|
+
@label='Preset colours'
|
|
118
|
+
@onValueChange={{this.handleChange}}
|
|
119
|
+
/>
|
|
120
|
+
{{/if}}
|
|
121
|
+
<ColorPicker
|
|
122
|
+
@value={{this.value}}
|
|
123
|
+
@space={{@space}}
|
|
124
|
+
@gamut={{@gamut}}
|
|
125
|
+
@noAlpha={{@noAlpha}}
|
|
126
|
+
@format={{@format}}
|
|
127
|
+
@onValueChange={{this.handleChange}}
|
|
128
|
+
/>
|
|
129
|
+
</div>
|
|
130
|
+
</:default>
|
|
131
|
+
</Popover>
|
|
132
|
+
</div>
|
|
133
|
+
</:control>
|
|
134
|
+
</FormField>
|
|
135
|
+
<style scoped>
|
|
136
|
+
@layer PretComponent {
|
|
137
|
+
.pretui-colorfield {
|
|
138
|
+
display: flex;
|
|
139
|
+
}
|
|
140
|
+
.pretui-colorfield-trigger {
|
|
141
|
+
display: inline-flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
gap: var(--space-2, 5px);
|
|
144
|
+
height: var(--control-h, 28px);
|
|
145
|
+
padding: 0 var(--space-3, 8px);
|
|
146
|
+
border: 0;
|
|
147
|
+
border-radius: var(--radius);
|
|
148
|
+
background: var(--field, var(--boxel-light));
|
|
149
|
+
box-shadow: 0 0 0 1px var(--input);
|
|
150
|
+
font: inherit;
|
|
151
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
152
|
+
color: var(--foreground);
|
|
153
|
+
cursor: pointer;
|
|
154
|
+
}
|
|
155
|
+
.pretui-colorfield-trigger:disabled {
|
|
156
|
+
cursor: not-allowed;
|
|
157
|
+
opacity: 0.55;
|
|
158
|
+
}
|
|
159
|
+
.pretui-colorfield-trigger:focus-visible {
|
|
160
|
+
outline: 2px solid var(--ring);
|
|
161
|
+
outline-offset: 1px;
|
|
162
|
+
}
|
|
163
|
+
.pretui-colorfield-value {
|
|
164
|
+
font-family: var(--font-mono);
|
|
165
|
+
font-variant-numeric: tabular-nums;
|
|
166
|
+
min-width: 8ch;
|
|
167
|
+
text-align: left;
|
|
168
|
+
}
|
|
169
|
+
.pretui-colorfield-panel {
|
|
170
|
+
display: flex;
|
|
171
|
+
flex-direction: column;
|
|
172
|
+
gap: var(--space-3, 8px);
|
|
173
|
+
padding: var(--space-3, 8px);
|
|
174
|
+
min-width: 264px;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
</style>
|
|
178
|
+
</template>
|
|
179
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A form field whose value is a colour: a trigger showing the current colour, a popover holding a **ColorPicker**, and optional quick-pick swatches.
|
|
4
|
+
|
|
5
|
+
It is the form-facing wrapper. **ColorPicker** is the instrument; this is the field you put in a form.
|
|
6
|
+
|
|
7
|
+
## The contract
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@label?, @description?, @required?, @disabled?
|
|
11
|
+
@value?, @defaultValue?
|
|
12
|
+
@path? — path for form issue routing
|
|
13
|
+
@space?, @gamut?, @noAlpha?, @format? — forwarded to the picker
|
|
14
|
+
@presets? — quick-pick swatches shown above the picker
|
|
15
|
+
@onValueChange?
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**`@path` is what connects the field to a form's issue routing**, so a validation problem on this colour lands on this control rather than in a general error list.
|
|
19
|
+
|
|
20
|
+
**The picker's space, gamut, alpha and format args are forwarded**, so a field can lock the whole product to sRGB hex without the call site reaching past the field into the picker.
|
|
21
|
+
|
|
22
|
+
**`@presets` are a fast path, not a constraint.** They sit above the picker; the full picker remains.
|
|
23
|
+
|
|
24
|
+
## Prior art
|
|
25
|
+
|
|
26
|
+
**hdr-color-input.**
|
|
27
|
+
|
|
28
|
+
Where Pretui is better: the split between field and instrument. A colour picker embedded directly into a form is a large surface competing with the rest of the fields; putting it behind a trigger with a popover makes a colour field the same size as a text field, which is what a form wants.
|
|
29
|
+
|
|
30
|
+
Where it is thinner: no eyedropper on the trigger itself, no recent-colours memory across fields, and no contrast check against a paired colour — the obvious missing feature for a design-system colour field.
|
|
31
|
+
|
|
32
|
+
## Accessibility
|
|
33
|
+
|
|
34
|
+
- **The trigger carries `aria-haspopup='dialog'` and `aria-expanded`**, which is the correct pattern for a control that opens a picker rather than a listbox.
|
|
35
|
+
- **The trigger is named**, so a row of colour fields does not announce as several identical buttons.
|
|
36
|
+
- **The colour preview inside the trigger is `aria-hidden`** — the value is in the name, and a swatch has nothing to announce.
|
|
37
|
+
- **The popover holds ColorPicker**, so everything that component does about gamut reporting and text entry applies here.
|
|
38
|
+
- **`@description` is associated with the field**, giving a place for "hex or any CSS colour" that is not a placeholder.
|
|
39
|
+
- **A colour chosen by swatch is the same value as one typed**, so the two paths never disagree.
|
|
40
|
+
|
|
41
|
+
## Theming
|
|
42
|
+
|
|
43
|
+
`--pretui-swatch-size` and `--pretui-swatch-color` for the trigger and presets, `--pretui-palette-columns` for the preset grid, `--pretui-checker` behind anything with alpha, `--pretui-destructive-ink` for the invalid state, `--pretui-z-raised` for the popover layer.
|
|
44
|
+
|
|
45
|
+
`--pretui-palette-columns` as a token rather than an arg is deliberate: preset grids should have the same rhythm everywhere in a product, and a per-field column count is how a palette ends up looking different on two screens.
|
|
46
|
+
|
|
47
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|