@kerfjs/ui 5.0.0-beta.11 → 5.0.0-beta.110
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/README.md +707 -160
- package/ai/application-ui-diagnostic-ids-v1.json +115 -0
- package/ai/application-ui-profile-sync.cjs +548 -0
- package/ai/application-ui-profile.d.mts +1 -0
- package/ai/application-ui-profile.d.ts +106 -0
- package/ai/application-ui-profile.defaults.json +222 -0
- package/ai/application-ui-profile.mjs +653 -0
- package/ai/application-ui-profile.schema.json +140 -0
- package/ai/catalog-authoring.json +34 -0
- package/ai/catalog-authoring.schema.json +105 -0
- package/ai/compile-time-contracts-v1.json +149 -0
- package/ai/compile-time-contracts-v1.schema.json +52 -0
- package/ai/component-catalog-extension.schema.json +104 -0
- package/ai/component-catalog.json +9111 -1376
- package/ai/component-catalog.schema.json +94 -1
- package/ai/component-class-owners.cjs +83 -0
- package/ai/component-composition-extension.d.ts +7 -0
- package/ai/component-composition-extension.schema.json +7 -0
- package/ai/component-composition-rules.json +570 -0
- package/ai/component-composition.d.ts +143 -0
- package/ai/component-composition.json +10437 -0
- package/ai/component-composition.schema.json +444 -0
- package/ai/components/README.md +206 -0
- package/ai/components/anchored-surface.md +99 -0
- package/ai/components/application-tabs.md +65 -0
- package/ai/components/backdrop-image.md +84 -0
- package/ai/components/badge.md +77 -0
- package/ai/components/button.md +94 -0
- package/ai/components/checkbox-group.md +89 -0
- package/ai/components/checkbox.md +90 -0
- package/ai/components/chip.md +80 -0
- package/ai/components/choice-chips.md +93 -0
- package/ai/components/collapsible-panel.md +103 -0
- package/ai/components/color-field.md +92 -0
- package/ai/components/color-picker.md +93 -0
- package/ai/components/color-swatches.md +82 -0
- package/ai/components/column-track.md +78 -0
- package/ai/components/combobox.md +90 -0
- package/ai/components/content-item.md +101 -0
- package/ai/components/content-swap.md +78 -0
- package/ai/components/corner-status.md +88 -0
- package/ai/components/disclosure-arrow.md +77 -0
- package/ai/components/disclosure.md +88 -0
- package/ai/components/document-baseline.md +77 -0
- package/ai/components/edge-activity-indicator.md +81 -0
- package/ai/components/empty-state.md +80 -0
- package/ai/components/feedback.md +71 -0
- package/ai/components/file-picker.md +89 -0
- package/ai/components/floating-toolbar.md +82 -0
- package/ai/components/foundation.md +65 -0
- package/ai/components/framed-list.md +80 -0
- package/ai/components/grid.md +101 -0
- package/ai/components/headers.md +63 -0
- package/ai/components/layout.md +75 -0
- package/ai/components/list-action-row.md +108 -0
- package/ai/components/list-detail-dialog.md +90 -0
- package/ai/components/list-header.md +91 -0
- package/ai/components/list-inset-control.md +74 -0
- package/ai/components/list-inset-text.md +72 -0
- package/ai/components/list-item.md +108 -0
- package/ai/components/list.md +127 -0
- package/ai/components/loading-spinner.md +73 -0
- package/ai/components/lucide-icon.md +99 -0
- package/ai/components/message-composer.md +85 -0
- package/ai/components/nav-stack.md +120 -0
- package/ai/components/pane.md +127 -0
- package/ai/components/popup-menu.md +174 -0
- package/ai/components/progress-bar.md +82 -0
- package/ai/components/progress-ring.md +80 -0
- package/ai/components/radio-group.md +89 -0
- package/ai/components/recipe-app-shell.md +57 -0
- package/ai/components/recipe-collapsible-sidebar.md +57 -0
- package/ai/components/recipe-compact-toolbar.md +57 -0
- package/ai/components/recipe-composer-form.md +57 -0
- package/ai/components/recipe-list-detail-dialog.md +57 -0
- package/ai/components/recipe-list-workspace-states.md +57 -0
- package/ai/components/recipe-loading-inspector.md +57 -0
- package/ai/components/recipe-media-detail.md +57 -0
- package/ai/components/recipe-navigation-sidebar.md +57 -0
- package/ai/components/recipe-navigation-stack.md +57 -0
- package/ai/components/recipe-workspace-header.md +57 -0
- package/ai/components/resize.md +106 -0
- package/ai/components/row.md +96 -0
- package/ai/components/search-field.md +108 -0
- package/ai/components/segmented-control.md +83 -0
- package/ai/components/select.md +118 -0
- package/ai/components/skeleton.md +84 -0
- package/ai/components/slider.md +84 -0
- package/ai/components/spacer.md +86 -0
- package/ai/components/split-button.md +83 -0
- package/ai/components/split-view.md +105 -0
- package/ai/components/state-banner.md +96 -0
- package/ai/components/summary-row.md +85 -0
- package/ai/components/sunken-panel.md +79 -0
- package/ai/components/surface-scaffold.md +117 -0
- package/ai/components/switch.md +81 -0
- package/ai/components/tab-bar.md +114 -0
- package/ai/components/tab-navigator.md +105 -0
- package/ai/components/tabs.md +95 -0
- package/ai/components/tag-field.md +86 -0
- package/ai/components/text-field.md +102 -0
- package/ai/components/text.md +93 -0
- package/ai/components/toast.md +85 -0
- package/ai/components/toolbar-control-group.md +127 -0
- package/ai/components/toolbar-text.md +100 -0
- package/ai/components/toolbar.md +103 -0
- package/ai/components/tooltip.md +81 -0
- package/ai/components/value-table.md +80 -0
- package/ai/components/wa-accordion-item.md +61 -0
- package/ai/components/wa-accordion.md +71 -0
- package/ai/components/wa-animated-image.md +56 -0
- package/ai/components/wa-animation.md +56 -0
- package/ai/components/wa-avatar.md +56 -0
- package/ai/components/wa-badge.md +62 -0
- package/ai/components/wa-breadcrumb-item.md +54 -0
- package/ai/components/wa-breadcrumb.md +56 -0
- package/ai/components/wa-button-group.md +62 -0
- package/ai/components/wa-button.md +61 -0
- package/ai/components/wa-callout.md +60 -0
- package/ai/components/wa-card.md +67 -0
- package/ai/components/wa-carousel-item.md +54 -0
- package/ai/components/wa-carousel.md +56 -0
- package/ai/components/wa-checkbox-group.md +62 -0
- package/ai/components/wa-checkbox.md +61 -0
- package/ai/components/wa-color-picker.md +63 -0
- package/ai/components/wa-comparison.md +56 -0
- package/ai/components/wa-copy-button.md +56 -0
- package/ai/components/wa-details.md +67 -0
- package/ai/components/wa-dialog.md +65 -0
- package/ai/components/wa-divider.md +54 -0
- package/ai/components/wa-drawer.md +62 -0
- package/ai/components/wa-dropdown-item.md +62 -0
- package/ai/components/wa-dropdown.md +62 -0
- package/ai/components/wa-format-bytes.md +54 -0
- package/ai/components/wa-format-date.md +54 -0
- package/ai/components/wa-format-number.md +54 -0
- package/ai/components/wa-icon.md +59 -0
- package/ai/components/wa-include.md +55 -0
- package/ai/components/wa-input.md +62 -0
- package/ai/components/wa-intersection-observer.md +54 -0
- package/ai/components/wa-known-date.md +54 -0
- package/ai/components/wa-markdown.md +54 -0
- package/ai/components/wa-mutation-observer.md +54 -0
- package/ai/components/wa-number-input.md +56 -0
- package/ai/components/wa-option.md +61 -0
- package/ai/components/wa-otp-input.md +54 -0
- package/ai/components/wa-page.md +62 -0
- package/ai/components/wa-pagination.md +56 -0
- package/ai/components/wa-popover.md +61 -0
- package/ai/components/wa-popup.md +60 -0
- package/ai/components/wa-progress-bar.md +60 -0
- package/ai/components/wa-progress-ring.md +60 -0
- package/ai/components/wa-qr-code.md +54 -0
- package/ai/components/wa-radio-group.md +67 -0
- package/ai/components/wa-radio.md +61 -0
- package/ai/components/wa-random-content.md +54 -0
- package/ai/components/wa-rating.md +56 -0
- package/ai/components/wa-relative-time.md +54 -0
- package/ai/components/wa-resize-observer.md +54 -0
- package/ai/components/wa-scroller.md +61 -0
- package/ai/components/wa-select.md +65 -0
- package/ai/components/wa-skeleton.md +60 -0
- package/ai/components/wa-slider.md +61 -0
- package/ai/components/wa-spinner.md +60 -0
- package/ai/components/wa-split-panel.md +60 -0
- package/ai/components/wa-step.md +56 -0
- package/ai/components/wa-stepper.md +56 -0
- package/ai/components/wa-switch.md +60 -0
- package/ai/components/wa-tab-group.md +71 -0
- package/ai/components/wa-tab-panel.md +62 -0
- package/ai/components/wa-tab.md +61 -0
- package/ai/components/wa-tag-input.md +62 -0
- package/ai/components/wa-tag.md +62 -0
- package/ai/components/wa-textarea.md +60 -0
- package/ai/components/wa-time-input.md +56 -0
- package/ai/components/wa-toast-item.md +62 -0
- package/ai/components/wa-toast.md +62 -0
- package/ai/components/wa-tooltip.md +61 -0
- package/ai/components/wa-tree-item.md +56 -0
- package/ai/components/wa-tree.md +56 -0
- package/ai/components/wa-zoomable-frame.md +56 -0
- package/ai/components/workbench-dialog.md +90 -0
- package/ai/components/workbench.md +120 -0
- package/ai/public-api-signatures-v1.md +6114 -445
- package/ai/skill.md +545 -65
- package/ai/webawesome-jsx-signatures-v1.md +12 -2
- package/analyzer/cli.mjs +49 -0
- package/analyzer/component-ownership.d.mts +72 -0
- package/analyzer/component-ownership.mjs +429 -0
- package/analyzer/index.d.mts +53 -0
- package/analyzer/index.mjs +2375 -0
- package/analyzer/loud-pairs.d.mts +49 -0
- package/analyzer/loud-pairs.mjs +357 -0
- package/analyzer/report.schema.json +66 -0
- package/analyzer/selectors.d.mts +21 -0
- package/analyzer/selectors.mjs +212 -0
- package/catalog-projection-cli.mjs +96 -0
- package/catalog-projection.d.mts +55 -0
- package/catalog-projection.mjs +62 -0
- package/dist/anchored-surface.d.ts +69 -0
- package/dist/anchored-surface.js +3 -0
- package/dist/anchored-surface.js.map +1 -0
- package/dist/backdrop-image.d.ts +132 -0
- package/dist/backdrop-image.js +5 -0
- package/dist/backdrop-image.js.map +1 -0
- package/dist/badge.d.ts +91 -0
- package/dist/badge.js +4 -0
- package/dist/badge.js.map +1 -0
- package/dist/browser/anchored-surface.js +3 -0
- package/dist/browser/backdrop-image.js +3 -0
- package/dist/browser/badge.js +3 -0
- package/dist/browser/button.js +5 -0
- package/dist/browser/catalog.js +29 -0
- package/dist/browser/checkbox-group.js +5 -0
- package/dist/browser/checkbox.js +4 -0
- package/dist/browser/chip.js +3 -0
- package/dist/browser/choice-chips.js +3 -0
- package/dist/browser/collapsible-panel.js +9 -0
- package/dist/browser/color-field.js +4 -0
- package/dist/browser/color-picker.js +5 -0
- package/dist/browser/color-swatches.js +3 -0
- package/dist/browser/column-track.js +3 -0
- package/dist/browser/combobox.js +3 -0
- package/dist/browser/content-item.js +3 -0
- package/dist/browser/content-swap.js +3 -0
- package/dist/browser/corner-status.js +3 -0
- package/dist/browser/disclosure.js +5 -0
- package/dist/browser/edge-activity-indicator.js +3 -0
- package/dist/browser/file-picker.js +3 -0
- package/dist/browser/framed-list.js +3 -0
- package/dist/browser/grid.js +3 -0
- package/dist/browser/list-action-row.js +3 -0
- package/dist/browser/list-detail-dialog.js +14 -0
- package/dist/browser/list-header.js +3 -1
- package/dist/browser/list-inset-control.js +3 -0
- package/dist/browser/list-inset-text.js +3 -0
- package/dist/browser/list-item.js +1 -0
- package/dist/browser/list.js +3 -0
- package/dist/browser/message-composer.js +5 -0
- package/dist/browser/nav-stack.js +11 -0
- package/dist/browser/pane.js +3 -0
- package/dist/browser/popup-menu.js +4 -0
- package/dist/browser/progress-bar.js +3 -0
- package/dist/browser/progress-ring.js +3 -0
- package/dist/browser/radio-group.js +3 -0
- package/dist/browser/row.js +3 -0
- package/dist/browser/search-field.js +4 -0
- package/dist/browser/segmented-control.js +0 -1
- package/dist/browser/select.js +2 -1
- package/dist/browser/slider.js +3 -0
- package/dist/browser/spacer.js +3 -0
- package/dist/browser/split-button.js +5 -0
- package/dist/browser/split-view.js +13 -0
- package/dist/browser/state-banner.js +1 -0
- package/dist/browser/summary-row.js +3 -0
- package/dist/browser/sunken-panel.js +3 -0
- package/dist/browser/surface-scaffold.js +4 -0
- package/dist/browser/switch.js +3 -0
- package/dist/browser/tab-bar-item.js +4 -0
- package/dist/browser/tab-navigator.js +4 -0
- package/dist/browser/tag-field.js +5 -0
- package/dist/browser/text-field.js +4 -0
- package/dist/browser/text.js +3 -0
- package/dist/browser/toolbar-control-group.js +1 -0
- package/dist/browser/workbench-dialog.js +15 -0
- package/dist/browser/workbench.js +14 -0
- package/dist/button.d.ts +121 -0
- package/dist/button.js +7 -0
- package/dist/button.js.map +1 -0
- package/dist/catalog-resources.d.ts +50 -0
- package/dist/catalog-resources.js +22 -0
- package/dist/catalog-resources.js.map +1 -0
- package/dist/catalog.d.ts +134 -101
- package/dist/catalog.js +700 -108
- package/dist/catalog.js.map +1 -1
- package/dist/checkbox-group.d.ts +70 -0
- package/dist/checkbox-group.js +7 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox.d.ts +45 -0
- package/dist/checkbox.js +6 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chip.d.ts +117 -0
- package/dist/chip.js +4 -0
- package/dist/chip.js.map +1 -0
- package/dist/choice-chips.d.ts +116 -0
- package/dist/choice-chips.js +3 -0
- package/dist/choice-chips.js.map +1 -0
- package/dist/chunk-2FW7D4IG.js +52 -0
- package/dist/chunk-2FW7D4IG.js.map +1 -0
- package/dist/chunk-2GOCOLQL.js +270 -0
- package/dist/chunk-2GOCOLQL.js.map +1 -0
- package/dist/chunk-2LM3PYHA.js +300 -0
- package/dist/chunk-2LM3PYHA.js.map +1 -0
- package/dist/chunk-36HVQ72F.js +123 -0
- package/dist/chunk-36HVQ72F.js.map +1 -0
- package/dist/chunk-3GLYIIFR.js +230 -0
- package/dist/chunk-3GLYIIFR.js.map +1 -0
- package/dist/chunk-3VZ6SFD4.js +8 -0
- package/dist/chunk-3VZ6SFD4.js.map +1 -0
- package/dist/chunk-3WYREXW4.js +120 -0
- package/dist/chunk-3WYREXW4.js.map +1 -0
- package/dist/chunk-3Z7N2NAZ.js +385 -0
- package/dist/chunk-3Z7N2NAZ.js.map +1 -0
- package/dist/chunk-4OV272LF.js +93 -0
- package/dist/chunk-4OV272LF.js.map +1 -0
- package/dist/chunk-4RECPEHI.js +67 -0
- package/dist/chunk-4RECPEHI.js.map +1 -0
- package/dist/chunk-4UB5Z3ZZ.js +68 -0
- package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
- package/dist/chunk-5J6Z4BWY.js +141 -0
- package/dist/chunk-5J6Z4BWY.js.map +1 -0
- package/dist/chunk-5USKCWGL.js +113 -0
- package/dist/chunk-5USKCWGL.js.map +1 -0
- package/dist/chunk-6C6DLP3W.js +31 -0
- package/dist/chunk-6C6DLP3W.js.map +1 -0
- package/dist/chunk-6CDILXF4.js +204 -0
- package/dist/chunk-6CDILXF4.js.map +1 -0
- package/dist/chunk-6VVIW7VB.js +69 -0
- package/dist/chunk-6VVIW7VB.js.map +1 -0
- package/dist/chunk-7AK5I7U7.js +55 -0
- package/dist/chunk-7AK5I7U7.js.map +1 -0
- package/dist/chunk-7K6U6FCN.js +122 -0
- package/dist/chunk-7K6U6FCN.js.map +1 -0
- package/dist/chunk-AMIHGFLP.js +59 -0
- package/dist/chunk-AMIHGFLP.js.map +1 -0
- package/dist/chunk-AN5IWMTM.js +24 -0
- package/dist/chunk-AN5IWMTM.js.map +1 -0
- package/dist/chunk-ATGAJVZ6.js +268 -0
- package/dist/chunk-ATGAJVZ6.js.map +1 -0
- package/dist/chunk-AYPGXR2E.js +20 -0
- package/dist/chunk-AYPGXR2E.js.map +1 -0
- package/dist/chunk-B53PS2LE.js +34 -0
- package/dist/chunk-B53PS2LE.js.map +1 -0
- package/dist/chunk-BKUMG2KB.js +95 -0
- package/dist/chunk-BKUMG2KB.js.map +1 -0
- package/dist/chunk-C26Q6P4Q.js +76 -0
- package/dist/chunk-C26Q6P4Q.js.map +1 -0
- package/dist/chunk-CEJ5FK6G.js +288 -0
- package/dist/chunk-CEJ5FK6G.js.map +1 -0
- package/dist/chunk-CIAUILRR.js +222 -0
- package/dist/chunk-CIAUILRR.js.map +1 -0
- package/dist/chunk-CNM6ZWP2.js +38 -0
- package/dist/chunk-CNM6ZWP2.js.map +1 -0
- package/dist/chunk-CPSGUGAY.js +527 -0
- package/dist/chunk-CPSGUGAY.js.map +1 -0
- package/dist/chunk-CTQUDCY5.js +26 -0
- package/dist/chunk-CTQUDCY5.js.map +1 -0
- package/dist/chunk-CVD5IZGB.js +66 -0
- package/dist/chunk-CVD5IZGB.js.map +1 -0
- package/dist/chunk-D4MXSAMI.js +50 -0
- package/dist/chunk-D4MXSAMI.js.map +1 -0
- package/dist/chunk-D5RGM3XA.js +38 -0
- package/dist/chunk-D5RGM3XA.js.map +1 -0
- package/dist/chunk-DZJ4GBSP.js +59 -0
- package/dist/chunk-DZJ4GBSP.js.map +1 -0
- package/dist/chunk-EIET4QLK.js +51 -0
- package/dist/chunk-EIET4QLK.js.map +1 -0
- package/dist/chunk-EKHDLBRP.js +86 -0
- package/dist/chunk-EKHDLBRP.js.map +1 -0
- package/dist/chunk-EYDXFOSH.js +457 -0
- package/dist/chunk-EYDXFOSH.js.map +1 -0
- package/dist/chunk-G3J7JDP6.js +29 -0
- package/dist/chunk-G3J7JDP6.js.map +1 -0
- package/dist/chunk-GS2QD3N7.js +14 -0
- package/dist/chunk-GS2QD3N7.js.map +1 -0
- package/dist/chunk-GXSX6Q6O.js +42 -0
- package/dist/chunk-GXSX6Q6O.js.map +1 -0
- package/dist/chunk-HDXUHLTQ.js +90 -0
- package/dist/chunk-HDXUHLTQ.js.map +1 -0
- package/dist/chunk-HJXVVFBT.js +108 -0
- package/dist/chunk-HJXVVFBT.js.map +1 -0
- package/dist/chunk-HQZG3OFL.js +158 -0
- package/dist/chunk-HQZG3OFL.js.map +1 -0
- package/dist/chunk-HTERKONR.js +49 -0
- package/dist/chunk-HTERKONR.js.map +1 -0
- package/dist/chunk-HU5IHXCI.js +73 -0
- package/dist/chunk-HU5IHXCI.js.map +1 -0
- package/dist/chunk-IKS72C6P.js +53 -0
- package/dist/chunk-IKS72C6P.js.map +1 -0
- package/dist/chunk-IO27YTL3.js +73 -0
- package/dist/chunk-IO27YTL3.js.map +1 -0
- package/dist/chunk-IQSRHXZR.js +164 -0
- package/dist/chunk-IQSRHXZR.js.map +1 -0
- package/dist/chunk-ITUQC4FW.js +163 -0
- package/dist/chunk-ITUQC4FW.js.map +1 -0
- package/dist/chunk-JCCN3U6X.js +176 -0
- package/dist/chunk-JCCN3U6X.js.map +1 -0
- package/dist/chunk-K57NINLH.js +137 -0
- package/dist/chunk-K57NINLH.js.map +1 -0
- package/dist/chunk-KC6WUSNS.js +34 -0
- package/dist/chunk-KC6WUSNS.js.map +1 -0
- package/dist/chunk-KCS6NJ3O.js +82 -0
- package/dist/chunk-KCS6NJ3O.js.map +1 -0
- package/dist/chunk-KDQZ3E5C.js +75 -0
- package/dist/chunk-KDQZ3E5C.js.map +1 -0
- package/dist/chunk-KH4KEMSP.js +71 -0
- package/dist/chunk-KH4KEMSP.js.map +1 -0
- package/dist/chunk-KK3S5OTW.js +98 -0
- package/dist/chunk-KK3S5OTW.js.map +1 -0
- package/dist/chunk-KPINJHIC.js +122 -0
- package/dist/chunk-KPINJHIC.js.map +1 -0
- package/dist/chunk-LMHN2TJL.js +167 -0
- package/dist/chunk-LMHN2TJL.js.map +1 -0
- package/dist/chunk-LTBVP6VN.js +59 -0
- package/dist/chunk-LTBVP6VN.js.map +1 -0
- package/dist/{chunk-YGN7OMLT.js → chunk-LZUUUHNH.js} +13 -6
- package/dist/chunk-LZUUUHNH.js.map +1 -0
- package/dist/chunk-MHMWQ7RB.js +19 -0
- package/dist/chunk-MHMWQ7RB.js.map +1 -0
- package/dist/chunk-MJ5RU6XT.js +173 -0
- package/dist/chunk-MJ5RU6XT.js.map +1 -0
- package/dist/chunk-MVKHSAKE.js +169 -0
- package/dist/chunk-MVKHSAKE.js.map +1 -0
- package/dist/chunk-NB6POCFH.js +103 -0
- package/dist/chunk-NB6POCFH.js.map +1 -0
- package/dist/chunk-NR6O74ST.js +169 -0
- package/dist/chunk-NR6O74ST.js.map +1 -0
- package/dist/chunk-OHPYT2BH.js +82 -0
- package/dist/chunk-OHPYT2BH.js.map +1 -0
- package/dist/chunk-OQP3PFKQ.js +341 -0
- package/dist/chunk-OQP3PFKQ.js.map +1 -0
- package/dist/chunk-OZ6X76G5.js +547 -0
- package/dist/chunk-OZ6X76G5.js.map +1 -0
- package/dist/chunk-P7EJ4CAD.js +147 -0
- package/dist/chunk-P7EJ4CAD.js.map +1 -0
- package/dist/chunk-QDSZTQXL.js +28 -0
- package/dist/chunk-QDSZTQXL.js.map +1 -0
- package/dist/chunk-QH5KOFNS.js +39 -0
- package/dist/chunk-QH5KOFNS.js.map +1 -0
- package/dist/chunk-QPTJ5DOO.js +87 -0
- package/dist/chunk-QPTJ5DOO.js.map +1 -0
- package/dist/chunk-QYMJHS4K.js +36 -0
- package/dist/chunk-QYMJHS4K.js.map +1 -0
- package/dist/chunk-RMWNO6BA.js +89 -0
- package/dist/chunk-RMWNO6BA.js.map +1 -0
- package/dist/chunk-S2XULQEK.js +52 -0
- package/dist/chunk-S2XULQEK.js.map +1 -0
- package/dist/chunk-S3ECMF23.js +33 -0
- package/dist/chunk-S3ECMF23.js.map +1 -0
- package/dist/chunk-S4Y3YTAI.js +35 -0
- package/dist/chunk-S4Y3YTAI.js.map +1 -0
- package/dist/chunk-S4ZGTDSG.js +18 -0
- package/dist/chunk-S4ZGTDSG.js.map +1 -0
- package/dist/chunk-SCDWURBO.js +136 -0
- package/dist/chunk-SCDWURBO.js.map +1 -0
- package/dist/chunk-SOFPUW3O.js +196 -0
- package/dist/chunk-SOFPUW3O.js.map +1 -0
- package/dist/chunk-SQ5DH66U.js +37 -0
- package/dist/chunk-SQ5DH66U.js.map +1 -0
- package/dist/chunk-T74YB76U.js +547 -0
- package/dist/chunk-T74YB76U.js.map +1 -0
- package/dist/chunk-TI2GV36S.js +90 -0
- package/dist/chunk-TI2GV36S.js.map +1 -0
- package/dist/{chunk-56RJXPHG.js → chunk-TKNVL53O.js} +7 -4
- package/dist/chunk-TKNVL53O.js.map +1 -0
- package/dist/chunk-TNJLNLVE.js +115 -0
- package/dist/chunk-TNJLNLVE.js.map +1 -0
- package/dist/chunk-TUID42UE.js +15 -0
- package/dist/chunk-TUID42UE.js.map +1 -0
- package/dist/chunk-UMNHJSIO.js +848 -0
- package/dist/chunk-UMNHJSIO.js.map +1 -0
- package/dist/chunk-VEME3D7K.js +298 -0
- package/dist/chunk-VEME3D7K.js.map +1 -0
- package/dist/chunk-WPNIKZMJ.js +507 -0
- package/dist/chunk-WPNIKZMJ.js.map +1 -0
- package/dist/chunk-WSEJ2FDE.js +162 -0
- package/dist/chunk-WSEJ2FDE.js.map +1 -0
- package/dist/chunk-WVS6CUCT.js +48 -0
- package/dist/chunk-WVS6CUCT.js.map +1 -0
- package/dist/chunk-XWNXGFX3.js +381 -0
- package/dist/chunk-XWNXGFX3.js.map +1 -0
- package/dist/chunk-Y6KT7ZTR.js +109 -0
- package/dist/chunk-Y6KT7ZTR.js.map +1 -0
- package/dist/chunk-YMUIQRWK.js +44 -0
- package/dist/chunk-YMUIQRWK.js.map +1 -0
- package/dist/chunk-ZCDRLN3B.js +138 -0
- package/dist/chunk-ZCDRLN3B.js.map +1 -0
- package/dist/chunk-ZKKO4MHC.js +25 -0
- package/dist/chunk-ZKKO4MHC.js.map +1 -0
- package/dist/chunk-ZN7KUMPY.js +48 -0
- package/dist/chunk-ZN7KUMPY.js.map +1 -0
- package/dist/chunk-ZNROKDSZ.js +54 -0
- package/dist/chunk-ZNROKDSZ.js.map +1 -0
- package/dist/chunk-ZX2QQJXD.js +249 -0
- package/dist/chunk-ZX2QQJXD.js.map +1 -0
- package/dist/collapsible-panel.d.ts +96 -17
- package/dist/collapsible-panel.js +133 -14
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/color-field.d.ts +51 -0
- package/dist/color-field.js +92 -0
- package/dist/color-field.js.map +1 -0
- package/dist/color-picker.d.ts +113 -0
- package/dist/color-picker.js +8 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/color-swatches.d.ts +56 -0
- package/dist/color-swatches.js +4 -0
- package/dist/color-swatches.js.map +1 -0
- package/dist/column-track.d.ts +41 -0
- package/dist/column-track.js +4 -0
- package/dist/column-track.js.map +1 -0
- package/dist/combobox.d.ts +40 -0
- package/dist/combobox.js +3 -0
- package/dist/combobox.js.map +1 -0
- package/dist/content-item.d.ts +128 -0
- package/dist/content-item.js +4 -0
- package/dist/content-item.js.map +1 -0
- package/dist/content-swap.d.ts +34 -0
- package/dist/content-swap.js +3 -0
- package/dist/content-swap.js.map +1 -0
- package/dist/corner-status.d.ts +36 -0
- package/dist/corner-status.js +3 -0
- package/dist/corner-status.js.map +1 -0
- package/dist/css-values.d.ts +127 -0
- package/dist/css-values.js +3 -0
- package/dist/css-values.js.map +1 -0
- package/dist/device-class.js +34 -6
- package/dist/device-class.js.map +1 -1
- package/dist/disclosure-arrow.d.ts +6 -1
- package/dist/disclosure-arrow.js +2 -1
- package/dist/disclosure.d.ts +66 -0
- package/dist/disclosure.js +51 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/edge-activity-indicator.d.ts +28 -0
- package/dist/edge-activity-indicator.js +3 -0
- package/dist/edge-activity-indicator.js.map +1 -0
- package/dist/empty-state.d.ts +5 -2
- package/dist/empty-state.js +2 -1
- package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
- package/dist/file-picker.d.ts +54 -0
- package/dist/file-picker.js +3 -0
- package/dist/file-picker.js.map +1 -0
- package/dist/flex-alignment-4ms8ZbV8.d.ts +5 -0
- package/dist/floating-toolbar.d.ts +29 -6
- package/dist/floating-toolbar.js +1 -1
- package/dist/framed-list.d.ts +47 -0
- package/dist/framed-list.js +4 -0
- package/dist/framed-list.js.map +1 -0
- package/dist/grid.d.ts +58 -0
- package/dist/grid.js +6 -0
- package/dist/grid.js.map +1 -0
- package/dist/help-tags-register.d.ts +13 -0
- package/dist/help-tags-register.js +10 -0
- package/dist/help-tags-register.js.map +1 -0
- package/dist/index.d.ts +72 -17
- package/dist/index.js +84 -25
- package/dist/list-action-row.d.ts +69 -12
- package/dist/list-action-row.js +8 -1
- package/dist/list-detail-dialog.d.ts +123 -0
- package/dist/list-detail-dialog.js +167 -0
- package/dist/list-detail-dialog.js.map +1 -0
- package/dist/list-header.d.ts +72 -10
- package/dist/list-header.js +4 -1
- package/dist/list-icon-tile-B8dr97OW.d.ts +18 -0
- package/dist/list-inset-control.d.ts +22 -0
- package/dist/list-inset-control.js +3 -0
- package/dist/list-inset-control.js.map +1 -0
- package/dist/list-inset-text.d.ts +30 -0
- package/dist/list-inset-text.js +4 -0
- package/dist/list-inset-text.js.map +1 -0
- package/dist/list-item.d.ts +49 -5
- package/dist/list-item.js +4 -1
- package/dist/list.d.ts +149 -0
- package/dist/list.js +7 -0
- package/dist/list.js.map +1 -0
- package/dist/loading-spinner.d.ts +12 -2
- package/dist/loading-spinner.js +2 -1
- package/dist/lucide-icon.d.ts +23 -3
- package/dist/lucide-icon.js +2 -1
- package/dist/message-composer.d.ts +70 -0
- package/dist/message-composer.js +6 -0
- package/dist/message-composer.js.map +1 -0
- package/dist/nav-stack-CU_0dKtI.d.ts +194 -0
- package/dist/nav-stack.d.ts +15 -38
- package/dist/nav-stack.js +14 -1
- package/dist/pane.d.ts +258 -0
- package/dist/pane.js +6 -0
- package/dist/pane.js.map +1 -0
- package/dist/panel-toolbar-vg6Ir5Dy.d.ts +77 -0
- package/dist/popup-menu-register.d.ts +11 -0
- package/dist/popup-menu-register.js +13 -0
- package/dist/popup-menu-register.js.map +1 -0
- package/dist/popup-menu.d.ts +153 -0
- package/dist/popup-menu.js +7 -0
- package/dist/popup-menu.js.map +1 -0
- package/dist/progress-bar.d.ts +52 -0
- package/dist/progress-bar.js +68 -0
- package/dist/progress-bar.js.map +1 -0
- package/dist/progress-ring.d.ts +44 -0
- package/dist/progress-ring.js +73 -0
- package/dist/progress-ring.js.map +1 -0
- package/dist/radio-group.d.ts +62 -0
- package/dist/radio-group.js +4 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/resizable-region.d.ts +32 -3
- package/dist/resizable-region.js +1 -1
- package/dist/row.d.ts +53 -0
- package/dist/row.js +7 -0
- package/dist/row.js.map +1 -0
- package/dist/scroll-clearance-BikHljTc.d.ts +14 -0
- package/dist/search-field-CrGTN5sa.d.ts +208 -0
- package/dist/search-field-model.d.ts +3 -0
- package/dist/search-field-model.js +3 -0
- package/dist/search-field-model.js.map +1 -0
- package/dist/search-field.d.ts +3 -0
- package/dist/search-field.js +5 -0
- package/dist/search-field.js.map +1 -0
- package/dist/segmented-control.d.ts +14 -9
- package/dist/segmented-control.js +1 -2
- package/dist/select-register.d.ts +6 -3
- package/dist/select-register.js +402 -8
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +128 -9
- package/dist/select.js +6 -1
- package/dist/selection.d.ts +54 -0
- package/dist/selection.js +3 -0
- package/dist/selection.js.map +1 -0
- package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
- package/dist/semantic-tone-CdW013KF.d.ts +4 -0
- package/dist/sides-BPSWde0A.d.ts +4 -0
- package/dist/skeleton.d.ts +14 -7
- package/dist/skeleton.js +2 -1
- package/dist/slider.d.ts +74 -0
- package/dist/slider.js +103 -0
- package/dist/slider.js.map +1 -0
- package/dist/spacer.d.ts +18 -0
- package/dist/spacer.js +4 -0
- package/dist/spacer.js.map +1 -0
- package/dist/split-button.d.ts +69 -0
- package/dist/split-button.js +7 -0
- package/dist/split-button.js.map +1 -0
- package/dist/split-view.d.ts +66 -6
- package/dist/split-view.js +14 -15
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +41 -7
- package/dist/state-banner.js +4 -1
- package/dist/styles/anchored-surface.css +44 -0
- package/dist/styles/backdrop-image.css +241 -0
- package/dist/styles/badge.css +157 -0
- package/dist/styles/button.css +293 -0
- package/dist/styles/catalog/components/catalog-example-stack.css +14 -0
- package/dist/styles/catalog/components/catalog-example.css +250 -0
- package/dist/styles/catalog/components/catalog-stage.css +61 -0
- package/dist/styles/catalog/components/catalog.css +26 -0
- package/dist/styles/catalog.css +5 -522
- package/dist/styles/checkbox-group.css +63 -0
- package/dist/styles/checkbox.css +122 -0
- package/dist/styles/chip.css +234 -0
- package/dist/styles/choice-chips.css +205 -0
- package/dist/styles/collapsible-panel.css +450 -16
- package/dist/styles/color-field.css +125 -0
- package/dist/styles/color-picker.css +366 -0
- package/dist/styles/color-swatches.css +122 -0
- package/dist/styles/column-track.css +57 -0
- package/dist/styles/combobox.css +115 -0
- package/dist/styles/components/actions/button/button.css +293 -0
- package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
- package/dist/styles/components/actions/popup-menu/popup-menu.css +498 -0
- package/dist/styles/components/actions/split-button/split-button.css +141 -0
- package/dist/styles/components/actions/toolbar/toolbar.css +483 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +1188 -0
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +256 -0
- package/dist/styles/components/collections/framed-list/framed-list.css +53 -0
- package/dist/styles/components/collections/list/list.css +293 -0
- package/dist/styles/components/collections/list-action-row/list-action-row.css +466 -0
- package/dist/styles/components/collections/list-header/list-header.css +236 -0
- package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
- package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
- package/dist/styles/components/collections/list-item/list-item.css +461 -0
- package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
- package/dist/styles/components/data-display/value-table/value-table.css +183 -0
- package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +44 -0
- package/dist/styles/components/feedback/badge/badge.css +157 -0
- package/dist/styles/components/feedback/chip/chip.css +234 -0
- package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
- package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
- package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
- package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
- package/dist/styles/components/feedback/progress-bar/progress-bar.css +168 -0
- package/dist/styles/components/feedback/progress-ring/progress-ring.css +91 -0
- package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
- package/dist/styles/components/feedback/state-banner/state-banner.css +312 -0
- package/dist/styles/components/forms/checkbox/checkbox.css +122 -0
- package/dist/styles/components/forms/checkbox-group/checkbox-group.css +63 -0
- package/dist/styles/components/forms/choice-chips/choice-chips.css +205 -0
- package/dist/styles/components/forms/color-field/color-field.css +125 -0
- package/dist/styles/components/forms/color-picker/color-picker.css +366 -0
- package/dist/styles/components/forms/color-swatches/color-swatches.css +122 -0
- package/dist/styles/components/forms/combobox/combobox.css +115 -0
- package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
- package/dist/styles/components/forms/message-composer/message-composer.css +84 -0
- package/dist/styles/components/forms/radio-group/radio-group.css +158 -0
- package/dist/styles/components/forms/search-field/search-field.css +441 -0
- package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
- package/dist/styles/components/forms/select/select.css +580 -0
- package/dist/styles/components/forms/slider/slider.css +241 -0
- package/dist/styles/components/forms/switch/switch.css +132 -0
- package/dist/styles/components/forms/tag-field/tag-field.css +8 -0
- package/dist/styles/components/forms/text-field/text-field.css +193 -0
- package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
- package/dist/styles/components/layout/column-track/column-track.css +57 -0
- package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
- package/dist/styles/components/layout/grid/grid.css +88 -0
- package/dist/styles/components/layout/pane/pane.css +780 -0
- package/dist/styles/components/layout/resizable-region/resizable-region.css +546 -0
- package/dist/styles/components/layout/row/row.css +125 -0
- package/dist/styles/components/layout/spacer/spacer.css +11 -0
- package/dist/styles/components/layout/split-view/split-view.css +171 -0
- package/dist/styles/components/layout/workbench/workbench.css +1098 -0
- package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
- package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +43 -0
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +619 -0
- package/dist/styles/components/navigation/tab-bar/tab-bar.css +203 -0
- package/dist/styles/components/navigation/tab-bar-item/tab-bar-item.css +389 -0
- package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +460 -0
- package/dist/styles/components/surfaces/backdrop-image/backdrop-image.css +241 -0
- package/dist/styles/components/surfaces/content-item/content-item.css +168 -0
- package/dist/styles/components/surfaces/disclosure/disclosure.css +136 -0
- package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +34 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +744 -0
- package/dist/styles/components/typography/text/text.css +232 -0
- package/dist/styles/content-item.css +168 -0
- package/dist/styles/content-swap.css +154 -0
- package/dist/styles/corner-status.css +60 -0
- package/dist/styles/disclosure-arrow.css +20 -0
- package/dist/styles/disclosure.css +136 -0
- package/dist/styles/document.css +98 -0
- package/dist/styles/edge-activity-indicator.css +127 -0
- package/dist/styles/file-picker.css +81 -0
- package/dist/styles/floating-toolbar.css +87 -6
- package/dist/styles/foundation.css +490 -50
- package/dist/styles/framed-list.css +53 -0
- package/dist/styles/grid.css +88 -0
- package/dist/styles/layout.css +3 -41
- package/dist/styles/list-action-row.css +324 -18
- package/dist/styles/list-detail-dialog.css +11 -0
- package/dist/styles/list-header.css +135 -59
- package/dist/styles/list-inset-control.css +30 -0
- package/dist/styles/list-inset-text.css +29 -0
- package/dist/styles/list-item.css +371 -33
- package/dist/styles/list.css +293 -0
- package/dist/styles/loading-spinner.css +4 -0
- package/dist/styles/lucide-icon.css +9 -0
- package/dist/styles/message-composer.css +84 -0
- package/dist/styles/nav-stack.css +555 -47
- package/dist/styles/overlay-sheet.css +211 -0
- package/dist/styles/overlay-toast.css +149 -0
- package/dist/styles/overlay-tooltip.css +55 -0
- package/dist/styles/pane.css +780 -0
- package/dist/styles/popup-menu.css +498 -0
- package/dist/styles/progress-bar.css +168 -0
- package/dist/styles/progress-ring.css +91 -0
- package/dist/styles/radio-group.css +158 -0
- package/dist/styles/resizable-region.css +439 -4
- package/dist/styles/row.css +125 -0
- package/dist/styles/search-field.css +441 -0
- package/dist/styles/segmented-control.css +36 -9
- package/dist/styles/select.css +516 -74
- package/dist/styles/skeleton.css +64 -3
- package/dist/styles/slider.css +241 -0
- package/dist/styles/spacer.css +11 -0
- package/dist/styles/split-button.css +141 -0
- package/dist/styles/split-view.css +139 -3
- package/dist/styles/state-banner.css +164 -25
- package/dist/styles/styles.css +38 -3
- package/dist/styles/summary-row.css +161 -0
- package/dist/styles/sunken-panel.css +34 -0
- package/dist/styles/surface-scaffold.css +744 -0
- package/dist/styles/switch.css +132 -0
- package/dist/styles/tab-bar-item.css +389 -0
- package/dist/styles/tab-bar.css +167 -9
- package/dist/styles/tab-navigator.css +460 -0
- package/dist/styles/tag-field.css +8 -0
- package/dist/styles/text-field.css +193 -0
- package/dist/styles/text.css +232 -0
- package/dist/styles/toolbar-control-group.css +1000 -37
- package/dist/styles/toolbar-text.css +223 -7
- package/dist/styles/toolbar.css +433 -11
- package/dist/styles/value-table.css +115 -7
- package/dist/styles/webawesome.css +474 -18
- package/dist/styles/workbench-dialog.css +10 -0
- package/dist/styles/workbench.css +1011 -7
- package/dist/summary-row.d.ts +56 -0
- package/dist/summary-row.js +4 -0
- package/dist/summary-row.js.map +1 -0
- package/dist/sunken-panel.d.ts +38 -0
- package/dist/sunken-panel.js +4 -0
- package/dist/sunken-panel.js.map +1 -0
- package/dist/surface-scaffold-register.d.ts +12 -0
- package/dist/surface-scaffold-register.js +10 -0
- package/dist/surface-scaffold-register.js.map +1 -0
- package/dist/surface-scaffold.d.ts +280 -0
- package/dist/surface-scaffold.js +8 -0
- package/dist/surface-scaffold.js.map +1 -0
- package/dist/switch.d.ts +38 -0
- package/dist/switch.js +4 -0
- package/dist/switch.js.map +1 -0
- package/dist/tab-bar-item.d.ts +65 -0
- package/dist/tab-bar-item.js +6 -0
- package/dist/tab-bar-item.js.map +1 -0
- package/dist/tab-bar.d.ts +33 -7
- package/dist/tab-bar.js +1 -1
- package/dist/tab-navigator.d.ts +154 -0
- package/dist/tab-navigator.js +131 -0
- package/dist/tab-navigator.js.map +1 -0
- package/dist/tag-field.d.ts +52 -0
- package/dist/tag-field.js +6 -0
- package/dist/tag-field.js.map +1 -0
- package/dist/text-field.d.ts +91 -0
- package/dist/text-field.js +6 -0
- package/dist/text-field.js.map +1 -0
- package/dist/text.d.ts +103 -0
- package/dist/text.js +3 -0
- package/dist/text.js.map +1 -0
- package/dist/toolbar-control-group.d.ts +112 -8
- package/dist/toolbar-control-group.js +3 -1
- package/dist/toolbar-text.d.ts +63 -9
- package/dist/toolbar-text.js +2 -1
- package/dist/toolbar.d.ts +77 -7
- package/dist/toolbar.js +1 -1
- package/dist/types-DmHWkSd6.d.ts +207 -0
- package/dist/value-table.d.ts +30 -4
- package/dist/value-table.js +2 -1
- package/dist/webawesome.d.ts +11 -1
- package/dist/wire-catalog.d.ts +117 -5
- package/dist/wire-catalog.js +314 -14
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-checkboxes.d.ts +10 -0
- package/dist/wire-checkboxes.js +3 -0
- package/dist/{wire-token-search-fields.js.map → wire-checkboxes.js.map} +1 -1
- package/dist/wire-choice-chips.d.ts +17 -0
- package/dist/wire-choice-chips.js +4 -0
- package/dist/wire-choice-chips.js.map +1 -0
- package/dist/wire-color-fields.d.ts +33 -0
- package/dist/wire-color-fields.js +82 -0
- package/dist/wire-color-fields.js.map +1 -0
- package/dist/wire-color-pickers.d.ts +35 -0
- package/dist/wire-color-pickers.js +9 -0
- package/dist/wire-color-pickers.js.map +1 -0
- package/dist/wire-comboboxes.d.ts +26 -0
- package/dist/wire-comboboxes.js +4 -0
- package/dist/wire-comboboxes.js.map +1 -0
- package/dist/wire-content-items.d.ts +15 -0
- package/dist/wire-content-items.js +208 -0
- package/dist/wire-content-items.js.map +1 -0
- package/dist/wire-corner-status.d.ts +11 -0
- package/dist/wire-corner-status.js +3 -0
- package/dist/wire-corner-status.js.map +1 -0
- package/dist/wire-file-pickers.d.ts +27 -0
- package/dist/wire-file-pickers.js +3 -0
- package/dist/wire-file-pickers.js.map +1 -0
- package/dist/wire-list-focus-scroll.d.ts +16 -0
- package/dist/wire-list-focus-scroll.js +3 -0
- package/dist/wire-list-focus-scroll.js.map +1 -0
- package/dist/wire-list-reorder.d.ts +41 -0
- package/dist/wire-list-reorder.js +3 -0
- package/dist/wire-list-reorder.js.map +1 -0
- package/dist/wire-message-composers.d.ts +17 -0
- package/dist/wire-message-composers.js +3 -0
- package/dist/wire-message-composers.js.map +1 -0
- package/dist/wire-nav-stack.d.ts +4 -1
- package/dist/wire-nav-stack.js +352 -15
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-overlay-sheets.d.ts +20 -0
- package/dist/wire-overlay-sheets.js +4 -0
- package/dist/wire-overlay-sheets.js.map +1 -0
- package/dist/wire-pane-chrome.d.ts +21 -0
- package/dist/wire-pane-chrome.js +67 -0
- package/dist/wire-pane-chrome.js.map +1 -0
- package/dist/wire-resizable-regions.d.ts +2 -1
- package/dist/wire-resizable-regions.js +2 -1
- package/dist/wire-scroll-dividers.d.ts +87 -0
- package/dist/wire-scroll-dividers.js +3 -0
- package/dist/wire-scroll-dividers.js.map +1 -0
- package/dist/{wire-token-search-fields.d.ts → wire-search-fields.d.ts} +34 -25
- package/dist/wire-search-fields.js +6 -0
- package/dist/wire-search-fields.js.map +1 -0
- package/dist/wire-sidebar.d.ts +24 -4
- package/dist/wire-sidebar.js +159 -45
- package/dist/wire-sidebar.js.map +1 -1
- package/dist/wire-sliders.d.ts +12 -0
- package/dist/wire-sliders.js +31 -0
- package/dist/wire-sliders.js.map +1 -0
- package/dist/wire-tab-bars.d.ts +6 -2
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-tab-navigator.d.ts +13 -0
- package/dist/wire-tab-navigator.js +153 -0
- package/dist/wire-tab-navigator.js.map +1 -0
- package/dist/wire-tag-fields.d.ts +41 -0
- package/dist/wire-tag-fields.js +258 -0
- package/dist/wire-tag-fields.js.map +1 -0
- package/dist/wire-text-fields.d.ts +12 -0
- package/dist/wire-text-fields.js +3 -0
- package/dist/wire-text-fields.js.map +1 -0
- package/dist/wire-toolbar-visibility.d.ts +13 -0
- package/dist/wire-toolbar-visibility.js +3 -0
- package/dist/wire-toolbar-visibility.js.map +1 -0
- package/dist/wire-workbench.d.ts +116 -0
- package/dist/wire-workbench.js +6 -0
- package/dist/wire-workbench.js.map +1 -0
- package/dist/workbench-dialog.d.ts +106 -0
- package/dist/workbench-dialog.js +127 -0
- package/dist/workbench-dialog.js.map +1 -0
- package/dist/workbench.d.ts +258 -10
- package/dist/workbench.js +21 -15
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +829 -41
- package/docs/anchored-surface.md +107 -0
- package/docs/app-layouts.md +200 -10
- package/docs/apple-hig.md +2 -0
- package/docs/backdrop-image.md +128 -0
- package/docs/catalog.md +599 -63
- package/docs/collapsible-panel.md +308 -25
- package/docs/color-field.md +65 -0
- package/docs/color-picker.md +102 -0
- package/docs/color-swatches.md +46 -0
- package/docs/component-contract.md +865 -57
- package/docs/component-integration.md +75 -0
- package/docs/component-selection.md +1124 -108
- package/docs/design/templates/button/emphasis-dark.svg +1 -0
- package/docs/design/templates/button/emphasis.svg +1 -0
- package/docs/design/templates/button/full-width-dark.svg +1 -0
- package/docs/design/templates/button/full-width.svg +1 -0
- package/docs/design/templates/button/icons-dark.svg +1 -0
- package/docs/design/templates/button/icons.svg +1 -0
- package/docs/design/templates/button/pill-dark.svg +1 -0
- package/docs/design/templates/button/pill.svg +1 -0
- package/docs/design/templates/button/states-dark.svg +1 -0
- package/docs/design/templates/button/states.svg +1 -0
- package/docs/design/templates/button/toggles-dark.svg +1 -0
- package/docs/design/templates/button/toggles.svg +1 -0
- package/docs/design/templates/button/tones-dark.svg +1 -0
- package/docs/design/templates/button/tones.svg +1 -0
- package/docs/design/templates/button-dark.svg +1 -0
- package/docs/design/templates/button.svg +1 -0
- package/docs/design/templates/checkbox/compact-dark.svg +1 -0
- package/docs/design/templates/checkbox/compact.svg +1 -0
- package/docs/design/templates/checkbox/error-dark.svg +1 -0
- package/docs/design/templates/checkbox/error.svg +1 -0
- package/docs/design/templates/checkbox/mixed-dark.svg +1 -0
- package/docs/design/templates/checkbox/mixed.svg +1 -0
- package/docs/design/templates/checkbox/states-dark.svg +1 -0
- package/docs/design/templates/checkbox/states.svg +1 -0
- package/docs/design/templates/checkbox-dark.svg +1 -0
- package/docs/design/templates/checkbox-group/horizontal-dark.svg +1 -0
- package/docs/design/templates/checkbox-group/horizontal.svg +1 -0
- package/docs/design/templates/checkbox-group/vertical-dark.svg +1 -0
- package/docs/design/templates/checkbox-group/vertical.svg +1 -0
- package/docs/design/templates/checkbox-group-dark.svg +1 -0
- package/docs/design/templates/checkbox-group.svg +1 -0
- package/docs/design/templates/checkbox.svg +1 -0
- package/docs/design/templates/chip/action-filters-dark.svg +1 -0
- package/docs/design/templates/chip/action-filters.svg +1 -0
- package/docs/design/templates/chip/tags-dark.svg +1 -0
- package/docs/design/templates/chip/tags.svg +1 -0
- package/docs/design/templates/chip-dark.svg +1 -0
- package/docs/design/templates/chip.svg +1 -0
- package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
- package/docs/design/templates/choice-chips/color-palette.svg +1 -0
- package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
- package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
- package/docs/design/templates/choice-chips/multiple-dark.svg +1 -0
- package/docs/design/templates/choice-chips/multiple.svg +1 -0
- package/docs/design/templates/choice-chips-dark.svg +1 -0
- package/docs/design/templates/choice-chips.svg +1 -0
- package/docs/design/templates/color-field/compact-dark.svg +1 -0
- package/docs/design/templates/color-field/compact.svg +1 -0
- package/docs/design/templates/color-field/error-dark.svg +1 -0
- package/docs/design/templates/color-field/error.svg +1 -0
- package/docs/design/templates/color-field/hint-dark.svg +1 -0
- package/docs/design/templates/color-field/hint.svg +1 -0
- package/docs/design/templates/color-field-dark.svg +1 -0
- package/docs/design/templates/color-field.svg +1 -0
- package/docs/design/templates/color-picker/gray-dark.svg +1 -0
- package/docs/design/templates/color-picker/gray.svg +1 -0
- package/docs/design/templates/color-picker/hsb-dark.svg +1 -0
- package/docs/design/templates/color-picker/hsb.svg +1 -0
- package/docs/design/templates/color-picker/rgb-dark.svg +1 -0
- package/docs/design/templates/color-picker/rgb.svg +1 -0
- package/docs/design/templates/color-picker-dark.svg +1 -0
- package/docs/design/templates/color-picker.svg +1 -0
- package/docs/design/templates/color-swatches/palette-dark.svg +1 -0
- package/docs/design/templates/color-swatches/palette.svg +1 -0
- package/docs/design/templates/color-swatches-dark.svg +1 -0
- package/docs/design/templates/color-swatches.svg +1 -0
- package/docs/design/templates/disclosure/embedded-dark.svg +1 -0
- package/docs/design/templates/disclosure/embedded.svg +1 -0
- package/docs/design/templates/disclosure/framed-sunken-dark.svg +1 -0
- package/docs/design/templates/disclosure/framed-sunken.svg +1 -0
- package/docs/design/templates/disclosure/plain-dark.svg +1 -0
- package/docs/design/templates/disclosure/plain.svg +1 -0
- package/docs/design/templates/disclosure-dark.svg +1 -0
- package/docs/design/templates/disclosure.svg +1 -0
- package/docs/design/templates/empty-state/filtered-dark.svg +1 -1
- package/docs/design/templates/empty-state/filtered.svg +1 -1
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
- package/docs/design/templates/empty-state/with-action.svg +1 -1
- package/docs/design/templates/empty-state-dark.svg +1 -7
- package/docs/design/templates/empty-state.svg +1 -7
- package/docs/design/templates/list/compact-dark.svg +1 -0
- package/docs/design/templates/list/compact.svg +1 -0
- package/docs/design/templates/list/stack-dark.svg +1 -0
- package/docs/design/templates/list/stack.svg +1 -0
- package/docs/design/templates/list-action-row/default-dark.svg +1 -1
- package/docs/design/templates/list-action-row/default.svg +1 -1
- package/docs/design/templates/list-action-row/icon-tile-dark.svg +1 -0
- package/docs/design/templates/list-action-row/icon-tile.svg +1 -0
- package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
- package/docs/design/templates/list-action-row/selected.svg +1 -1
- package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
- package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
- package/docs/design/templates/list-action-row-dark.svg +1 -7
- package/docs/design/templates/list-action-row.svg +1 -7
- package/docs/design/templates/list-dark.svg +1 -0
- package/docs/design/templates/list-header/action-dark.svg +1 -1
- package/docs/design/templates/list-header/action.svg +1 -1
- package/docs/design/templates/list-header/count-dark.svg +1 -1
- package/docs/design/templates/list-header/count.svg +1 -1
- package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
- package/docs/design/templates/list-header/inline-action.svg +1 -0
- package/docs/design/templates/list-header/size-l-dark.svg +1 -0
- package/docs/design/templates/list-header/size-l.svg +1 -0
- package/docs/design/templates/list-header/size-m-dark.svg +1 -0
- package/docs/design/templates/list-header/size-m.svg +1 -0
- package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
- package/docs/design/templates/list-header/size-xl.svg +1 -0
- package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
- package/docs/design/templates/list-header/size-xs.svg +1 -0
- package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-collapsed.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
- package/docs/design/templates/list-header-dark.svg +1 -11
- package/docs/design/templates/list-header.svg +1 -11
- package/docs/design/templates/list-item/default-dark.svg +1 -1
- package/docs/design/templates/list-item/default.svg +1 -1
- package/docs/design/templates/list-item/icon-tile-dark.svg +1 -0
- package/docs/design/templates/list-item/icon-tile.svg +1 -0
- package/docs/design/templates/list-item/multiline-dark.svg +1 -1
- package/docs/design/templates/list-item/multiline.svg +1 -1
- package/docs/design/templates/list-item/selected-dark.svg +1 -1
- package/docs/design/templates/list-item/selected.svg +1 -1
- package/docs/design/templates/list-item/trailing-dark.svg +1 -1
- package/docs/design/templates/list-item/trailing.svg +1 -1
- package/docs/design/templates/list-item-dark.svg +1 -11
- package/docs/design/templates/list-item.svg +1 -11
- package/docs/design/templates/list.svg +1 -0
- package/docs/design/templates/message-composer/chat-dark.svg +1 -0
- package/docs/design/templates/message-composer/chat.svg +1 -0
- package/docs/design/templates/message-composer/prompt-dark.svg +1 -0
- package/docs/design/templates/message-composer/prompt.svg +1 -0
- package/docs/design/templates/message-composer-dark.svg +1 -0
- package/docs/design/templates/message-composer.svg +1 -0
- package/docs/design/templates/progress-bar/determinate-dark.svg +1 -0
- package/docs/design/templates/progress-bar/determinate.svg +1 -0
- package/docs/design/templates/progress-bar/tones-dark.svg +1 -0
- package/docs/design/templates/progress-bar/tones.svg +1 -0
- package/docs/design/templates/progress-bar-dark.svg +1 -0
- package/docs/design/templates/progress-bar.svg +1 -0
- package/docs/design/templates/progress-ring/sizes-dark.svg +1 -0
- package/docs/design/templates/progress-ring/sizes.svg +1 -0
- package/docs/design/templates/progress-ring/tones-dark.svg +1 -0
- package/docs/design/templates/progress-ring/tones.svg +1 -0
- package/docs/design/templates/progress-ring-dark.svg +1 -0
- package/docs/design/templates/progress-ring.svg +1 -0
- package/docs/design/templates/radio-group/horizontal-dark.svg +1 -0
- package/docs/design/templates/radio-group/horizontal.svg +1 -0
- package/docs/design/templates/radio-group/vertical-dark.svg +1 -0
- package/docs/design/templates/radio-group/vertical.svg +1 -0
- package/docs/design/templates/radio-group-dark.svg +1 -0
- package/docs/design/templates/radio-group.svg +1 -0
- package/docs/design/templates/search-field/empty-dark.svg +1 -0
- package/docs/design/templates/search-field/empty.svg +1 -0
- package/docs/design/templates/search-field/tokens-dark.svg +1 -0
- package/docs/design/templates/search-field/tokens.svg +1 -0
- package/docs/design/templates/search-field-dark.svg +1 -0
- package/docs/design/templates/search-field.svg +1 -0
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
- package/docs/design/templates/segmented-control/equal.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small.svg +1 -1
- package/docs/design/templates/segmented-control-dark.svg +1 -7
- package/docs/design/templates/segmented-control.svg +1 -7
- package/docs/design/templates/select/compact-dark.svg +1 -0
- package/docs/design/templates/select/compact.svg +1 -0
- package/docs/design/templates/select/form-dark.svg +1 -0
- package/docs/design/templates/select/form.svg +1 -0
- package/docs/design/templates/select/icons-dark.svg +1 -0
- package/docs/design/templates/select/icons.svg +1 -0
- package/docs/design/templates/select-dark.svg +1 -0
- package/docs/design/templates/select.svg +1 -0
- package/docs/design/templates/skeleton-dark.svg +1 -9
- package/docs/design/templates/skeleton.svg +1 -9
- package/docs/design/templates/slider/compact-dark.svg +1 -0
- package/docs/design/templates/slider/compact.svg +1 -0
- package/docs/design/templates/slider/readout-dark.svg +1 -0
- package/docs/design/templates/slider/readout.svg +1 -0
- package/docs/design/templates/slider/ticks-dark.svg +1 -0
- package/docs/design/templates/slider/ticks.svg +1 -0
- package/docs/design/templates/slider-dark.svg +1 -0
- package/docs/design/templates/slider.svg +1 -0
- package/docs/design/templates/split-button/full-width-dark.svg +1 -0
- package/docs/design/templates/split-button/full-width.svg +1 -0
- package/docs/design/templates/split-button/pill-dark.svg +1 -0
- package/docs/design/templates/split-button/pill.svg +1 -0
- package/docs/design/templates/split-button/states-dark.svg +1 -0
- package/docs/design/templates/split-button/states.svg +1 -0
- package/docs/design/templates/split-button/tones-dark.svg +1 -0
- package/docs/design/templates/split-button/tones.svg +1 -0
- package/docs/design/templates/split-button-dark.svg +1 -0
- package/docs/design/templates/split-button.svg +1 -0
- package/docs/design/templates/state-banner/danger-dark.svg +1 -1
- package/docs/design/templates/state-banner/danger.svg +1 -1
- package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
- package/docs/design/templates/state-banner/info-badge.svg +1 -0
- package/docs/design/templates/state-banner/info-dark.svg +1 -1
- package/docs/design/templates/state-banner/info.svg +1 -1
- package/docs/design/templates/state-banner/strip-dark.svg +1 -0
- package/docs/design/templates/state-banner/strip.svg +1 -0
- package/docs/design/templates/state-banner/success-dark.svg +1 -1
- package/docs/design/templates/state-banner/success.svg +1 -1
- package/docs/design/templates/state-banner/warning-dark.svg +1 -1
- package/docs/design/templates/state-banner/warning.svg +1 -1
- package/docs/design/templates/state-banner-dark.svg +1 -11
- package/docs/design/templates/state-banner.svg +1 -11
- package/docs/design/templates/switch/compact-dark.svg +1 -0
- package/docs/design/templates/switch/compact.svg +1 -0
- package/docs/design/templates/switch/states-dark.svg +1 -0
- package/docs/design/templates/switch/states.svg +1 -0
- package/docs/design/templates/switch-dark.svg +1 -0
- package/docs/design/templates/switch.svg +1 -0
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
- package/docs/design/templates/tab-bar-dark.svg +1 -5
- package/docs/design/templates/tab-bar.svg +1 -5
- package/docs/design/templates/tag-field/error-dark.svg +1 -0
- package/docs/design/templates/tag-field/error.svg +1 -0
- package/docs/design/templates/tag-field/tags-dark.svg +1 -0
- package/docs/design/templates/tag-field/tags.svg +1 -0
- package/docs/design/templates/tag-field-dark.svg +1 -0
- package/docs/design/templates/tag-field.svg +1 -0
- package/docs/design/templates/text-field/compact-dark.svg +1 -0
- package/docs/design/templates/text-field/compact.svg +1 -0
- package/docs/design/templates/text-field/error-dark.svg +1 -0
- package/docs/design/templates/text-field/error.svg +1 -0
- package/docs/design/templates/text-field/labeled-dark.svg +1 -0
- package/docs/design/templates/text-field/labeled.svg +1 -0
- package/docs/design/templates/text-field/multiline-dark.svg +1 -0
- package/docs/design/templates/text-field/multiline.svg +1 -0
- package/docs/design/templates/text-field/number-dark.svg +1 -0
- package/docs/design/templates/text-field/number.svg +1 -0
- package/docs/design/templates/text-field/search-dark.svg +1 -0
- package/docs/design/templates/text-field/search.svg +1 -0
- package/docs/design/templates/text-field-dark.svg +1 -0
- package/docs/design/templates/text-field.svg +1 -0
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
- package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
- package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -1
- package/docs/design/templates/toolbar-control-group/glass-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/glass.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -1
- package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
- package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
- package/docs/design/templates/toolbar-control-group-dark.svg +1 -11
- package/docs/design/templates/toolbar-control-group.svg +1 -11
- package/docs/design/templates/toolbar-dark.svg +1 -5
- package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
- package/docs/design/templates/toolbar-text/default-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default.svg +1 -1
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/large.svg +1 -1
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/small.svg +1 -1
- package/docs/design/templates/toolbar-text-dark.svg +1 -9
- package/docs/design/templates/toolbar-text.svg +1 -9
- package/docs/design/templates/toolbar.svg +1 -5
- package/docs/design/templates/value-table/details-dark.svg +1 -1
- package/docs/design/templates/value-table/details.svg +1 -1
- package/docs/design/templates/value-table-dark.svg +1 -5
- package/docs/design/templates/value-table.svg +1 -5
- package/docs/design/templates.md +87 -33
- package/docs/design-philosophy.md +65 -20
- package/docs/device-class.md +10 -9
- package/docs/disclosure.md +97 -0
- package/docs/document-baseline.md +93 -0
- package/docs/examples/application-ui-profile.json +60 -0
- package/docs/examples/command-palette-adapter.tsx +69 -17
- package/docs/examples/component-catalog-extension.json +52 -0
- package/docs/examples/component-composition-extension.json +80 -0
- package/docs/layout.md +946 -53
- package/docs/list-detail-dialog.md +100 -0
- package/docs/manual-test-plan.md +29 -0
- package/docs/message-composer.md +156 -0
- package/docs/nav-stack.md +327 -14
- package/docs/overlay-toast.md +62 -0
- package/docs/overlay-tooltip.md +53 -0
- package/docs/progress.md +62 -0
- package/docs/recipes.md +147 -73
- package/docs/slider.md +64 -0
- package/docs/split-view.md +96 -7
- package/docs/sunken-panel.md +106 -0
- package/docs/surface-scaffold.md +487 -0
- package/docs/tab-navigator.md +291 -0
- package/docs/tag-field.md +66 -0
- package/docs/type-contracts.md +137 -0
- package/docs/ui-analyzer.md +406 -0
- package/docs/ui-doctor.md +298 -0
- package/docs/ui-evaluator.md +139 -0
- package/docs/ux-demo.md +58 -17
- package/docs/webawesome-migration.md +82 -0
- package/docs/webawesome-theme.md +306 -47
- package/docs/workbench-dialog.md +88 -0
- package/docs/workbench.md +637 -12
- package/docs/writing.md +154 -0
- package/doctor/cli.mjs +120 -0
- package/doctor/component-style-checks.mjs +457 -0
- package/doctor/config.schema.json +94 -0
- package/doctor/copy-capitalization-checks.mjs +603 -0
- package/doctor/eslint-diagnostics.d.mts +24 -0
- package/doctor/eslint-diagnostics.mjs +24 -0
- package/doctor/index.d.mts +122 -0
- package/doctor/index.mjs +1424 -0
- package/doctor/report.schema.json +118 -0
- package/evaluator/cli.mjs +89 -0
- package/evaluator/index.d.mts +90 -0
- package/evaluator/index.mjs +1203 -0
- package/evaluator/report.schema.json +152 -0
- package/llms.txt +940 -54
- package/package.json +488 -43
- package/scripts/component-catalog-extension-validation.mjs +28 -0
- package/traversal-exclusions.mjs +86 -0
- package/ux-demo/recipes/app-shell.tsx +204 -16
- package/ux-demo/recipes/collapsible-sidebar.tsx +206 -45
- package/ux-demo/recipes/compact-toolbar.tsx +135 -14
- package/ux-demo/recipes/composer-form.tsx +135 -24
- package/ux-demo/recipes/list-detail-dialog.tsx +155 -21
- package/ux-demo/recipes/list-workspace-states.tsx +183 -11
- package/ux-demo/recipes/loaders.ts +11 -3
- package/ux-demo/recipes/loading-inspector.tsx +162 -39
- package/ux-demo/recipes/media-detail.tsx +272 -0
- package/ux-demo/recipes/mount-recipe.ts +28 -11
- package/ux-demo/recipes/navigation-sidebar.tsx +137 -11
- package/ux-demo/recipes/navigation-stack.tsx +79 -24
- package/ux-demo/recipes/types.ts +18 -2
- package/ux-demo/recipes/workspace-header.tsx +86 -5
- package/vite-ux-review.d.mts +83 -0
- package/vite-ux-review.mjs +120 -0
- package/dist/app-tab.d.ts +0 -30
- package/dist/app-tab.js +0 -5
- package/dist/app-tab.js.map +0 -1
- package/dist/browser/app-tab.js +0 -4
- package/dist/browser/panel-header.js +0 -7
- package/dist/browser/token-search-field.js +0 -4
- package/dist/chunk-2Z5TWHKQ.js +0 -34
- package/dist/chunk-2Z5TWHKQ.js.map +0 -1
- package/dist/chunk-37T3VNIZ.js +0 -19
- package/dist/chunk-37T3VNIZ.js.map +0 -1
- package/dist/chunk-55DATV3A.js +0 -10
- package/dist/chunk-55DATV3A.js.map +0 -1
- package/dist/chunk-56RJXPHG.js.map +0 -1
- package/dist/chunk-5ATCDSQS.js +0 -42
- package/dist/chunk-5ATCDSQS.js.map +0 -1
- package/dist/chunk-5E2HVJ33.js +0 -10
- package/dist/chunk-5E2HVJ33.js.map +0 -1
- package/dist/chunk-7BR3DO2A.js +0 -31
- package/dist/chunk-7BR3DO2A.js.map +0 -1
- package/dist/chunk-7JB7VPRI.js +0 -34
- package/dist/chunk-7JB7VPRI.js.map +0 -1
- package/dist/chunk-7LDCTU7D.js +0 -134
- package/dist/chunk-7LDCTU7D.js.map +0 -1
- package/dist/chunk-AQNKJRFH.js +0 -79
- package/dist/chunk-AQNKJRFH.js.map +0 -1
- package/dist/chunk-AVZHJN6C.js +0 -14
- package/dist/chunk-AVZHJN6C.js.map +0 -1
- package/dist/chunk-B24C4A6T.js +0 -22
- package/dist/chunk-B24C4A6T.js.map +0 -1
- package/dist/chunk-BLK3UEEI.js +0 -23
- package/dist/chunk-BLK3UEEI.js.map +0 -1
- package/dist/chunk-CH4SQ6H5.js +0 -39
- package/dist/chunk-CH4SQ6H5.js.map +0 -1
- package/dist/chunk-DAFFDO33.js +0 -14
- package/dist/chunk-DAFFDO33.js.map +0 -1
- package/dist/chunk-I7INRJO4.js +0 -17
- package/dist/chunk-I7INRJO4.js.map +0 -1
- package/dist/chunk-L4OKFDJY.js +0 -24
- package/dist/chunk-L4OKFDJY.js.map +0 -1
- package/dist/chunk-LCOBDOCC.js +0 -265
- package/dist/chunk-LCOBDOCC.js.map +0 -1
- package/dist/chunk-M5JRI6MN.js +0 -27
- package/dist/chunk-M5JRI6MN.js.map +0 -1
- package/dist/chunk-RNPGFQ33.js +0 -10
- package/dist/chunk-RNPGFQ33.js.map +0 -1
- package/dist/chunk-RUNWEPR4.js +0 -10
- package/dist/chunk-RUNWEPR4.js.map +0 -1
- package/dist/chunk-W2FK7ZNY.js +0 -26
- package/dist/chunk-W2FK7ZNY.js.map +0 -1
- package/dist/chunk-WVPYVDXY.js +0 -15
- package/dist/chunk-WVPYVDXY.js.map +0 -1
- package/dist/chunk-XE5ZLPCC.js +0 -20
- package/dist/chunk-XE5ZLPCC.js.map +0 -1
- package/dist/chunk-XXMOARTH.js +0 -229
- package/dist/chunk-XXMOARTH.js.map +0 -1
- package/dist/chunk-YGN7OMLT.js.map +0 -1
- package/dist/panel-header.d.ts +0 -36
- package/dist/panel-header.js +0 -7
- package/dist/panel-header.js.map +0 -1
- package/dist/styles/app-tab.css +0 -152
- package/dist/styles/panel-header.css +0 -64
- package/dist/styles/tab-scaffold.css +0 -84
- package/dist/styles/token-search-field.css +0 -289
- package/dist/tab-scaffold.d.ts +0 -30
- package/dist/tab-scaffold.js +0 -16
- package/dist/tab-scaffold.js.map +0 -1
- package/dist/token-search-field.d.ts +0 -43
- package/dist/token-search-field.js +0 -4
- package/dist/token-search-field.js.map +0 -1
- package/dist/wire-tab-scaffold.d.ts +0 -11
- package/dist/wire-tab-scaffold.js +0 -16
- package/dist/wire-tab-scaffold.js.map +0 -1
- package/dist/wire-token-search-fields.js +0 -5
- package/docs/design/templates/panel-header/icon-actions-dark.svg +0 -1
- package/docs/design/templates/panel-header/icon-actions.svg +0 -1
- package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +0 -1
- package/docs/design/templates/panel-header/icon-summary-actions.svg +0 -1
- package/docs/design/templates/panel-header/no-icon-dark.svg +0 -1
- package/docs/design/templates/panel-header/no-icon.svg +0 -1
- package/docs/design/templates/panel-header/page-heading-dark.svg +0 -1
- package/docs/design/templates/panel-header/page-heading.svg +0 -1
- package/docs/design/templates/panel-header/title-only-dark.svg +0 -1
- package/docs/design/templates/panel-header/title-only.svg +0 -1
- package/docs/design/templates/panel-header-dark.svg +0 -13
- package/docs/design/templates/panel-header.svg +0 -13
- package/docs/design/templates/token-search-field/empty-dark.svg +0 -1
- package/docs/design/templates/token-search-field/empty.svg +0 -1
- package/docs/design/templates/token-search-field/tokens-dark.svg +0 -1
- package/docs/design/templates/token-search-field/tokens.svg +0 -1
- package/docs/design/templates/token-search-field-dark.svg +0 -7
- package/docs/design/templates/token-search-field.svg +0 -7
- package/docs/tab-scaffold.md +0 -41
- package/ux-demo/recipes/recipes.css +0 -448
|
@@ -7,19 +7,93 @@ a full shell so you can dock one panel wherever your layout needs it. They are
|
|
|
7
7
|
subpath-only, tree-shakeable modules that add nothing to the main barrel.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm install @kerfjs/ui
|
|
10
|
+
npm install @kerfjs/ui # kerfjs is a peer
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
A browser bundler that honors the `browser` export condition loads the panel's CSS
|
|
14
|
+
and that of the components it renders (`Pane`, `Toolbar`, `ToolbarControlGroup`,
|
|
15
|
+
`LucideIcon`) with `@kerfjs/ui/collapsible-panel`. Without that condition, import
|
|
16
|
+
`@kerfjs/ui/collapsible-panel.css` plus those stylesheets alongside `foundation.css`.
|
|
14
17
|
|
|
15
18
|
## The pieces
|
|
16
19
|
|
|
17
|
-
- **`CollapsiblePanel({ id, side, collapsed?, size?, label?, children })`** — the
|
|
20
|
+
- **`CollapsiblePanel({ id, side, collapsed?, size?, label?, tabIndex?, outlined?, children })`** — the
|
|
18
21
|
docked panel: a `'left'` / `'right'` rail or a `'bottom'` drawer. It owns only
|
|
19
22
|
presentation. Collapsing snaps the panel's own size to zero in one reflow while
|
|
20
23
|
the fixed-size content slides out via `transform` (composited, clipped) — never
|
|
21
|
-
a per-frame width/height animation.
|
|
24
|
+
a per-frame width/height animation. A bottom drawer anchors that fixed-size
|
|
25
|
+
content to its stable bottom edge, so opening and closing move monotonically
|
|
26
|
+
through the transform alone instead of transitioning from a changing layout
|
|
27
|
+
origin and snapping at the end. The app owns the `collapsed` signal; `size`
|
|
22
28
|
overrides the CSS default width/height.
|
|
29
|
+
Set `tabIndex={0}` to place the labeled outer region in the Tab order, or
|
|
30
|
+
`tabIndex={-1}` for programmatic focus. `outlined` keeps its focus ring visible
|
|
31
|
+
while open, such as for a drop target. A toolbar panel can instead pass these
|
|
32
|
+
options through `pane` to focus its inner `Pane`. A collapsed or
|
|
33
|
+
`presentation="hidden"` region drops the persistent outline and changes an
|
|
34
|
+
explicit tab index to `-1`; expanding restores the requested value. An open
|
|
35
|
+
overlay can still be focused. Omitting both options adds no Tab stop.
|
|
36
|
+
A collapsed panel renders `inert` together with `aria-hidden="true"`, straight
|
|
37
|
+
from `collapsed`, so neither Tab, a pointer, nor assistive technology reaches
|
|
38
|
+
content that has slid out of view, and focusing a control can never scroll
|
|
39
|
+
the clipped content back into view. `inert` does not affect rendering, so the
|
|
40
|
+
slide-out still animates; expanding removes both attributes in the same
|
|
41
|
+
render. `aria-hidden` alone had left the panel's controls focusable inside a
|
|
42
|
+
hidden subtree; it stays beside `inert` so the emptied landmark is hidden
|
|
43
|
+
even from tooling that does not prune inert subtrees. Do not add your own
|
|
44
|
+
`inert`, `aria-hidden`, or `tabindex` to hide the content. The
|
|
45
|
+
`restoreControl` renders outside the panel and stays reachable.
|
|
46
|
+
Reusable shell policies are typed props: `separator`, `collapseMotion`,
|
|
47
|
+
`contentOverflow`, and `presentation`. A collapsed panel may also receive a
|
|
48
|
+
`restoreControl`, which Kerf places at the safe-area-aware `restorePosition`
|
|
49
|
+
corner of the panel's own container (the element holding the panel), never
|
|
50
|
+
of the viewport, so an embedded panel's control stays inside it and scrolls
|
|
51
|
+
with it. While the control shows, that container becomes its containing block
|
|
52
|
+
and isolates its stacking (an app's own `position` on the container still
|
|
53
|
+
wins). The corner is inset by `--kui-collapsible-panel-restore-inset` plus the
|
|
54
|
+
container's edge insets, and it owns that inset, so a `FloatingToolbar` hosting
|
|
55
|
+
the control floats from the corner without adding its own. When the same
|
|
56
|
+
container also holds an expanded inline bottom drawer — a bottom
|
|
57
|
+
`CollapsiblePanel` or a bottom `ResizableRegion` (`axis="vertical"`,
|
|
58
|
+
`edge="start"`) — as a direct child, or inside one of its direct children
|
|
59
|
+
(the app's work-area column), the corner floats that inset above the
|
|
60
|
+
drawer's top edge instead of over the drawer, and returns to the container's
|
|
61
|
+
bottom when the drawer collapses. It follows the drawer through CSS anchor
|
|
62
|
+
positioning, so a drag-resize moves it too; an engine without anchor
|
|
63
|
+
positioning keeps the container's bottom corner. A drawer nested deeper,
|
|
64
|
+
inside the work area's own content, belongs to that content and does not move
|
|
65
|
+
the corner. The corner stacks beneath open overlays: an open overlay is the
|
|
66
|
+
page's top layer, so it covers another panel's restore control as it covers
|
|
67
|
+
the rest of the page, including under the compact overlay's backdrop. The
|
|
68
|
+
control takes `--kui-collapsible-panel-restore-z`, which defaults to two less
|
|
69
|
+
than `--kui-collapsible-panel-overlay-z` (38); the backdrop defaults to one
|
|
70
|
+
less (39), so moving the overlay z-index moves both. While a left or right
|
|
71
|
+
overlay is open (the `wireSidebar` compact overlay, or
|
|
72
|
+
`presentation="overlay"`), the content's floating controls — restore
|
|
73
|
+
corners and any `FloatingToolbar` — are also hidden outright (out of the
|
|
74
|
+
tab order and the accessibility tree), so they never paint over the overlay
|
|
75
|
+
whatever stacking context the app creates; they return as it closes. The
|
|
76
|
+
overlay's own floating controls stay, and a bottom overlay hides nothing. A
|
|
77
|
+
horizontal `presentation="overlay"` `ResizableRegion` does the same for its
|
|
78
|
+
siblings. Escape, a backdrop
|
|
79
|
+
press, or the panel's own close control reveals the control again, and a
|
|
80
|
+
collapsed overlay leaves it clickable. `ResizableRegion`'s `restoreControl`
|
|
81
|
+
follows the same rules, two below `--kui-resizable-region-overlay-z` (39).
|
|
82
|
+
A collapsed `ResizableRegion` likewise renders `inert` and `aria-hidden` on
|
|
83
|
+
the region itself (and `inert` on its `.kui-resizable-region__content`
|
|
84
|
+
wrapper), so its label leaves the accessibility tree with its content; its
|
|
85
|
+
separator is already hidden while collapsed, and the restore control stays
|
|
86
|
+
outside the region. Its `restorePosition` accepts top or bottom start/end
|
|
87
|
+
corners, with typed `restoreInset` for the corner distance. Set
|
|
88
|
+
`restorePlacement="inline"` when the container should place the control in
|
|
89
|
+
normal flow. An inline region's surface uses
|
|
90
|
+
`--kui-resizable-region-background`; an open descendant `PopupMenu` or Web
|
|
91
|
+
Awesome dropdown releases clipping and raises the popup layer for its
|
|
92
|
+
lifecycle. Set `contentOverflow="visible"` for other anchored content that
|
|
93
|
+
must escape the region's content box.
|
|
94
|
+
Overlay presentation also clamps fixed-size animated content to the configured
|
|
95
|
+
responsive overlay maximum, so a remembered desktop size cannot escape a narrow
|
|
96
|
+
viewport.
|
|
23
97
|
- **`CollapsiblePanelToggle({ side, collapsed, action, panelId?, label? })`** and
|
|
24
98
|
**`collapsiblePanelToggleIcon(side, collapsed)`** — the standard toggle
|
|
25
99
|
affordance and its icon convention, so every sidebar reads the same: `PanelLeft*`
|
|
@@ -28,55 +102,254 @@ Import the panel CSS (`@kerfjs/ui/collapsible-panel.css`) alongside `foundation.
|
|
|
28
102
|
is the app's: put a collapse toggle in the panel's own header and an expand toggle
|
|
29
103
|
somewhere always-visible (a toolbar) so it is reachable while collapsed.
|
|
30
104
|
- **`wireSidebar(root, { panels, deviceClass?, storage? })`** — the interaction
|
|
31
|
-
semantics. Each `panels` entry is
|
|
32
|
-
It:
|
|
105
|
+
semantics. Each `panels` entry is
|
|
106
|
+
`{ id, collapsed, toggleAction, storageKey?, inlineCollapsed? }`. It:
|
|
33
107
|
- **toggles** the panel's `collapsed` signal when any `[data-action=toggleAction]`
|
|
34
108
|
button is clicked, and remembers the trigger;
|
|
35
|
-
- **manages focus** — moves focus into the panel when it opens
|
|
36
|
-
|
|
109
|
+
- **manages focus** — moves focus into the panel when it opens (without
|
|
110
|
+
scrolling, so the sliding content doesn't jump), and restores it
|
|
111
|
+
to the trigger when it closes. When that trigger is the collapse toggle inside
|
|
112
|
+
the now-hidden panel, focus goes to the panel's toggle outside it instead, so
|
|
113
|
+
an app may render its expand toggle only while the panel is collapsed (one
|
|
114
|
+
control per action, as the recipe does);
|
|
37
115
|
- **presents a compact overlay** when `deviceClass.compact` is true (pass a
|
|
38
116
|
`deviceClass()` signal): the open panel floats over the content with a
|
|
39
117
|
dismissable backdrop, Escape and backdrop-click collapse it, and Tab is trapped
|
|
40
|
-
within the panel (the ARIA dialog pattern)
|
|
41
|
-
|
|
42
|
-
|
|
118
|
+
within the panel (the ARIA dialog pattern). The overlay and its backdrop are
|
|
119
|
+
fixed to the screen; an ancestor that establishes a containing block for
|
|
120
|
+
fixed descendants (such as the catalog's `height: "app"` frame) docks them to
|
|
121
|
+
its edges instead;
|
|
122
|
+
- accepts `compactPresentation: "hidden"` when a compact application replaces
|
|
123
|
+
the panel with different navigation instead of overlaying it;
|
|
124
|
+
- **starts every compact overlay closed** (see
|
|
125
|
+
[Compact initial state](#compact-initial-state));
|
|
126
|
+
- keeps compact overlays exclusive by default, collapsing another open panel
|
|
127
|
+
when a new one opens (`exclusiveCompact: false` opts out);
|
|
128
|
+
- **persists** the inline collapsed state to `storage` (default
|
|
129
|
+
`localStorage`) under `storageKey`, seeding the signal on wire-up. An
|
|
130
|
+
overlay's open/closed state is never persisted;
|
|
131
|
+
- **owns the root's `data-collapsible-responsive` / `data-collapsible-overlay`
|
|
132
|
+
attributes and the injected backdrop.** Your app may re-render (and morph)
|
|
133
|
+
the wired root for reasons that never touch a panel signal — a nav
|
|
134
|
+
selection, say — and the morph drops attributes and nodes its template
|
|
135
|
+
doesn't emit. The wire observes the root and re-applies them before the
|
|
136
|
+
next paint, so don't render these attributes yourself.
|
|
43
137
|
|
|
44
138
|
Returns a disposer. Retain it and call it on teardown.
|
|
45
139
|
|
|
140
|
+
## Panel toolbars and relocated controls
|
|
141
|
+
|
|
142
|
+
Give a panel a `toolbar` (the same roles as a
|
|
143
|
+
[Workbench panel toolbar](workbench.md#panel-toolbars)) and it composes its own
|
|
144
|
+
top toolbar over a `Pane`:
|
|
145
|
+
|
|
146
|
+
- `title` precedes the `leading` zone; `leading`, `center`, and `trailing`
|
|
147
|
+
place groups wherever the open panel needs them;
|
|
148
|
+
- a `ToolbarControlGroup` marked `relocateOnCollapse` stays available in the
|
|
149
|
+
work area when the panel closes; the standard `toggle: { action, name,
|
|
150
|
+
showLabel?, hideLabel? }` is always the final group. Give `name` as the
|
|
151
|
+
panel's title-style name ("Navigator"), which labels the toggle group and
|
|
152
|
+
completes "Show Navigator" / "Hide Navigator".
|
|
153
|
+
|
|
154
|
+
Busy groups keep their inert control, spinner, and adjacent live status together
|
|
155
|
+
when relocated. Clearing `busy` restores the same action in its current toolbar;
|
|
156
|
+
expanding the panel returns both control and status to the panel toolbar.
|
|
157
|
+
|
|
158
|
+
The panel can also take `header` under its toolbar, `footer` below its content,
|
|
159
|
+
`bottomToolbar` below that, `headerList` / `footerList` for those fixed content
|
|
160
|
+
stacks, and `headerPlacement` / `footerPlacement` (`fixed`, `scroll`, or `auto`).
|
|
161
|
+
These slots share the panel's one `Pane` scroll owner; the bottom toolbar uses
|
|
162
|
+
footer semantics. With no `toolbar`, the panel renders its children directly
|
|
163
|
+
and ignores the chrome slots.
|
|
164
|
+
|
|
165
|
+
The toolbar also takes the `Toolbar`'s configuration (`dividerSides`,
|
|
166
|
+
`centerAlign`, `responsive`, `responsiveAt`, `safeAreaEdges`); it draws no
|
|
167
|
+
divider of its own unless `dividerSides` says so. The `Pane` under it draws
|
|
168
|
+
the line under the toolbar only while its content is scrolled (see
|
|
169
|
+
[Scroll dividers](./layout.md#scroll-dividers)), and takes the panel's `pane`
|
|
170
|
+
(`PaneConfig`: `contentElement`, `contentLabel`, `separators`,
|
|
171
|
+
`safeAreaEdges`, `chromeDividers`, `appearance`, `deepInset`,
|
|
172
|
+
`scrollClearance`, `headerPresentation`, `tabIndex`, `outlined`) — for example `{ contentElement: "nav",
|
|
173
|
+
contentLabel: "Sections" }` for a navigation rail. An omitted or `undefined`
|
|
174
|
+
field keeps the `Pane` default; without a `toolbar` there is no `Pane`, so
|
|
175
|
+
`pane` is ignored.
|
|
176
|
+
|
|
177
|
+
A standalone panel does not own the rest of the screen, so the app places a
|
|
178
|
+
`CollapsiblePanelRelocated` in its own work-area toolbar: it renders the panel's
|
|
179
|
+
marked groups and toggle while the panel is collapsed, and nothing while it
|
|
180
|
+
is open. Put it first in the leading zone for a left rail, last in the trailing
|
|
181
|
+
zone for a right rail, and last in a bottom toolbar for a bottom drawer. With no
|
|
182
|
+
bottom toolbar, pass it inside a `FloatingToolbar` as the drawer's
|
|
183
|
+
`restoreControl`.
|
|
184
|
+
Marked groups move in `leading`, `center`, `trailing` order. Pass each marked
|
|
185
|
+
group directly or in an array rather than wrapping it in a JSX fragment, so
|
|
186
|
+
the panel can read its render-time annotation. Its copy in the closed panel is
|
|
187
|
+
inert; avoid duplicate `id` attributes on marked groups.
|
|
188
|
+
|
|
189
|
+
```tsx
|
|
190
|
+
const toolbar: CollapsiblePanelToolbar = {
|
|
191
|
+
label: "Navigator",
|
|
192
|
+
leading: <NewFileGroup />,
|
|
193
|
+
trailing: <ToolbarControlGroup relocateOnCollapse label="Search Files"><SearchButton /></ToolbarControlGroup>,
|
|
194
|
+
toggle: { action: "toggle-nav", name: "Navigator" },
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
<Row fill gap="none">
|
|
198
|
+
<CollapsiblePanel id="nav" side="left" collapsed={navCollapsed.value} toolbar={toolbar}>
|
|
199
|
+
<Files />
|
|
200
|
+
</CollapsiblePanel>
|
|
201
|
+
<List flex>
|
|
202
|
+
<Pane
|
|
203
|
+
header={
|
|
204
|
+
<Toolbar
|
|
205
|
+
label="Editor"
|
|
206
|
+
leading={
|
|
207
|
+
<>
|
|
208
|
+
<CollapsiblePanelRelocated panelId="nav" side="left" collapsed={navCollapsed.value} toolbar={toolbar} />
|
|
209
|
+
<ToolbarText text="Editor" size="xlarge" />
|
|
210
|
+
</>
|
|
211
|
+
}
|
|
212
|
+
/>
|
|
213
|
+
}
|
|
214
|
+
>
|
|
215
|
+
<Editor />
|
|
216
|
+
</Pane>
|
|
217
|
+
</List>
|
|
218
|
+
</Row>;
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Wire it with `wireSidebar` (`toggleAction` is the toggle's `action`): closing the
|
|
222
|
+
panel from its own toggle hands focus to the relocated toggle, even when the app
|
|
223
|
+
renders it a frame later, and opening it moves focus into the panel. Each toggle
|
|
224
|
+
carries a stable `data-key`, so the morph never reuses a focused toggle's button
|
|
225
|
+
for another control as it moves.
|
|
226
|
+
|
|
227
|
+
## Compact initial state
|
|
228
|
+
|
|
229
|
+
A compact overlay is transient chrome the user summons, like a slide-over
|
|
230
|
+
sidebar on a phone: it covers the content, traps focus, and must be dismissed.
|
|
231
|
+
It therefore opens **only on a user action** (a toggle, or the app setting the
|
|
232
|
+
signal in response to one), never by itself:
|
|
233
|
+
|
|
234
|
+
- **Wire-up on a compact device.** Every panel starts collapsed, whatever its
|
|
235
|
+
signal, `inlineCollapsed`, or stored choice says. No backdrop, focus trap, or
|
|
236
|
+
Escape handling is active until the user opens a panel.
|
|
237
|
+
- **Wide → compact crossing.** Open panels collapse; nothing covers the page.
|
|
238
|
+
- **Compact → wide crossing.** Each panel returns to its remembered inline state
|
|
239
|
+
(open or collapsed), whatever the user did with the overlay meanwhile.
|
|
240
|
+
- **Disposal** hands the inline state back to the signals.
|
|
241
|
+
- **Persistence** records only the inline choice. A stored "open" rail restores
|
|
242
|
+
inline on a wide screen and is remembered, not opened, on a compact one.
|
|
243
|
+
|
|
244
|
+
These presentation changes never move focus, except to rescue focus that a
|
|
245
|
+
collapse would strand inside the hidden panel (it returns to the panel's last
|
|
246
|
+
trigger). `compactPresentation: "hidden"` leaves the signals alone.
|
|
247
|
+
|
|
248
|
+
`wireSidebar` runs after the first render, so an app that seeds an open inline
|
|
249
|
+
default would render the rail open for that first frame on a compact device.
|
|
250
|
+
Seed the signal from the device class instead, and declare the inline default
|
|
251
|
+
with `inlineCollapsed` so a later wide crossing still opens it:
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
const device = deviceClass();
|
|
255
|
+
const navCollapsed = signal(device.value.compact);
|
|
256
|
+
// …
|
|
257
|
+
wireSidebar(app, {
|
|
258
|
+
panels: [
|
|
259
|
+
{
|
|
260
|
+
id: "nav",
|
|
261
|
+
collapsed: navCollapsed,
|
|
262
|
+
toggleAction: "toggle-nav",
|
|
263
|
+
inlineCollapsed: false,
|
|
264
|
+
},
|
|
265
|
+
],
|
|
266
|
+
deviceClass: device,
|
|
267
|
+
});
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
A stored inline choice takes precedence over `inlineCollapsed`.
|
|
271
|
+
|
|
46
272
|
## Example
|
|
47
273
|
|
|
48
274
|
```tsx
|
|
49
|
-
import { signal, mount } from
|
|
50
|
-
import { deviceClass } from
|
|
51
|
-
import {
|
|
52
|
-
|
|
53
|
-
|
|
275
|
+
import { signal, mount } from "kerfjs";
|
|
276
|
+
import { deviceClass } from "@kerfjs/ui/device-class";
|
|
277
|
+
import {
|
|
278
|
+
CollapsiblePanel,
|
|
279
|
+
CollapsiblePanelToggle,
|
|
280
|
+
} from "@kerfjs/ui/collapsible-panel";
|
|
281
|
+
import { wireSidebar } from "@kerfjs/ui/wire-sidebar";
|
|
54
282
|
|
|
55
|
-
const navCollapsed = signal(false);
|
|
56
283
|
const device = deviceClass();
|
|
284
|
+
// Start collapsed on a compact device; `inlineCollapsed` keeps the open inline
|
|
285
|
+
// default for wide screens.
|
|
286
|
+
const navCollapsed = signal(device.value.compact);
|
|
57
287
|
|
|
58
|
-
const app = document.querySelector(
|
|
288
|
+
const app = document.querySelector("#app")!;
|
|
59
289
|
mount(app, () => (
|
|
60
290
|
<div class="layout">
|
|
61
|
-
<CollapsiblePanel
|
|
291
|
+
<CollapsiblePanel
|
|
292
|
+
id="nav"
|
|
293
|
+
side="left"
|
|
294
|
+
collapsed={navCollapsed.value}
|
|
295
|
+
label="Navigator"
|
|
296
|
+
>
|
|
62
297
|
<header>
|
|
63
|
-
<CollapsiblePanelToggle
|
|
298
|
+
<CollapsiblePanelToggle
|
|
299
|
+
side="left"
|
|
300
|
+
collapsed={navCollapsed.value}
|
|
301
|
+
action="toggle-nav"
|
|
302
|
+
panelId="nav"
|
|
303
|
+
/>
|
|
64
304
|
</header>
|
|
65
305
|
{/* nav items */}
|
|
66
306
|
</CollapsiblePanel>
|
|
67
307
|
<main>
|
|
68
|
-
{navCollapsed.value &&
|
|
308
|
+
{navCollapsed.value && (
|
|
309
|
+
<CollapsiblePanelToggle
|
|
310
|
+
side="left"
|
|
311
|
+
collapsed
|
|
312
|
+
action="toggle-nav"
|
|
313
|
+
label="Show Navigator"
|
|
314
|
+
/>
|
|
315
|
+
)}
|
|
69
316
|
{/* content */}
|
|
70
317
|
</main>
|
|
71
318
|
</div>
|
|
72
319
|
));
|
|
73
320
|
|
|
74
321
|
const stop = wireSidebar(app, {
|
|
75
|
-
panels: [
|
|
322
|
+
panels: [
|
|
323
|
+
{
|
|
324
|
+
id: "nav",
|
|
325
|
+
collapsed: navCollapsed,
|
|
326
|
+
toggleAction: "toggle-nav",
|
|
327
|
+
storageKey: "app.nav-collapsed",
|
|
328
|
+
inlineCollapsed: false,
|
|
329
|
+
},
|
|
330
|
+
],
|
|
76
331
|
deviceClass: device,
|
|
77
332
|
});
|
|
78
333
|
```
|
|
79
334
|
|
|
335
|
+
## Sizing in a flex layout
|
|
336
|
+
|
|
337
|
+
An expanded panel holds its `size` in a flex row or column (`flex-shrink: 0`):
|
|
338
|
+
its content keeps that fixed size so collapsing slides it out instead of
|
|
339
|
+
squeezing it, and a shrunk track would only clip the content's trailing edge.
|
|
340
|
+
Give the sibling work area `min-width: 0` / `min-height: 0` (a `Pane` or
|
|
341
|
+
`List flex` already has it) so it is the region that gives way, and switch the
|
|
342
|
+
panel to the compact overlay (`wireSidebar`) where the viewport cannot hold it.
|
|
343
|
+
|
|
344
|
+
## Safe areas
|
|
345
|
+
|
|
346
|
+
A panel grows by the unsafe inset of the edge it docks to and pads its content
|
|
347
|
+
for every edge it touches except its interior edge. While expanded inline, it
|
|
348
|
+
also clears that edge for every other direct child of its container, so a
|
|
349
|
+
neighboring pane gains the inset when the panel collapses. When you wrap the panel in your own grid
|
|
350
|
+
cell, pass each sibling `Pane` a `safeAreaEdges` that omits the edge the panel
|
|
351
|
+
covers. See [Choosing an app layout › Safe areas](app-layouts.md#safe-areas).
|
|
352
|
+
|
|
80
353
|
## When to use which
|
|
81
354
|
|
|
82
355
|
- One or two independent rails / a drawer you place yourself → **`CollapsiblePanel` +
|
|
@@ -84,7 +357,7 @@ const stop = wireSidebar(app, {
|
|
|
84
357
|
- A whole Xcode-like workspace (left rail + right rail + bottom drawer + work area
|
|
85
358
|
in one shell) → **[`Workbench`](workbench.md)**, which owns the layout and the same
|
|
86
359
|
collapse animation.
|
|
87
|
-
- Drag-to-resize a panel → compose **[`ResizableRegion`](../src/resizable-region.tsx)**
|
|
360
|
+
- Drag-to-resize a panel → compose **[`ResizableRegion`](../src/components/layout/resizable-region/resizable-region.tsx)**
|
|
88
361
|
/ `wireResizableRegions`; the app owns the size signal.
|
|
89
362
|
|
|
90
363
|
The app still owns everything domain-specific — which panels exist, their order,
|
|
@@ -92,11 +365,21 @@ sizes, content, and any per-project persistence — exactly as with the other la
|
|
|
92
365
|
|
|
93
366
|
## Recipe and coverage
|
|
94
367
|
|
|
95
|
-
The catalog ships a runnable **Collapsible
|
|
368
|
+
The catalog ships a runnable **Collapsible Sidebar** recipe — a left rail and a
|
|
96
369
|
bottom drawer with the standard toggles, the compact overlay, and per-panel
|
|
97
370
|
persistence: [open it](../ux-demo/?component=recipe-collapsible-sidebar) or read
|
|
98
371
|
[`recipes.md`](recipes.md#collapsible-sidebar) · [TSX source](../ux-demo/recipes/collapsible-sidebar.tsx).
|
|
99
372
|
It is covered end-to-end across Chromium, Firefox, and WebKit by
|
|
100
373
|
`tests/browser/collapsible-sidebar-recipe.spec.ts` (collapse/expand, focus
|
|
101
|
-
move/restore, the compact overlay + Escape/backdrop dismiss,
|
|
374
|
+
move/restore, the compact overlay + Escape/backdrop dismiss, the Tab trap, and
|
|
375
|
+
the compact initial state across first load and wide/compact crossings),
|
|
102
376
|
alongside the component/wire unit tests.
|
|
377
|
+
|
|
378
|
+
The focused [CollapsiblePanel route](../ux-demo/?component=collapsible-panel)
|
|
379
|
+
([TSX source](../ux-demo/demos/collapsible-panel.tsx)) also has a **Restore
|
|
380
|
+
control** example: a bottom drawer that starts collapsed, with a
|
|
381
|
+
`FloatingToolbar` `restoreControl` in its frame's bottom-end corner and its
|
|
382
|
+
own hide toggle in the drawer header. Both toggles share one `data-action`,
|
|
383
|
+
and the catalog wires them with `wireSidebar`, so the corner control really
|
|
384
|
+
restores the drawer and focus moves between the two. It is covered by
|
|
385
|
+
`tests/browser/app-layout-catalog.spec.ts` at wide and compact widths.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# ColorField
|
|
2
|
+
|
|
3
|
+
`@kerfjs/ui/color-field` puts a color in a form or inspector without keeping a
|
|
4
|
+
full picker open. It is a label above a trigger that shows the color as a
|
|
5
|
+
swatch (over a checkerboard, so opacity reads) and its hex value. Pressing the
|
|
6
|
+
trigger opens a [`ColorPicker`](./color-picker.md) in an `AnchoredSurface`
|
|
7
|
+
below it.
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { ColorField } from "@kerfjs/ui/color-field";
|
|
11
|
+
import { wireColorFields } from "@kerfjs/ui/wire-color-fields";
|
|
12
|
+
|
|
13
|
+
<ColorField id="fill" label="Fill" value={fill.value} mode={mode.value} name="fill" />;
|
|
14
|
+
|
|
15
|
+
const stop = wireColorFields(root, {
|
|
16
|
+
onChange: ({ value, mode: next }) => {
|
|
17
|
+
fill.value = value;
|
|
18
|
+
mode.value = next;
|
|
19
|
+
},
|
|
20
|
+
pickers: { fill: { presets } },
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Props
|
|
25
|
+
|
|
26
|
+
- `id` (required): the trigger's id; it prefixes the label, value, hint, and
|
|
27
|
+
error ids.
|
|
28
|
+
- `label`, or `ariaLabel` for a field without a visible label.
|
|
29
|
+
- `value` (required): CSS color text; invalid text shows black.
|
|
30
|
+
- `mode`: the picker's model when it opens — `rgb` (default), `hsl`, `hsb`,
|
|
31
|
+
or `gray`.
|
|
32
|
+
- `alpha` (default true): offer opacity. Without it the value is opaque.
|
|
33
|
+
- `name`, `form`: a hidden input submits the hex value.
|
|
34
|
+
- `hint`, `error` (an error marks the field invalid), `required`, `disabled`.
|
|
35
|
+
- `size`: `default` or `compact`, matching TextField's sizes.
|
|
36
|
+
- `className`, `rootAttributes`, `slot`.
|
|
37
|
+
|
|
38
|
+
## Wiring and values
|
|
39
|
+
|
|
40
|
+
`wireColorFields(root, { onInput?, onChange?, pickers? })` wires every
|
|
41
|
+
ColorField under `root`:
|
|
42
|
+
|
|
43
|
+
- Pressing a trigger opens a ColorPicker with the field's value, model, and
|
|
44
|
+
opacity, plus any `pickers[id]` options (`presets`, `samples`,
|
|
45
|
+
`addSampleAction`, `eyedropper`).
|
|
46
|
+
- Edits preview at once on the trigger's swatch, hex, and hidden input.
|
|
47
|
+
Live edits go to `onInput`; committed edits go to `onChange` with
|
|
48
|
+
`{ id, value, mode }`. Re-render the field with the reported value and mode.
|
|
49
|
+
- Escape or a press outside closes the picker, and focus returns to the
|
|
50
|
+
trigger. The surface stays on screen, flipping above the field or
|
|
51
|
+
scrolling the picker when space is short.
|
|
52
|
+
- The disposer removes the wiring and closes an open picker.
|
|
53
|
+
|
|
54
|
+
The value is `#rrggbb`, or `#rrggbbaa` below full opacity.
|
|
55
|
+
|
|
56
|
+
## Accessibility and geometry
|
|
57
|
+
|
|
58
|
+
The trigger is a button named by the label and the current hex value, with
|
|
59
|
+
`aria-haspopup="dialog"` and `aria-expanded`; the hint and error describe it.
|
|
60
|
+
The picker opens in a non-modal surface named by the label. The trigger
|
|
61
|
+
matches TextField's box, label, hint, and error geometry.
|
|
62
|
+
|
|
63
|
+
Use an inline `ColorPicker` when choosing the color is the view's main task,
|
|
64
|
+
and `ColorSwatches` for a small fixed palette. `ColorField` replaces
|
|
65
|
+
`wa-color-picker`, which is Discouraged.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# ColorPicker
|
|
2
|
+
|
|
3
|
+
`@kerfjs/ui/color-picker` is a full inline color picker panel:
|
|
4
|
+
|
|
5
|
+
- a saturation and brightness area;
|
|
6
|
+
- a slider for each channel of the color model — red, green, and blue (RGB);
|
|
7
|
+
hue, saturation, and lightness (HSL); hue, saturation, and brightness
|
|
8
|
+
(HSB); or one gray level (Grayscale) — each track painting the colors that
|
|
9
|
+
channel produces while the others hold, except the hue track, which always
|
|
10
|
+
shows the full-saturation, full-brightness rainbow so a dark or gray color
|
|
11
|
+
still shows every hue; and, optionally, an opacity slider on a
|
|
12
|
+
checkerboard;
|
|
13
|
+
- a color-model menu (RGB, HSL, HSB, Grayscale) that switches the channel
|
|
14
|
+
sliders and fields together;
|
|
15
|
+
- a hex field (8 digits below full opacity) and an opacity field;
|
|
16
|
+
- a screen sampler where the browser offers the EyeDropper API;
|
|
17
|
+
- optional preset and sample swatches.
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import { ColorPicker } from "@kerfjs/ui/color-picker";
|
|
21
|
+
import { wireColorPickers } from "@kerfjs/ui/wire-color-pickers";
|
|
22
|
+
|
|
23
|
+
<ColorPicker id="fill" label="Fill Color" value={fill.value} mode={mode.value} />;
|
|
24
|
+
|
|
25
|
+
const stop = wireColorPickers(root, {
|
|
26
|
+
onChange: ({ id, value, mode: next }) => {
|
|
27
|
+
fill.value = value;
|
|
28
|
+
mode.value = next;
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Props
|
|
34
|
+
|
|
35
|
+
- `id` and `label` (required): identity and the picker's accessible name.
|
|
36
|
+
- `value` (required): CSS color text (`#rrggbb[aa]`, `rgb()`, `hsl()`);
|
|
37
|
+
invalid text shows black.
|
|
38
|
+
- `mode`: `rgb` (default), `hsl`, `hsb`, or `gray` — which channel sliders
|
|
39
|
+
and fields show.
|
|
40
|
+
- `alpha` (default true): the opacity slider and field. Without it the value
|
|
41
|
+
is always opaque.
|
|
42
|
+
- `name`, `form`: a hidden input submits the hex value.
|
|
43
|
+
- `eyedropper` (default true): the screen sampler, shown only where the
|
|
44
|
+
browser has the EyeDropper API.
|
|
45
|
+
- `presets`: a row of `ColorSwatches` under the controls. `samples`: titled
|
|
46
|
+
groups (`{ title, swatches }`), such as "Document Colors".
|
|
47
|
+
`addSampleAction`: a `data-action` for an "Add to Samples" button; read
|
|
48
|
+
the picker's value and add it to your samples.
|
|
49
|
+
- `disabled`, `className`, `rootAttributes`, `slot`.
|
|
50
|
+
|
|
51
|
+
## Wiring and values
|
|
52
|
+
|
|
53
|
+
`wireColorPickers(root, { onInput?, onChange? })` makes every picker under
|
|
54
|
+
`root` interactive. The interactive surface belongs to the wiring after the
|
|
55
|
+
first render, so a drag never fights a re-render. When the app re-renders a
|
|
56
|
+
picker with a new `value` (or `mode`), the picker adopts it.
|
|
57
|
+
|
|
58
|
+
- **The area** takes pointer drags and the arrow keys (Shift for 10% steps);
|
|
59
|
+
Page Up and Down change brightness, Home and End saturation.
|
|
60
|
+
- **Channel and opacity sliders** are native range inputs (arrow keys, Page
|
|
61
|
+
Up and Down, Home and End). Each changes only its own channel; a slider and
|
|
62
|
+
the field of the same channel always agree.
|
|
63
|
+
- **Fields** commit on Enter or blur; Escape restores the shown value; invalid
|
|
64
|
+
text restores it too.
|
|
65
|
+
- **Swatches** (presets and samples) apply their color.
|
|
66
|
+
|
|
67
|
+
Each change dispatches a bubbling `kui-color-input` (live) or
|
|
68
|
+
`kui-color-change` (committed) event with `{ value, mode }` and calls
|
|
69
|
+
`onInput` or `onChange`. The value is `#rrggbb`, or `#rrggbbaa` below full
|
|
70
|
+
opacity. The picker keeps hue, saturation, and brightness as its own state,
|
|
71
|
+
so a hue survives while the color is gray, and conversions round-trip without
|
|
72
|
+
drift: switching models never changes the color, and a channel edit keeps
|
|
73
|
+
every other channel's exact value (an HSL saturation survives lightness
|
|
74
|
+
reaching black or white). The 2D area stays in every model as the primary
|
|
75
|
+
picking surface; the sliders are the precise, per-channel controls.
|
|
76
|
+
|
|
77
|
+
## Accessibility and geometry
|
|
78
|
+
|
|
79
|
+
The picker is a named group. The area is a slider named "Saturation and
|
|
80
|
+
Brightness" whose spoken value gives both. Each channel slider is named for
|
|
81
|
+
its channel (Red, Hue, Lightness, Gray Level) and speaks its unit (`210°`,
|
|
82
|
+
`40%`, or a plain 0–255 byte); the opacity slider speaks a percentage. Every
|
|
83
|
+
field is named the same way (Red, Hue, Hex Color, Opacity). The panel takes
|
|
84
|
+
the shared block-content inset, fills its container up to 320px, and spaces
|
|
85
|
+
its rows 12px apart; the sliders form one group 8px apart.
|
|
86
|
+
|
|
87
|
+
The saturation and brightness area and every slider track draw a 1px inner
|
|
88
|
+
edge halfway between the text color and the color under it, so an area or a
|
|
89
|
+
track as dark as a dark surface (the area's black bottom, a hue at low
|
|
90
|
+
brightness, a faint opacity) or as light as a light one keeps a boundary of at
|
|
91
|
+
least 3:1 against the surface around it. Increased contrast draws the edge in
|
|
92
|
+
the full text color and forced colors in `CanvasText`.
|
|
93
|
+
|
|
94
|
+
Every thumb draws a two-tone ring: a white border inside a dark outline. The
|
|
95
|
+
white holds at least 3:1 against a dark color and the outline against a light
|
|
96
|
+
one, so a thumb stays findable wherever it sits.
|
|
97
|
+
|
|
98
|
+
Every track runs in the writing direction, as the native range does: in
|
|
99
|
+
right-to-left text the gradient starts at the right, so the thumb at a
|
|
100
|
+
channel's minimum (or at no opacity) sits over the color it sets.
|
|
101
|
+
|
|
102
|
+
Use `ColorSwatches` for a small fixed palette.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# ColorSwatches
|
|
2
|
+
|
|
3
|
+
`@kerfjs/ui/color-swatches` chooses one color from a small fixed palette: a
|
|
4
|
+
row of round swatches with no visible text. It is a native radio group, so
|
|
5
|
+
the chosen value submits under `name` and the platform owns the keyboard.
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { ColorSwatches } from "@kerfjs/ui/color-swatches";
|
|
9
|
+
import { fillColor } from "@kerfjs/ui/css-values";
|
|
10
|
+
|
|
11
|
+
<ColorSwatches
|
|
12
|
+
name="command-color"
|
|
13
|
+
label="Command Color"
|
|
14
|
+
value={color.value}
|
|
15
|
+
action="pick-color"
|
|
16
|
+
swatches={[
|
|
17
|
+
{ value: "none", label: "No Color", color: "transparent" },
|
|
18
|
+
{ value: "#ff3b30", label: "Red", color: fillColor("#ff3b30") },
|
|
19
|
+
{ value: "#0a84ff", label: "Blue", color: fillColor("#0a84ff") },
|
|
20
|
+
]}
|
|
21
|
+
/>;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Props
|
|
25
|
+
|
|
26
|
+
- `name` (required): the radio group the chosen value submits under.
|
|
27
|
+
- `swatches` (required): `{ value, label, color }`. `label` names the swatch
|
|
28
|
+
for assistive technology and shows as its hover hint. `color` is a
|
|
29
|
+
`CssColor` (`uiColor()`, `colorVar()`, or `fillColor()`) or `'transparent'`
|
|
30
|
+
for the no-color swatch, drawn outlined and struck through.
|
|
31
|
+
- `value`: the chosen swatch.
|
|
32
|
+
- `label` (a visible legend) or `ariaLabel` names the group.
|
|
33
|
+
- `size` `default` (24px swatches) or `compact` (20px), `disabled`, `form`,
|
|
34
|
+
and `action` (a `data-action` on each radio; listen for `change`).
|
|
35
|
+
|
|
36
|
+
## Behavior and geometry
|
|
37
|
+
|
|
38
|
+
Tab reaches the group once; the arrow keys move the choice; Space chooses the
|
|
39
|
+
focused swatch. The chosen swatch wears a 2px ring in the text color, set off
|
|
40
|
+
from the dot by a 2px gap, so the choice never depends on the swatch's hue;
|
|
41
|
+
forced colors draw it in `Highlight`. The group takes the shared
|
|
42
|
+
block-content inset (a transparent 1px border and 8px padding), and the
|
|
43
|
+
swatches wrap with the 8px control gap.
|
|
44
|
+
|
|
45
|
+
Use `ChoiceChips` with swatches when each color also needs a visible name,
|
|
46
|
+
and the ColorPicker when any color is allowed.
|