@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,609 @@
|
|
|
1
|
+
// Pretui — FormField: a labelled control that registers with its Form and routes its issues.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { guidFor } from '@ember/object/internals';
|
|
4
|
+
import { Label } from './label';
|
|
5
|
+
import { Tooltip } from './tooltip';
|
|
6
|
+
import { FieldError } from './field-error';
|
|
7
|
+
import { FormContext, isBlocking, normalizeSeverity, sortIssues } from '../internal/forms-core';
|
|
8
|
+
import type { FormFieldHandle, FormIssue, FormMode, FormSeverity } from '../internal/forms-core';
|
|
9
|
+
|
|
10
|
+
// ── FormField ────────────────────────────────────────────────────────────
|
|
11
|
+
// The workhorse: SLDS's `.slds-form-element` with its __label / __icon /
|
|
12
|
+
// __control / __help / __static parts and its _stacked / _horizontal /
|
|
13
|
+
// _readonly modifiers, wearing React Spectrum's description-and-error
|
|
14
|
+
// aria-describedby semantics.
|
|
15
|
+
//
|
|
16
|
+
// It takes a PLAIN VALUE and a PATH. It does not take a FieldDef, does not
|
|
17
|
+
// know what a schema is, and does not own a control: the control arrives as
|
|
18
|
+
// the <:control> named block (Law 7 — anything visual a caller might replace
|
|
19
|
+
// is a slot, not a string), and the field yields it everything it needs to
|
|
20
|
+
// wire itself: id, describedBy, invalid, required, disabled, readonly.
|
|
21
|
+
//
|
|
22
|
+
// Dropped from SLDS on purpose:
|
|
23
|
+
// • `_compound` / `_address` fieldset variants — a compound field is a
|
|
24
|
+
// GROUP of fields, which is FormLayout's job plus a <fieldset>; folding
|
|
25
|
+
// it into the field element is what makes the SLDS component take
|
|
26
|
+
// twenty-six props.
|
|
27
|
+
// • `hasLeftIcon` / `hasRightIcon` / `hasRightIconGroup` — icon affordances
|
|
28
|
+
// inside the control belong to the control (Pretui's InputGroup already
|
|
29
|
+
// does this properly); a field should not be telling its slot where its
|
|
30
|
+
// own icons go.
|
|
31
|
+
// • `slds-hint-parent` — a hover-reveal for the inline-edit pencil. Reveal
|
|
32
|
+
// -on-hover hides an affordance from touch and keyboard users; the
|
|
33
|
+
// <:after> slot renders whatever it is given, always visible.
|
|
34
|
+
// • `column` (`_1-col` / `_2-col`) is kept, but as @span, since the columns
|
|
35
|
+
// themselves are FormLayout's grid rather than a class on the field.
|
|
36
|
+
|
|
37
|
+
/** What a FormSection needs from the fields inside it, so it can count the
|
|
38
|
+
* issues it owns even while collapsed. Supplied automatically by
|
|
39
|
+
* `section.Field` / `section.Layout`. */
|
|
40
|
+
export interface FormSectionRegistry {
|
|
41
|
+
claimField(handle: FormFieldHandle): void;
|
|
42
|
+
releaseField(rootId: string): void;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface FormControlContext {
|
|
46
|
+
/** id for the control — the label's `for` points here. */
|
|
47
|
+
id: string;
|
|
48
|
+
/** id of the label element. */
|
|
49
|
+
labelId: string;
|
|
50
|
+
/** Space-joined description + error ids, or undefined when there is
|
|
51
|
+
* nothing to describe. Put this on the control's aria-describedby. */
|
|
52
|
+
describedBy: string | undefined;
|
|
53
|
+
/** id of the description region, if any. */
|
|
54
|
+
descriptionId: string | undefined;
|
|
55
|
+
/** id of the message region, if any issues are showing. */
|
|
56
|
+
errorId: string | undefined;
|
|
57
|
+
/** True when a blocking issue is showing — set aria-invalid from this. */
|
|
58
|
+
invalid: boolean;
|
|
59
|
+
required: boolean;
|
|
60
|
+
disabled: boolean;
|
|
61
|
+
readonly: boolean;
|
|
62
|
+
/** The field's BXL label path, passed through for convenience. */
|
|
63
|
+
path: string | undefined;
|
|
64
|
+
/** Call from the control's own change handler when a form-level dirty flag
|
|
65
|
+
* is wanted without relying on the form's input/change listener. */
|
|
66
|
+
markDirty: () => void;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface FormFieldSignature {
|
|
70
|
+
Args: {
|
|
71
|
+
/** Visible label. Rendered through Pretui's Label (the mono eyebrow
|
|
72
|
+
* voice), as a <label for> normally and a <span> in static display. */
|
|
73
|
+
label?: string;
|
|
74
|
+
/** BXL label path this field stands for. Issues whose targetPath equals
|
|
75
|
+
* this string — whole-string, never parsed — are picked up. */
|
|
76
|
+
path?: string;
|
|
77
|
+
/** The plain value — a string, a number, a boolean, or nothing. NOT a
|
|
78
|
+
* FieldDef: a form field here is a value and a path, which is the whole
|
|
79
|
+
* point of building this in a component library first. Used only for
|
|
80
|
+
* the static display; an editable field gets its value from whatever
|
|
81
|
+
* control the caller puts in <:control>. Anything richer than a scalar
|
|
82
|
+
* belongs in the <:static> block. */
|
|
83
|
+
value?: string | number | boolean | null;
|
|
84
|
+
/** Persistent helper prose under the control. Joined into describedBy
|
|
85
|
+
* ahead of any error, matching React Spectrum's order. */
|
|
86
|
+
description?: string;
|
|
87
|
+
/** Field-level help. Reveals on hover/focus of the help button and is
|
|
88
|
+
* wired to it with a unique id (SLDS hardcodes id="help"). */
|
|
89
|
+
help?: string;
|
|
90
|
+
/** Marks required: an aria-hidden asterisk plus a visually-hidden
|
|
91
|
+
* "(required)" inside the label, and required:true in the control
|
|
92
|
+
* context. */
|
|
93
|
+
required?: boolean;
|
|
94
|
+
/** Suppress the asterisk only; the accessible marking stays. */
|
|
95
|
+
hideRequiredIndicator?: boolean;
|
|
96
|
+
/** Disabled: the control cannot be used and the field dims. */
|
|
97
|
+
disabled?: boolean;
|
|
98
|
+
/** Read-only, SLDS `_readonly`: the value is still selectable and the
|
|
99
|
+
* control still focusable, but the field's chrome flattens. A DIFFERENT
|
|
100
|
+
* render from @disabled on purpose — "you may not change this" and "this
|
|
101
|
+
* is not available right now" are different sentences. */
|
|
102
|
+
readonly?: boolean;
|
|
103
|
+
/** Static display, SLDS `__static`: no control at all, the value as text
|
|
104
|
+
* under a faux <span> label. The resting state of a record page. */
|
|
105
|
+
static?: boolean;
|
|
106
|
+
/** Force the invalid dress without an issue (e.g. a control that failed
|
|
107
|
+
* its own native constraint). */
|
|
108
|
+
invalid?: boolean;
|
|
109
|
+
/** Issues for this field, when used WITHOUT a Form. Overrides the
|
|
110
|
+
* form-routed set. */
|
|
111
|
+
issues?: FormIssue[];
|
|
112
|
+
/** 'stacked' (label above) or 'horizontal' (label beside). FormLayout
|
|
113
|
+
* curries this in; it collapses to stacked in a narrow container. */
|
|
114
|
+
layout?: 'stacked' | 'horizontal';
|
|
115
|
+
/** Grid columns to span inside a FormLayout — SLDS's `_2-col`. */
|
|
116
|
+
span?: number;
|
|
117
|
+
/** Supply your own control id instead of the generated one. */
|
|
118
|
+
controlId?: string;
|
|
119
|
+
/** Keep the label in the accessible tree but out of the picture. */
|
|
120
|
+
labelHidden?: boolean;
|
|
121
|
+
/** Reserve the message row's height so a row of side-by-side fields does
|
|
122
|
+
* not jump when an error appears. Default true. */
|
|
123
|
+
reserveMessageSpace?: boolean;
|
|
124
|
+
/** Render warning/info issues as well as errors. Default true. */
|
|
125
|
+
showAdvisory?: boolean;
|
|
126
|
+
/** Print each issue's ruleId as a Token — provenance for rule authors. */
|
|
127
|
+
showRuleId?: boolean;
|
|
128
|
+
/** Override the live-region policy (default: announce in record mode
|
|
129
|
+
* only — see FieldError's note). */
|
|
130
|
+
announceErrors?: boolean;
|
|
131
|
+
/** Placeholder for a static display with no value. Default '—'. */
|
|
132
|
+
emptyText?: string;
|
|
133
|
+
/** The owning form's context. Supplied automatically by `form.Field`. */
|
|
134
|
+
form?: FormContext;
|
|
135
|
+
/** The enclosing FormSection, if any. Supplied automatically by
|
|
136
|
+
* `section.Field` / `grid.Field` inside a section. */
|
|
137
|
+
section?: FormSectionRegistry;
|
|
138
|
+
};
|
|
139
|
+
Blocks: {
|
|
140
|
+
/** The control. Receives everything needed to wire itself. */
|
|
141
|
+
control: [FormControlContext];
|
|
142
|
+
/** Static display body — richer than a bare value (a link, an Avatar,
|
|
143
|
+
* a Chip). Falls back to @value. */
|
|
144
|
+
static: [];
|
|
145
|
+
/** Rich description, instead of the @description string. */
|
|
146
|
+
description: [];
|
|
147
|
+
/** Rendered beside the control: SLDS's `__undo` revert button, an inline
|
|
148
|
+
* edit pencil, a unit suffix. */
|
|
149
|
+
after: [];
|
|
150
|
+
};
|
|
151
|
+
Element: HTMLDivElement;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function either(a: unknown, b: unknown): boolean {
|
|
155
|
+
return Boolean(a) || Boolean(b);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export class FormField
|
|
159
|
+
extends Component<FormFieldSignature>
|
|
160
|
+
implements FormFieldHandle
|
|
161
|
+
{
|
|
162
|
+
private guid = guidFor(this);
|
|
163
|
+
|
|
164
|
+
get rootId(): string {
|
|
165
|
+
return `${this.guid}-fld`;
|
|
166
|
+
}
|
|
167
|
+
get controlId(): string {
|
|
168
|
+
return this.args.controlId ?? `${this.guid}-ctl`;
|
|
169
|
+
}
|
|
170
|
+
get labelId(): string {
|
|
171
|
+
return `${this.guid}-lbl`;
|
|
172
|
+
}
|
|
173
|
+
get descriptionId(): string {
|
|
174
|
+
return `${this.guid}-dsc`;
|
|
175
|
+
}
|
|
176
|
+
get messageId(): string {
|
|
177
|
+
return `${this.guid}-msg`;
|
|
178
|
+
}
|
|
179
|
+
get helpId(): string {
|
|
180
|
+
return `${this.guid}-help`;
|
|
181
|
+
}
|
|
182
|
+
get path(): string {
|
|
183
|
+
return this.args.path ?? '';
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
constructor(owner: unknown, args: FormFieldSignature['Args']) {
|
|
187
|
+
super(owner as never, args);
|
|
188
|
+
this.args.form?.registerField(this);
|
|
189
|
+
this.args.section?.claimField(this);
|
|
190
|
+
}
|
|
191
|
+
willDestroy(): void {
|
|
192
|
+
super.willDestroy();
|
|
193
|
+
this.args.form?.unregisterField(this.rootId);
|
|
194
|
+
this.args.section?.releaseField(this.rootId);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
get mode(): FormMode {
|
|
198
|
+
return this.args.form?.mode ?? 'submit';
|
|
199
|
+
}
|
|
200
|
+
get layout(): 'stacked' | 'horizontal' {
|
|
201
|
+
return this.args.layout ?? 'stacked';
|
|
202
|
+
}
|
|
203
|
+
get disabled(): boolean {
|
|
204
|
+
return Boolean(this.args.disabled || this.args.form?.disabled);
|
|
205
|
+
}
|
|
206
|
+
get readonly(): boolean {
|
|
207
|
+
return Boolean(this.args.readonly);
|
|
208
|
+
}
|
|
209
|
+
get emptyText(): string {
|
|
210
|
+
return this.args.emptyText ?? '—';
|
|
211
|
+
}
|
|
212
|
+
get displayValue(): string | number | boolean {
|
|
213
|
+
let value = this.args.value;
|
|
214
|
+
return value === undefined || value === null || value === ''
|
|
215
|
+
? this.emptyText
|
|
216
|
+
: value;
|
|
217
|
+
}
|
|
218
|
+
get showRequiredMark(): boolean {
|
|
219
|
+
return Boolean(this.args.required) && !this.args.hideRequiredIndicator;
|
|
220
|
+
}
|
|
221
|
+
get helpLabel(): string {
|
|
222
|
+
return this.args.label ? `Help: ${this.args.label}` : 'Help';
|
|
223
|
+
}
|
|
224
|
+
get reserveMessageSpace(): boolean {
|
|
225
|
+
return this.args.reserveMessageSpace ?? true;
|
|
226
|
+
}
|
|
227
|
+
get span(): number | undefined {
|
|
228
|
+
return this.args.span;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/** Issues routed to this field. @issues wins so the component works
|
|
232
|
+
* stand-alone; otherwise the form's list is filtered by WHOLE-STRING
|
|
233
|
+
* equality on targetPath. */
|
|
234
|
+
get issues(): FormIssue[] {
|
|
235
|
+
if (this.args.issues) {
|
|
236
|
+
return sortIssues(this.args.issues);
|
|
237
|
+
}
|
|
238
|
+
return this.args.form?.issuesFor(this.args.path) ?? [];
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/** In `submit` mode a field is not "invalid" before the user has tried to
|
|
242
|
+
* commit — React Spectrum's rule, and the reason a fresh form is not a
|
|
243
|
+
* wall of red. Advisory issues are never withheld: they are advice, not a
|
|
244
|
+
* verdict. */
|
|
245
|
+
get holdErrors(): boolean {
|
|
246
|
+
return (
|
|
247
|
+
this.mode === 'submit' &&
|
|
248
|
+
this.args.form !== undefined &&
|
|
249
|
+
!this.args.form.submitAttempted &&
|
|
250
|
+
this.args.issues === undefined
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
get visibleIssues(): FormIssue[] {
|
|
254
|
+
let visible =
|
|
255
|
+
this.args.showAdvisory === false ? this.issues.filter(isBlocking) : this.issues;
|
|
256
|
+
return this.holdErrors ? visible.filter((issue) => !isBlocking(issue)) : visible;
|
|
257
|
+
}
|
|
258
|
+
get invalid(): boolean {
|
|
259
|
+
return (
|
|
260
|
+
Boolean(this.args.invalid) || this.visibleIssues.some(isBlocking)
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
get topSeverity(): FormSeverity | undefined {
|
|
264
|
+
let first = this.visibleIssues[0];
|
|
265
|
+
return first ? normalizeSeverity(first.severity) : undefined;
|
|
266
|
+
}
|
|
267
|
+
get announce(): boolean {
|
|
268
|
+
return this.args.announceErrors ?? this.mode === 'record';
|
|
269
|
+
}
|
|
270
|
+
get rootRole(): string | undefined {
|
|
271
|
+
// Static display has no control for the label to point at, so the pair
|
|
272
|
+
// is exposed as a labelled group instead of an orphaned span.
|
|
273
|
+
return this.args.static ? 'group' : undefined;
|
|
274
|
+
}
|
|
275
|
+
get rootLabelledBy(): string | undefined {
|
|
276
|
+
return this.args.static && this.args.label ? this.labelId : undefined;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/** Built in the template so it can see (has-block 'description'). */
|
|
280
|
+
describedByFor = (hasDescriptionBlock: boolean): string | undefined => {
|
|
281
|
+
let ids: string[] = [];
|
|
282
|
+
if (hasDescriptionBlock || this.args.description) {
|
|
283
|
+
ids.push(this.descriptionId);
|
|
284
|
+
}
|
|
285
|
+
if (this.visibleIssues.length > 0) {
|
|
286
|
+
ids.push(this.messageId);
|
|
287
|
+
}
|
|
288
|
+
return ids.length > 0 ? ids.join(' ') : undefined;
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
controlContextFor = (hasDescriptionBlock: boolean): FormControlContext => ({
|
|
292
|
+
id: this.controlId,
|
|
293
|
+
labelId: this.labelId,
|
|
294
|
+
describedBy: this.describedByFor(hasDescriptionBlock),
|
|
295
|
+
descriptionId:
|
|
296
|
+
hasDescriptionBlock || this.args.description ? this.descriptionId : undefined,
|
|
297
|
+
errorId: this.visibleIssues.length > 0 ? this.messageId : undefined,
|
|
298
|
+
invalid: this.invalid,
|
|
299
|
+
required: Boolean(this.args.required),
|
|
300
|
+
disabled: this.disabled,
|
|
301
|
+
readonly: this.readonly,
|
|
302
|
+
path: this.args.path,
|
|
303
|
+
markDirty: this.markDirty,
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
markDirty = (): void => {
|
|
307
|
+
this.args.form?.markDirty();
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
<template>
|
|
311
|
+
{{#let (has-block 'description') as |hasDescriptionBlock|}}
|
|
312
|
+
<div
|
|
313
|
+
class='pretui-formfield'
|
|
314
|
+
id={{this.rootId}}
|
|
315
|
+
role={{this.rootRole}}
|
|
316
|
+
aria-labelledby={{this.rootLabelledBy}}
|
|
317
|
+
tabindex='-1'
|
|
318
|
+
data-layout={{this.layout}}
|
|
319
|
+
data-mode={{this.mode}}
|
|
320
|
+
data-invalid={{if this.invalid 'true'}}
|
|
321
|
+
data-severity={{this.topSeverity}}
|
|
322
|
+
data-required={{if @required 'true'}}
|
|
323
|
+
data-disabled={{if this.disabled 'true'}}
|
|
324
|
+
data-readonly={{if this.readonly 'true'}}
|
|
325
|
+
data-static={{if @static 'true'}}
|
|
326
|
+
data-span={{this.span}}
|
|
327
|
+
data-test-pretui-form-field
|
|
328
|
+
...attributes
|
|
329
|
+
>
|
|
330
|
+
<div class='pretui-formfield-labelrow'>
|
|
331
|
+
{{#if @label}}
|
|
332
|
+
<span
|
|
333
|
+
class='pretui-formfield-labelbox'
|
|
334
|
+
data-hidden={{if @labelHidden 'true'}}
|
|
335
|
+
>
|
|
336
|
+
{{#if @static}}
|
|
337
|
+
<Label @tag='span' id={{this.labelId}}>
|
|
338
|
+
{{#if this.showRequiredMark}}<abbr
|
|
339
|
+
class='pretui-formfield-req'
|
|
340
|
+
aria-hidden='true'
|
|
341
|
+
>*</abbr>{{/if}}{{@label}}{{#if
|
|
342
|
+
@required
|
|
343
|
+
}}<span class='pretui-formfield-sr'>(required)</span>{{/if}}
|
|
344
|
+
</Label>
|
|
345
|
+
{{else}}
|
|
346
|
+
<Label @for={{this.controlId}} id={{this.labelId}}>
|
|
347
|
+
{{#if this.showRequiredMark}}<abbr
|
|
348
|
+
class='pretui-formfield-req'
|
|
349
|
+
aria-hidden='true'
|
|
350
|
+
>*</abbr>{{/if}}{{@label}}{{#if
|
|
351
|
+
@required
|
|
352
|
+
}}<span class='pretui-formfield-sr'>(required)</span>{{/if}}
|
|
353
|
+
</Label>
|
|
354
|
+
{{/if}}
|
|
355
|
+
</span>
|
|
356
|
+
{{/if}}
|
|
357
|
+
{{#if @help}}
|
|
358
|
+
<span class='pretui-formfield-helpwrap'>
|
|
359
|
+
<Tooltip @content={{@help}} @side='top'>
|
|
360
|
+
<button
|
|
361
|
+
type='button'
|
|
362
|
+
class='pretui-formfield-helpbtn'
|
|
363
|
+
aria-label={{this.helpLabel}}
|
|
364
|
+
aria-describedby={{this.helpId}}
|
|
365
|
+
>?</button>
|
|
366
|
+
</Tooltip>
|
|
367
|
+
{{! The bubble Tooltip renders cannot be referenced (it exposes
|
|
368
|
+
no id), so the described text is mirrored here where
|
|
369
|
+
aria-describedby can actually resolve it. Named rather than
|
|
370
|
+
hidden: Tooltip wants an @id arg, filed for the next wave. }}
|
|
371
|
+
<span id={{this.helpId}} class='pretui-formfield-sr'>{{@help}}</span>
|
|
372
|
+
</span>
|
|
373
|
+
{{/if}}
|
|
374
|
+
</div>
|
|
375
|
+
|
|
376
|
+
<div class='pretui-formfield-main'>
|
|
377
|
+
<div class='pretui-formfield-controlrow'>
|
|
378
|
+
{{#if @static}}
|
|
379
|
+
<div class='pretui-formfield-static' data-pretui-form-control>
|
|
380
|
+
{{#if (has-block 'static')}}
|
|
381
|
+
{{yield to='static'}}
|
|
382
|
+
{{else}}
|
|
383
|
+
{{this.displayValue}}
|
|
384
|
+
{{/if}}
|
|
385
|
+
</div>
|
|
386
|
+
{{else}}
|
|
387
|
+
<div class='pretui-formfield-control' data-pretui-form-control>
|
|
388
|
+
{{yield (this.controlContextFor hasDescriptionBlock) to='control'}}
|
|
389
|
+
</div>
|
|
390
|
+
{{/if}}
|
|
391
|
+
{{#if (has-block 'after')}}
|
|
392
|
+
<div class='pretui-formfield-after'>{{yield to='after'}}</div>
|
|
393
|
+
{{/if}}
|
|
394
|
+
</div>
|
|
395
|
+
|
|
396
|
+
{{#if (either hasDescriptionBlock @description)}}
|
|
397
|
+
<div class='pretui-formfield-description' id={{this.descriptionId}}>
|
|
398
|
+
{{#if hasDescriptionBlock}}
|
|
399
|
+
{{yield to='description'}}
|
|
400
|
+
{{else}}
|
|
401
|
+
{{@description}}
|
|
402
|
+
{{/if}}
|
|
403
|
+
</div>
|
|
404
|
+
{{/if}}
|
|
405
|
+
|
|
406
|
+
<div
|
|
407
|
+
class='pretui-formfield-msgs'
|
|
408
|
+
id={{this.messageId}}
|
|
409
|
+
data-reserve={{if this.reserveMessageSpace 'true'}}
|
|
410
|
+
>
|
|
411
|
+
{{#each this.visibleIssues key='@index' as |issue|}}
|
|
412
|
+
<FieldError
|
|
413
|
+
@issue={{issue}}
|
|
414
|
+
@announce={{this.announce}}
|
|
415
|
+
@showRuleId={{@showRuleId}}
|
|
416
|
+
/>
|
|
417
|
+
{{/each}}
|
|
418
|
+
</div>
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
421
|
+
{{/let}}
|
|
422
|
+
<style scoped>
|
|
423
|
+
@layer PretComponent {
|
|
424
|
+
.pretui-formfield {
|
|
425
|
+
display: grid;
|
|
426
|
+
gap: var(--pretui-field-row-gap, 4px);
|
|
427
|
+
align-content: start;
|
|
428
|
+
min-width: 0;
|
|
429
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
430
|
+
letter-spacing: var(--track-ui, 0.01em);
|
|
431
|
+
color: var(--foreground);
|
|
432
|
+
}
|
|
433
|
+
/* The root is a focus fallback for routing, never a tab stop, and must
|
|
434
|
+
not draw a focus ring of its own when it takes programmatic focus —
|
|
435
|
+
it draws the field's ring instead (see :focus-visible below). */
|
|
436
|
+
.pretui-formfield:focus {
|
|
437
|
+
outline: none;
|
|
438
|
+
}
|
|
439
|
+
.pretui-formfield:focus-visible {
|
|
440
|
+
outline: 2px solid var(--ring);
|
|
441
|
+
outline-offset: 3px;
|
|
442
|
+
border-radius: var(--radius);
|
|
443
|
+
}
|
|
444
|
+
/* SLDS `_horizontal`: label beside control on one hairline grid. */
|
|
445
|
+
.pretui-formfield[data-layout='horizontal'] {
|
|
446
|
+
grid-template-columns: var(--pretui-field-label-width, 9rem) minmax(0, 1fr);
|
|
447
|
+
column-gap: var(--pretui-field-column-gap, var(--space-4, 11px));
|
|
448
|
+
align-items: start;
|
|
449
|
+
}
|
|
450
|
+
.pretui-formfield[data-layout='horizontal'] .pretui-formfield-labelrow {
|
|
451
|
+
min-height: var(--control-h, 28px);
|
|
452
|
+
align-items: center;
|
|
453
|
+
}
|
|
454
|
+
/* Unnamed container query only — the named form silently deletes every
|
|
455
|
+
following rule in the file. Resolves against the nearest ANCESTOR
|
|
456
|
+
container, which is FormLayout's outer element; with no FormLayout
|
|
457
|
+
above it there is no container and the query simply never matches,
|
|
458
|
+
so a stand-alone horizontal field stays horizontal. */
|
|
459
|
+
@container (max-width: 34rem) {
|
|
460
|
+
.pretui-formfield[data-layout='horizontal'] {
|
|
461
|
+
grid-template-columns: minmax(0, 1fr);
|
|
462
|
+
}
|
|
463
|
+
.pretui-formfield[data-layout='horizontal'] .pretui-formfield-labelrow {
|
|
464
|
+
min-height: 0;
|
|
465
|
+
align-items: flex-start;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
/* SLDS's `_2-col` — declared here rather than by FormLayout because
|
|
469
|
+
scoped CSS cannot reach a child component's root element. */
|
|
470
|
+
.pretui-formfield[data-span='2'] {
|
|
471
|
+
grid-column: span 2;
|
|
472
|
+
}
|
|
473
|
+
.pretui-formfield[data-span='3'] {
|
|
474
|
+
grid-column: span 3;
|
|
475
|
+
}
|
|
476
|
+
.pretui-formfield-labelrow {
|
|
477
|
+
display: flex;
|
|
478
|
+
align-items: flex-start;
|
|
479
|
+
gap: 4px;
|
|
480
|
+
min-width: 0;
|
|
481
|
+
}
|
|
482
|
+
.pretui-formfield-labelbox {
|
|
483
|
+
min-width: 0;
|
|
484
|
+
}
|
|
485
|
+
.pretui-formfield-labelbox[data-hidden='true'] {
|
|
486
|
+
position: absolute;
|
|
487
|
+
width: 1px;
|
|
488
|
+
height: 1px;
|
|
489
|
+
margin: -1px;
|
|
490
|
+
padding: 0;
|
|
491
|
+
overflow: hidden;
|
|
492
|
+
clip-path: inset(50%);
|
|
493
|
+
white-space: nowrap;
|
|
494
|
+
}
|
|
495
|
+
.pretui-formfield-sr {
|
|
496
|
+
position: absolute;
|
|
497
|
+
width: 1px;
|
|
498
|
+
height: 1px;
|
|
499
|
+
margin: -1px;
|
|
500
|
+
padding: 0;
|
|
501
|
+
overflow: hidden;
|
|
502
|
+
clip-path: inset(50%);
|
|
503
|
+
white-space: nowrap;
|
|
504
|
+
}
|
|
505
|
+
.pretui-formfield-req {
|
|
506
|
+
color: var(--pretui-destructive-ink, var(--boxel-danger));
|
|
507
|
+
text-decoration: none;
|
|
508
|
+
margin-right: 0.25ch;
|
|
509
|
+
}
|
|
510
|
+
.pretui-formfield-helpbtn {
|
|
511
|
+
width: 14px;
|
|
512
|
+
height: 14px;
|
|
513
|
+
padding: 0;
|
|
514
|
+
border: 0;
|
|
515
|
+
border-radius: 50%;
|
|
516
|
+
display: grid;
|
|
517
|
+
place-items: center;
|
|
518
|
+
font-family: var(--font-mono);
|
|
519
|
+
font-size: 9px;
|
|
520
|
+
font-weight: 700;
|
|
521
|
+
line-height: 1;
|
|
522
|
+
cursor: help;
|
|
523
|
+
color: var(--muted-foreground);
|
|
524
|
+
background: var(--inset, var(--boxel-100));
|
|
525
|
+
box-shadow: var(--pretui-shadow-hairline, 0 0 0 1px var(--border));
|
|
526
|
+
}
|
|
527
|
+
.pretui-formfield-helpbtn:hover {
|
|
528
|
+
color: var(--foreground);
|
|
529
|
+
background: var(--hover, var(--boxel-100));
|
|
530
|
+
}
|
|
531
|
+
.pretui-formfield-helpbtn:focus-visible {
|
|
532
|
+
outline: 2px solid var(--ring);
|
|
533
|
+
outline-offset: 2px;
|
|
534
|
+
}
|
|
535
|
+
.pretui-formfield-main {
|
|
536
|
+
display: grid;
|
|
537
|
+
gap: var(--pretui-field-row-gap, 4px);
|
|
538
|
+
align-content: start;
|
|
539
|
+
min-width: 0;
|
|
540
|
+
}
|
|
541
|
+
.pretui-formfield-controlrow {
|
|
542
|
+
display: flex;
|
|
543
|
+
align-items: center;
|
|
544
|
+
gap: var(--space-3, 8px);
|
|
545
|
+
min-width: 0;
|
|
546
|
+
}
|
|
547
|
+
.pretui-formfield-control {
|
|
548
|
+
flex: 1 1 auto;
|
|
549
|
+
min-width: 0;
|
|
550
|
+
}
|
|
551
|
+
.pretui-formfield-after {
|
|
552
|
+
flex: none;
|
|
553
|
+
display: flex;
|
|
554
|
+
align-items: center;
|
|
555
|
+
gap: 4px;
|
|
556
|
+
}
|
|
557
|
+
/* SLDS `__static` — the record page's resting state. */
|
|
558
|
+
.pretui-formfield-static {
|
|
559
|
+
flex: 1 1 auto;
|
|
560
|
+
min-width: 0;
|
|
561
|
+
min-height: var(--control-h, 28px);
|
|
562
|
+
display: flex;
|
|
563
|
+
align-items: center;
|
|
564
|
+
line-height: 18px;
|
|
565
|
+
overflow-wrap: anywhere;
|
|
566
|
+
}
|
|
567
|
+
.pretui-formfield-description {
|
|
568
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
569
|
+
line-height: 16px;
|
|
570
|
+
color: var(--muted-foreground);
|
|
571
|
+
}
|
|
572
|
+
.pretui-formfield-msgs {
|
|
573
|
+
display: grid;
|
|
574
|
+
gap: 2px;
|
|
575
|
+
}
|
|
576
|
+
/* Alignment law: a row of side-by-side fields must not jump when one
|
|
577
|
+
of them grows a message. */
|
|
578
|
+
.pretui-formfield-msgs[data-reserve='true'] {
|
|
579
|
+
min-height: 16px;
|
|
580
|
+
}
|
|
581
|
+
/* The invalid and readonly dresses travel through the INHERITED token
|
|
582
|
+
channel — --field is the control face, --input the control hairline,
|
|
583
|
+
both read by Pretui's Input / Textarea / Select. No selector reaches
|
|
584
|
+
into the caller's control, so any control that speaks the Pretui
|
|
585
|
+
tokens re-dresses itself for free. */
|
|
586
|
+
.pretui-formfield[data-invalid='true'] {
|
|
587
|
+
--input: var(--destructive);
|
|
588
|
+
--field: color-mix(in oklch, var(--destructive) 5%, var(--card));
|
|
589
|
+
}
|
|
590
|
+
.pretui-formfield[data-severity='warning'] {
|
|
591
|
+
--input: var(--warning, var(--boxel-warning));
|
|
592
|
+
--field: color-mix(in oklch, var(--warning, var(--boxel-warning)) 5%, var(--card));
|
|
593
|
+
}
|
|
594
|
+
/* SLDS `_readonly`: the chrome goes away, the value does not. Distinct
|
|
595
|
+
from disabled — nothing is dimmed and the control keeps focus. */
|
|
596
|
+
.pretui-formfield[data-readonly='true'] {
|
|
597
|
+
--field: transparent;
|
|
598
|
+
--input: transparent;
|
|
599
|
+
}
|
|
600
|
+
.pretui-formfield[data-disabled='true'] {
|
|
601
|
+
opacity: var(--pretui-field-disabled-opacity, 0.5);
|
|
602
|
+
}
|
|
603
|
+
.pretui-formfield[data-static='true'] .pretui-formfield-static {
|
|
604
|
+
color: var(--foreground);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
</style>
|
|
608
|
+
</template>
|
|
609
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
One field in a form: label, control, description, help, required marking, and the issue messages routed to it. This is the workhorse of the forms territory and the component that makes the wiring impossible to forget. Use it for anything inside a **Form**; use **Field** only for a labelled control on a surface with no form and no validation. For a read-only record row, `@static={{true}}` here is the same component rather than a different one.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@label?, @path?, @value?, @description?, @help?
|
|
9
|
+
@required?, @hideRequiredIndicator?, @disabled?, @readonly?, @static?, @invalid?
|
|
10
|
+
@issues?, @layout? ('stacked'|'horizontal'), @span?, @controlId?, @labelHidden?
|
|
11
|
+
@reserveMessageSpace? (true), @showAdvisory? (true), @showRuleId?, @announceErrors?
|
|
12
|
+
@emptyText? ('—'), @form?, @section?
|
|
13
|
+
<:control as |ctx|> <:static> <:description> <:after>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**`@path` is a BXL label path and it is matched as a whole string.** Scalars use the field label, quoted when it contains spaces (`Total`, `"Approver Email"`); rows use a predicate path (`"Line Item"[SKU = "COPY-04"].Quantity`). Routing compares the entire string and **never splits on `.`**, because predicate paths legitimately contain dots, brackets, quotes and spaces. Getting this wrong is the classic enterprise-forms bug and the source says so explicitly.
|
|
17
|
+
|
|
18
|
+
**`<:control>` receives a `FormControlContext` carrying everything the control needs to wire itself**: `id`, `labelId`, `describedBy` (description ids then error ids, space-joined, `undefined` when there is nothing to describe), `descriptionId`, `errorId`, `invalid`, `required`, `disabled`, `readonly`, `path` and `markDirty`. The control cannot be wired wrongly because the field computed the whole chain and handed it over.
|
|
19
|
+
|
|
20
|
+
**`@value` is a plain scalar, not a FieldDef.** A form field here is a value and a path — which is the whole point of building this in a component library first. Anything richer goes in `<:static>`.
|
|
21
|
+
|
|
22
|
+
**`@readonly` and `@disabled` render differently on purpose.** Readonly flattens the chrome (`--field` and `--input` go transparent) while the value stays selectable and the control stays focusable; disabled dims. "You may not change this" and "this is not available right now" are different sentences.
|
|
23
|
+
|
|
24
|
+
The field registers itself with the form from its constructor and unregisters in `willDestroy`, publishing `{ rootId, controlId, path }` so focus routing can find it.
|
|
25
|
+
|
|
26
|
+
## Prior art
|
|
27
|
+
|
|
28
|
+
**React Spectrum / React Aria** supplies the semantics — `useField`'s id generation, the description-then-error `aria-describedby` order, required marking. **SLDS `form-element`** supplies the shape: `_stacked` / `_horizontal` / `_readonly` / `__static` / `__help` / `__icon` / `__undo`, all of which map onto args or blocks here.
|
|
29
|
+
|
|
30
|
+
Three improvements over SLDS, each concrete:
|
|
31
|
+
|
|
32
|
+
1. **SLDS's field-level help tooltip hardcodes `id="help"`** and only renders the bubble while shown — so every field on a page points at the same id, and the reference dangles whenever the tooltip is hidden. Pretui's help ids are guid-unique and the described text is **always in the DOM**.
|
|
33
|
+
2. **SLDS computes an `errorId` but never wires `aria-describedby` itself**, and its own examples routinely omit it. FormField computes the whole chain and _yields_ it, so the wiring cannot be forgotten.
|
|
34
|
+
3. **SLDS's required marker is an `aria-hidden` `abbr`**, so required-ness only reaches assistive tech if the caller remembered `required` on the input. Pretui adds a visually-hidden "(required)" **inside the label**, so the accessible name always carries it — belt and braces, one authoring step.
|
|
35
|
+
|
|
36
|
+
And one over React Spectrum: its `FieldError` is errors-only and unstyled by severity, while Pretui's messages are severity-tiered and fail closed.
|
|
37
|
+
|
|
38
|
+
## Accessibility
|
|
39
|
+
|
|
40
|
+
No APG pattern; governed by WCAG **3.3.1**, **3.3.2**, **3.3.3** and **4.1.2**. This is the best-wired component in the kit.
|
|
41
|
+
|
|
42
|
+
What is right:
|
|
43
|
+
|
|
44
|
+
- `<label for>` with a matching `labelId`, or a `<span>` in static display.
|
|
45
|
+
- `describedBy` is **description first, then errors**, matching React Spectrum's order, and is `undefined` rather than an empty string when there is nothing — no dangling idrefs, which is exactly what `useSlotId` exists to prevent.
|
|
46
|
+
- `invalid` in the control context is driven by _blocking_ issues only, so the caller sets `aria-invalid` from a value that already respects severity.
|
|
47
|
+
- The required marking reaches the accessible name, not just the pixels.
|
|
48
|
+
- **The live-region policy is deliberate and correct.** `role="alert"` interrupts; a field message that re-renders on every keystroke must never be a live region or a screen-reader user is talked over while typing. So `announce` is opt-in and FormField only turns it on for `record` mode, where an error is the result of one discrete commit. In `submit` mode the **ErrorSummary** announces by taking focus; in `live` mode nothing announces, and the message is still read whenever the field is focused because its id is already in `describedBy`. Most kits get this wrong in one direction or the other.
|
|
49
|
+
- `@reserveMessageSpace` (default true) keeps side-by-side fields from jumping when an error appears.
|
|
50
|
+
|
|
51
|
+
Gaps and cautions:
|
|
52
|
+
|
|
53
|
+
- **The wiring is yielded, not applied.** If `<:control>` ignores `ctx.describedBy` or `ctx.invalid`, nothing is wired and nothing warns. The component removes the _excuse_ for forgetting, not the possibility. A dev-mode assertion that the yielded `id` was consumed would close it.
|
|
54
|
+
- **The help affordance is a Tooltip**, which inherits Tooltip's gaps — no Escape dismissal and `pointer-events: none`, both WCAG 1.4.13 failures. Because the help text is always in the DOM and referenced by id, the _semantic_ path is fine; the pointer path is not.
|
|
55
|
+
- `@labelHidden` keeps the label in the accessible tree, which is correct, but a visually hidden label plus a placeholder is still a WCAG 3.3.2 smell for sighted users.
|
|
56
|
+
- `@static` produces no control at all, so `describedBy` describes nothing focusable — expected, but do not pass `@required` alongside it.
|
|
57
|
+
- The `emptyText` default `'—'` is announced literally by some screen readers as "em dash"; consider a visually-hidden "not set" for record views.
|
|
58
|
+
|
|
59
|
+
## Theming
|
|
60
|
+
|
|
61
|
+
`--field` and `--input` (repointed to `transparent` in readonly, and to a `--destructive` mix when invalid — the token channel is how the dress reaches caller-supplied controls without `:deep()`), `--foreground`, `--muted-foreground`, `--destructive`, `--pretui-field-disabled-opacity` (default 0.5), `--inset`, `--border`, `--pretui-shadow-hairline`, plus the **Label** component's mono eyebrow tokens and **Token**'s tokens when `@showRuleId` is on.
|
|
62
|
+
|
|
63
|
+
`data-readonly`, `data-disabled`, `data-static` and the layout/span attributes are all reflected on the root, so a stylesheet can hook any of them. Because the invalid dress travels by token, a custom control that reads `--field`/`--input` gets error styling for free — and one that hard-codes its colors will silently opt out.
|
|
64
|
+
|
|
65
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
66
|
+
|
|
67
|
+
## React ecosystem
|
|
68
|
+
|
|
69
|
+
| shadcn Field / Aria / Chakra / SLDS | Pretui FormField |
|
|
70
|
+
| ----------------------------------- | -------------------------------- |
|
|
71
|
+
| label | label slot / @label |
|
|
72
|
+
| description / helperText | help slot |
|
|
73
|
+
| errorMessage / FormMessage | **FieldError** |
|
|
74
|
+
| isRequired / isInvalid / isDisabled | @required / @invalid / @disabled |
|
|
75
|
+
| htmlFor / labelledby | already wired |
|
|
76
|
+
|
|
77
|
+
- [ ] Accept `errorMessage` and `description` as string-arg sugar for the slots.
|