@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,153 @@
|
|
|
1
|
+
// Pretui — RecordFace: a record shown as avatar, title and meta.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { Avatar } from './avatar';
|
|
4
|
+
import { iconFor } from '../icon-registry';
|
|
5
|
+
import type { PickerRecord } from '../internal/forms-picker';
|
|
6
|
+
|
|
7
|
+
// ── RecordFace ───────────────────────────────────────────────────────────
|
|
8
|
+
// The shared presentational row behind every record surface in this file
|
|
9
|
+
// (listbox option, selection pill, dueling-list option). Exported as its own
|
|
10
|
+
// primitive so sibling forms components render records identically.
|
|
11
|
+
//
|
|
12
|
+
// This is SLDS's `slds-listbox__option_entity` media object — figure, primary
|
|
13
|
+
// text, meta text — with the term highlight computed rather than authored.
|
|
14
|
+
// EntityDisplay (reading-extras) is the natural composition and was the first
|
|
15
|
+
// choice, but its `@title` is a string with no title block, so the matched
|
|
16
|
+
// term could not carry a <mark>. Gap noted for that component's owner.
|
|
17
|
+
export interface RecordFaceSignature {
|
|
18
|
+
Args: {
|
|
19
|
+
/** The record to render. */
|
|
20
|
+
record: PickerRecord;
|
|
21
|
+
/** Search term to highlight inside `label` (case-insensitive, first hit). */
|
|
22
|
+
term?: string;
|
|
23
|
+
/** 'sm' shrinks the visual and drops the meta line (pill dress). */
|
|
24
|
+
size?: 'sm' | 'md';
|
|
25
|
+
/** Force the meta line off even at 'md'. */
|
|
26
|
+
hideMeta?: boolean;
|
|
27
|
+
};
|
|
28
|
+
Element: HTMLSpanElement;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export class RecordFace extends Component<RecordFaceSignature> {
|
|
32
|
+
get size() {
|
|
33
|
+
return this.args.size ?? 'md';
|
|
34
|
+
}
|
|
35
|
+
get icon() {
|
|
36
|
+
return iconFor(this.args.record?.icon);
|
|
37
|
+
}
|
|
38
|
+
get avatarSize() {
|
|
39
|
+
return this.size === 'sm' ? 15 : 21;
|
|
40
|
+
}
|
|
41
|
+
get showMeta() {
|
|
42
|
+
return (
|
|
43
|
+
this.size === 'md' && !this.args.hideMeta && Boolean(this.args.record?.meta)
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
get parts() {
|
|
47
|
+
let label = this.args.record?.label ?? '';
|
|
48
|
+
let term = (this.args.term ?? '').trim();
|
|
49
|
+
if (!term) {
|
|
50
|
+
return { before: label, match: '', after: '' };
|
|
51
|
+
}
|
|
52
|
+
let at = label.toLowerCase().indexOf(term.toLowerCase());
|
|
53
|
+
if (at < 0) {
|
|
54
|
+
return { before: label, match: '', after: '' };
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
before: label.slice(0, at),
|
|
58
|
+
match: label.slice(at, at + term.length),
|
|
59
|
+
after: label.slice(at + term.length),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
<template>
|
|
63
|
+
<span
|
|
64
|
+
class='pretui-rface'
|
|
65
|
+
data-size={{this.size}}
|
|
66
|
+
data-test-pretui-record-face
|
|
67
|
+
...attributes
|
|
68
|
+
>
|
|
69
|
+
<span class='pretui-rface-visual' aria-hidden='true'>
|
|
70
|
+
{{#if this.icon}}
|
|
71
|
+
{{#let this.icon as |RecordIcon|}}<RecordIcon />{{/let}}
|
|
72
|
+
{{else}}
|
|
73
|
+
<Avatar @name={{@record.label}} @size={{this.avatarSize}} />
|
|
74
|
+
{{/if}}
|
|
75
|
+
</span>
|
|
76
|
+
<span class='pretui-rface-text'>
|
|
77
|
+
<span class='pretui-rface-label'>{{#if this.parts.match}}{{this.parts.before}}<mark
|
|
78
|
+
class='pretui-rface-mark'
|
|
79
|
+
>{{this.parts.match}}</mark>{{this.parts.after}}{{else}}{{@record.label}}{{/if}}</span>
|
|
80
|
+
{{#if this.showMeta}}
|
|
81
|
+
<span class='pretui-rface-meta'>{{@record.meta}}</span>
|
|
82
|
+
{{/if}}
|
|
83
|
+
</span>
|
|
84
|
+
</span>
|
|
85
|
+
<style scoped>
|
|
86
|
+
@layer PretComponent {
|
|
87
|
+
.pretui-rface {
|
|
88
|
+
display: flex;
|
|
89
|
+
align-items: center;
|
|
90
|
+
gap: var(--space-3, 8px);
|
|
91
|
+
min-width: 0;
|
|
92
|
+
text-align: left;
|
|
93
|
+
}
|
|
94
|
+
.pretui-rface[data-size='sm'] {
|
|
95
|
+
gap: 5px;
|
|
96
|
+
}
|
|
97
|
+
.pretui-rface-visual {
|
|
98
|
+
display: inline-flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
flex: none;
|
|
102
|
+
width: var(--pretui-rface-visual-size, 21px);
|
|
103
|
+
height: var(--pretui-rface-visual-size, 21px);
|
|
104
|
+
color: var(--muted-foreground);
|
|
105
|
+
}
|
|
106
|
+
.pretui-rface[data-size='sm'] .pretui-rface-visual {
|
|
107
|
+
width: var(--pretui-rface-visual-size, 15px);
|
|
108
|
+
height: var(--pretui-rface-visual-size, 15px);
|
|
109
|
+
}
|
|
110
|
+
.pretui-rface-visual svg {
|
|
111
|
+
width: 100%;
|
|
112
|
+
height: 100%;
|
|
113
|
+
}
|
|
114
|
+
.pretui-rface-text {
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-direction: column;
|
|
117
|
+
min-width: 0;
|
|
118
|
+
line-height: 1.25;
|
|
119
|
+
}
|
|
120
|
+
.pretui-rface-label {
|
|
121
|
+
font-size: var(--text-ui-md, 12.5px);
|
|
122
|
+
letter-spacing: var(--track-ui, 0.01em);
|
|
123
|
+
color: var(--foreground);
|
|
124
|
+
overflow: hidden;
|
|
125
|
+
text-overflow: ellipsis;
|
|
126
|
+
white-space: nowrap;
|
|
127
|
+
}
|
|
128
|
+
.pretui-rface[data-size='sm'] .pretui-rface-label {
|
|
129
|
+
font-size: var(--text-ui-sm, 11.5px);
|
|
130
|
+
font-weight: 500;
|
|
131
|
+
}
|
|
132
|
+
/* the matched run — a tint of the accent, never a contrast flip */
|
|
133
|
+
.pretui-rface-mark {
|
|
134
|
+
background: color-mix(
|
|
135
|
+
in oklch,
|
|
136
|
+
var(--primary) 22%,
|
|
137
|
+
transparent
|
|
138
|
+
);
|
|
139
|
+
color: inherit;
|
|
140
|
+
border-radius: 3px;
|
|
141
|
+
padding: 0 1px;
|
|
142
|
+
}
|
|
143
|
+
.pretui-rface-meta {
|
|
144
|
+
font-size: var(--text-ui-xs, 11px);
|
|
145
|
+
color: var(--muted-foreground);
|
|
146
|
+
overflow: hidden;
|
|
147
|
+
text-overflow: ellipsis;
|
|
148
|
+
white-space: nowrap;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
</style>
|
|
152
|
+
</template>
|
|
153
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// Pretui — RecordPill: a removable chip for a picked record.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
4
|
+
import { RecordFace } from './record-face';
|
|
5
|
+
import type { PickerRecord } from '../internal/forms-picker';
|
|
6
|
+
|
|
7
|
+
// ── RecordPill ───────────────────────────────────────────────────────────
|
|
8
|
+
// A selected record as a removable capsule. Built as its own primitive (not
|
|
9
|
+
// buried in Lookup) because every record-valued form control needs it.
|
|
10
|
+
//
|
|
11
|
+
// Chip is the kit's capsule, but it is an 18px status marker with
|
|
12
|
+
// no room for a 16px hit target; MultiSelect already set the precedent of a
|
|
13
|
+
// purpose-built chip for removable selections. This one carries the FilterChips
|
|
14
|
+
// capsule dress at 24px with a real, individually-named remove button.
|
|
15
|
+
export interface RecordPillSignature {
|
|
16
|
+
Args: {
|
|
17
|
+
/** The record shown in the pill. */
|
|
18
|
+
record: PickerRecord;
|
|
19
|
+
/** Render the remove button — true by default. */
|
|
20
|
+
removable?: boolean;
|
|
21
|
+
/** Suppresses the remove button and dims the capsule. */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
/** Called with the record when the remove button is pressed. */
|
|
24
|
+
onRemove?: (record: PickerRecord) => void;
|
|
25
|
+
};
|
|
26
|
+
Element: HTMLSpanElement;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class RecordPill extends Component<RecordPillSignature> {
|
|
30
|
+
get removable() {
|
|
31
|
+
return (this.args.removable ?? true) && !this.args.disabled;
|
|
32
|
+
}
|
|
33
|
+
get removeLabel() {
|
|
34
|
+
return `Remove ${this.args.record?.label ?? 'item'}`;
|
|
35
|
+
}
|
|
36
|
+
handleRemove = () => {
|
|
37
|
+
if (this.args.record) {
|
|
38
|
+
this.args.onRemove?.(this.args.record);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
<template>
|
|
42
|
+
<span
|
|
43
|
+
class='pretui-rpill'
|
|
44
|
+
data-disabled={{if @disabled 'true'}}
|
|
45
|
+
data-test-pretui-record-pill={{@record.id}}
|
|
46
|
+
...attributes
|
|
47
|
+
>
|
|
48
|
+
<RecordFace @record={{@record}} @size='sm' />
|
|
49
|
+
{{#if this.removable}}
|
|
50
|
+
<button
|
|
51
|
+
type='button'
|
|
52
|
+
class='pretui-rpill-x'
|
|
53
|
+
aria-label={{this.removeLabel}}
|
|
54
|
+
title={{this.removeLabel}}
|
|
55
|
+
{{on 'click' this.handleRemove}}
|
|
56
|
+
>
|
|
57
|
+
<svg
|
|
58
|
+
width='8'
|
|
59
|
+
height='8'
|
|
60
|
+
viewBox='0 0 8 8'
|
|
61
|
+
aria-hidden='true'
|
|
62
|
+
><path
|
|
63
|
+
d='M1.5 1.5 6.5 6.5 M6.5 1.5 1.5 6.5'
|
|
64
|
+
fill='none'
|
|
65
|
+
stroke='currentColor'
|
|
66
|
+
stroke-width='1.4'
|
|
67
|
+
stroke-linecap='round'
|
|
68
|
+
/></svg>
|
|
69
|
+
</button>
|
|
70
|
+
{{/if}}
|
|
71
|
+
</span>
|
|
72
|
+
<style scoped>
|
|
73
|
+
@layer PretComponent {
|
|
74
|
+
.pretui-rpill {
|
|
75
|
+
display: inline-flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
gap: 4px;
|
|
78
|
+
min-height: 24px;
|
|
79
|
+
max-width: 100%;
|
|
80
|
+
border-radius: 12px;
|
|
81
|
+
padding: 2px 3px 2px 4px;
|
|
82
|
+
background: var(--card);
|
|
83
|
+
box-shadow: var(
|
|
84
|
+
--pretui-shadow-control,
|
|
85
|
+
0 0 0 1px var(--border)
|
|
86
|
+
);
|
|
87
|
+
color: var(--foreground);
|
|
88
|
+
}
|
|
89
|
+
.pretui-rpill[data-disabled] {
|
|
90
|
+
opacity: 0.55;
|
|
91
|
+
}
|
|
92
|
+
.pretui-rpill-x {
|
|
93
|
+
border: 0;
|
|
94
|
+
background: none;
|
|
95
|
+
padding: 0;
|
|
96
|
+
width: 16px;
|
|
97
|
+
height: 16px;
|
|
98
|
+
border-radius: 50%;
|
|
99
|
+
display: inline-grid;
|
|
100
|
+
place-content: center;
|
|
101
|
+
color: var(--ink-3, var(--boxel-400));
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
flex: none;
|
|
104
|
+
}
|
|
105
|
+
.pretui-rpill-x:hover {
|
|
106
|
+
background: var(--hover, var(--boxel-100));
|
|
107
|
+
color: var(--foreground);
|
|
108
|
+
}
|
|
109
|
+
.pretui-rpill-x:focus-visible {
|
|
110
|
+
outline: 2px solid var(--ring);
|
|
111
|
+
outline-offset: 1px;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
</style>
|
|
115
|
+
</template>
|
|
116
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
A selected record as a removable capsule: icon or initials **Avatar**, label, and an individually-named remove button. Use it wherever a record-valued field shows its current value — inside **Lookup**, in a filter bar, beside a form field, in a **RecordDetail** row. If the value is a category rather than a record, **Chip**. If you need the full identity row with a subtitle, **EntityDisplay**. If the reference is gone, **BrokenLink**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@record: PickerRecord (required)
|
|
9
|
+
@removable? (default true), @disabled?
|
|
10
|
+
@onRemove?(record: PickerRecord)
|
|
11
|
+
Element: HTMLSpanElement
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`@disabled` suppresses the remove button _and_ dims the capsule — one arg, both consequences, so a disabled pill cannot be half-interactive.
|
|
15
|
+
|
|
16
|
+
**It is built as its own primitive rather than buried inside Lookup**, and the reason is stated in the source: every record-valued form control needs it. **MultiSelect** already set the precedent of a purpose-built removable chip.
|
|
17
|
+
|
|
18
|
+
**Why it is not `Chip`**, which is the kit's capsule: Chip is an 18px status marker with no room for a 16px hit target. A remove button inside an 18px pill is below any usable target size. So RecordPill carries the **FilterChips** capsule dress at **24px** with a real remove button. That is a considered fork rather than duplication, and it is the right call — the alternative was a Chip with a variant that changes its height and adds a button, which is two components wearing one name.
|
|
19
|
+
|
|
20
|
+
## Prior art
|
|
21
|
+
|
|
22
|
+
**SLDS's `pill`** is the direct ancestor — icon, label, remove — and is the component this whole record family descends from. **React Spectrum's `TagGroup`/`Tag`** is the modern equivalent, with `onRemove`, keyboard removal via the Delete key, and roving tabindex across the group. **Web Awesome `wa-tag`** has `with-remove`. **Radix** has none.
|
|
23
|
+
|
|
24
|
+
Where Pretui matches the field: an individually-named remove button, which is the one thing that makes a row of pills usable — "Remove Acme Corp", not eight buttons all called "Remove".
|
|
25
|
+
|
|
26
|
+
Where it is behind React Spectrum, and it is the notable gap: **there is no group.** Spectrum's `TagGroup` gives a set of pills a roving tabindex (one tab stop for the whole group), arrow navigation between them, and **Delete/Backspace to remove the focused pill** — the keyboard affordance people actually use. Pretui has the pill and not the group, so eight selected records are eight pills plus eight remove buttons, all in the tab sequence, with no keyboard shortcut for removal. Whatever contains the pills (**Lookup**, **MultiSelect**) owns that problem and neither solves it.
|
|
27
|
+
|
|
28
|
+
Also absent: no size axis, no click-to-open (a pill representing a record you cannot navigate to is a dead end), and no overflow/"+3 more" behaviour.
|
|
29
|
+
|
|
30
|
+
## Accessibility
|
|
31
|
+
|
|
32
|
+
No APG pattern for a pill; the applicable model for a _set_ of them is Spectrum's grid-based `TagGroup`.
|
|
33
|
+
|
|
34
|
+
What is right:
|
|
35
|
+
|
|
36
|
+
- **The remove button is individually named** with the record's label, so a screen-reader user knows what they are removing.
|
|
37
|
+
- **`@disabled` removes the button rather than disabling it**, so there is no unreachable dead control in the tab order.
|
|
38
|
+
- **The avatar or icon is `aria-hidden`** (RecordFace wraps it), so Avatar's initials never announce as loose letters; the pill's text is its name.
|
|
39
|
+
|
|
40
|
+
Gaps:
|
|
41
|
+
|
|
42
|
+
- **No group semantics** (above). This is the substantive one: a row of pills is a set, and nothing says so — no count, no `role="list"`, no roving focus, no Delete-key removal.
|
|
43
|
+
- **The pill itself is not focusable**, only its remove button. So keyboard users tab _past_ the label to reach the remove control, and there is no way to focus a pill to inspect or open it.
|
|
44
|
+
- **Removal is not announced.** The pill disappears and nothing says "Acme Corp removed" — except inside **Lookup**, which has its own live region doing exactly that. A bare RecordPill outside Lookup announces nothing, which is worth knowing before using it in a filter bar.
|
|
45
|
+
- **Focus after removal is unmanaged.** Removing the last pill in a row leaves focus on a detached node; focus should move to the next pill or to the field. This is the classic removable-tag bug and every implementation has to solve it explicitly.
|
|
46
|
+
- **The label may truncate** with no full-text fallback, though the accessible name carries the full string.
|
|
47
|
+
- Target size: the remove button is a 16px hit target inside a 24px capsule — below WCAG **2.5.8**'s 24×24 minimum, and the reason the pill was sized up from Chip's 18px in the first place. Worth noting the constraint was acknowledged and only partly resolved.
|
|
48
|
+
|
|
49
|
+
## Theming
|
|
50
|
+
|
|
51
|
+
The **FilterChips** capsule dress at 24px: the per-record hue derivation (`--pretui-chip-mix`, `--pretui-ink-mix` mixed against `--card`, hairline against `--border`), `--foreground`, `--muted-foreground`, `--hover` for the remove button, and **Avatar**'s hash palette for the initials fallback.
|
|
52
|
+
|
|
53
|
+
Because the dress is shared with FilterChips, a theme retuning chip tints moves record pills too — intended, and worth knowing if you were tuning filter chips and forgot they also appear inside every Lookup. The 24px height is fixed; a theme cannot make pills denser without breaking the remove button's already-marginal target size.
|
|
54
|
+
|
|
55
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Pretui — RecordPill usage page.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { on } from '@ember/modifier';
|
|
5
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
6
|
+
import { Button } from './button';
|
|
7
|
+
import { RecordPill } from './record-pill';
|
|
8
|
+
import type { PickerRecord } from '../internal/forms-picker';
|
|
9
|
+
import { ACCOUNTS } from '../internal/forms-picker-fixtures';
|
|
10
|
+
|
|
11
|
+
// ── RecordPill ───────────────────────────────────────────────────────────
|
|
12
|
+
// The removable capsule Lookup renders for each selection, exported on its
|
|
13
|
+
// own so every record-valued form control shows a selection identically.
|
|
14
|
+
// Where SLDS puts each pill in a role='option' with a remove <button> inside
|
|
15
|
+
// (option has children presentational — the button is never exposed), this is
|
|
16
|
+
// a plain span with a real, individually named button.
|
|
17
|
+
class RecordPillUsage extends Component {
|
|
18
|
+
records = ACCOUNTS.slice(0, 3);
|
|
19
|
+
@tracked removed: string[] = [];
|
|
20
|
+
@tracked removable = true;
|
|
21
|
+
@tracked disabled = false;
|
|
22
|
+
|
|
23
|
+
get shown(): PickerRecord[] {
|
|
24
|
+
return this.records.filter((r) => !this.removed.includes(r.id));
|
|
25
|
+
}
|
|
26
|
+
remove = (record: PickerRecord) => {
|
|
27
|
+
this.removed = [...this.removed, record.id];
|
|
28
|
+
};
|
|
29
|
+
restore = () => (this.removed = []);
|
|
30
|
+
setRemovable = (v: boolean) => (this.removable = v);
|
|
31
|
+
setDisabled = (v: boolean) => (this.disabled = v);
|
|
32
|
+
|
|
33
|
+
get usage() {
|
|
34
|
+
let bits = ['@record={{record}}'];
|
|
35
|
+
if (!this.removable) {
|
|
36
|
+
bits.push('@removable={{false}}');
|
|
37
|
+
}
|
|
38
|
+
if (this.disabled) {
|
|
39
|
+
bits.push('@disabled={{true}}');
|
|
40
|
+
}
|
|
41
|
+
bits.push('@onRemove={{this.remove}}');
|
|
42
|
+
return `{{#each this.records as |record|}}\n <RecordPill ${bits.join(' ')} />\n{{/each}}`;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<FreestyleUsage
|
|
47
|
+
@name='RecordPill'
|
|
48
|
+
@description='A selected record as a removable capsule — the selection surface shared by Lookup and any sibling form control that holds record references. Composes RecordFace at sm size (icon or initials Avatar, then the label) and adds one real, individually named remove button, so a screen reader hears “Remove Wuyi Origins, button” rather than nothing at all. Use it wherever a chosen record has to be visible and revocable outside a dropdown.'
|
|
49
|
+
@source={{this.usage}}
|
|
50
|
+
>
|
|
51
|
+
<:example>
|
|
52
|
+
<div class='pillrow'>
|
|
53
|
+
{{#each this.shown key='id' as |record|}}
|
|
54
|
+
<RecordPill
|
|
55
|
+
@record={{record}}
|
|
56
|
+
@removable={{this.removable}}
|
|
57
|
+
@disabled={{this.disabled}}
|
|
58
|
+
@onRemove={{this.remove}}
|
|
59
|
+
/>
|
|
60
|
+
{{/each}}
|
|
61
|
+
{{#unless this.shown.length}}
|
|
62
|
+
<Button @variant='secondary' {{on 'click' this.restore}}>
|
|
63
|
+
Restore records
|
|
64
|
+
</Button>
|
|
65
|
+
{{/unless}}
|
|
66
|
+
</div>
|
|
67
|
+
</:example>
|
|
68
|
+
<:api as |Args|>
|
|
69
|
+
<Args.Object
|
|
70
|
+
@name='record'
|
|
71
|
+
@required={{true}}
|
|
72
|
+
@description='The record shown in the pill: {id, label, meta?, icon?}. Only the label and icon render at pill size.'
|
|
73
|
+
@value={{this.records}}
|
|
74
|
+
/>
|
|
75
|
+
<Args.Bool
|
|
76
|
+
@name='removable'
|
|
77
|
+
@defaultValue={{true}}
|
|
78
|
+
@description='Render the remove button.'
|
|
79
|
+
@value={{this.removable}}
|
|
80
|
+
@onInput={{this.setRemovable}}
|
|
81
|
+
/>
|
|
82
|
+
<Args.Bool
|
|
83
|
+
@name='disabled'
|
|
84
|
+
@defaultValue={{false}}
|
|
85
|
+
@description='Dims the capsule and suppresses the remove button.'
|
|
86
|
+
@value={{this.disabled}}
|
|
87
|
+
@onInput={{this.setDisabled}}
|
|
88
|
+
/>
|
|
89
|
+
<Args.Action
|
|
90
|
+
@name='onRemove'
|
|
91
|
+
@description='Fires with the record when the remove button is pressed.'
|
|
92
|
+
/>
|
|
93
|
+
</:api>
|
|
94
|
+
</FreestyleUsage>
|
|
95
|
+
<style scoped>
|
|
96
|
+
.pillrow {
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-wrap: wrap;
|
|
99
|
+
align-items: center;
|
|
100
|
+
gap: var(--space-2, 5px);
|
|
101
|
+
}
|
|
102
|
+
</style>
|
|
103
|
+
</template>
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export const DEMOS_RECORD_PILL: Record<string, unknown> = {
|
|
107
|
+
RecordPill: RecordPillUsage,
|
|
108
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Pretui — RelativeTime: a date as a phrase relative to a caller-supplied now.
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { ABS_FMT } from '../internal/reading-extras';
|
|
4
|
+
|
|
5
|
+
// ── RelativeTime ─────────────────────────────────────────────────────────
|
|
6
|
+
// webawesome relative-time semantics, realm-adapted: the phrase is computed
|
|
7
|
+
// ONCE from @date vs @now (Intl.RelativeTimeFormat) and re-derives only when
|
|
8
|
+
// the args change. @now is caller-supplied per the LoadingState precedent;
|
|
9
|
+
// when omitted it captures the construction instant. It does NOT auto-tick —
|
|
10
|
+
// the realm forbids timers, so "2 minutes ago" stays put until the caller
|
|
11
|
+
// refreshes @now.
|
|
12
|
+
export interface RelativeTimeSignature {
|
|
13
|
+
Args: {
|
|
14
|
+
date: string | Date;
|
|
15
|
+
now?: string | Date;
|
|
16
|
+
format?: 'long' | 'short' | 'narrow';
|
|
17
|
+
numeric?: 'always' | 'auto';
|
|
18
|
+
};
|
|
19
|
+
Element: HTMLTimeElement;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const RELATIVE_UNITS: { unit: Intl.RelativeTimeFormatUnit; ms: number }[] = [
|
|
23
|
+
{ unit: 'year', ms: 365.25 * 24 * 3600e3 },
|
|
24
|
+
{ unit: 'month', ms: 30.44 * 24 * 3600e3 },
|
|
25
|
+
{ unit: 'week', ms: 7 * 24 * 3600e3 },
|
|
26
|
+
{ unit: 'day', ms: 24 * 3600e3 },
|
|
27
|
+
{ unit: 'hour', ms: 3600e3 },
|
|
28
|
+
{ unit: 'minute', ms: 60e3 },
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
function asDate(value: string | Date | undefined): Date | undefined {
|
|
32
|
+
if (value === undefined) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
let d = value instanceof Date ? value : new Date(value);
|
|
36
|
+
return Number.isNaN(d.getTime()) ? undefined : d;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class RelativeTime extends Component<RelativeTimeSignature> {
|
|
40
|
+
// Captured once — the no-timer stand-in for "now" when @now is omitted.
|
|
41
|
+
private constructedAt = new Date();
|
|
42
|
+
|
|
43
|
+
get dateObj(): Date | undefined {
|
|
44
|
+
return asDate(this.args.date);
|
|
45
|
+
}
|
|
46
|
+
get nowObj(): Date {
|
|
47
|
+
return asDate(this.args.now) ?? this.constructedAt;
|
|
48
|
+
}
|
|
49
|
+
get phrase(): string {
|
|
50
|
+
let date = this.dateObj;
|
|
51
|
+
if (!date) {
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
let diff = date.getTime() - this.nowObj.getTime();
|
|
55
|
+
let match = RELATIVE_UNITS.find((u) => Math.abs(diff) >= u.ms);
|
|
56
|
+
let unit: Intl.RelativeTimeFormatUnit = match?.unit ?? 'second';
|
|
57
|
+
let ms = match?.ms ?? 1e3;
|
|
58
|
+
let fmt = new Intl.RelativeTimeFormat('en-US', {
|
|
59
|
+
style: this.args.format ?? 'long',
|
|
60
|
+
numeric: this.args.numeric ?? 'auto',
|
|
61
|
+
});
|
|
62
|
+
return fmt.format(Math.round(diff / ms), unit);
|
|
63
|
+
}
|
|
64
|
+
get datetimeAttr(): string | undefined {
|
|
65
|
+
return this.dateObj?.toISOString();
|
|
66
|
+
}
|
|
67
|
+
get titleAttr(): string | undefined {
|
|
68
|
+
let d = this.dateObj;
|
|
69
|
+
return d ? ABS_FMT.format(d) : undefined;
|
|
70
|
+
}
|
|
71
|
+
<template>
|
|
72
|
+
<time
|
|
73
|
+
class='pretui-relative-time'
|
|
74
|
+
datetime={{this.datetimeAttr}}
|
|
75
|
+
title={{this.titleAttr}}
|
|
76
|
+
data-test-pretui-relative-time
|
|
77
|
+
...attributes
|
|
78
|
+
>{{this.phrase}}</time>
|
|
79
|
+
<style scoped>
|
|
80
|
+
@layer PretComponent {
|
|
81
|
+
.pretui-relative-time {
|
|
82
|
+
white-space: nowrap;
|
|
83
|
+
font-variant-numeric: tabular-nums;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
</style>
|
|
87
|
+
</template>
|
|
88
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
## What it is
|
|
2
|
+
|
|
3
|
+
"3 days ago", "in 2 hours" — a timestamp rendered as a phrase relative to a reference instant. Use it in **Timeline**, **Feed**, comment lists, activity rows: anywhere the _recency_ matters more than the exact instant. If the exact instant matters — an audit record, a scheduled time, a legal timestamp — render the absolute date instead, or render both. For a formatted absolute date, **FormatDate**; for a fixed known date, **KnownDate**.
|
|
4
|
+
|
|
5
|
+
## The contract
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
@date: string | Date (required)
|
|
9
|
+
@now?: string | Date
|
|
10
|
+
@format? 'long' | 'short' | 'narrow' (default 'long')
|
|
11
|
+
@numeric? 'always' | 'auto' (default 'auto')
|
|
12
|
+
Element: HTMLTimeElement
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**It does not tick.** The realm forbids timers, so the phrase is computed once from `@date` versus `@now` and recomputes only when the args change. `@now` is caller-supplied — the same precedent as **LoadingState**'s elapsed arg — and when omitted it captures the _construction_ instant. So "2 minutes ago" stays "2 minutes ago" until the caller refreshes `@now`. On a long-lived page that is a correctness issue you must handle, not a limitation you can ignore.
|
|
16
|
+
|
|
17
|
+
**`@numeric='auto'` is the right default** and is what turns "1 day ago" into "yesterday" and "0 days ago" into "today". `'always'` keeps the numbers, which is what you want in a dense table where every row should read the same shape.
|
|
18
|
+
|
|
19
|
+
The unit is chosen by walking a descending table (year, month, week, day, hour, minute) and taking the first whose magnitude the difference exceeds, falling back to seconds. Note **`week` is in the table**, so a 10-day-old item reads "last week" rather than "10 days ago" — worth knowing, because several implementations skip weeks.
|
|
20
|
+
|
|
21
|
+
## Prior art
|
|
22
|
+
|
|
23
|
+
**Web Awesome `wa-relative-time`** is the direct semantic source: `date`, `format`, `numeric`, `sync` and a locale, wrapping `Intl.RelativeTimeFormat` over a `<time>` element. **React Spectrum** has no relative-time component. **`<relative-time>`** (GitHub's element) is the widely-deployed reference and it _does_ tick.
|
|
24
|
+
|
|
25
|
+
The differences, stated honestly:
|
|
26
|
+
|
|
27
|
+
- **Web Awesome has `sync`, which auto-updates the phrase.** Pretui cannot — no timers — so `@now` is the caller's job. That is a real capability gap, imposed by the platform rather than chosen, and it is why the arg exists at all.
|
|
28
|
+
- **Pretui has no locale arg.** `Intl.RelativeTimeFormat` is constructed with a hard-coded `'en-US'`. Web Awesome takes the element's `lang`. For an internationalised product this is disqualifying, and it is the same gap **Calendar** has.
|
|
29
|
+
- **Pretui recomputes the formatter on every access.** `new Intl.RelativeTimeFormat(...)` inside the `phrase` getter means a table of 200 timestamps constructs 200 formatters per render. `Intl` constructors are not cheap; hoisting them into module-level constants (as this same file already does for `DISPLAY_FMT`, `LABEL_FMT`, `MONTH_FMT` and `ABS_FMT`) is a one-line fix and an inconsistency with the file's own practice.
|
|
30
|
+
|
|
31
|
+
Where it is better than the naive version everyone writes: it uses `Intl.RelativeTimeFormat` rather than a hand-written pluralisation ladder, so "1 minute ago" versus "2 minutes ago" is the platform's problem, and it renders a real `<time>` element.
|
|
32
|
+
|
|
33
|
+
## Accessibility
|
|
34
|
+
|
|
35
|
+
No pattern governs it. The relevant criteria are WCAG **1.3.1** and, for the ticking question, **4.1.3**.
|
|
36
|
+
|
|
37
|
+
What is right, and it is the important part:
|
|
38
|
+
|
|
39
|
+
- **It renders `<time datetime="…">` with a full ISO 8601 timestamp.** So the machine-readable instant is always present even though the visible text is a phrase — which is exactly what `<time>` is for, and what a `<span>` version loses. Assistive tech, browsers and scrapers all get the real value.
|
|
40
|
+
- **`title` carries the absolute formatted date** (`ABS_FMT`, medium date plus short time), so a pointer user can hover for the exact instant.
|
|
41
|
+
- **Nothing ticks, so nothing announces repeatedly.** A live-updating relative time inside a live region is a notorious screen-reader nuisance; the no-timer constraint accidentally produces the polite behaviour.
|
|
42
|
+
|
|
43
|
+
Gaps:
|
|
44
|
+
|
|
45
|
+
- **`title` is the only route to the absolute time for most users.** It is not shown on touch, not reachable by keyboard, and announced inconsistently by screen readers. So for a keyboard or touch user, "3 days ago" is _all_ the information available. Where the exact instant matters, render it visibly rather than relying on `title`.
|
|
46
|
+
- **Screen readers do not announce `datetime`.** The `<time>` element's machine value is not spoken; a screen-reader user hears the phrase, same as everyone else. The `datetime` attribute is for machines, not for assistive tech — a common misconception worth stating.
|
|
47
|
+
- **A stale `@now` produces silently wrong output.** "2 minutes ago" on a page open for an hour is a factual error with no visual indication. This is the component's most consequential failure mode and it is the caller's to prevent.
|
|
48
|
+
- **An invalid `@date` renders an empty string** — `phrase` returns `''` and `datetime` is `undefined`, so the element is empty. Nothing is announced, and nothing distinguishes it from a missing value.
|
|
49
|
+
- **No locale support** (above) means non-English users see English phrases regardless of their settings.
|
|
50
|
+
- `white-space: nowrap` prevents a phrase wrapping mid-way, which is right.
|
|
51
|
+
|
|
52
|
+
## Theming
|
|
53
|
+
|
|
54
|
+
Effectively none: `white-space: nowrap` and `font-variant-numeric: tabular-nums`. Ink, size and family are inherited from context — which is correct for something that appears inside **Timeline** rows, **Feed** articles and table cells, and should look like the text around it in each.
|
|
55
|
+
|
|
56
|
+
The tabular figures are the one deliberate typographic choice: in a column of timestamps, "11 days ago" and "3 days ago" align on the same grid rather than jittering. A theme needs a font whose tabular figures actually differ from its proportional ones for that to have any effect.
|
|
57
|
+
|
|
58
|
+
The styles sit in `@layer PretComponent`, so a caller's unlayered CSS overrides them without a more specific selector.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Pretui — RelativeTime usage page.
|
|
2
|
+
import GlimmerComponent from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { FreestyleUsage } from './freestyle-usage';
|
|
5
|
+
import { RelativeTime } from './relative-time';
|
|
6
|
+
|
|
7
|
+
// ── RelativeTime — from webawesome's relative-time semantics ──────────────
|
|
8
|
+
const RT_FORMAT_OPTIONS = ['long', 'short', 'narrow'];
|
|
9
|
+
|
|
10
|
+
const RT_NUMERIC_OPTIONS = ['auto', 'always'];
|
|
11
|
+
|
|
12
|
+
// Dropped knobs: sync (webawesome's auto-tick timer — the realm forbids
|
|
13
|
+
// timers, so the phrase computes once from @date vs @now and @now is
|
|
14
|
+
// caller-supplied per the LoadingState precedent), display (no absolute-date
|
|
15
|
+
// fallback mode), lang (locale fixed to en-US like the rest of the kit).
|
|
16
|
+
class RelativeTimeUsage extends GlimmerComponent {
|
|
17
|
+
@tracked date = '2026-08-11T09:30:00';
|
|
18
|
+
@tracked now = '2026-08-12T12:00:00';
|
|
19
|
+
@tracked format = 'long';
|
|
20
|
+
@tracked numeric = 'auto';
|
|
21
|
+
setDate = (v: string) => (this.date = v);
|
|
22
|
+
setNow = (v: string) => (this.now = v);
|
|
23
|
+
setFormat = (v: string) => (this.format = v);
|
|
24
|
+
setNumeric = (v: string) => (this.numeric = v);
|
|
25
|
+
get formatVal() {
|
|
26
|
+
return this.format as 'long' | 'short' | 'narrow';
|
|
27
|
+
}
|
|
28
|
+
get numericVal() {
|
|
29
|
+
return this.numeric as 'always' | 'auto';
|
|
30
|
+
}
|
|
31
|
+
get nowVal() {
|
|
32
|
+
return this.now || undefined;
|
|
33
|
+
}
|
|
34
|
+
get usage() {
|
|
35
|
+
return `<RelativeTime @date='${this.date}' @now='${this.now}' />`;
|
|
36
|
+
}
|
|
37
|
+
<template>
|
|
38
|
+
<FreestyleUsage
|
|
39
|
+
@name='RelativeTime'
|
|
40
|
+
@description='Displays a date as a human phrase relative to @now ("yesterday", "in 3 days") via Intl.RelativeTimeFormat, inside a <time> element carrying the ISO datetime and an absolute-date title. Computes once — it does not auto-tick in the realm (no timers); pass a fresh @now to update.'
|
|
41
|
+
@source={{this.usage}}
|
|
42
|
+
@viewportMode='inline'
|
|
43
|
+
>
|
|
44
|
+
<:example>
|
|
45
|
+
<RelativeTime
|
|
46
|
+
@date={{this.date}}
|
|
47
|
+
@now={{this.nowVal}}
|
|
48
|
+
@format={{this.formatVal}}
|
|
49
|
+
@numeric={{this.numericVal}}
|
|
50
|
+
/>
|
|
51
|
+
</:example>
|
|
52
|
+
<:api as |Args|>
|
|
53
|
+
<Args.String
|
|
54
|
+
@name='date'
|
|
55
|
+
@required={{true}}
|
|
56
|
+
@description='The instant to describe — ISO datetime string (or a Date when invoked from code).'
|
|
57
|
+
@value={{this.date}}
|
|
58
|
+
@onInput={{this.setDate}}
|
|
59
|
+
/>
|
|
60
|
+
<Args.String
|
|
61
|
+
@name='now'
|
|
62
|
+
@description='The reference instant — caller-supplied (LoadingState precedent). Omitted, it captures the construction instant and never ticks.'
|
|
63
|
+
@value={{this.now}}
|
|
64
|
+
@onInput={{this.setNow}}
|
|
65
|
+
/>
|
|
66
|
+
<Args.String
|
|
67
|
+
@name='format'
|
|
68
|
+
@description="Intl.RelativeTimeFormat style: 'long' (3 days ago), 'short' (3 days ago, abbreviated units), or 'narrow' (3d ago)."
|
|
69
|
+
@options={{RT_FORMAT_OPTIONS}}
|
|
70
|
+
@defaultValue='long'
|
|
71
|
+
@value={{this.format}}
|
|
72
|
+
@onInput={{this.setFormat}}
|
|
73
|
+
/>
|
|
74
|
+
<Args.String
|
|
75
|
+
@name='numeric'
|
|
76
|
+
@description="'auto' allows phrases like 'yesterday'; 'always' forces '1 day ago'."
|
|
77
|
+
@options={{RT_NUMERIC_OPTIONS}}
|
|
78
|
+
@defaultValue='auto'
|
|
79
|
+
@value={{this.numeric}}
|
|
80
|
+
@onInput={{this.setNumeric}}
|
|
81
|
+
/>
|
|
82
|
+
</:api>
|
|
83
|
+
</FreestyleUsage>
|
|
84
|
+
</template>
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export const DEMOS_RELATIVE_TIME: Record<string, unknown> = {
|
|
88
|
+
RelativeTime: RelativeTimeUsage,
|
|
89
|
+
};
|