@kerfjs/ui 5.0.0-beta.10 → 5.0.0-beta.100
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 +630 -132
- package/ai/application-ui-diagnostic-ids-v1.json +114 -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 +96 -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 +6401 -931
- 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 +551 -0
- package/ai/component-composition.d.ts +132 -0
- package/ai/component-composition.json +8729 -0
- package/ai/component-composition.schema.json +412 -0
- package/ai/components/README.md +185 -0
- package/ai/components/anchored-surface.md +99 -0
- package/ai/components/application-tabs.md +65 -0
- package/ai/components/badge.md +76 -0
- package/ai/components/chip.md +76 -0
- package/ai/components/choice-chips.md +87 -0
- package/ai/components/collapsible-panel.md +103 -0
- package/ai/components/column-track.md +78 -0
- package/ai/components/combobox.md +88 -0
- package/ai/components/composer.md +83 -0
- package/ai/components/content-item.md +98 -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/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 +88 -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/icon-button.md +82 -0
- package/ai/components/icon-toggle-button.md +80 -0
- package/ai/components/layout.md +75 -0
- package/ai/components/list-action-row.md +108 -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 +125 -0
- package/ai/components/loading-spinner.md +73 -0
- package/ai/components/lucide-icon.md +97 -0
- package/ai/components/nav-stack.md +115 -0
- package/ai/components/pane.md +115 -0
- package/ai/components/popup-menu.md +171 -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-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/segmented-control.md +82 -0
- package/ai/components/select.md +116 -0
- package/ai/components/skeleton.md +84 -0
- package/ai/components/spacer.md +86 -0
- package/ai/components/split-button.md +80 -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 +105 -0
- package/ai/components/tab-bar.md +114 -0
- package/ai/components/tab-navigator.md +100 -0
- package/ai/components/tabs.md +95 -0
- package/ai/components/text.md +90 -0
- package/ai/components/token-search-field.md +107 -0
- package/ai/components/toolbar-control-group.md +125 -0
- package/ai/components/toolbar-text.md +100 -0
- package/ai/components/toolbar.md +103 -0
- package/ai/components/value-table.md +80 -0
- package/ai/components/wa-accordion-item.md +55 -0
- package/ai/components/wa-accordion.md +65 -0
- package/ai/components/wa-animated-image.md +55 -0
- package/ai/components/wa-animation.md +55 -0
- package/ai/components/wa-avatar.md +55 -0
- package/ai/components/wa-badge.md +55 -0
- package/ai/components/wa-breadcrumb-item.md +53 -0
- package/ai/components/wa-breadcrumb.md +55 -0
- package/ai/components/wa-button-group.md +60 -0
- package/ai/components/wa-button.md +59 -0
- package/ai/components/wa-callout.md +58 -0
- package/ai/components/wa-card.md +59 -0
- package/ai/components/wa-carousel-item.md +53 -0
- package/ai/components/wa-carousel.md +55 -0
- package/ai/components/wa-checkbox-group.md +55 -0
- package/ai/components/wa-checkbox.md +55 -0
- package/ai/components/wa-color-picker.md +55 -0
- package/ai/components/wa-comparison.md +55 -0
- package/ai/components/wa-copy-button.md +55 -0
- package/ai/components/wa-details.md +61 -0
- package/ai/components/wa-dialog.md +59 -0
- package/ai/components/wa-divider.md +53 -0
- package/ai/components/wa-drawer.md +55 -0
- package/ai/components/wa-dropdown-item.md +60 -0
- package/ai/components/wa-dropdown.md +60 -0
- package/ai/components/wa-format-bytes.md +53 -0
- package/ai/components/wa-format-date.md +53 -0
- package/ai/components/wa-format-number.md +53 -0
- package/ai/components/wa-icon.md +58 -0
- package/ai/components/wa-include.md +53 -0
- package/ai/components/wa-input.md +59 -0
- package/ai/components/wa-intersection-observer.md +53 -0
- package/ai/components/wa-known-date.md +53 -0
- package/ai/components/wa-markdown.md +53 -0
- package/ai/components/wa-mutation-observer.md +53 -0
- package/ai/components/wa-number-input.md +55 -0
- package/ai/components/wa-option.md +59 -0
- package/ai/components/wa-otp-input.md +53 -0
- package/ai/components/wa-page.md +53 -0
- package/ai/components/wa-pagination.md +55 -0
- package/ai/components/wa-popover.md +55 -0
- package/ai/components/wa-popup.md +53 -0
- package/ai/components/wa-progress-bar.md +53 -0
- package/ai/components/wa-progress-ring.md +53 -0
- package/ai/components/wa-qr-code.md +53 -0
- package/ai/components/wa-radio-group.md +59 -0
- package/ai/components/wa-radio.md +55 -0
- package/ai/components/wa-random-content.md +53 -0
- package/ai/components/wa-rating.md +55 -0
- package/ai/components/wa-relative-time.md +53 -0
- package/ai/components/wa-resize-observer.md +53 -0
- package/ai/components/wa-scroller.md +53 -0
- package/ai/components/wa-select.md +63 -0
- package/ai/components/wa-skeleton.md +53 -0
- package/ai/components/wa-slider.md +55 -0
- package/ai/components/wa-spinner.md +58 -0
- package/ai/components/wa-split-panel.md +58 -0
- package/ai/components/wa-switch.md +53 -0
- package/ai/components/wa-tab-group.md +69 -0
- package/ai/components/wa-tab-panel.md +60 -0
- package/ai/components/wa-tab.md +59 -0
- package/ai/components/wa-tag.md +59 -0
- package/ai/components/wa-textarea.md +53 -0
- package/ai/components/wa-time-input.md +55 -0
- package/ai/components/wa-toast-item.md +60 -0
- package/ai/components/wa-toast.md +60 -0
- package/ai/components/wa-tooltip.md +55 -0
- package/ai/components/wa-tree-item.md +55 -0
- package/ai/components/wa-tree.md +55 -0
- package/ai/components/wa-zoomable-frame.md +55 -0
- package/ai/components/workbench.md +120 -0
- package/ai/public-api-signatures-v1.md +4261 -459
- package/ai/skill.md +441 -63
- package/ai/webawesome-jsx-signatures-v1.md +9 -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/app-tab.d.ts +39 -4
- package/dist/app-tab.js +2 -1
- package/dist/badge.d.ts +83 -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/badge.js +3 -0
- package/dist/browser/catalog.js +28 -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/column-track.js +3 -0
- package/dist/browser/combobox.js +3 -0
- package/dist/browser/composer.js +4 -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/edge-activity-indicator.js +3 -0
- package/dist/browser/file-picker.js +3 -0
- package/dist/browser/floating-toolbar.js +3 -0
- package/dist/browser/framed-list.js +3 -0
- package/dist/browser/grid.js +3 -0
- package/dist/browser/icon-button.js +4 -0
- package/dist/browser/icon-toggle-button.js +4 -0
- package/dist/browser/list-action-row.js +2 -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/nav-stack.js +11 -0
- package/dist/browser/pane.js +3 -0
- package/dist/browser/popup-menu.js +3 -0
- package/dist/browser/row.js +3 -0
- package/dist/browser/segmented-control.js +0 -1
- package/dist/browser/select.js +2 -1
- 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 +3 -0
- package/dist/browser/tab-navigator.js +4 -0
- package/dist/browser/text.js +3 -0
- package/dist/browser/toolbar-control-group.js +1 -0
- package/dist/browser/workbench.js +14 -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 +668 -105
- package/dist/catalog.js.map +1 -1
- package/dist/chip.d.ts +69 -0
- package/dist/chip.js +3 -0
- package/dist/chip.js.map +1 -0
- package/dist/choice-chips.d.ts +82 -0
- package/dist/choice-chips.js +3 -0
- package/dist/choice-chips.js.map +1 -0
- package/dist/chunk-2GOCOLQL.js +270 -0
- package/dist/chunk-2GOCOLQL.js.map +1 -0
- package/dist/chunk-2MSPNRWJ.js +82 -0
- package/dist/chunk-2MSPNRWJ.js.map +1 -0
- package/dist/chunk-34U4ANDJ.js +119 -0
- package/dist/chunk-34U4ANDJ.js.map +1 -0
- package/dist/chunk-3GLYIIFR.js +230 -0
- package/dist/chunk-3GLYIIFR.js.map +1 -0
- package/dist/{chunk-56RJXPHG.js → chunk-3VXDSIBJ.js} +7 -4
- package/dist/chunk-3VXDSIBJ.js.map +1 -0
- package/dist/chunk-3WYREXW4.js +120 -0
- package/dist/chunk-3WYREXW4.js.map +1 -0
- package/dist/chunk-4UB5Z3ZZ.js +68 -0
- package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
- package/dist/chunk-6C6DLP3W.js +31 -0
- package/dist/chunk-6C6DLP3W.js.map +1 -0
- package/dist/chunk-7IUEBNCO.js +108 -0
- package/dist/chunk-7IUEBNCO.js.map +1 -0
- package/dist/chunk-AN5IWMTM.js +24 -0
- package/dist/chunk-AN5IWMTM.js.map +1 -0
- package/dist/chunk-AV7CPAPT.js +82 -0
- package/dist/chunk-AV7CPAPT.js.map +1 -0
- package/dist/chunk-B53PS2LE.js +34 -0
- package/dist/chunk-B53PS2LE.js.map +1 -0
- package/dist/chunk-CA7LNX3J.js +44 -0
- package/dist/chunk-CA7LNX3J.js.map +1 -0
- package/dist/chunk-CEJ5FK6G.js +288 -0
- package/dist/chunk-CEJ5FK6G.js.map +1 -0
- package/dist/chunk-CMETHPKR.js +175 -0
- package/dist/chunk-CMETHPKR.js.map +1 -0
- package/dist/chunk-CMLPFIC5.js +46 -0
- package/dist/chunk-CMLPFIC5.js.map +1 -0
- package/dist/chunk-CVD5IZGB.js +66 -0
- package/dist/chunk-CVD5IZGB.js.map +1 -0
- package/dist/chunk-CXZXHZTR.js +514 -0
- package/dist/chunk-CXZXHZTR.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-ELCMSQNJ.js +49 -0
- package/dist/chunk-ELCMSQNJ.js.map +1 -0
- package/dist/chunk-EOO6PYGF.js +162 -0
- package/dist/chunk-EOO6PYGF.js.map +1 -0
- package/dist/chunk-ETCWQLJV.js +85 -0
- package/dist/chunk-ETCWQLJV.js.map +1 -0
- package/dist/chunk-FDZNYD4C.js +138 -0
- package/dist/chunk-FDZNYD4C.js.map +1 -0
- package/dist/chunk-FR76ZJQC.js +90 -0
- package/dist/chunk-FR76ZJQC.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-HGV7J4T6.js +86 -0
- package/dist/chunk-HGV7J4T6.js.map +1 -0
- package/dist/chunk-HLDRH23D.js +84 -0
- package/dist/chunk-HLDRH23D.js.map +1 -0
- package/dist/chunk-HQZYKJ56.js +302 -0
- package/dist/chunk-HQZYKJ56.js.map +1 -0
- package/dist/chunk-HZPHCSCS.js +95 -0
- package/dist/chunk-HZPHCSCS.js.map +1 -0
- package/dist/chunk-IKS72C6P.js +53 -0
- package/dist/chunk-IKS72C6P.js.map +1 -0
- package/dist/chunk-IM3GKYOG.js +202 -0
- package/dist/chunk-IM3GKYOG.js.map +1 -0
- package/dist/chunk-INI4WDWC.js +125 -0
- package/dist/chunk-INI4WDWC.js.map +1 -0
- package/dist/chunk-IQSRHXZR.js +164 -0
- package/dist/chunk-IQSRHXZR.js.map +1 -0
- package/dist/chunk-JOR5LGYE.js +55 -0
- package/dist/chunk-JOR5LGYE.js.map +1 -0
- package/dist/chunk-K4AT3V3J.js +545 -0
- package/dist/chunk-K4AT3V3J.js.map +1 -0
- package/dist/chunk-KCS6NJ3O.js +82 -0
- package/dist/chunk-KCS6NJ3O.js.map +1 -0
- package/dist/chunk-KH4KEMSP.js +71 -0
- package/dist/chunk-KH4KEMSP.js.map +1 -0
- package/dist/chunk-LL45C7BB.js +122 -0
- package/dist/chunk-LL45C7BB.js.map +1 -0
- package/dist/chunk-LOSRXZAH.js +100 -0
- package/dist/chunk-LOSRXZAH.js.map +1 -0
- package/dist/chunk-MF6ZUUJZ.js +300 -0
- package/dist/chunk-MF6ZUUJZ.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-MXNIVEVL.js +48 -0
- package/dist/chunk-MXNIVEVL.js.map +1 -0
- package/dist/{chunk-YGN7OMLT.js → chunk-NS2TBYM4.js} +8 -5
- package/dist/chunk-NS2TBYM4.js.map +1 -0
- package/dist/chunk-PIVY32AE.js +140 -0
- package/dist/chunk-PIVY32AE.js.map +1 -0
- package/dist/chunk-PYBBYSZ3.js +526 -0
- package/dist/chunk-PYBBYSZ3.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-QIG4IGUP.js +139 -0
- package/dist/chunk-QIG4IGUP.js.map +1 -0
- package/dist/chunk-QLA25V2K.js +493 -0
- package/dist/chunk-QLA25V2K.js.map +1 -0
- package/dist/chunk-QROYYGWU.js +52 -0
- package/dist/chunk-QROYYGWU.js.map +1 -0
- package/dist/chunk-QYMJHS4K.js +36 -0
- package/dist/chunk-QYMJHS4K.js.map +1 -0
- package/dist/chunk-RHD7RKGI.js +176 -0
- package/dist/chunk-RHD7RKGI.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-T4WJ5VGP.js +165 -0
- package/dist/chunk-T4WJ5VGP.js.map +1 -0
- package/dist/chunk-TDMHA7C3.js +251 -0
- package/dist/chunk-TDMHA7C3.js.map +1 -0
- package/dist/chunk-TGLUDQP2.js +138 -0
- package/dist/chunk-TGLUDQP2.js.map +1 -0
- package/dist/chunk-TLMMFQWM.js +222 -0
- package/dist/chunk-TLMMFQWM.js.map +1 -0
- package/dist/chunk-U6QYTMDB.js +85 -0
- package/dist/chunk-U6QYTMDB.js.map +1 -0
- package/dist/chunk-UMKV7YVQ.js +20 -0
- package/dist/chunk-UMKV7YVQ.js.map +1 -0
- package/dist/chunk-VFYO3UGZ.js +45 -0
- package/dist/chunk-VFYO3UGZ.js.map +1 -0
- package/dist/chunk-W4IK7AWD.js +73 -0
- package/dist/chunk-W4IK7AWD.js.map +1 -0
- package/dist/chunk-WVS6CUCT.js +48 -0
- package/dist/chunk-WVS6CUCT.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-YOA5W5ZH.js +807 -0
- package/dist/chunk-YOA5W5ZH.js.map +1 -0
- package/dist/chunk-YQ2AC4E2.js +59 -0
- package/dist/chunk-YQ2AC4E2.js.map +1 -0
- package/dist/chunk-ZKKO4MHC.js +25 -0
- package/dist/chunk-ZKKO4MHC.js.map +1 -0
- package/dist/chunk-ZNROKDSZ.js +54 -0
- package/dist/chunk-ZNROKDSZ.js.map +1 -0
- package/dist/collapsible-panel.d.ts +96 -17
- package/dist/collapsible-panel.js +132 -14
- package/dist/collapsible-panel.js.map +1 -1
- 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/composer.d.ts +62 -0
- package/dist/composer.js +5 -0
- package/dist/composer.js.map +1 -0
- package/dist/content-item.d.ts +116 -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/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 +47 -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 +51 -0
- package/dist/floating-toolbar.js +3 -0
- package/dist/floating-toolbar.js.map +1 -0
- 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 +9 -0
- package/dist/help-tags-register.js.map +1 -0
- package/dist/icon-button.d.ts +46 -0
- package/dist/icon-button.js +6 -0
- package/dist/icon-button.js.map +1 -0
- package/dist/icon-toggle-button.d.ts +42 -0
- package/dist/icon-toggle-button.js +6 -0
- package/dist/icon-toggle-button.js.map +1 -0
- package/dist/index.d.ts +63 -17
- package/dist/index.js +66 -23
- package/dist/list-action-row.d.ts +69 -12
- package/dist/list-action-row.js +5 -1
- package/dist/list-header.d.ts +65 -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 +128 -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 +15 -3
- package/dist/lucide-icon.js +2 -1
- package/dist/nav-stack-VXTumzKa.d.ts +158 -0
- package/dist/nav-stack.d.ts +15 -38
- package/dist/nav-stack.js +13 -1
- package/dist/pane.d.ts +153 -0
- package/dist/pane.js +5 -0
- package/dist/pane.js.map +1 -0
- package/dist/panel-toolbar-vg6Ir5Dy.d.ts +77 -0
- package/dist/popup-menu-register.d.ts +10 -0
- package/dist/popup-menu-register.js +336 -0
- package/dist/popup-menu-register.js.map +1 -0
- package/dist/popup-menu.d.ts +125 -0
- package/dist/popup-menu.js +3 -0
- package/dist/popup-menu.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/segmented-control.d.ts +12 -9
- package/dist/segmented-control.js +1 -2
- package/dist/select-register.js +255 -3
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +103 -8
- package/dist/select.js +4 -1
- 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/spacer.d.ts +18 -0
- package/dist/spacer.js +4 -0
- package/dist/spacer.js.map +1 -0
- package/dist/split-button.d.ts +57 -0
- package/dist/split-button.js +7 -0
- package/dist/split-button.js.map +1 -0
- package/dist/split-view.d.ts +63 -6
- package/dist/split-view.js +149 -10
- 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 +41 -0
- package/dist/styles/app-tab.css +232 -0
- package/dist/styles/badge.css +145 -0
- package/dist/styles/catalog/components/catalog-example-stack.css +14 -0
- package/dist/styles/catalog/components/catalog-example.css +204 -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 -498
- package/dist/styles/chip.css +208 -0
- package/dist/styles/choice-chips.css +154 -0
- package/dist/styles/collapsible-panel.css +450 -16
- package/dist/styles/column-track.css +57 -0
- package/dist/styles/combobox.css +113 -0
- package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
- package/dist/styles/components/actions/icon-button/icon-button.css +22 -0
- package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +83 -0
- package/dist/styles/components/actions/popup-menu/popup-menu.css +370 -0
- package/dist/styles/components/actions/split-button/split-button.css +95 -0
- package/dist/styles/components/actions/toolbar/toolbar.css +443 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +1069 -0
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +269 -0
- package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
- package/dist/styles/components/collections/list/list.css +250 -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 +229 -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 +41 -0
- package/dist/styles/components/feedback/badge/badge.css +145 -0
- package/dist/styles/components/feedback/chip/chip.css +208 -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/skeleton/skeleton.css +92 -0
- package/dist/styles/components/feedback/state-banner/state-banner.css +297 -0
- package/dist/styles/components/forms/choice-chips/choice-chips.css +154 -0
- package/dist/styles/components/forms/combobox/combobox.css +113 -0
- package/dist/styles/components/forms/composer/composer.css +100 -0
- package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
- package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
- package/dist/styles/components/forms/select/select.css +455 -0
- package/dist/styles/components/forms/token-search-field/token-search-field.css +432 -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 +382 -0
- package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
- package/dist/styles/components/layout/row/row.css +114 -0
- package/dist/styles/components/layout/spacer/spacer.css +11 -0
- package/dist/styles/components/layout/split-view/split-view.css +146 -0
- package/dist/styles/components/layout/workbench/workbench.css +1086 -0
- package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
- package/dist/styles/components/navigation/app-tab/app-tab.css +384 -0
- package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +342 -0
- package/dist/styles/components/navigation/tab-bar/tab-bar.css +197 -0
- package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +325 -0
- package/dist/styles/components/surfaces/content-item/content-item.css +138 -0
- package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +31 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +425 -0
- package/dist/styles/components/typography/text/text.css +220 -0
- package/dist/styles/composer.css +100 -0
- package/dist/styles/content-item.css +138 -0
- package/dist/styles/content-swap.css +154 -0
- package/dist/styles/corner-status.css +60 -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 +119 -0
- package/dist/styles/foundation.css +261 -45
- package/dist/styles/framed-list.css +47 -0
- package/dist/styles/grid.css +88 -0
- package/dist/styles/icon-button.css +22 -0
- package/dist/styles/icon-toggle-button.css +83 -0
- package/dist/styles/layout.css +3 -41
- package/dist/styles/list-action-row.css +324 -18
- package/dist/styles/list-header.css +128 -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 +250 -0
- package/dist/styles/loading-spinner.css +4 -0
- package/dist/styles/lucide-icon.css +9 -0
- package/dist/styles/nav-stack.css +280 -49
- package/dist/styles/pane.css +382 -0
- package/dist/styles/popup-menu.css +370 -0
- package/dist/styles/resizable-region.css +438 -4
- package/dist/styles/row.css +114 -0
- package/dist/styles/segmented-control.css +36 -9
- package/dist/styles/select.css +338 -21
- package/dist/styles/skeleton.css +64 -3
- package/dist/styles/spacer.css +11 -0
- package/dist/styles/split-button.css +95 -0
- package/dist/styles/split-view.css +114 -3
- package/dist/styles/state-banner.css +146 -22
- package/dist/styles/styles.css +23 -1
- package/dist/styles/summary-row.css +161 -0
- package/dist/styles/sunken-panel.css +31 -0
- package/dist/styles/surface-scaffold.css +425 -0
- package/dist/styles/tab-bar.css +161 -9
- package/dist/styles/tab-navigator.css +325 -0
- package/dist/styles/text.css +220 -0
- package/dist/styles/token-search-field.css +202 -59
- package/dist/styles/toolbar-control-group.css +894 -36
- package/dist/styles/toolbar-text.css +236 -7
- package/dist/styles/toolbar.css +393 -11
- package/dist/styles/value-table.css +115 -7
- package/dist/styles/webawesome.css +410 -17
- package/dist/styles/workbench.css +999 -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 +9 -0
- package/dist/surface-scaffold-register.js +151 -0
- package/dist/surface-scaffold-register.js.map +1 -0
- package/dist/surface-scaffold.d.ts +170 -0
- package/dist/surface-scaffold.js +4 -0
- package/dist/surface-scaffold.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 +114 -0
- package/dist/tab-navigator.js +102 -0
- package/dist/tab-navigator.js.map +1 -0
- package/dist/text.d.ts +98 -0
- package/dist/text.js +3 -0
- package/dist/text.js.map +1 -0
- package/dist/token-search-field.d.ts +3 -43
- package/dist/token-search-field.js +2 -1
- package/dist/token-search-model-aYR0YAei.d.ts +184 -0
- package/dist/token-search-model.d.ts +3 -0
- package/dist/token-search-model.js +3 -0
- package/dist/token-search-model.js.map +1 -0
- package/dist/toolbar-control-group.d.ts +96 -7
- package/dist/toolbar-control-group.js +3 -1
- package/dist/toolbar-text.d.ts +58 -9
- package/dist/toolbar-text.js +2 -1
- package/dist/toolbar.d.ts +71 -7
- package/dist/toolbar.js +1 -1
- package/dist/types-CVgIwSdq.d.ts +189 -0
- package/dist/value-table.d.ts +30 -4
- package/dist/value-table.js +2 -1
- package/dist/webawesome.d.ts +8 -1
- package/dist/wire-catalog.d.ts +111 -5
- package/dist/wire-catalog.js +302 -14
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-comboboxes.d.ts +26 -0
- package/dist/wire-comboboxes.js +3 -0
- package/dist/wire-comboboxes.js.map +1 -0
- package/dist/wire-composers.d.ts +16 -0
- package/dist/wire-composers.js +3 -0
- package/dist/wire-composers.js.map +1 -0
- package/dist/wire-content-items.d.ts +11 -0
- package/dist/wire-content-items.js +139 -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 +26 -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-nav-stack.d.ts +4 -1
- package/dist/wire-nav-stack.js +326 -15
- package/dist/wire-nav-stack.js.map +1 -1
- 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-sidebar.d.ts +24 -4
- package/dist/wire-sidebar.js +159 -45
- package/dist/wire-sidebar.js.map +1 -1
- 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-token-search-fields.d.ts +28 -10
- package/dist/wire-token-search-fields.js +2 -1
- 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.d.ts +253 -10
- package/dist/workbench.js +20 -15
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +640 -33
- package/docs/anchored-surface.md +101 -0
- package/docs/app-layouts.md +159 -10
- package/docs/apple-hig.md +2 -0
- package/docs/catalog.md +565 -63
- package/docs/collapsible-panel.md +308 -25
- package/docs/component-contract.md +816 -53
- package/docs/component-integration.md +75 -0
- package/docs/component-selection.md +962 -99
- package/docs/composer.md +143 -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/composer/chat-dark.svg +1 -0
- package/docs/design/templates/composer/chat.svg +1 -0
- package/docs/design/templates/composer/prompt-dark.svg +1 -0
- package/docs/design/templates/composer/prompt.svg +1 -0
- package/docs/design/templates/composer-dark.svg +1 -0
- package/docs/design/templates/composer.svg +1 -0
- package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
- package/docs/design/templates/empty-state/filtered.svg +1 -0
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
- package/docs/design/templates/empty-state/with-action.svg +1 -0
- package/docs/design/templates/empty-state-dark.svg +1 -0
- package/docs/design/templates/empty-state.svg +1 -0
- 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 -0
- package/docs/design/templates/list-action-row/default.svg +1 -0
- 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 -0
- package/docs/design/templates/list-action-row/selected.svg +1 -0
- 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 -0
- package/docs/design/templates/list-action-row.svg +1 -0
- package/docs/design/templates/list-dark.svg +1 -0
- package/docs/design/templates/list-header/action-dark.svg +1 -0
- package/docs/design/templates/list-header/action.svg +1 -0
- package/docs/design/templates/list-header/count-dark.svg +1 -0
- package/docs/design/templates/list-header/count.svg +1 -0
- 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 -0
- package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
- package/docs/design/templates/list-header-dark.svg +1 -0
- package/docs/design/templates/list-header.svg +1 -0
- package/docs/design/templates/list-item/default-dark.svg +1 -0
- package/docs/design/templates/list-item/default.svg +1 -0
- 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 -0
- package/docs/design/templates/list-item/multiline.svg +1 -0
- package/docs/design/templates/list-item/selected-dark.svg +1 -0
- package/docs/design/templates/list-item/selected.svg +1 -0
- package/docs/design/templates/list-item/trailing-dark.svg +1 -0
- package/docs/design/templates/list-item/trailing.svg +1 -0
- package/docs/design/templates/list-item-dark.svg +1 -0
- package/docs/design/templates/list-item.svg +1 -0
- package/docs/design/templates/list.svg +1 -0
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
- package/docs/design/templates/segmented-control/equal.svg +1 -0
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
- package/docs/design/templates/segmented-control/pill-small.svg +1 -0
- package/docs/design/templates/segmented-control-dark.svg +1 -0
- package/docs/design/templates/segmented-control.svg +1 -0
- package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
- package/docs/design/templates/skeleton/avatar.svg +1 -0
- package/docs/design/templates/skeleton/block-dark.svg +1 -0
- package/docs/design/templates/skeleton/block.svg +1 -0
- package/docs/design/templates/skeleton/lines-dark.svg +1 -0
- package/docs/design/templates/skeleton/lines.svg +1 -0
- package/docs/design/templates/skeleton-dark.svg +1 -0
- package/docs/design/templates/skeleton.svg +1 -0
- package/docs/design/templates/state-banner/danger-dark.svg +1 -0
- package/docs/design/templates/state-banner/danger.svg +1 -0
- 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 -0
- package/docs/design/templates/state-banner/info.svg +1 -0
- 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 -0
- package/docs/design/templates/state-banner/success.svg +1 -0
- package/docs/design/templates/state-banner/warning-dark.svg +1 -0
- package/docs/design/templates/state-banner/warning.svg +1 -0
- package/docs/design/templates/state-banner-dark.svg +1 -0
- package/docs/design/templates/state-banner.svg +1 -0
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
- package/docs/design/templates/tab-bar-dark.svg +1 -0
- package/docs/design/templates/tab-bar.svg +1 -0
- package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
- package/docs/design/templates/token-search-field/empty.svg +1 -0
- package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
- package/docs/design/templates/token-search-field/tokens.svg +1 -0
- package/docs/design/templates/token-search-field-dark.svg +1 -0
- package/docs/design/templates/token-search-field.svg +1 -0
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
- 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/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 -0
- 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 -0
- package/docs/design/templates/toolbar-text/default.svg +1 -0
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/large.svg +1 -0
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/small.svg +1 -0
- package/docs/design/templates/toolbar-text-dark.svg +1 -0
- package/docs/design/templates/toolbar-text.svg +1 -0
- package/docs/design/templates/toolbar.svg +1 -0
- package/docs/design/templates/value-table/details-dark.svg +1 -0
- package/docs/design/templates/value-table/details.svg +1 -0
- package/docs/design/templates/value-table-dark.svg +1 -0
- package/docs/design/templates/value-table.svg +1 -0
- package/docs/design/templates.md +75 -18
- package/docs/design-philosophy.md +65 -20
- package/docs/device-class.md +10 -9
- 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 +796 -53
- package/docs/nav-stack.md +287 -14
- package/docs/recipes.md +129 -73
- package/docs/split-view.md +96 -7
- package/docs/sunken-panel.md +106 -0
- package/docs/surface-scaffold.md +270 -0
- package/docs/tab-navigator.md +255 -0
- package/docs/type-contracts.md +137 -0
- package/docs/ui-analyzer.md +406 -0
- package/docs/ui-doctor.md +281 -0
- package/docs/ui-evaluator.md +139 -0
- package/docs/ux-demo.md +48 -17
- package/docs/webawesome-theme.md +215 -16
- package/docs/workbench.md +627 -12
- package/docs/writing.md +152 -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 +591 -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 +770 -50
- package/package.json +345 -27
- 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 +133 -21
- package/ux-demo/recipes/list-detail-dialog.tsx +255 -14
- package/ux-demo/recipes/list-workspace-states.tsx +183 -11
- package/ux-demo/recipes/loaders.ts +9 -3
- package/ux-demo/recipes/loading-inspector.tsx +162 -39
- package/ux-demo/recipes/mount-recipe.ts +26 -10
- package/ux-demo/recipes/navigation-sidebar.tsx +137 -11
- package/ux-demo/recipes/navigation-stack.tsx +79 -24
- package/ux-demo/recipes/types.ts +17 -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/browser/panel-header.js +0 -7
- 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-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-CVZYNJJ5.js +0 -265
- package/dist/chunk-CVZYNJJ5.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-LC3YSAZC.js +0 -39
- package/dist/chunk-LC3YSAZC.js.map +0 -1
- package/dist/chunk-M5JRI6MN.js +0 -27
- package/dist/chunk-M5JRI6MN.js.map +0 -1
- package/dist/chunk-MFKMHK5W.js +0 -10
- package/dist/chunk-MFKMHK5W.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-W5EQ3HYQ.js +0 -42
- package/dist/chunk-W5EQ3HYQ.js.map +0 -1
- package/dist/chunk-WVPYVDXY.js +0 -15
- package/dist/chunk-WVPYVDXY.js.map +0 -1
- package/dist/chunk-XXMOARTH.js +0 -229
- package/dist/chunk-XXMOARTH.js.map +0 -1
- package/dist/chunk-Y5MRDTLC.js +0 -20
- package/dist/chunk-Y5MRDTLC.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/panel-header.css +0 -64
- package/dist/styles/tab-scaffold.css +0 -84
- 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/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/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/tab-scaffold.md +0 -41
- package/ux-demo/recipes/recipes.css +0 -448
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/wiring/wire-toolbar-visibility.ts"],"names":[],"mappings":"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","file":"chunk-2GOCOLQL.js","sourcesContent":["type Root = HTMLElement | Document;\n\nconst HIDE_BELOW = 'data-hide-below';\nconst SHOW_BELOW = 'data-show-below';\nconst HIDDEN = 'data-toolbar-width-hidden';\nconst PROBE = 'data-toolbar-visibility-probe';\nconst STATE = 'data-toolbar-visibility-state';\nconst LENGTH = '--kui-toolbar-visibility-length';\nconst ITEM = `[data-component=\"toolbar-control-group\"][${HIDE_BELOW}], [data-component=\"toolbar-control-group\"][${SHOW_BELOW}], [data-component=\"toolbar-text\"][${HIDE_BELOW}], [data-component=\"toolbar-text\"][${SHOW_BELOW}]`;\n\ninterface Measurement {\n toolbar: HTMLElement;\n box: HTMLDivElement;\n hide: HTMLDivElement;\n show: HTMLDivElement;\n}\n\ninterface WrittenAttribute {\n original: string | null;\n value: string | null;\n state: HTMLSpanElement;\n}\n\nconst controllers = new WeakMap<Document, (root: Root) => () => void>();\n\n/**\n * Wire ToolbarText and ToolbarControlGroup width thresholds below root.\n * Below is strict: hideBelow hides at width < threshold; showBelow hides at\n * width >= threshold. Percentages use the closest Toolbar's content box;\n * em and custom properties use the item's own inherited context. Invalid,\n * negative, unresolved, or contradictory thresholds leave the item visible.\n * This helper changes only a component-owned visibility marker. Existing\n * CSS visibility policies still apply. Dispose with the owning application.\n */\nexport function wireToolbarVisibility(root: Root): () => void {\n const document =\n root.nodeType === 9 ? (root as Document) : root.ownerDocument!;\n let register = controllers.get(document);\n if (!register) {\n register = createController(document);\n controllers.set(document, register);\n }\n return register(root);\n}\n\nfunction createController(document: Document) {\n const view = document.defaultView;\n const registrations = new Set<{ root: Root }>();\n const measurements = new Map<HTMLElement, Measurement>();\n const written = new Map<HTMLElement, WrittenAttribute>();\n const observed = new Set<Element>();\n let disposed = false;\n let refreshing = false;\n const normalizedStyle = document.createElement('div').style;\n\n function setStyle(element: HTMLElement, property: string, value: string) {\n // CSSOM can normalize computed font/token values on assignment. Compare\n // that serialization, preserving meaningful blank custom-property tokens.\n normalizedStyle.removeProperty(property);\n normalizedStyle.setProperty(property, value);\n const normalized = normalizedStyle.getPropertyValue(property);\n if (\n element.style.getPropertyValue(property) === normalized &&\n element.style.getPropertyPriority(property) === ''\n )\n return;\n if (normalized === '') element.style.removeProperty(property);\n else element.style.setProperty(property, normalized);\n }\n\n function write(element: HTMLElement, hidden: boolean) {\n let previous = written.get(element);\n if (!previous) {\n const state = document.createElement('span');\n state.setAttribute(STATE, '');\n state.setAttribute('data-morph-preserve', '');\n state.setAttribute('aria-hidden', 'true');\n state.hidden = true;\n previous = { original: element.getAttribute(HIDDEN), value: null, state };\n written.set(element, previous);\n }\n if (previous.state.parentElement !== element)\n element.append(previous.state);\n const value = hidden ? 'true' : null;\n if (previous.state.getAttribute(HIDDEN) !== value) {\n if (value === null) previous.state.removeAttribute(HIDDEN);\n else previous.state.setAttribute(HIDDEN, value);\n }\n if (element.getAttribute(HIDDEN) !== value) {\n if (value === null) element.removeAttribute(HIDDEN);\n else element.setAttribute(HIDDEN, value);\n }\n previous.value = value;\n }\n\n function restore(element: HTMLElement) {\n const previous = written.get(element)!;\n previous.state.remove();\n if (element.getAttribute(HIDDEN) === previous.value) {\n if (previous.original === null) element.removeAttribute(HIDDEN);\n else element.setAttribute(HIDDEN, previous.original);\n }\n written.delete(element);\n }\n\n function contentWidth(toolbar: HTMLElement) {\n const style = view!.getComputedStyle(toolbar);\n const inset = (property: string) =>\n parseFloat(style.getPropertyValue(property)) || 0;\n const padding = inset('padding-left') + inset('padding-right');\n const border = inset('border-left-width') + inset('border-right-width');\n const width = parseFloat(style.width);\n return Math.max(\n 0,\n Number.isFinite(width)\n ? width - (style.boxSizing === 'border-box' ? padding + border : 0)\n : toolbar.getBoundingClientRect().width - padding - border,\n );\n }\n\n function createMeasurement(toolbar: HTMLElement): Measurement {\n const box = document.createElement('div');\n box.setAttribute(PROBE, '');\n // Kerf's render template never owns these injected measurements. Keep\n // them across morphs instead of recreating probes and observers each pass.\n box.setAttribute('data-morph-preserve', '');\n box.setAttribute('aria-hidden', 'true');\n // An out-of-flow clipped box never participates in the toolbar's grid,\n // intrinsic size or scroll overflow. Its explicit width defines % lengths.\n const hide = document.createElement('div');\n const show = document.createElement('div');\n box.append(hide, show);\n toolbar.append(box);\n return { toolbar, box, hide, show };\n }\n\n function resolveLength(\n probe: HTMLElement,\n value: string | null,\n ): number | null {\n if (value === null) return null;\n // The typed private property uses -1px as its invalid/unresolved sentinel.\n // Absolute left's used-value CSSOM alone turns invalid auto into 0px.\n setStyle(probe, LENGTH, value);\n const left = view!.getComputedStyle(probe).left;\n if (!/^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)px$/.test(left)) return null;\n const pixels = parseFloat(left);\n return Number.isFinite(pixels) && pixels >= 0 ? pixels : null;\n }\n\n function copyContext(\n item: HTMLElement,\n measurement: Measurement,\n width: number,\n ) {\n const style = view!.getComputedStyle(item);\n const { box } = measurement;\n setStyle(box, 'width', `${width}px`);\n for (const property of [\n 'font-size',\n 'font-family',\n 'font-weight',\n 'font-style',\n 'font-stretch',\n 'font-variant',\n 'font-feature-settings',\n 'font-variation-settings',\n 'font-size-adjust',\n 'font-kerning',\n 'line-height',\n ])\n setStyle(box, property, style.getPropertyValue(property));\n // The box remains outside a hidden item, but resolves tokens from that\n // item, including tokens declared on its root rather than the toolbar.\n const properties = new Set<string>();\n for (let index = 0; index < style.length; index++) {\n const name = style.item(index);\n if (!name.startsWith('--')) continue;\n properties.add(name);\n setStyle(box, name, style.getPropertyValue(name));\n }\n for (let index = box.style.length - 1; index >= 0; index--) {\n const name = box.style.item(index);\n if (name.startsWith('--') && !properties.has(name))\n box.style.removeProperty(name);\n }\n }\n\n function refresh() {\n if (disposed || refreshing || !view) return;\n refreshing = true;\n try {\n const items = new Set<HTMLElement>();\n for (const { root } of registrations) {\n root\n .querySelectorAll<HTMLElement>(ITEM)\n .forEach((item) => items.add(item));\n if (root.nodeType === 1 && (root as HTMLElement).matches(ITEM))\n items.add(root as HTMLElement);\n }\n const wanted = new Set<Element>();\n const marked = new Set<HTMLElement>();\n for (const item of items) {\n const toolbar = item.closest<HTMLElement>('[data-component=\"toolbar\"]');\n if (!toolbar) continue;\n let measurement = measurements.get(item);\n if (\n measurement?.toolbar !== toolbar ||\n measurement.box.parentElement !== toolbar\n ) {\n measurement?.box.remove();\n measurement = createMeasurement(toolbar);\n measurements.set(item, measurement);\n }\n const width = contentWidth(toolbar);\n copyContext(item, measurement, width);\n const hideValue = item.getAttribute(HIDE_BELOW);\n const showValue = item.getAttribute(SHOW_BELOW);\n const hide = resolveLength(measurement.hide, hideValue);\n const show = resolveLength(measurement.show, showValue);\n const valid =\n (hideValue === null || hide !== null) &&\n (showValue === null || show !== null) &&\n !(hide !== null && show !== null && hide >= show);\n const hidden =\n valid &&\n ((hide !== null && width < hide) || (show !== null && width >= show));\n write(item, hidden);\n marked.add(item);\n const status = item.nextElementSibling;\n if (\n status instanceof view.HTMLElement &&\n item.matches(\n '[data-component=\"toolbar-control-group\"][data-busy=\"true\"]',\n ) &&\n status.matches(\n '.kui-toolbar-control-group__busy-status[role=\"status\"]',\n )\n ) {\n write(\n status,\n hidden || view.getComputedStyle(item).display === 'none',\n );\n marked.add(status);\n }\n wanted.add(toolbar);\n wanted.add(measurement.hide);\n wanted.add(measurement.show);\n }\n for (const [item, measurement] of measurements)\n if (\n !items.has(item) ||\n item.closest('[data-component=\"toolbar\"]') !== measurement.toolbar\n ) {\n measurement.box.remove();\n measurements.delete(item);\n }\n for (const element of written.keys())\n if (!marked.has(element)) restore(element);\n for (const element of observed)\n if (!wanted.has(element)) {\n resizeObserver?.unobserve(element);\n observed.delete(element);\n }\n for (const element of wanted)\n if (!observed.has(element)) {\n resizeObserver?.observe(element);\n observed.add(element);\n }\n } finally {\n refreshing = false;\n }\n }\n\n const resizeObserver = view?.ResizeObserver\n ? new view.ResizeObserver(refresh)\n : null;\n const mutationObserver = view?.MutationObserver\n ? new view.MutationObserver((records) => {\n const internal = (node: Node) =>\n node.nodeType === 1 &&\n ((node as Element).hasAttribute(PROBE) ||\n (node as Element).hasAttribute(STATE) ||\n Boolean((node as Element).closest(`[${PROBE}], [${STATE}]`)));\n if (\n records.some(\n (record) =>\n (record.type === 'childList' &&\n [...record.removedNodes].some(\n (node) =>\n node.nodeType === 1 &&\n ((node as Element).hasAttribute(PROBE) ||\n (node as Element).hasAttribute(STATE)),\n )) ||\n (!internal(record.target) &&\n (record.type !== 'childList' ||\n [...record.addedNodes, ...record.removedNodes].some(\n (node) => !internal(node),\n ))),\n )\n )\n refresh();\n })\n : null;\n // Ancestor theme/font changes must refresh even outside the wired subtree.\n mutationObserver?.observe(document.documentElement, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\n HIDE_BELOW,\n SHOW_BELOW,\n HIDDEN,\n 'class',\n 'style',\n 'data-component',\n 'data-busy',\n 'data-expanded',\n 'data-visibility',\n 'data-size',\n 'data-tone',\n ],\n });\n // Preference media can change inherited tokens at a fixed viewport width.\n const media = [\n '(prefers-color-scheme: dark)',\n '(prefers-contrast: more)',\n '(prefers-contrast: less)',\n '(forced-colors: active)',\n '(prefers-reduced-motion: reduce)',\n '(pointer: coarse)',\n '(hover: hover)',\n ].flatMap((query) => (view?.matchMedia ? [view.matchMedia(query)] : []));\n for (const preference of media)\n preference.addEventListener('change', refresh);\n document.fonts?.addEventListener('loadingdone', refresh);\n view?.addEventListener('resize', refresh);\n\n return (root: Root) => {\n const registration = { root };\n registrations.add(registration);\n refresh();\n return () => {\n if (!registrations.delete(registration)) return;\n if (registrations.size) refresh();\n else {\n disposed = true;\n mutationObserver?.disconnect();\n resizeObserver?.disconnect();\n for (const preference of media)\n preference.removeEventListener('change', refresh);\n document.fonts?.removeEventListener('loadingdone', refresh);\n view?.removeEventListener('resize', refresh);\n for (const measurement of measurements.values())\n measurement.box.remove();\n for (const element of written.keys()) restore(element);\n measurements.clear();\n observed.clear();\n controllers.delete(document);\n }\n };\n };\n}\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// src/components/forms/file-picker/wiring/wire-file-pickers.ts
|
|
2
|
+
var PICKER = '[data-component="file-picker-trigger"], [data-component="file-drop-zone"]';
|
|
3
|
+
var DROP_ZONE = '[data-component="file-drop-zone"]';
|
|
4
|
+
function fileMatchesAccept(file, accept) {
|
|
5
|
+
const tokens = accept.split(",").map((token) => token.trim().toLowerCase()).filter(Boolean);
|
|
6
|
+
if (tokens.length === 0) return true;
|
|
7
|
+
const name = file.name.toLowerCase();
|
|
8
|
+
const type = file.type.toLowerCase();
|
|
9
|
+
return tokens.some((token) => {
|
|
10
|
+
if (token.startsWith(".")) return name.endsWith(token);
|
|
11
|
+
if (token.endsWith("/*")) return type.startsWith(token.slice(0, -1));
|
|
12
|
+
return type === token;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function pickerOf(input) {
|
|
16
|
+
return input.closest(PICKER);
|
|
17
|
+
}
|
|
18
|
+
function inputOf(picker) {
|
|
19
|
+
return picker.querySelector('input[type="file"]');
|
|
20
|
+
}
|
|
21
|
+
function wireFilePickers(root, { onFiles }) {
|
|
22
|
+
const report = (picker, files, via) => {
|
|
23
|
+
if (files.length === 0) return;
|
|
24
|
+
onFiles({ picker, id: picker.dataset.filePickerId, files, via });
|
|
25
|
+
};
|
|
26
|
+
const onChange = (event) => {
|
|
27
|
+
const input = event.target;
|
|
28
|
+
if (!(input instanceof HTMLInputElement) || input.type !== "file") return;
|
|
29
|
+
const picker = pickerOf(input);
|
|
30
|
+
if (!picker) return;
|
|
31
|
+
report(picker, [...input.files], "browse");
|
|
32
|
+
input.value = "";
|
|
33
|
+
};
|
|
34
|
+
const zoneOf = (event) => {
|
|
35
|
+
const zone = event.target instanceof Element ? event.target.closest(DROP_ZONE) : null;
|
|
36
|
+
return zone && zone.dataset.disabled !== "true" ? zone : null;
|
|
37
|
+
};
|
|
38
|
+
const carriesFiles = (event) => [...event.dataTransfer?.types ?? []].includes("Files");
|
|
39
|
+
const onDragOver = (event) => {
|
|
40
|
+
const drag = event;
|
|
41
|
+
const zone = zoneOf(drag);
|
|
42
|
+
if (!zone || !carriesFiles(drag)) return;
|
|
43
|
+
drag.preventDefault();
|
|
44
|
+
drag.dataTransfer.dropEffect = "copy";
|
|
45
|
+
zone.dataset.dragging = "true";
|
|
46
|
+
};
|
|
47
|
+
const onDragLeave = (event) => {
|
|
48
|
+
const zone = zoneOf(event);
|
|
49
|
+
const related = event.relatedTarget;
|
|
50
|
+
if (zone && !(related instanceof Node && zone.contains(related)))
|
|
51
|
+
delete zone.dataset.dragging;
|
|
52
|
+
};
|
|
53
|
+
const onDrop = (event) => {
|
|
54
|
+
const drag = event;
|
|
55
|
+
const zone = zoneOf(drag);
|
|
56
|
+
if (!zone) return;
|
|
57
|
+
drag.preventDefault();
|
|
58
|
+
delete zone.dataset.dragging;
|
|
59
|
+
const input = inputOf(zone);
|
|
60
|
+
let files = [...drag.dataTransfer?.files ?? []];
|
|
61
|
+
if (input?.accept)
|
|
62
|
+
files = files.filter((file) => fileMatchesAccept(file, input.accept));
|
|
63
|
+
if (input && !input.multiple) files = files.slice(0, 1);
|
|
64
|
+
report(zone, files, "drop");
|
|
65
|
+
};
|
|
66
|
+
root.addEventListener("change", onChange);
|
|
67
|
+
root.addEventListener("dragenter", onDragOver);
|
|
68
|
+
root.addEventListener("dragover", onDragOver);
|
|
69
|
+
root.addEventListener("dragleave", onDragLeave);
|
|
70
|
+
root.addEventListener("drop", onDrop);
|
|
71
|
+
return () => {
|
|
72
|
+
root.removeEventListener("change", onChange);
|
|
73
|
+
root.removeEventListener("dragenter", onDragOver);
|
|
74
|
+
root.removeEventListener("dragover", onDragOver);
|
|
75
|
+
root.removeEventListener("dragleave", onDragLeave);
|
|
76
|
+
root.removeEventListener("drop", onDrop);
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { fileMatchesAccept, wireFilePickers };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=chunk-2MSPNRWJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/file-picker/wiring/wire-file-pickers.ts"],"names":[],"mappings":"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","file":"chunk-2MSPNRWJ.js","sourcesContent":["type Root = HTMLElement | Document;\n\nconst PICKER =\n '[data-component=\"file-picker-trigger\"], [data-component=\"file-drop-zone\"]';\nconst DROP_ZONE = '[data-component=\"file-drop-zone\"]';\n\n/** Files a picker reported, and how they arrived. */\nexport interface FilePickerSelection {\n /** The trigger or drop zone element. */\n picker: HTMLElement;\n /** Its `pickerId`, when set. */\n id?: string;\n files: File[];\n via: 'browse' | 'drop';\n}\n\nexport interface WireFilePickersOptions {\n onFiles: (selection: FilePickerSelection) => void;\n}\n\n/** Whether a file matches a native `accept` list (`.png, image/*, text/plain`). */\nexport function fileMatchesAccept(file: File, accept: string): boolean {\n const tokens = accept\n .split(',')\n .map((token) => token.trim().toLowerCase())\n .filter(Boolean);\n if (tokens.length === 0) return true;\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return tokens.some((token) => {\n if (token.startsWith('.')) return name.endsWith(token);\n if (token.endsWith('/*')) return type.startsWith(token.slice(0, -1));\n return type === token;\n });\n}\n\nfunction pickerOf(input: HTMLInputElement): HTMLElement | null {\n return input.closest<HTMLElement>(PICKER);\n}\n\nfunction inputOf(picker: HTMLElement): HTMLInputElement | null {\n return picker.querySelector<HTMLInputElement>('input[type=\"file\"]');\n}\n\n/**\n * Report files chosen through any `FilePickerTrigger` or `FileDropZone` below\n * root, or dropped on a `FileDropZone`, and mark a zone `data-dragging` while\n * files are dragged over it. Dropped files are filtered by the input's\n * `accept` (and to one when it is not `multiple`); a disabled picker ignores\n * drops. The input is reset after each report, so choosing the same file again\n * reports again. Dispose with the owning application.\n */\nexport function wireFilePickers(\n root: Root,\n { onFiles }: WireFilePickersOptions,\n): () => void {\n const report = (\n picker: HTMLElement,\n files: File[],\n via: FilePickerSelection['via'],\n ) => {\n if (files.length === 0) return;\n onFiles({ picker, id: picker.dataset.filePickerId, files, via });\n };\n const onChange = (event: Event) => {\n const input = event.target;\n if (!(input instanceof HTMLInputElement) || input.type !== 'file') return;\n const picker = pickerOf(input);\n if (!picker) return;\n // A file input always has a FileList.\n report(picker, [...input.files!], 'browse');\n input.value = '';\n };\n const zoneOf = (event: Event): HTMLElement | null => {\n const zone =\n event.target instanceof Element\n ? event.target.closest<HTMLElement>(DROP_ZONE)\n : null;\n return zone && zone.dataset.disabled !== 'true' ? zone : null;\n };\n const carriesFiles = (event: DragEvent) =>\n [...(event.dataTransfer?.types ?? [])].includes('Files');\n const onDragOver = (event: Event) => {\n const drag = event as DragEvent;\n const zone = zoneOf(drag);\n if (!zone || !carriesFiles(drag)) return;\n drag.preventDefault();\n // carriesFiles guarantees a DataTransfer.\n drag.dataTransfer!.dropEffect = 'copy';\n zone.dataset.dragging = 'true';\n };\n const onDragLeave = (event: Event) => {\n const zone = zoneOf(event);\n const related = (event as DragEvent).relatedTarget;\n if (zone && !(related instanceof Node && zone.contains(related)))\n delete zone.dataset.dragging;\n };\n const onDrop = (event: Event) => {\n const drag = event as DragEvent;\n const zone = zoneOf(drag);\n if (!zone) return;\n drag.preventDefault();\n delete zone.dataset.dragging;\n const input = inputOf(zone);\n let files = [...(drag.dataTransfer?.files ?? [])];\n if (input?.accept)\n files = files.filter((file) => fileMatchesAccept(file, input.accept));\n if (input && !input.multiple) files = files.slice(0, 1);\n report(zone, files, 'drop');\n };\n root.addEventListener('change', onChange);\n root.addEventListener('dragenter', onDragOver);\n root.addEventListener('dragover', onDragOver);\n root.addEventListener('dragleave', onDragLeave);\n root.addEventListener('drop', onDrop);\n return () => {\n root.removeEventListener('change', onChange);\n root.removeEventListener('dragenter', onDragOver);\n root.removeEventListener('dragover', onDragOver);\n root.removeEventListener('dragleave', onDragLeave);\n root.removeEventListener('drop', onDrop);\n };\n}\n"]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'kerfjs/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/components/feedback/chip/chip.tsx
|
|
4
|
+
function removeButton(action, label, disabled) {
|
|
5
|
+
return /* @__PURE__ */ jsx(
|
|
6
|
+
"button",
|
|
7
|
+
{
|
|
8
|
+
class: "kui-chip__remove",
|
|
9
|
+
type: "button",
|
|
10
|
+
"data-action": action,
|
|
11
|
+
"aria-label": label,
|
|
12
|
+
disabled,
|
|
13
|
+
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", width: "12", height: "12", "aria-hidden": "true", children: /* @__PURE__ */ jsx(
|
|
14
|
+
"path",
|
|
15
|
+
{
|
|
16
|
+
d: "M3.5 3.5 12.5 12.5M12.5 3.5 3.5 12.5",
|
|
17
|
+
fill: "none",
|
|
18
|
+
stroke: "currentColor",
|
|
19
|
+
"stroke-width": "1.75",
|
|
20
|
+
"stroke-linecap": "round"
|
|
21
|
+
}
|
|
22
|
+
) })
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
function downloadValue(download) {
|
|
27
|
+
switch (download) {
|
|
28
|
+
case void 0:
|
|
29
|
+
case false:
|
|
30
|
+
return void 0;
|
|
31
|
+
case true:
|
|
32
|
+
return "";
|
|
33
|
+
default:
|
|
34
|
+
return download;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function Chip({
|
|
38
|
+
children,
|
|
39
|
+
icon,
|
|
40
|
+
truncate = false,
|
|
41
|
+
tone = "neutral",
|
|
42
|
+
appearance = "quiet",
|
|
43
|
+
shape = "pill",
|
|
44
|
+
size = "default",
|
|
45
|
+
disabled = false,
|
|
46
|
+
itemId,
|
|
47
|
+
className = "",
|
|
48
|
+
slot,
|
|
49
|
+
href,
|
|
50
|
+
download,
|
|
51
|
+
external = false,
|
|
52
|
+
removeAction,
|
|
53
|
+
removeLabel
|
|
54
|
+
}) {
|
|
55
|
+
if (truncate && typeof children !== "string")
|
|
56
|
+
throw new TypeError("Chip truncate requires a plain text label");
|
|
57
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
58
|
+
icon === void 0 ? null : /* @__PURE__ */ jsx("span", { class: "kui-chip__icon", "aria-hidden": "true", children: icon }),
|
|
59
|
+
/* @__PURE__ */ jsx(
|
|
60
|
+
"span",
|
|
61
|
+
{
|
|
62
|
+
class: "kui-chip__label",
|
|
63
|
+
title: truncate ? String(children) : void 0,
|
|
64
|
+
children
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] });
|
|
68
|
+
const rootClass = `kui-chip ${className}`.trim();
|
|
69
|
+
if (href !== void 0) {
|
|
70
|
+
const textLabel = typeof children === "string" || typeof children === "number" ? String(children) : void 0;
|
|
71
|
+
return /* @__PURE__ */ jsx(
|
|
72
|
+
"a",
|
|
73
|
+
{
|
|
74
|
+
class: rootClass,
|
|
75
|
+
href: disabled ? void 0 : href,
|
|
76
|
+
download: disabled ? void 0 : downloadValue(download),
|
|
77
|
+
target: disabled || !external ? void 0 : "_blank",
|
|
78
|
+
rel: disabled || !external ? void 0 : "noopener noreferrer",
|
|
79
|
+
tabindex: disabled ? -1 : void 0,
|
|
80
|
+
"aria-label": external && textLabel !== void 0 ? `${textLabel} (opens in new tab)` : void 0,
|
|
81
|
+
"aria-disabled": disabled ? "true" : void 0,
|
|
82
|
+
"data-component": "chip",
|
|
83
|
+
"data-link": "",
|
|
84
|
+
"data-tone": tone,
|
|
85
|
+
"data-appearance": appearance,
|
|
86
|
+
"data-shape": shape,
|
|
87
|
+
"data-size": size,
|
|
88
|
+
"data-disabled": disabled ? "" : void 0,
|
|
89
|
+
"data-truncate": truncate ? "" : void 0,
|
|
90
|
+
"data-item-id": itemId,
|
|
91
|
+
slot,
|
|
92
|
+
children: content
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
return /* @__PURE__ */ jsxs(
|
|
97
|
+
"span",
|
|
98
|
+
{
|
|
99
|
+
class: rootClass,
|
|
100
|
+
"data-component": "chip",
|
|
101
|
+
"data-tone": tone,
|
|
102
|
+
"data-appearance": appearance,
|
|
103
|
+
"data-shape": shape,
|
|
104
|
+
"data-size": size,
|
|
105
|
+
"data-disabled": disabled ? "" : void 0,
|
|
106
|
+
"data-truncate": truncate ? "" : void 0,
|
|
107
|
+
"data-item-id": itemId,
|
|
108
|
+
slot,
|
|
109
|
+
children: [
|
|
110
|
+
content,
|
|
111
|
+
removeAction !== void 0 && removeLabel !== void 0 ? removeButton(removeAction, removeLabel, disabled) : null
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export { Chip };
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=chunk-34U4ANDJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/chip/chip.tsx"],"names":[],"mappings":"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","file":"chunk-34U4ANDJ.js","sourcesContent":["import type { SafeHtml } from 'kerfjs';\n\nimport type { SemanticTone } from '../../../shared/styles/semantic-tone.js';\nimport type { BadgeAppearance, BadgeShape, BadgeSize } from '../badge/badge.js';\n\n/**\n * A chip color role: a shared semantic tone, or `inherit`, which follows the\n * surrounding foreground (a chip inside a `brand-loud` ContentItem bubble)\n * and derives its fill, border, and focus ring from `currentColor`.\n */\nexport type ChipTone = SemanticTone | 'inherit';\n\ninterface ChipCommonProps {\n /** Decorative leading icon, normally an unsized LucideIcon. */\n icon?: SafeHtml;\n tone?: ChipTone;\n appearance?: BadgeAppearance;\n shape?: BadgeShape;\n size?: BadgeSize;\n disabled?: boolean;\n /** Record identifier available to an application delegated action handler. */\n itemId?: string;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\ntype ChipLabelProps =\n | { children: SafeHtml | string | number; truncate?: false }\n | { children: string; truncate: true };\n\ninterface ChipNoLinkProps {\n href?: never;\n download?: never;\n external?: never;\n}\n\n/**\n * A link chip renders a native `<a>` with Chip geometry. It cannot also carry\n * a remove button, because a button inside a link is invalid.\n */\ninterface ChipLinkProps {\n /** Native destination; the chip renders as an `<a>`. */\n href: string;\n /** Download the destination: `true`, or the suggested file name. */\n download?: string | boolean;\n /** Open in a new tab with a safe rel and announce that behavior. */\n external?: boolean;\n removeAction?: never;\n removeLabel?: never;\n}\n\n/**\n * A plain chip, a removable chip (a delegated action plus a specific\n * accessible name), or a link chip (`href`, optional `download`/`external`).\n */\nexport type ChipProps = ChipCommonProps &\n ChipLabelProps &\n (\n | ({ removeAction: string; removeLabel: string } & ChipNoLinkProps)\n | ({ removeAction?: never; removeLabel?: never } & ChipNoLinkProps)\n | ChipLinkProps\n );\n\nfunction removeButton(action: string, label: string, disabled: boolean) {\n return (\n <button\n class=\"kui-chip__remove\"\n type=\"button\"\n data-action={action}\n aria-label={label}\n disabled={disabled}\n >\n <svg viewBox=\"0 0 16 16\" width=\"12\" height=\"12\" aria-hidden=\"true\">\n <path\n d=\"M3.5 3.5 12.5 12.5M12.5 3.5 3.5 12.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n );\n}\n\nfunction downloadValue(download: string | boolean | undefined) {\n switch (download) {\n case undefined:\n case false:\n return undefined;\n case true:\n return '';\n default:\n return download;\n }\n}\n\n/**\n * A short label with an optional native remove button, or a native link when\n * `href` is set. The application owns removal and the link destination.\n */\nexport function Chip({\n children,\n icon,\n truncate = false,\n tone = 'neutral',\n appearance = 'quiet',\n shape = 'pill',\n size = 'default',\n disabled = false,\n itemId,\n className = '',\n slot,\n href,\n download,\n external = false,\n removeAction,\n removeLabel,\n}: ChipProps) {\n if (truncate && typeof children !== 'string')\n throw new TypeError('Chip truncate requires a plain text label');\n const content = (\n <>\n {icon === undefined ? null : (\n <span class=\"kui-chip__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span\n class=\"kui-chip__label\"\n title={truncate ? String(children) : undefined}\n >\n {children}\n </span>\n </>\n );\n const rootClass = `kui-chip ${className}`.trim();\n if (href !== undefined) {\n const textLabel =\n typeof children === 'string' || typeof children === 'number'\n ? String(children)\n : undefined;\n return (\n <a\n class={rootClass}\n href={disabled ? undefined : href}\n download={disabled ? undefined : downloadValue(download)}\n target={disabled || !external ? undefined : '_blank'}\n rel={disabled || !external ? undefined : 'noopener noreferrer'}\n tabindex={disabled ? -1 : undefined}\n aria-label={\n external && textLabel !== undefined\n ? `${textLabel} (opens in new tab)`\n : undefined\n }\n aria-disabled={disabled ? 'true' : undefined}\n data-component=\"chip\"\n data-link=\"\"\n data-tone={tone}\n data-appearance={appearance}\n data-shape={shape}\n data-size={size}\n data-disabled={disabled ? '' : undefined}\n data-truncate={truncate ? '' : undefined}\n data-item-id={itemId}\n slot={slot}\n >\n {content}\n </a>\n );\n }\n return (\n <span\n class={rootClass}\n data-component=\"chip\"\n data-tone={tone}\n data-appearance={appearance}\n data-shape={shape}\n data-size={size}\n data-disabled={disabled ? '' : undefined}\n data-truncate={truncate ? '' : undefined}\n data-item-id={itemId}\n slot={slot}\n >\n {content}\n {removeAction !== undefined && removeLabel !== undefined\n ? removeButton(removeAction, removeLabel, disabled)\n : null}\n </span>\n );\n}\n"]}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { listIconTilePresentation, nativeDraggable, withWordBreaks } from './chunk-ZNROKDSZ.js';
|
|
2
|
+
import { Skeleton } from './chunk-CVD5IZGB.js';
|
|
3
|
+
import { LoadingSpinner } from './chunk-WVS6CUCT.js';
|
|
4
|
+
import { remify, em } from './chunk-IQSRHXZR.js';
|
|
5
|
+
import { filterDataAttributes } from './chunk-KH4KEMSP.js';
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'kerfjs/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var PROTECTED_ROOT_DATA_ATTRIBUTES = /* @__PURE__ */ new Set([
|
|
9
|
+
"data-component",
|
|
10
|
+
"data-action",
|
|
11
|
+
"data-item-id",
|
|
12
|
+
"data-has-icon",
|
|
13
|
+
"data-has-description",
|
|
14
|
+
"data-multiline",
|
|
15
|
+
"data-density",
|
|
16
|
+
"data-divider",
|
|
17
|
+
"data-busy",
|
|
18
|
+
"data-state",
|
|
19
|
+
"data-kui-disabled",
|
|
20
|
+
"data-icon-align",
|
|
21
|
+
"data-icon-tile",
|
|
22
|
+
"data-icon-tile-tone",
|
|
23
|
+
"data-dragging",
|
|
24
|
+
"data-drop-position"
|
|
25
|
+
]);
|
|
26
|
+
function listItemContent({
|
|
27
|
+
label,
|
|
28
|
+
description,
|
|
29
|
+
icon,
|
|
30
|
+
tile,
|
|
31
|
+
trailing,
|
|
32
|
+
status,
|
|
33
|
+
busy = false,
|
|
34
|
+
multiline = false,
|
|
35
|
+
placeholder = false
|
|
36
|
+
}) {
|
|
37
|
+
const tileSize = tile?.tile ? 32 : 18;
|
|
38
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
39
|
+
icon && /* @__PURE__ */ jsx(
|
|
40
|
+
"span",
|
|
41
|
+
{
|
|
42
|
+
class: "kui-list-item__icon",
|
|
43
|
+
style: placeholder ? void 0 : tile?.style,
|
|
44
|
+
children: placeholder ? /* @__PURE__ */ jsx(
|
|
45
|
+
Skeleton,
|
|
46
|
+
{
|
|
47
|
+
block: true,
|
|
48
|
+
width: remify(tileSize),
|
|
49
|
+
height: remify(tileSize)
|
|
50
|
+
}
|
|
51
|
+
) : icon
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
/* @__PURE__ */ jsxs("span", { class: "kui-list-item__label", children: [
|
|
55
|
+
/* @__PURE__ */ jsx("span", { class: "kui-list-item__primary-label", children: placeholder ? /* @__PURE__ */ jsx(Skeleton, { width: em(9) }) : multiline ? withWordBreaks(label) : label }),
|
|
56
|
+
description && /* @__PURE__ */ jsx("span", { class: "kui-list-item__description", children: placeholder ? /* @__PURE__ */ jsx(Skeleton, { width: em(11) }) : description })
|
|
57
|
+
] }),
|
|
58
|
+
(busy || status || trailing) && /* @__PURE__ */ jsxs("span", { class: "kui-list-item__trailing", children: [
|
|
59
|
+
busy && /* @__PURE__ */ jsx(LoadingSpinner, {}),
|
|
60
|
+
status && /* @__PURE__ */ jsx("span", { class: "kui-list-item__status", children: placeholder ? /* @__PURE__ */ jsx(Skeleton, { width: em(3.5) }) : status }),
|
|
61
|
+
trailing && (placeholder ? /* @__PURE__ */ jsx(Skeleton, { width: em(1.5) }) : trailing)
|
|
62
|
+
] })
|
|
63
|
+
] });
|
|
64
|
+
}
|
|
65
|
+
function ListItem({
|
|
66
|
+
label,
|
|
67
|
+
description,
|
|
68
|
+
icon,
|
|
69
|
+
iconTile,
|
|
70
|
+
trailing,
|
|
71
|
+
status,
|
|
72
|
+
busy = false,
|
|
73
|
+
density = "standard",
|
|
74
|
+
divider = "none",
|
|
75
|
+
selected = false,
|
|
76
|
+
action,
|
|
77
|
+
itemId,
|
|
78
|
+
className = "",
|
|
79
|
+
pressed,
|
|
80
|
+
accessibleLabel,
|
|
81
|
+
title,
|
|
82
|
+
multiline = false,
|
|
83
|
+
multilineIconAlign = "first-line",
|
|
84
|
+
state,
|
|
85
|
+
disabled = false,
|
|
86
|
+
tabIndex,
|
|
87
|
+
placeholder = false,
|
|
88
|
+
draggable,
|
|
89
|
+
dragging = false,
|
|
90
|
+
dropPosition,
|
|
91
|
+
rootAttributes = {},
|
|
92
|
+
slot
|
|
93
|
+
}) {
|
|
94
|
+
const extensionAttributes = filterDataAttributes(
|
|
95
|
+
rootAttributes,
|
|
96
|
+
PROTECTED_ROOT_DATA_ATTRIBUTES
|
|
97
|
+
);
|
|
98
|
+
const tile = icon ? listIconTilePresentation(iconTile, "list-item") : null;
|
|
99
|
+
return /* @__PURE__ */ jsx(
|
|
100
|
+
"button",
|
|
101
|
+
{
|
|
102
|
+
...extensionAttributes,
|
|
103
|
+
type: "button",
|
|
104
|
+
class: `kui-list-item ${className}`.trim(),
|
|
105
|
+
title: placeholder ? void 0 : title,
|
|
106
|
+
disabled: disabled || placeholder,
|
|
107
|
+
tabindex: placeholder ? -1 : tabIndex,
|
|
108
|
+
"data-component": "list-item",
|
|
109
|
+
"data-action": placeholder ? void 0 : action,
|
|
110
|
+
"data-item-id": itemId,
|
|
111
|
+
"data-has-icon": String(Boolean(icon)),
|
|
112
|
+
"data-has-description": String(Boolean(description)),
|
|
113
|
+
"data-multiline": multiline ? "true" : void 0,
|
|
114
|
+
"data-icon-align": multiline ? multilineIconAlign : void 0,
|
|
115
|
+
"data-icon-tile": tile?.tile,
|
|
116
|
+
"data-icon-tile-tone": tile?.tone,
|
|
117
|
+
"data-density": density,
|
|
118
|
+
"data-divider": divider,
|
|
119
|
+
"data-busy": busy ? "true" : void 0,
|
|
120
|
+
"data-state": state,
|
|
121
|
+
"data-kui-disabled": disabled ? "true" : void 0,
|
|
122
|
+
"data-placeholder": placeholder ? "true" : void 0,
|
|
123
|
+
draggable: nativeDraggable(draggable, placeholder),
|
|
124
|
+
"data-dragging": dragging ? "true" : void 0,
|
|
125
|
+
"data-drop-position": dropPosition,
|
|
126
|
+
"aria-label": accessibleLabel,
|
|
127
|
+
"aria-current": selected ? "page" : void 0,
|
|
128
|
+
"aria-pressed": pressed === void 0 ? void 0 : String(pressed),
|
|
129
|
+
"aria-busy": placeholder || busy ? "true" : void 0,
|
|
130
|
+
slot,
|
|
131
|
+
children: listItemContent({
|
|
132
|
+
label,
|
|
133
|
+
description,
|
|
134
|
+
icon,
|
|
135
|
+
tile,
|
|
136
|
+
trailing,
|
|
137
|
+
status,
|
|
138
|
+
busy,
|
|
139
|
+
multiline,
|
|
140
|
+
placeholder
|
|
141
|
+
})
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
function ListItemLink({
|
|
146
|
+
href,
|
|
147
|
+
external = false,
|
|
148
|
+
label,
|
|
149
|
+
description,
|
|
150
|
+
icon,
|
|
151
|
+
iconTile,
|
|
152
|
+
trailing,
|
|
153
|
+
status,
|
|
154
|
+
busy = false,
|
|
155
|
+
density = "standard",
|
|
156
|
+
divider = "none",
|
|
157
|
+
selected = false,
|
|
158
|
+
itemId,
|
|
159
|
+
className = "",
|
|
160
|
+
accessibleLabel,
|
|
161
|
+
title,
|
|
162
|
+
multiline = false,
|
|
163
|
+
multilineIconAlign = "first-line",
|
|
164
|
+
state,
|
|
165
|
+
disabled = false,
|
|
166
|
+
tabIndex,
|
|
167
|
+
placeholder = false,
|
|
168
|
+
draggable,
|
|
169
|
+
dragging = false,
|
|
170
|
+
dropPosition,
|
|
171
|
+
rootAttributes = {},
|
|
172
|
+
slot
|
|
173
|
+
}) {
|
|
174
|
+
const extensionAttributes = filterDataAttributes(
|
|
175
|
+
rootAttributes,
|
|
176
|
+
PROTECTED_ROOT_DATA_ATTRIBUTES
|
|
177
|
+
);
|
|
178
|
+
const tile = icon ? listIconTilePresentation(iconTile, "list-item") : null;
|
|
179
|
+
const inactive = disabled || placeholder;
|
|
180
|
+
const linkLabel = accessibleLabel ?? (external && typeof label === "string" ? `${label} (opens in new tab)` : void 0);
|
|
181
|
+
return /* @__PURE__ */ jsx(
|
|
182
|
+
"a",
|
|
183
|
+
{
|
|
184
|
+
...extensionAttributes,
|
|
185
|
+
class: `kui-list-item ${className}`.trim(),
|
|
186
|
+
href: inactive ? void 0 : href,
|
|
187
|
+
target: inactive || !external ? void 0 : "_blank",
|
|
188
|
+
rel: inactive || !external ? void 0 : "noopener noreferrer",
|
|
189
|
+
title: placeholder ? void 0 : title,
|
|
190
|
+
tabindex: inactive ? -1 : tabIndex,
|
|
191
|
+
"data-component": "list-item-link",
|
|
192
|
+
"data-item-id": itemId,
|
|
193
|
+
"data-has-icon": String(Boolean(icon)),
|
|
194
|
+
"data-has-description": String(Boolean(description)),
|
|
195
|
+
"data-multiline": multiline ? "true" : void 0,
|
|
196
|
+
"data-icon-align": multiline ? multilineIconAlign : void 0,
|
|
197
|
+
"data-icon-tile": tile?.tile,
|
|
198
|
+
"data-icon-tile-tone": tile?.tone,
|
|
199
|
+
"data-density": density,
|
|
200
|
+
"data-divider": divider,
|
|
201
|
+
"data-busy": busy ? "true" : void 0,
|
|
202
|
+
"data-state": state,
|
|
203
|
+
"data-kui-disabled": disabled ? "true" : void 0,
|
|
204
|
+
"data-placeholder": placeholder ? "true" : void 0,
|
|
205
|
+
draggable: nativeDraggable(draggable, placeholder),
|
|
206
|
+
"data-dragging": dragging ? "true" : void 0,
|
|
207
|
+
"data-drop-position": dropPosition,
|
|
208
|
+
"aria-label": linkLabel,
|
|
209
|
+
"aria-current": selected ? "page" : void 0,
|
|
210
|
+
"aria-disabled": inactive ? "true" : void 0,
|
|
211
|
+
"aria-busy": placeholder || busy ? "true" : void 0,
|
|
212
|
+
slot,
|
|
213
|
+
children: listItemContent({
|
|
214
|
+
label,
|
|
215
|
+
description,
|
|
216
|
+
icon,
|
|
217
|
+
tile,
|
|
218
|
+
trailing,
|
|
219
|
+
status,
|
|
220
|
+
busy,
|
|
221
|
+
multiline,
|
|
222
|
+
placeholder
|
|
223
|
+
})
|
|
224
|
+
}
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export { ListItem, ListItemLink };
|
|
229
|
+
|
|
230
|
+
//# sourceMappingURL=chunk-3GLYIIFR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/collections/list-item/list-item.tsx"],"names":[],"mappings":"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","file":"chunk-3GLYIIFR.js","sourcesContent":["import type { SafeHtml } from 'kerfjs';\n\nimport {\n type ListIconTile,\n type ListIconTilePresentation,\n listIconTilePresentation,\n} from '../../../shared/content/list-icon-tile.js';\nimport type { KerfUiContent } from '../../../shared/content/semantic-content.js';\nimport { nativeDraggable } from '../../../shared/dom/draggable.js';\nimport { filterDataAttributes } from '../../../shared/dom/extension-attributes.js';\nimport { em, remify } from '../../../shared/styles/css-values.js';\nimport { withWordBreaks } from '../../../shared/text/word-breaks.js';\nimport { LoadingSpinner } from '../../feedback/loading-spinner/loading-spinner.js';\nimport { Skeleton } from '../../feedback/skeleton/skeleton.js';\n\nexport type {\n ListIconTile,\n ListIconTileColor,\n ListIconTileTone,\n} from '../../../shared/content/list-icon-tile.js';\n\nconst PROTECTED_ROOT_DATA_ATTRIBUTES = new Set([\n 'data-component',\n 'data-action',\n 'data-item-id',\n 'data-has-icon',\n 'data-has-description',\n 'data-multiline',\n 'data-density',\n 'data-divider',\n 'data-busy',\n 'data-state',\n 'data-kui-disabled',\n 'data-icon-align',\n 'data-icon-tile',\n 'data-icon-tile-tone',\n 'data-dragging',\n 'data-drop-position',\n]);\n\ntype ListItemRootAttributes = Readonly<\n Record<`data-${string}`, string | undefined> & {\n 'data-component'?: never;\n 'data-action'?: never;\n 'data-item-id'?: never;\n 'data-has-icon'?: never;\n 'data-has-description'?: never;\n 'data-multiline'?: never;\n 'data-density'?: never;\n 'data-divider'?: never;\n 'data-busy'?: never;\n 'data-state'?: never;\n 'data-kui-disabled'?: never;\n 'data-icon-align'?: never;\n 'data-icon-tile'?: never;\n 'data-icon-tile-tone'?: never;\n 'data-dragging'?: never;\n 'data-drop-position'?: never;\n }\n>;\n\nexport interface ListItemProps {\n label: string | SafeHtml;\n /** App-owned supporting text rendered in the component's stable label stack. */\n description?: string | SafeHtml;\n icon?: SafeHtml;\n /** Present `icon` in a filled 32px rounded tile with an 18px glyph: a quiet tone preset, or `{ color, foreground? }` for an application color. */\n iconTile?: ListIconTile;\n /** Dormant author content at the row's end; a placeholder renders it as a skeleton. */\n trailing?: KerfUiContent;\n /** Dormant status metadata rendered before trailing content; a placeholder renders it as a skeleton. */\n status?: string | SafeHtml;\n /** Show a progress indicator and expose the row as busy without replacing its content; a placeholder keeps the indicator. */\n busy?: boolean;\n density?: 'standard' | 'compact' | 'spacious';\n divider?: 'none' | 'before' | 'after' | 'both';\n selected?: boolean;\n action: string;\n itemId?: string;\n className?: string;\n pressed?: boolean;\n accessibleLabel?: string;\n title?: string;\n multiline?: boolean;\n /** Alignment of an icon beside a wrapped label. Defaults to its first line. */\n multilineIconAlign?: 'first-line' | 'center';\n state?: string;\n disabled?: boolean;\n tabIndex?: number;\n /** Render the row as an unanimated loading skeleton, disabling its action: label, description, icon, status, and trailing content become skeletons; the `busy` indicator stays live. */\n placeholder?: boolean;\n /** Native HTML drag source (`draggable=\"true\"`); a placeholder is never draggable. Pair with `wireListReorder` for pointer and keyboard reordering. */\n draggable?: boolean;\n /** Dim this row as one of the rows being dragged. */\n dragging?: boolean;\n /** Draw the insertion line at this row's leading (`before`) or trailing (`after`) block edge. */\n dropPosition?: 'before' | 'after';\n rootAttributes?: ListItemRootAttributes;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\nexport interface ListItemLinkProps extends Omit<\n ListItemProps,\n 'action' | 'pressed'\n> {\n /** Native destination for this navigation row. */\n href: string;\n /** Open in a new tab with a safe rel and announce that behavior. */\n external?: boolean;\n action?: never;\n pressed?: never;\n}\n\nfunction listItemContent({\n label,\n description,\n icon,\n tile,\n trailing,\n status,\n busy = false,\n multiline = false,\n placeholder = false,\n}: Pick<\n ListItemProps,\n | 'label'\n | 'description'\n | 'icon'\n | 'trailing'\n | 'status'\n | 'busy'\n | 'multiline'\n | 'placeholder'\n> & { tile: ListIconTilePresentation | null }) {\n const tileSize = tile?.tile ? 32 : 18;\n return (\n <>\n {icon && (\n <span\n class=\"kui-list-item__icon\"\n style={placeholder ? undefined : tile?.style}\n >\n {placeholder ? (\n <Skeleton\n block\n width={remify(tileSize)}\n height={remify(tileSize)}\n />\n ) : (\n icon\n )}\n </span>\n )}\n <span class=\"kui-list-item__label\">\n <span class=\"kui-list-item__primary-label\">\n {placeholder ? (\n <Skeleton width={em(9)} />\n ) : multiline ? (\n withWordBreaks(label)\n ) : (\n label\n )}\n </span>\n {description && (\n <span class=\"kui-list-item__description\">\n {placeholder ? <Skeleton width={em(11)} /> : description}\n </span>\n )}\n </span>\n {(busy || status || trailing) && (\n <span class=\"kui-list-item__trailing\">\n {/* The busy spinner is component-owned chrome drawn from a known\n prop, so a placeholder keeps it live. Status text and\n author-supplied trailing content are values: skeletons. */}\n {busy && <LoadingSpinner />}\n {status && (\n <span class=\"kui-list-item__status\">\n {placeholder ? <Skeleton width={em(3.5)} /> : status}\n </span>\n )}\n {trailing && (placeholder ? <Skeleton width={em(1.5)} /> : trailing)}\n </span>\n )}\n </>\n );\n}\n\nexport function ListItem({\n label,\n description,\n icon,\n iconTile,\n trailing,\n status,\n busy = false,\n density = 'standard',\n divider = 'none',\n selected = false,\n action,\n itemId,\n className = '',\n pressed,\n accessibleLabel,\n title,\n multiline = false,\n multilineIconAlign = 'first-line',\n state,\n disabled = false,\n tabIndex,\n placeholder = false,\n draggable,\n dragging = false,\n dropPosition,\n rootAttributes = {},\n slot,\n}: ListItemProps) {\n const extensionAttributes = filterDataAttributes(\n rootAttributes,\n PROTECTED_ROOT_DATA_ATTRIBUTES,\n );\n const tile = icon ? listIconTilePresentation(iconTile, 'list-item') : null;\n return (\n <button\n {...extensionAttributes}\n type=\"button\"\n class={`kui-list-item ${className}`.trim()}\n title={placeholder ? undefined : title}\n disabled={disabled || placeholder}\n tabindex={placeholder ? -1 : tabIndex}\n data-component=\"list-item\"\n data-action={placeholder ? undefined : action}\n data-item-id={itemId}\n data-has-icon={String(Boolean(icon))}\n data-has-description={String(Boolean(description))}\n data-multiline={multiline ? 'true' : undefined}\n data-icon-align={multiline ? multilineIconAlign : undefined}\n data-icon-tile={tile?.tile}\n data-icon-tile-tone={tile?.tone}\n data-density={density}\n data-divider={divider}\n data-busy={busy ? 'true' : undefined}\n data-state={state}\n data-kui-disabled={disabled ? 'true' : undefined}\n data-placeholder={placeholder ? 'true' : undefined}\n draggable={nativeDraggable(draggable, placeholder)}\n data-dragging={dragging ? 'true' : undefined}\n data-drop-position={dropPosition}\n aria-label={accessibleLabel}\n aria-current={selected ? 'page' : undefined}\n aria-pressed={pressed === undefined ? undefined : String(pressed)}\n aria-busy={placeholder || busy ? 'true' : undefined}\n slot={slot}\n >\n {listItemContent({\n label,\n description,\n icon,\n tile,\n trailing,\n status,\n busy,\n multiline,\n placeholder,\n })}\n </button>\n );\n}\n\n/** A navigation row with native link activation and ListItem geometry. */\nexport function ListItemLink({\n href,\n external = false,\n label,\n description,\n icon,\n iconTile,\n trailing,\n status,\n busy = false,\n density = 'standard',\n divider = 'none',\n selected = false,\n itemId,\n className = '',\n accessibleLabel,\n title,\n multiline = false,\n multilineIconAlign = 'first-line',\n state,\n disabled = false,\n tabIndex,\n placeholder = false,\n draggable,\n dragging = false,\n dropPosition,\n rootAttributes = {},\n slot,\n}: ListItemLinkProps) {\n const extensionAttributes = filterDataAttributes(\n rootAttributes,\n PROTECTED_ROOT_DATA_ATTRIBUTES,\n );\n const tile = icon ? listIconTilePresentation(iconTile, 'list-item') : null;\n const inactive = disabled || placeholder;\n const linkLabel =\n accessibleLabel ??\n (external && typeof label === 'string'\n ? `${label} (opens in new tab)`\n : undefined);\n return (\n <a\n {...extensionAttributes}\n class={`kui-list-item ${className}`.trim()}\n href={inactive ? undefined : href}\n target={inactive || !external ? undefined : '_blank'}\n rel={inactive || !external ? undefined : 'noopener noreferrer'}\n title={placeholder ? undefined : title}\n tabindex={inactive ? -1 : tabIndex}\n data-component=\"list-item-link\"\n data-item-id={itemId}\n data-has-icon={String(Boolean(icon))}\n data-has-description={String(Boolean(description))}\n data-multiline={multiline ? 'true' : undefined}\n data-icon-align={multiline ? multilineIconAlign : undefined}\n data-icon-tile={tile?.tile}\n data-icon-tile-tone={tile?.tone}\n data-density={density}\n data-divider={divider}\n data-busy={busy ? 'true' : undefined}\n data-state={state}\n data-kui-disabled={disabled ? 'true' : undefined}\n data-placeholder={placeholder ? 'true' : undefined}\n draggable={nativeDraggable(draggable, placeholder)}\n data-dragging={dragging ? 'true' : undefined}\n data-drop-position={dropPosition}\n aria-label={linkLabel}\n aria-current={selected ? 'page' : undefined}\n aria-disabled={inactive ? 'true' : undefined}\n aria-busy={placeholder || busy ? 'true' : undefined}\n slot={slot}\n >\n {listItemContent({\n label,\n description,\n icon,\n tile,\n trailing,\n status,\n busy,\n multiline,\n placeholder,\n })}\n </a>\n );\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LucideIcon } from './chunk-
|
|
1
|
+
import { LucideIcon } from './chunk-LOSRXZAH.js';
|
|
2
2
|
import { ChevronRight } from 'lucide';
|
|
3
3
|
import { jsx } from 'kerfjs/jsx-runtime';
|
|
4
4
|
|
|
@@ -20,7 +20,9 @@ function DisclosureArrow({
|
|
|
20
20
|
openDirection = "down",
|
|
21
21
|
closedDirection = "right",
|
|
22
22
|
icon,
|
|
23
|
-
|
|
23
|
+
size,
|
|
24
|
+
className = "",
|
|
25
|
+
slot
|
|
24
26
|
}) {
|
|
25
27
|
const direction = open ? openDirection : closedDirection;
|
|
26
28
|
const rotation = rotationForState(open, openDirection, closedDirection);
|
|
@@ -28,11 +30,12 @@ function DisclosureArrow({
|
|
|
28
30
|
"span",
|
|
29
31
|
{
|
|
30
32
|
class: `kui-disclosure-arrow ${className}`.trim(),
|
|
31
|
-
style: `--_kui-disclosure-arrow-rotation:${rotation}deg`,
|
|
33
|
+
style: `--_kui-disclosure-arrow-rotation:${rotation}deg${size ? `;--kui-disclosure-arrow-size:${size}` : ""}`,
|
|
32
34
|
"data-component": "disclosure-arrow",
|
|
33
35
|
"data-open": String(open),
|
|
34
36
|
"data-direction": direction,
|
|
35
37
|
"aria-hidden": "true",
|
|
38
|
+
slot,
|
|
36
39
|
children: icon ?? /* @__PURE__ */ jsx(LucideIcon, { icon: ChevronRight, name: "chevron-right" })
|
|
37
40
|
}
|
|
38
41
|
);
|
|
@@ -40,4 +43,4 @@ function DisclosureArrow({
|
|
|
40
43
|
|
|
41
44
|
export { DisclosureArrow };
|
|
42
45
|
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-3VXDSIBJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/disclosure-arrow/disclosure-arrow.tsx"],"names":[],"mappings":";;;;AAqBA,IAAM,kBAAA,GAA0D;AAAA,EAC9D,KAAA,EAAO,CAAA;AAAA,EACP,IAAA,EAAM,EAAA;AAAA,EACN,IAAA,EAAM,GAAA;AAAA,EACN,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,gBAAA,CACP,IAAA,EACA,aAAA,EACA,eAAA,EACA;AACA,EAAA,MAAM,cAAA,GAAiB,mBAAmB,eAAe,CAAA;AACzD,EAAA,IAAI,CAAC,MAAM,OAAO,cAAA;AAElB,EAAA,MAAM,YAAA,GAAe,mBAAmB,aAAa,CAAA;AACrD,EAAA,MAAM,aAAA,GAAA,CAAkB,YAAA,GAAe,cAAA,GAAiB,GAAA,IAAO,GAAA,GAAO,GAAA;AACtE,EAAA,OAAO,cAAA,GAAiB,aAAA;AAC1B;AAEO,SAAS,eAAA,CAAgB;AAAA,EAC9B,IAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,eAAA,GAAkB,OAAA;AAAA,EAClB,IAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,SAAA,GAAY,OAAO,aAAA,GAAgB,eAAA;AACzC,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,IAAA,EAAM,aAAA,EAAe,eAAe,CAAA;AACtE,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MAChD,KAAA,EAAO,oCAAoC,QAAQ,CAAA,GAAA,EAAM,OAAO,CAAA,6BAAA,EAAgC,IAAI,KAAK,EAAE,CAAA,CAAA;AAAA,MAC3G,gBAAA,EAAe,kBAAA;AAAA,MACf,WAAA,EAAW,OAAO,IAAI,CAAA;AAAA,MACtB,gBAAA,EAAgB,SAAA;AAAA,MAChB,aAAA,EAAY,MAAA;AAAA,MACZ,IAAA;AAAA,MAEC,kCAAQ,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,YAAA,EAAc,MAAK,eAAA,EAAgB;AAAA;AAAA,GAChE;AAEJ","file":"chunk-3VXDSIBJ.js","sourcesContent":["import type { SafeHtml } from 'kerfjs';\nimport { ChevronRight } from 'lucide';\n\nimport type { CssLength } from '../../../shared/styles/css-values.js';\nimport { LucideIcon } from '../../media/lucide-icon/lucide-icon.js';\n\nexport type DisclosureDirection = 'up' | 'down' | 'left' | 'right';\n\nexport interface DisclosureArrowProps {\n open: boolean;\n openDirection?: DisclosureDirection;\n closedDirection?: DisclosureDirection;\n /** Replacement icons should use right as their unrotated orientation. */\n icon?: SafeHtml;\n /** Typed box size for the square visual. Default: `remify(18px)`. */\n size?: CssLength;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\nconst directionRotations: Record<DisclosureDirection, number> = {\n right: 0,\n down: 90,\n left: 180,\n up: 270,\n};\n\nfunction rotationForState(\n open: boolean,\n openDirection: DisclosureDirection,\n closedDirection: DisclosureDirection,\n) {\n const closedRotation = directionRotations[closedDirection];\n if (!open) return closedRotation;\n\n const openRotation = directionRotations[openDirection];\n const shortestDelta = ((openRotation - closedRotation + 540) % 360) - 180;\n return closedRotation + shortestDelta;\n}\n\nexport function DisclosureArrow({\n open,\n openDirection = 'down',\n closedDirection = 'right',\n icon,\n size,\n className = '',\n slot,\n}: DisclosureArrowProps) {\n const direction = open ? openDirection : closedDirection;\n const rotation = rotationForState(open, openDirection, closedDirection);\n return (\n <span\n class={`kui-disclosure-arrow ${className}`.trim()}\n style={`--_kui-disclosure-arrow-rotation:${rotation}deg${size ? `;--kui-disclosure-arrow-size:${size}` : ''}`}\n data-component=\"disclosure-arrow\"\n data-open={String(open)}\n data-direction={direction}\n aria-hidden=\"true\"\n slot={slot}\n >\n {icon ?? <LucideIcon icon={ChevronRight} name=\"chevron-right\" />}\n </span>\n );\n}\n"]}
|