@kerfjs/ui 5.0.0-beta.75 → 5.0.0-beta.77
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 +41 -1
- package/ai/component-catalog.json +235 -30
- package/ai/component-composition.json +131 -14
- package/ai/components/README.md +1 -1
- package/ai/components/badge.md +1 -1
- package/ai/components/chip.md +1 -1
- package/ai/components/content-item.md +8 -5
- package/ai/components/document-baseline.md +2 -2
- package/ai/components/grid.md +5 -3
- package/ai/components/lucide-icon.md +11 -0
- package/ai/components/nav-stack.md +1 -0
- package/ai/components/select.md +1 -0
- package/ai/components/split-view.md +1 -0
- package/ai/components/text.md +4 -2
- package/ai/components/toolbar-control-group.md +20 -3
- package/ai/components/toolbar-text.md +19 -4
- package/ai/components/toolbar.md +10 -4
- package/ai/public-api-signatures-v1.md +141 -66
- package/ai/skill.md +58 -5
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/index.mjs +11 -1
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +5 -3
- package/dist/badge.js +1 -1
- package/dist/browser/catalog.js +7 -7
- package/dist/browser/collapsible-panel.js +3 -3
- package/dist/browser/list-header.js +1 -1
- package/dist/browser/nav-stack.js +1 -1
- package/dist/browser/select.js +1 -1
- package/dist/browser/split-view.js +1 -1
- package/dist/browser/workbench.js +4 -4
- package/dist/catalog-resources.d.ts +6 -6
- package/dist/catalog-resources.js +1 -1
- package/dist/catalog-resources.js.map +1 -1
- package/dist/catalog.d.ts +5 -5
- package/dist/catalog.js +13 -13
- package/dist/catalog.js.map +1 -1
- package/dist/chip.d.ts +3 -2
- package/dist/chip.js +1 -1
- package/dist/{chunk-SVLDRGPJ.js → chunk-3RE2JMZU.js} +7 -3
- package/dist/chunk-3RE2JMZU.js.map +1 -0
- package/dist/{chunk-YDGNU2OD.js → chunk-4Y4L5YEI.js} +7 -2
- package/dist/chunk-4Y4L5YEI.js.map +1 -0
- package/dist/{chunk-V4WLBOVJ.js → chunk-5BZBIRQG.js} +4 -4
- package/dist/chunk-5BZBIRQG.js.map +1 -0
- package/dist/{chunk-SX7FJXPJ.js → chunk-5D3WDMIK.js} +4 -4
- package/dist/chunk-5D3WDMIK.js.map +1 -0
- package/dist/{chunk-O5GM2JAM.js → chunk-6VQPLV3O.js} +9 -9
- package/dist/chunk-6VQPLV3O.js.map +1 -0
- package/dist/{chunk-JA4J7Y4C.js → chunk-75I3SNUJ.js} +2 -2
- package/dist/chunk-75I3SNUJ.js.map +1 -0
- package/dist/{chunk-K47P7QZC.js → chunk-7QQ3HE47.js} +2 -2
- package/dist/chunk-7QQ3HE47.js.map +1 -0
- package/dist/{chunk-5I7QGQVT.js → chunk-AN5IWMTM.js} +2 -2
- package/dist/chunk-AN5IWMTM.js.map +1 -0
- package/dist/{chunk-3BYFWTP3.js → chunk-AOAW55JN.js} +2 -2
- package/dist/chunk-AOAW55JN.js.map +1 -0
- package/dist/{chunk-5UGLKFBF.js → chunk-ARZ4RSQO.js} +5 -6
- package/dist/chunk-ARZ4RSQO.js.map +1 -0
- package/dist/{chunk-TCXDZNCX.js → chunk-BJLXE56E.js} +6 -6
- package/dist/chunk-BJLXE56E.js.map +1 -0
- package/dist/{chunk-RGS4WX2M.js → chunk-BYHGRKC3.js} +2 -2
- package/dist/chunk-BYHGRKC3.js.map +1 -0
- package/dist/{chunk-ZLKZFKLW.js → chunk-CEJ5FK6G.js} +2 -2
- package/dist/chunk-CEJ5FK6G.js.map +1 -0
- package/dist/{chunk-SMZGAPCU.js → chunk-DQDTZE4W.js} +2 -2
- package/dist/chunk-DQDTZE4W.js.map +1 -0
- package/dist/{chunk-JGIV6ZDA.js → chunk-EFDCALR3.js} +2 -2
- package/dist/chunk-EFDCALR3.js.map +1 -0
- package/dist/{chunk-FKPKGP2H.js → chunk-G4VKQP7B.js} +2 -2
- package/dist/chunk-G4VKQP7B.js.map +1 -0
- package/dist/{chunk-DPAUKNB6.js → chunk-GS2QD3N7.js} +3 -3
- package/dist/chunk-GS2QD3N7.js.map +1 -0
- package/dist/{chunk-SLWCCHNP.js → chunk-H45DAZBL.js} +2 -2
- package/dist/chunk-H45DAZBL.js.map +1 -0
- package/dist/{chunk-DA3HS64I.js → chunk-H7ZJEI3H.js} +3 -3
- package/dist/chunk-H7ZJEI3H.js.map +1 -0
- package/dist/{chunk-V4GAQ74C.js → chunk-HFLGWMG3.js} +4 -4
- package/dist/chunk-HFLGWMG3.js.map +1 -0
- package/dist/{chunk-HXTAPIHQ.js → chunk-HFQDSSED.js} +6 -6
- package/dist/chunk-HFQDSSED.js.map +1 -0
- package/dist/{chunk-WF75U3V4.js → chunk-HPREYDKV.js} +2 -2
- package/dist/chunk-HPREYDKV.js.map +1 -0
- package/dist/{chunk-VA5TN5PR.js → chunk-I4SDIMFA.js} +2 -2
- package/dist/chunk-I4SDIMFA.js.map +1 -0
- package/dist/{chunk-4SQK27MR.js → chunk-IM3GKYOG.js} +2 -2
- package/dist/chunk-IM3GKYOG.js.map +1 -0
- package/dist/{chunk-ALGYHYXP.js → chunk-J3AWE5I4.js} +2 -2
- package/dist/chunk-J3AWE5I4.js.map +1 -0
- package/dist/{chunk-OXO2QJWV.js → chunk-JOR5LGYE.js} +2 -2
- package/dist/chunk-JOR5LGYE.js.map +1 -0
- package/dist/{chunk-SRSJO5QE.js → chunk-LAZLBC2Q.js} +2 -2
- package/dist/chunk-LAZLBC2Q.js.map +1 -0
- package/dist/{chunk-RFGW735Q.js → chunk-LRAIS3YB.js} +2 -2
- package/dist/chunk-LRAIS3YB.js.map +1 -0
- package/dist/{chunk-PL26TKNK.js → chunk-M6BWQMQY.js} +8 -8
- package/dist/chunk-M6BWQMQY.js.map +1 -0
- package/dist/{chunk-AYUHMAI6.js → chunk-MXNIVEVL.js} +2 -2
- package/dist/chunk-MXNIVEVL.js.map +1 -0
- package/dist/{chunk-4NG4Y2Q6.js → chunk-NJZMR7HM.js} +2 -2
- package/dist/chunk-NJZMR7HM.js.map +1 -0
- package/dist/{chunk-DG6G5EPF.js → chunk-NMWDHZVM.js} +2 -2
- package/dist/chunk-NMWDHZVM.js.map +1 -0
- package/dist/{chunk-X5QSICJ3.js → chunk-NS2TBYM4.js} +2 -2
- package/dist/chunk-NS2TBYM4.js.map +1 -0
- package/dist/{chunk-5TTZPGUY.js → chunk-NVKRZ5DI.js} +6 -6
- package/dist/chunk-NVKRZ5DI.js.map +1 -0
- package/dist/{chunk-4FEVHE7C.js → chunk-NVRJ7C3W.js} +4 -4
- package/dist/chunk-NVRJ7C3W.js.map +1 -0
- package/dist/{chunk-BFPBS5Y4.js → chunk-O27D24CA.js} +2 -2
- package/dist/chunk-O27D24CA.js.map +1 -0
- package/dist/{chunk-DUBUXJA3.js → chunk-PQQQXJGV.js} +4 -2
- package/dist/chunk-PQQQXJGV.js.map +1 -0
- package/dist/{chunk-6DFDTWGG.js → chunk-QYXKMLHO.js} +2 -2
- package/dist/chunk-QYXKMLHO.js.map +1 -0
- package/dist/{chunk-TOICTHR2.js → chunk-RRCD3A6G.js} +14 -6
- package/dist/chunk-RRCD3A6G.js.map +1 -0
- package/dist/{chunk-I3Q7KKYM.js → chunk-S3ECMF23.js} +2 -2
- package/dist/chunk-S3ECMF23.js.map +1 -0
- package/dist/{chunk-PSHUSWQH.js → chunk-S4ZGTDSG.js} +2 -2
- package/dist/chunk-S4ZGTDSG.js.map +1 -0
- package/dist/{chunk-HKVJ5MW3.js → chunk-VHXHLZ6R.js} +12 -3
- package/dist/chunk-VHXHLZ6R.js.map +1 -0
- package/dist/{chunk-NPNSKX3K.js → chunk-VLPE6OPN.js} +2 -2
- package/dist/chunk-VLPE6OPN.js.map +1 -0
- package/dist/{chunk-NCSWXG7G.js → chunk-VLQUXZKA.js} +9 -3
- package/dist/chunk-VLQUXZKA.js.map +1 -0
- package/dist/{chunk-EHIMH4J7.js → chunk-VR7MWD2X.js} +10 -4
- package/dist/chunk-VR7MWD2X.js.map +1 -0
- package/dist/chunk-WJN3V2H5.js +256 -0
- package/dist/chunk-WJN3V2H5.js.map +1 -0
- package/dist/{chunk-NN6GYOA2.js → chunk-XIZRXI7N.js} +2 -2
- package/dist/chunk-XIZRXI7N.js.map +1 -0
- package/dist/{chunk-TDN5EE3S.js → chunk-Y6KT7ZTR.js} +2 -2
- package/dist/chunk-Y6KT7ZTR.js.map +1 -0
- package/dist/{chunk-LHSUPNSE.js → chunk-YLJ6X3AC.js} +2 -2
- package/dist/chunk-YLJ6X3AC.js.map +1 -0
- package/dist/{chunk-OYQIONQF.js → chunk-Z4EPMX25.js} +5 -5
- package/dist/chunk-Z4EPMX25.js.map +1 -0
- package/dist/{chunk-GRHJQWV2.js → chunk-Z6PE5T7N.js} +6 -6
- package/dist/chunk-Z6PE5T7N.js.map +1 -0
- package/dist/collapsible-panel.d.ts +6 -6
- package/dist/collapsible-panel.js +3 -3
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +13 -2
- package/dist/content-item.js +1 -1
- package/dist/css-values.js +1 -1
- package/dist/device-class.js +1 -1
- package/dist/device-class.js.map +1 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +1 -1
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.d.ts +10 -3
- package/dist/grid.js +1 -1
- package/dist/help-tags-register.js +1 -1
- package/dist/help-tags-register.js.map +1 -1
- package/dist/index.d.ts +28 -26
- package/dist/index.js +41 -40
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.d.ts +1 -0
- package/dist/list-header.js +1 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +2 -2
- package/dist/list.js +1 -1
- package/dist/loading-spinner.d.ts +4 -2
- package/dist/loading-spinner.js +1 -1
- package/dist/lucide-icon.d.ts +3 -1
- package/dist/lucide-icon.js +1 -1
- package/dist/nav-stack.d.ts +2 -1
- package/dist/nav-stack.js +1 -1
- package/dist/pane.js +1 -1
- package/dist/popup-menu-register.js +7 -7
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.js +1 -1
- package/dist/resizable-region.d.ts +1 -1
- package/dist/resizable-region.js +1 -1
- package/dist/row.d.ts +2 -2
- package/dist/row.js +1 -1
- package/dist/segmented-control.js +1 -1
- package/dist/select-register.js +9 -6
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +2 -1
- package/dist/select.js +1 -1
- package/dist/semantic-tone-CdW013KF.d.ts +4 -0
- package/dist/skeleton.js +1 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +2 -2
- package/dist/split-view.js +2 -2
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +5 -3
- package/dist/state-banner.js +1 -1
- package/dist/styles/badge.css +1 -1
- package/dist/styles/chip.css +1 -1
- package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
- package/dist/styles/components/actions/popup-menu/popup-menu.css +285 -0
- package/dist/styles/components/actions/toolbar/toolbar.css +424 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +841 -0
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +164 -0
- package/dist/styles/components/collections/list/list.css +133 -0
- package/dist/styles/components/collections/list-action-row/list-action-row.css +258 -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 +255 -0
- package/dist/styles/components/data-display/value-table/value-table.css +105 -0
- package/dist/styles/components/feedback/badge/badge.css +118 -0
- package/dist/styles/components/feedback/chip/chip.css +138 -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 +248 -0
- package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
- package/dist/styles/components/forms/select/select.css +454 -0
- package/dist/styles/components/forms/token-search-field/token-search-field.css +381 -0
- package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +575 -0
- package/dist/styles/components/layout/grid/grid.css +85 -0
- package/dist/styles/components/layout/pane/pane.css +263 -0
- package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
- package/dist/styles/components/layout/row/row.css +111 -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 +1067 -0
- package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
- package/dist/styles/components/navigation/app-tab/app-tab.css +376 -0
- package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +248 -0
- package/dist/styles/components/navigation/tab-bar/tab-bar.css +183 -0
- package/dist/styles/components/navigation/tab-scaffold/tab-scaffold.css +207 -0
- package/dist/styles/components/surfaces/content-item/content-item.css +120 -0
- package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +29 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +56 -0
- package/dist/styles/components/typography/text/text.css +158 -0
- package/dist/styles/content-item.css +46 -1
- package/dist/styles/document.css +10 -0
- package/dist/styles/foundation.css +9 -6
- package/dist/styles/grid.css +50 -0
- package/dist/styles/lucide-icon.css +4 -0
- package/dist/styles/nav-stack.css +11 -0
- package/dist/styles/text.css +19 -0
- package/dist/styles/toolbar-control-group.css +51 -0
- package/dist/styles/toolbar-text.css +11 -0
- package/dist/styles/toolbar.css +32 -0
- package/dist/styles/webawesome.css +23 -6
- package/dist/sunken-panel.d.ts +1 -1
- package/dist/sunken-panel.js +1 -1
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +1 -1
- package/dist/tab-scaffold.js +1 -1
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/text.d.ts +16 -9
- package/dist/text.js +1 -1
- package/dist/token-search-field.d.ts +1 -1
- package/dist/token-search-field.js +1 -1
- package/dist/{token-search-field-CVGwDn2y.d.ts → token-search-model-DTcTXWMS.d.ts} +54 -54
- package/dist/token-search-model.d.ts +1 -1
- package/dist/token-search-model.js +1 -1
- package/dist/toolbar-control-group.d.ts +14 -2
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +10 -2
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +1 -1
- package/dist/toolbar.js +1 -1
- package/dist/value-table.js +1 -1
- package/dist/wire-catalog.js +2 -2
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-content-items.js +1 -1
- package/dist/wire-content-items.js.map +1 -1
- package/dist/wire-nav-stack.js +59 -23
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-scroll-dividers.js +1 -1
- package/dist/wire-sidebar.js +1 -1
- package/dist/wire-sidebar.js.map +1 -1
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-tab-scaffold.js +1 -1
- package/dist/wire-tab-scaffold.js.map +1 -1
- package/dist/wire-token-search-fields.d.ts +1 -1
- package/dist/wire-token-search-fields.js +1 -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.js +1 -1
- package/dist/workbench.d.ts +3 -3
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +15 -0
- package/docs/collapsible-panel.md +5 -1
- package/docs/component-contract.md +56 -7
- package/docs/component-selection.md +73 -5
- package/docs/design/templates/empty-state/filtered-dark.svg +1 -1
- package/docs/design/templates/empty-state/filtered.svg +1 -1
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
- package/docs/design/templates/empty-state/with-action.svg +1 -1
- package/docs/design/templates/empty-state-dark.svg +1 -1
- package/docs/design/templates/empty-state.svg +1 -1
- package/docs/design/templates/list/stack-dark.svg +1 -1
- package/docs/design/templates/list/stack.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-header/action-dark.svg +1 -1
- package/docs/design/templates/list-header/action.svg +1 -1
- package/docs/design/templates/list-header/count-dark.svg +1 -1
- package/docs/design/templates/list-header/count.svg +1 -1
- package/docs/design/templates/list-header/inline-action-dark.svg +1 -1
- package/docs/design/templates/list-header/inline-action.svg +1 -1
- package/docs/design/templates/list-header/size-l-dark.svg +1 -1
- package/docs/design/templates/list-header/size-l.svg +1 -1
- package/docs/design/templates/list-header/size-m-dark.svg +1 -1
- package/docs/design/templates/list-header/size-m.svg +1 -1
- package/docs/design/templates/list-header/size-xl-dark.svg +1 -1
- package/docs/design/templates/list-header/size-xl.svg +1 -1
- package/docs/design/templates/list-header/size-xs-dark.svg +1 -1
- package/docs/design/templates/list-header/size-xs.svg +1 -1
- package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-collapsed.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
- package/docs/design/templates/list-header-dark.svg +1 -1
- package/docs/design/templates/list-header.svg +1 -1
- package/docs/design/templates/list.svg +1 -1
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
- package/docs/design/templates/segmented-control/equal.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small.svg +1 -1
- package/docs/design/templates/segmented-control-dark.svg +1 -1
- package/docs/design/templates/segmented-control.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
- package/docs/design/templates/tab-bar-dark.svg +1 -1
- package/docs/design/templates/tab-bar.svg +1 -1
- package/docs/design/templates/token-search-field/empty-dark.svg +1 -1
- package/docs/design/templates/token-search-field/empty.svg +1 -1
- package/docs/design/templates/token-search-field/tokens-dark.svg +1 -1
- package/docs/design/templates/token-search-field/tokens.svg +1 -1
- package/docs/design/templates/token-search-field-dark.svg +1 -1
- package/docs/design/templates/token-search-field.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
- package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
- package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -1
- package/docs/design/templates/toolbar-control-group/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 -1
- package/docs/design/templates/toolbar-control-group.svg +1 -1
- package/docs/design/templates/toolbar-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
- package/docs/design/templates/toolbar-text/default-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default.svg +1 -1
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/large.svg +1 -1
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/small.svg +1 -1
- package/docs/design/templates/toolbar-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-text.svg +1 -1
- package/docs/design/templates/toolbar.svg +1 -1
- package/docs/design/templates/value-table/details-dark.svg +1 -1
- package/docs/design/templates/value-table/details.svg +1 -1
- package/docs/design/templates/value-table-dark.svg +1 -1
- package/docs/design/templates/value-table.svg +1 -1
- package/docs/design/templates.md +2 -0
- package/docs/document-baseline.md +4 -0
- package/docs/layout.md +23 -6
- package/docs/nav-stack.md +5 -1
- package/docs/sunken-panel.md +7 -7
- package/docs/ui-analyzer.md +12 -1
- package/docs/ui-doctor.md +12 -2
- package/docs/webawesome-theme.md +29 -59
- package/doctor/index.mjs +39 -30
- package/llms.txt +42 -1
- package/package.json +7 -2
- package/dist/chunk-3BYFWTP3.js.map +0 -1
- package/dist/chunk-4FEVHE7C.js.map +0 -1
- package/dist/chunk-4NG4Y2Q6.js.map +0 -1
- package/dist/chunk-4SQK27MR.js.map +0 -1
- package/dist/chunk-5I7QGQVT.js.map +0 -1
- package/dist/chunk-5TTZPGUY.js.map +0 -1
- package/dist/chunk-5UGLKFBF.js.map +0 -1
- package/dist/chunk-6DFDTWGG.js.map +0 -1
- package/dist/chunk-ALGYHYXP.js.map +0 -1
- package/dist/chunk-AYUHMAI6.js.map +0 -1
- package/dist/chunk-BFPBS5Y4.js.map +0 -1
- package/dist/chunk-DA3HS64I.js.map +0 -1
- package/dist/chunk-DG6G5EPF.js.map +0 -1
- package/dist/chunk-DPAUKNB6.js.map +0 -1
- package/dist/chunk-DUBUXJA3.js.map +0 -1
- package/dist/chunk-EHIMH4J7.js.map +0 -1
- package/dist/chunk-FKPKGP2H.js.map +0 -1
- package/dist/chunk-GRHJQWV2.js.map +0 -1
- package/dist/chunk-HKVJ5MW3.js.map +0 -1
- package/dist/chunk-HXTAPIHQ.js.map +0 -1
- package/dist/chunk-I3Q7KKYM.js.map +0 -1
- package/dist/chunk-JA4J7Y4C.js.map +0 -1
- package/dist/chunk-JGIV6ZDA.js.map +0 -1
- package/dist/chunk-K47P7QZC.js.map +0 -1
- package/dist/chunk-LHSUPNSE.js.map +0 -1
- package/dist/chunk-NCSWXG7G.js.map +0 -1
- package/dist/chunk-NN6GYOA2.js.map +0 -1
- package/dist/chunk-NPNSKX3K.js.map +0 -1
- package/dist/chunk-O5GM2JAM.js.map +0 -1
- package/dist/chunk-OXO2QJWV.js.map +0 -1
- package/dist/chunk-OYQIONQF.js.map +0 -1
- package/dist/chunk-PL26TKNK.js.map +0 -1
- package/dist/chunk-PSHUSWQH.js.map +0 -1
- package/dist/chunk-RFGW735Q.js.map +0 -1
- package/dist/chunk-RGS4WX2M.js.map +0 -1
- package/dist/chunk-SLWCCHNP.js.map +0 -1
- package/dist/chunk-SMZGAPCU.js.map +0 -1
- package/dist/chunk-SRSJO5QE.js.map +0 -1
- package/dist/chunk-SVLDRGPJ.js.map +0 -1
- package/dist/chunk-SX7FJXPJ.js.map +0 -1
- package/dist/chunk-TCXDZNCX.js.map +0 -1
- package/dist/chunk-TDN5EE3S.js.map +0 -1
- package/dist/chunk-TOICTHR2.js.map +0 -1
- package/dist/chunk-V4GAQ74C.js.map +0 -1
- package/dist/chunk-V4WLBOVJ.js.map +0 -1
- package/dist/chunk-VA5TN5PR.js.map +0 -1
- package/dist/chunk-WF75U3V4.js.map +0 -1
- package/dist/chunk-X5QSICJ3.js.map +0 -1
- package/dist/chunk-YDGNU2OD.js.map +0 -1
- package/dist/chunk-ZLKZFKLW.js.map +0 -1
- package/dist/{panel-toolbar-DDKh4uKd.d.ts → panel-toolbar-CL9tYOkh.d.ts} +1 -1
- package/dist/{types-BuHELdXR.d.ts → types-C9BubXfz.d.ts} +1 -1
package/ai/skill.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kerf-ui
|
|
3
3
|
description: Build interfaces with kerfjs and the @kerfjs/ui production component package. Use whenever code imports @kerfjs/ui or a task asks for Kerf UI components.
|
|
4
|
-
kerf-ui-skill-version: 1.
|
|
4
|
+
kerf-ui-skill-version: 1.55.0
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Building with @kerfjs/ui
|
|
@@ -21,6 +21,16 @@ documented dynamic-data widening. Do not extend those diagnostics to child
|
|
|
21
21
|
markup, live DOM relationships, disposer invocation, or other conditions that
|
|
22
22
|
TypeScript cannot prove from one call.
|
|
23
23
|
|
|
24
|
+
### Shared semantic tones
|
|
25
|
+
|
|
26
|
+
`SemanticTone` is the shared color-role type for `Badge`, `Chip`, `StateBanner`,
|
|
27
|
+
and semantic `ContentItem` appearances: `neutral`, `info`, `pop`, `success`,
|
|
28
|
+
`warning`, and `danger`. Import it as a type from `@kerfjs/ui`,
|
|
29
|
+
`@kerfjs/ui/badge`, `@kerfjs/ui/state-banner`, or `@kerfjs/ui/content-item`.
|
|
30
|
+
Use `info` for the role backed by the existing `--kui-color-brand-*` tokens.
|
|
31
|
+
Migrate Badge/Chip `tone="brand"` to `tone="info"`; `BadgeTone` and
|
|
32
|
+
`StateBannerTone` remain deprecated aliases of `SemanticTone`.
|
|
33
|
+
|
|
24
34
|
## Components own their styles; configure, never override
|
|
25
35
|
|
|
26
36
|
This is the rule every Kerf UI surface follows, and applications and
|
|
@@ -33,6 +43,11 @@ component packages built on Kerf UI must follow it too:
|
|
|
33
43
|
selects a `.kui-*` class, a `[data-component]` root, a `wa-*` element a Kerf
|
|
34
44
|
component renders, or its `::part()`s, and no hook class added to a
|
|
35
45
|
component's root so that it can be restyled.
|
|
46
|
+
- **Owned implementation details are available.** A component may render raw
|
|
47
|
+
HTML or Web Awesome elements and style those elements when it creates them,
|
|
48
|
+
controls their state, and keeps the selectors in its own stylesheet. That
|
|
49
|
+
permission stops at every nested Kerf or application component boundary;
|
|
50
|
+
ownership follows the child component, even when the parent rendered it.
|
|
36
51
|
- **Configuration, not overrides.** Do not write another component's private
|
|
37
52
|
`--_kui-*` variables or reach for its `--kui-*` tokens to change layout,
|
|
38
53
|
size, padding, or framing when a prop exists. Theme tokens are for theming
|
|
@@ -49,6 +64,11 @@ wa-dropdown.kui-popup-menu { … }` lives with PopupMenu). A parent may key its
|
|
|
49
64
|
you need, report it (open an upstream feature request) instead of
|
|
50
65
|
overriding. Your own components follow the same rule: expose configuration,
|
|
51
66
|
and let each component own its styles.
|
|
67
|
+
- **Thin compositions usually need no CSS.** A component that only chooses and
|
|
68
|
+
connects other components should configure their props and slots without a
|
|
69
|
+
stylesheet. Add CSS only for raw elements or layout that the composition
|
|
70
|
+
itself owns; never use a composition stylesheet to normalize or override its
|
|
71
|
+
children.
|
|
52
72
|
|
|
53
73
|
`kerf-ui-analyze` and `kerf-ui-doctor` enforce this downstream: `KUI-L019`
|
|
54
74
|
(a rule whose subject is a cataloged component), `KUI-L020` (another
|
|
@@ -62,9 +82,12 @@ when none exists, report the component gap rather than suppressing the finding.
|
|
|
62
82
|
For compact known activity, give `LoadingSpinner` its `size` prop (`xs` through
|
|
63
83
|
`xl`, or a positive pixel number) instead of styling its SVG; omitted size is
|
|
64
84
|
1em.
|
|
65
|
-
For an application's own
|
|
66
|
-
`"ownership": "component"
|
|
67
|
-
|
|
85
|
+
For an application's own components, configure Doctor with
|
|
86
|
+
`"ownership": "component"`, `"implicitComponentOwnership": true`, and
|
|
87
|
+
`"ownershipContext": "any-package"`; declare each catalog entry's
|
|
88
|
+
`styleSources` so sibling components cannot style one another. Package
|
|
89
|
+
ownership remains the compatibility default and does not establish those
|
|
90
|
+
application-level boundaries.
|
|
68
91
|
|
|
69
92
|
Read `../docs/webawesome-theme.md` when using Web Awesome components or changing
|
|
70
93
|
shared theme tokens. When overriding a loud fill
|
|
@@ -172,6 +195,8 @@ For selectable document tiles, set `Grid selectionMode="multiple"` and
|
|
|
172
195
|
`ariaLabel`, render `ContentItem selectionMode="multiple"` children, and wire
|
|
173
196
|
`wireContentItems` for arrows, Home/End, and card activation. The app owns the
|
|
174
197
|
selection set and each tile's nested controls.
|
|
198
|
+
`textInsets` adds the standard 17px physical-side content inset; `controlInsets`
|
|
199
|
+
adds 8px. Text insets win on any overlapping side, matching Row and List.
|
|
175
200
|
|
|
176
201
|
For a complete shell, sidebar, workspace header, list-detail dialog, composer
|
|
177
202
|
form, list-state lifecycle, or mixed-control toolbar, start from the runnable
|
|
@@ -225,7 +250,8 @@ Hard rules:
|
|
|
225
250
|
13. The Web Awesome theme makes Tooltip and Popover arrowless by default. Keep that default unless a pointer materially clarifies the anchor; opt back in with `--wa-tooltip-arrow-size`, `--kui-wa-popover-arrow-size`, or a popover's public `--arrow-size`, and use `without-arrow` when local no-arrow intent should survive theme changes. Its non-field chrome uses `--kui-wa-control-inset` (8px controls/items), `--kui-wa-surface-margin` / `--kui-wa-surface-inset` (8px around/inside Accordion, Card, Details, Callout, and Include), and `--kui-wa-container-inset` (16px Tab Panel content and framed disclosure regions). Plain Details use the 8px surface inset on the trigger and keep the body flush; plain Accordion items use it on both trigger and body. Outlined and sunken Details use the 16px container inset on the trigger and 8px on the body; framed Accordion items use 16px on both. Dialog maps its body to the 8px surface tier and its footer to the 16px container tier independently of `--spacing`. Override those tiers instead of restyling individual parts. Filled badges use each variant's quiet fill with normal text so their compact copy stays WCAG-AA readable; override the pair with `--kui-wa-badge-filled-background` / `--kui-wa-badge-filled-foreground`, not host selectors. When a dialog provides another dismissal affordance, put `hide-actions` on the `wa-dialog` host to hide its directly exported `header-actions` part; never chain `::part()` selectors through internal parts. Checkbox and Radio Group option regions, the Color Picker trigger, and Slider's complete interactive region receive the shared 8px logical inline outer inset because those controls have no bordered field shell. Known Date field captions and bordered text-like field hints align with values at the 9px border-plus-padding inset. OTP Input's label uses the same uppercase xs/650 treatment as other field labels, and both its label and hint use that 9px inset.
|
|
226
251
|
14. Treat the complete Web Awesome catalog as support coverage, not a recommendation list. Its UX sidebar marks superseded and exceptional entries `Discouraged`. Consider Popup when it replaces custom anchored positioning. Prefer Kerf `Select` over direct Dropdown/Dropdown Item/Select/Option composition, `SegmentedControl` over Button Group, `TabBar` or `SegmentedControl` over Web Awesome Tabs, `LucideIcon` over Web Awesome Icon, and `ResizableRegion` over Split Panel. Use Tree/Tree Item, Animated Image, and Comparison only for a specific required behavior; avoid Zoomable Frame. Never render a `Discouraged` element directly in application, demo, or recipe markup; reach it only through the Kerf component that wraps it (`PopupMenu` renders `wa-dropdown`, `Select` renders `wa-select` / `wa-option`), and treat a Kerf component gap as a request to file, not a reason to drop to the raw element.
|
|
227
252
|
15. Build sidebars, main areas, inspectors, and dialogs by rendering `Pane` (`@kerfjs/ui/pane`): an unpadded `.kui-pane` root, an optional `header`, one scrolling `.kui-pane__content`, and an optional `footer`; pick landmarks with `element` / `contentElement`. Never write a component's anatomy classes (`kui-pane`, `kui-toolbar`, `kui-list-item`, …) onto your own element to recreate it — render the component (`KUI-L103`). Only the catalog's `placeableClasses` (the `.kui-content` / `.kui-scroll-owner` / `.kui-control-cluster` / `.kui-inline-metadata` layout utilities, `.kui-app-root`, and `.kui-content-item` geometry on a non-div carrier) belong on elements you write. Use `Row` instead of a hand-written flex-row wrapper, `List` instead of a hand-written flex-column wrapper, and `Grid` instead of repeated equal-track CSS when children need a fixed positive count of evenly distributed columns. `Row` defaults to left/full with an `xs` gap and no wrapping; Grid defaults to an `xs` gap and keeps each track at `minmax(0, 1fr)`; List retains full/top and zero-gap defaults. The app owns Grid's responsive column-count changes. When a Row, List, or Grid is the layout root of a definite-height parent (an app root or a fixed-height frame), pass `fill` so it takes that full height, and put route/test/recipe `data-*` markers in its `rootAttributes`; never wrap a layout in a frame `Pane` just for height or a root attribute, because its content slot becomes a scroll owner that never scrolls. Inside a flex layout use `flex`, not `fill`. Use `List` when rows or sections also need flex growth, one vertical scroll owner, or physical-edge dividers. `dividerSides`, `textInsets`, and `controlInsets` use canonical physical `t`/`r`/`b`/`l` order; text geometry wins where text and control selections overlap. `ListInsetText` and `ListInsetControl` inset all four sides by default and accept the same `sides` grammar for selective edges. A dialog body is generally a `List`: set `DialogSurface bodyInset="none"` when its list children own geometry, and wrap bare dialog prose in `ListInsetText` so it aligns with bordered siblings without a second inset. Add `.kui-content` for 24px major vertical separation and render each ordinary surface-like child as `ContentItem` (`@kerfjs/ui/content-item`) for a child-owned 8px inline margin, 1px border, 8px padding, and 12px radius. Choose `frame="framed"` (neutral border in the always-reserved 1px, same geometry) only for a real distinction and `shape="pill"` for 22px; do not hand-write `<div class="kui-content-item">` or its modifier classes. There is no filled variant: a lowered filled surface is `SunkenPanel`. Do not pad pane shells, duplicate item geometry in wrappers, or create nested scroll owners. Align text to text and icons to icons across a pane — a title, a row label, and bare prose share the same text column (`ListInsetText` puts bare text on it); a border is decoration and never the alignment anchor, so a bordered surface extends to the pane gutter instead of being indented to line its border up with a heading's text.
|
|
228
|
-
15a. Use `Text` from `@kerfjs/ui/text` for ordinary headings, paragraphs, and inline secondary text outside toolbar title zones. Omit `variant` for the default `p`, pass `h1`–`h6` according to the document outline, or use `variant="span"` inside a row, label, or table cell; ordinary native attributes pass through. Express supporting, error, compact, or code text with the independent finite `tone="quiet|danger"`, `size="compact"`, and `font="monospace"` props instead of global utility classes or appearance-only heading choices. Block Text variants own a transparent 1px border and the standard item padding; `span` owns no box geometry. Keep toolbar identity/title content on `ToolbarText` and list-aligned bare prose on `ListInsetText`. `ToolbarText` below `xlarge` is intentionally quiet identity text
|
|
253
|
+
15a. Use `Text` from `@kerfjs/ui/text` for ordinary headings, paragraphs, and inline secondary text outside toolbar title zones. Omit `variant` for the default `p`, pass `h1`–`h6` according to the document outline, or use `variant="span"` inside a row, label, or table cell; ordinary native attributes pass through. Express supporting, error, compact, or code text with the independent finite `tone="quiet|danger"`, `size="compact"`, and `font="monospace"` props instead of global utility classes or appearance-only heading choices. Block Text variants own a transparent 1px border and the standard item padding; `span` owns no box geometry. Keep toolbar identity/title content on `ToolbarText` and list-aligned bare prose on `ListInsetText`. `ToolbarText` below `xlarge` is intentionally quiet identity text in default tone; a normal-color subsection title is `Text` with an `h2`–`h6` variant (or `ListHeader` for a list or menu section), never a recolored `ToolbarText`. Use `controlMargins` with canonical physical Sides for an exterior 8px control gutter without a Row wrapper; avoid stacking parent insets, and remember spans retain native inline margin behavior.
|
|
254
|
+
|
|
229
255
|
16. Keep a visible collapsible pane's collapse control in its own toolbar. When hidden, move its restore control into the adjacent main toolbar on the corresponding logical edge: leading for an inline-start sidebar and trailing for an inline-end inspector. Collapse the pane completely; do not preserve an empty icon-only rail.
|
|
230
256
|
16a. Dividers between pinned chrome and scrolling content are component chrome: a `Toolbar` draws none by default (`dividerSides` is for a permanent edge only). Call `wireScrollDividers(appRoot)` from `@kerfjs/ui/wire-scroll-dividers` once and retain its disposer; a plain `Pane` with `chromeDividers="scroll"` draws the line under its header only while content is scrolled beneath it and over its footer only while more content lies below (never when the content fits), every `NavStack`'s top chrome and bottom toolbar and every `TabScaffold` bar do the same around the active view or scene (keyed on whatever actually scrolls there, including a sole `Pane`'s content), and every `TabBar` marks each side of its strip with tabs scrolled out of view. Configure a pane with `chromeDividers` (`scroll` by default for plain panes, `always` by default for sunken panes, or explicit `scroll`, `always`, `none`, also via `PaneConfig`); `always` draws both lines even when content fits. A `NavStack` or `TabScaffold` has its own `chromeDividers` (same values: `always` draws the chrome lines without the wiring, `none` never, even when wired; a `SplitView` forwards it through `compactStack`); a `toolbarConfig.dividerSides` edge stays the Toolbar's own. Name app-owned chrome by id in `targets`. The wiring writes only `data-scroll-overflow` / `data-scroll-divider` state; never write a border onto a component to show a divider.
|
|
231
257
|
17. The direct children of a `Toolbar` zone are `ToolbarText` (identity/title text) and `ToolbarControlGroup`; `trailing` also accepts one standalone primary `wa-button` that keeps its own Web Awesome chrome. Never drop other bare buttons, inputs, links, or arbitrary markup straight into a zone. Put identity/title text directly in the zone as `ToolbarText`; wrap interactive controls and icon tiles in `ToolbarControlGroup`. `SegmentedControl`, `Select`, a collapsible `TokenSearchField`, and other Web Awesome controls live inside a group. Configure zone behavior with `Toolbar.centerAlign` and its `responsive` / `responsiveAt` policy instead of selecting toolbar zone classes. No policy clips an action: trailing (and stacked center) zones wrap whole groups onto another row, and the center zone never compresses below its content (a leading title too long for the row truncates with an ellipsis instead), so never hide or shrink a toolbar control to make it fit; use `responsive="wrap"` for a heading whose title must stay whole, and move genuinely lower-priority commands into an app-owned "More" popup menu. For an ordinary icon/action control inside a group, use a plain `<button>` (the group styles `> button` fully) — that is the default; reach for `wa-button` only when you need a Web Awesome feature. A popup menu in a toolbar is a `PopupMenu` (`@kerfjs/ui/popup-menu`, registered once via `@kerfjs/ui/popup-menu/register`) in a `single` group with `nestedDropdown` and a `menuInset`: give it typed `items` (commands with `action`s, `heading`s, `divider`s) and a trigger `icon` plus visible `text` or an accessible `label`; never hand-write `wa-dropdown` / `wa-dropdown-item` markup for a menu. Let the group size that trigger from its icon, localized text, and caret; do not force a width on the menu or button. By default a group stays on one row: each icon sits beside its label, and the toolbar's `responsive` policy relocates whole groups when needed. Set `overflow="wrap"` only for independent links that should move as whole actions to another row within the group; use `overflow="scroll"` for a bounded one-row action strip. A `ToolbarText` is one line ending in an ellipsis by default; opt into `wrap` (capped by `maxLines`) or `ellipsis={false}` deliberately. Inside a group, a `Select` or `PopupMenu` trigger drops its focus ring while its popup is open (the open popup and its current row show where focus is) and the ring returns when the popup closes; a ring follows the control's shape (a pill for an icon-and-caret trigger, a circle for a compact icon button) — set `focusRingOwner="group"` on a Select whose group paints the composed ring, and never add CSS to show, hide, or reshape a ring. For a compact mixed group, keep the standard item padding and raised selected chrome; the selected item paints over the outer border without an internal separator. For an avatar control, set `content="avatar"` and `avatarImage` on the group instead of inserting an `img`: a lone control paints the contained image on the outer group and a multi-button group paints it only on the pressed selection highlight. Compose panel/dialog/page headings with a direct extra-large `ToolbarText`, optional grouped icon, grouped trailing controls, and app-owned supporting copy below. A non-interactive heading icon is an icon tile: put the `LucideIcon` directly in its `ToolbarControlGroup` (it takes an icon button's 40px slot and centers), never inside a `<button>` that does nothing. A group remains 44px outside (`calc(2px + remify(42px))`) when its border/background are transparent; use 8px between groups and inside items. Each zone item sits in the toolbar's top 44px control band, centered by its own size; a taller item (a wrapped title, a second trailing row) starts at the band's top and grows down without moving the others, so a wrapped `ToolbarText` keeps trailing controls beside its first line — do not add alignment CSS for this. Split dormant and interactive regions: `ListHeader` fills the available inline width by default; set `width="content"` to shrink-wrap while retaining its normal geometry, or `inline` when it belongs in surrounding text without outer margin, border, or padding. It keeps its label and mutually exclusive semantic count or non-count `badge` together, with an independent logical-end action unless disclosure mode makes the title cluster the button. Its action visual defaults to 18px through `--kui-list-header-action-icon-size` inside a fitted 36px hover square whose transparent hit layer keeps the pointer target at least 44px (44px wide by the 36px row in `density="compact"`); never shrink the target to match the visual, and never force the button to 44px. Pass every non-negative safe-integer section quantity through `count` with a localized full spoken `countLabel`; never concatenate it into `label` or put a number in `badge`. `ListItem.trailing` is dormant; use `ListActionRow` when primary and trailing actions need sibling native buttons. Its `label`, `icon`, and `trailingActionIcon` slots are also dormant and cannot contain controls. Let panes relocate at narrow widths instead of shrinking targets. Dividers are chrome and earn their place: a `Toolbar` draws none by default, and the line between pinned chrome and scrolling content comes from scroll state (rule 16a), so never add a border, a permanent `dividerSides`, or a margin to fake or adjust one.
|
|
@@ -262,9 +288,12 @@ Use `Toolbar responsive="trailing-priority"` when an expanded trailing search ne
|
|
|
262
288
|
Set `--kui-toolbar-inset: 0px` on an embedded Toolbar to remove its outer padding while retaining `--kui-toolbar-gap` between zones. The same inset token controls the minimum-height allowance; safe-area padding still applies at claimed edges.
|
|
263
289
|
|
|
264
290
|
For compact dialog copy, use `Text flush lineHeight="tight"`; for compact metadata, use `ValueTable density="compact"` and its public row columns/padding/gap tokens. `ToolbarText size="xsmall"` fits a dense rail heading. A `TokenSearchField` editor shrinks inside a narrow group by default; set `--kui-token-search-editor-min-width` when a minimum is needed. A full-height shell uses the one `.kui-app-root` mount container documented in `docs/document-baseline.md`.
|
|
291
|
+
When importing the opt-in `@kerfjs/ui/document.css` baseline, native `th`, `td`, `button`, `input`, `select`, and `textarea` inherit the surrounding font family, size, and line height; table headers retain their native emphasis. Load application typography overrides after the baseline.
|
|
265
292
|
|
|
266
293
|
For a read-only field preview that replaces a Web Awesome input, use `FieldLabel` from `@kerfjs/ui/text` above the preview. Put it in `ListInsetControl sides="trl"` beside a `ContentItem` value; give it an id and use `aria-labelledby` on the preview group. The app owns preview/edit state and hint copy.
|
|
267
294
|
|
|
295
|
+
`ToolbarControlGroup.tileTone` selects `neutral`, `brand`, `success`, `warning`, or `danger` quiet fill, matching quiet border, and on-quiet foreground for a non-interactive icon tile. Compose a contained `single` group whose only child is a direct decorative LucideIcon (`aria-hidden="true"`). Omission preserves the normal group palette. The prop does not recolor interactive, mixed, multi-control, or borderless groups; keep real actions in controls with their existing focus/hover/pressed treatments.
|
|
296
|
+
|
|
268
297
|
Common mistakes:
|
|
269
298
|
|
|
270
299
|
| Mistake | Fix |
|
|
@@ -310,6 +339,7 @@ For prominent content text, use `Text size="large"`; use `size="xlarge"` for dis
|
|
|
310
339
|
For removable tags use `Chip`, with `removeAction` for delegated handling and a specific `removeLabel` for the native button. `itemId` identifies the tag; the app owns removal. `size="compact"` and `disabled` replace app styling of raw `wa-tag` internals. Use `Badge` for non-interactive metadata.
|
|
311
340
|
|
|
312
341
|
For an icon with a specific meaning, set `LucideIcon.color` using `uiColor('warning-on-quiet')` or another foreground token. Use `foregroundColorVar('--app-icon-color')` for an app-owned property or `foregroundColor('#8b5cf6')` for a direct custom CSS color. Omit the prop to inherit text color. Outline stroke and solid fill both follow the chosen color; size, appearance, label, and slot remain separate props. Avoid pale fill tokens as foregrounds.
|
|
342
|
+
Set `LucideIcon.inline` when an icon belongs within `Text` or another sentence; the SVG flows as `inline-block` instead of its default block layout. It retains its inherited 1em size unless you set `size`.
|
|
313
343
|
|
|
314
344
|
For `Select`, mark an unavailable choice with `disabled` and optionally `disabledReason`. In a multiple Select, `selectAllLabel` and `clearLabel` opt in to localized footer actions that select enabled choices or clear the selection through normal input/change events; the app still owns the controlled `value`.
|
|
315
345
|
|
|
@@ -322,3 +352,26 @@ lifecycle: the latest request wins through open/close reversals, canceled
|
|
|
322
352
|
transitions, and removal. Native value, keyboard, dismissal, and anchor placement
|
|
323
353
|
remain with Web Awesome. Do not add popup delays, position repairs, or animation
|
|
324
354
|
completion handlers in consumers. Raw `wa-select` elements remain native.
|
|
355
|
+
|
|
356
|
+
Neutral lowered surfaces and decorative neutral fills/borders are translucent theme colors; compose nested public components directly. Default/raised canvases, foregrounds, focus indicators, and loud contrast-bearing fills remain opaque. Do not assign depth-specific component tokens in demo wrappers.
|
|
357
|
+
|
|
358
|
+
Use `ToolbarText tone="dark"` on a loud or photo-backed toolbar surface to
|
|
359
|
+
match dark control groups. It applies to read-only headings and actionable
|
|
360
|
+
titles at every size; default tone retains existing identity and heading colors.
|
|
361
|
+
|
|
362
|
+
Navigation transition continuity: `wireNavStack` slides the incoming view over the preserved previous view on push and the outgoing view off on pop, cross-fades both live chrome surfaces with inert snapshots, and settles/cancels an interrupted transition before starting the next. Reduced motion and duration zero settle immediately.
|
|
363
|
+
|
|
364
|
+
Expanded search groups accept `expandedOverflow="visible"` to anchor app-owned suggestion/date/help surfaces below their relative root; collapsed/default groups retain existing clipping. Apps own surface placement/dismissal and use `data-token-search-keep-open` or `collapsible.keepOpenOn` for focus.
|
|
365
|
+
|
|
366
|
+
`ToolbarText` and `ToolbarControlGroup` accept typed `hideBelow`/`showBelow`
|
|
367
|
+
lengths (for example `px(416)`). Wire `wireToolbarVisibility(root)` from
|
|
368
|
+
`@kerfjs/ui/wire-toolbar-visibility` and dispose on unmount. Thresholds use the
|
|
369
|
+
nearest Toolbar content-box width: hideBelow hides strictly below, showBelow
|
|
370
|
+
shows strictly below, with complementary behavior at equality. Percentages use
|
|
371
|
+
that content width; em and custom properties use the item's own context. Invalid,
|
|
372
|
+
negative, unresolved, or contradictory values leave the item visible under this
|
|
373
|
+
width policy. Keep primary actions visible and offer a complementary overflow
|
|
374
|
+
group. See `docs/component-contract.md` "Toolbar width visibility" for lifecycle
|
|
375
|
+
details.
|
|
376
|
+
|
|
377
|
+
Select menus use native viewport shifting with 10px gutters: default menus grow to content (up to 20rem), while `fitMenu` matches trigger width and long labels wrap. Keep popup sizing and position repairs out of consumer CSS.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Web Awesome JSX signatures for the UI authoring corpus
|
|
2
2
|
|
|
3
|
-
Generated from the emitted `@kerfjs/ui@5.0.0-beta.
|
|
3
|
+
Generated from the emitted `@kerfjs/ui@5.0.0-beta.77` declaration boundary. Import `@kerfjs/ui/webawesome` for type effects when authoring direct `wa-*` JSX. The module emits no runtime behavior and does not register custom elements.
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
import { KerfCustomElement } from 'kerfjs/jsx-runtime';
|
package/analyzer/index.mjs
CHANGED
|
@@ -15,6 +15,7 @@ import ts from 'typescript';
|
|
|
15
15
|
import { loadApplicationUiProfile } from '../ai/application-ui-profile.mjs';
|
|
16
16
|
import { isUiTraversalExcluded } from '../traversal-exclusions.mjs';
|
|
17
17
|
import {
|
|
18
|
+
classOwnerFor,
|
|
18
19
|
componentLabel,
|
|
19
20
|
componentName,
|
|
20
21
|
componentOwnershipFacts,
|
|
@@ -1636,7 +1637,13 @@ function inspectTsx(
|
|
|
1636
1637
|
);
|
|
1637
1638
|
if (entry && isForeign(entry))
|
|
1638
1639
|
for (const className of classes.values) {
|
|
1639
|
-
|
|
1640
|
+
// A class owned by the surrounding application is still a hook when
|
|
1641
|
+
// placed on another component's root. Only the component's own
|
|
1642
|
+
// public class is safe to style here.
|
|
1643
|
+
if (
|
|
1644
|
+
classOwnerFor(facts.ownership, className, componentMode)?.key ===
|
|
1645
|
+
entry.key
|
|
1646
|
+
)
|
|
1640
1647
|
continue;
|
|
1641
1648
|
const styled = cssFacts.get(className)?.styled;
|
|
1642
1649
|
if (!styled) continue;
|
|
@@ -1717,6 +1724,9 @@ function inspectTsx(
|
|
|
1717
1724
|
inset: inset || parent?.inset,
|
|
1718
1725
|
label: entry?.key ?? tag,
|
|
1719
1726
|
});
|
|
1727
|
+
// JSX supplied through a prop (for example Toolbar.leading) is still
|
|
1728
|
+
// rendered markup and must be checked like ordinary children.
|
|
1729
|
+
ts.forEachChild(opening.attributes, visit);
|
|
1720
1730
|
if (ts.isJsxElement(node))
|
|
1721
1731
|
for (const child of node.children) visit(child);
|
|
1722
1732
|
stack.pop();
|
package/dist/app-tab.js
CHANGED
package/dist/badge.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { SafeHtml } from 'kerfjs';
|
|
2
|
+
import { S as SemanticTone } from './semantic-tone-CdW013KF.js';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
/** @deprecated Use SemanticTone. */
|
|
5
|
+
type BadgeTone = SemanticTone;
|
|
4
6
|
type BadgeAppearance = 'quiet' | 'solid' | 'outline';
|
|
5
7
|
type BadgeShape = 'pill' | 'rounded';
|
|
6
8
|
/** Size of a text badge. A text-free dot is the separate `size: 'dot'` form. */
|
|
7
9
|
type BadgeSize = 'compact' | 'default';
|
|
8
10
|
interface BadgeCommonProps {
|
|
9
|
-
tone?:
|
|
11
|
+
tone?: SemanticTone;
|
|
10
12
|
className?: string;
|
|
11
13
|
/** Native named-slot assignment when composed inside a web component. */
|
|
12
14
|
slot?: string;
|
|
@@ -49,4 +51,4 @@ type BadgeProps = BadgeTextProps | BadgeDotProps;
|
|
|
49
51
|
/** Compact, non-interactive metadata whose tone, emphasis, and shape are configured by props. */
|
|
50
52
|
declare function Badge(props: BadgeProps): SafeHtml;
|
|
51
53
|
|
|
52
|
-
export { Badge, type BadgeAppearance, type BadgeDotProps, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTextProps, type BadgeTone };
|
|
54
|
+
export { Badge, type BadgeAppearance, type BadgeDotProps, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTextProps, type BadgeTone, SemanticTone };
|
package/dist/badge.js
CHANGED
package/dist/browser/catalog.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import '../styles/foundation.css';
|
|
2
|
-
import '../styles/list.css';
|
|
3
|
-
import '../styles/list-inset-text.css';
|
|
4
|
-
import '../styles/lucide-icon.css';
|
|
5
|
-
import '../styles/text.css';
|
|
6
2
|
import '../styles/loading-spinner.css';
|
|
7
3
|
import '../styles/toolbar-control-group.css';
|
|
8
4
|
import '../styles/skeleton.css';
|
|
9
5
|
import '../styles/toolbar-text.css';
|
|
6
|
+
import '../styles/list.css';
|
|
7
|
+
import '../styles/list-inset-text.css';
|
|
10
8
|
import '../styles/resizable-region.css';
|
|
11
|
-
import '../styles/floating-toolbar.css';
|
|
12
9
|
import '../styles/toolbar.css';
|
|
13
|
-
import '../styles/nav-stack.css';
|
|
14
10
|
import '../styles/pane.css';
|
|
11
|
+
import '../styles/lucide-icon.css';
|
|
12
|
+
import '../styles/floating-toolbar.css';
|
|
13
|
+
import '../styles/nav-stack.css';
|
|
15
14
|
import '../styles/workbench.css';
|
|
15
|
+
import '../styles/text.css';
|
|
16
16
|
import '../styles/popup-menu.css';
|
|
17
17
|
import '../styles/row.css';
|
|
18
18
|
import '../styles/badge.css';
|
|
@@ -20,7 +20,7 @@ import '../styles/disclosure-arrow.css';
|
|
|
20
20
|
import '../styles/list-header.css';
|
|
21
21
|
import '../styles/list-item.css';
|
|
22
22
|
import '../styles/catalog/components/catalog-stage.css';
|
|
23
|
-
import '../styles/catalog
|
|
23
|
+
import '../styles/catalog.css';
|
|
24
24
|
import '../styles/catalog/components/catalog-example.css';
|
|
25
25
|
import '../styles/catalog/components/catalog-example-stack.css';
|
|
26
26
|
export * from '../catalog.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '../styles/foundation.css';
|
|
2
|
-
import '../styles/lucide-icon.css';
|
|
3
|
-
import '../styles/list.css';
|
|
4
|
-
import '../styles/pane.css';
|
|
5
2
|
import '../styles/toolbar.css';
|
|
6
3
|
import '../styles/loading-spinner.css';
|
|
7
4
|
import '../styles/toolbar-control-group.css';
|
|
5
|
+
import '../styles/list.css';
|
|
6
|
+
import '../styles/pane.css';
|
|
7
|
+
import '../styles/lucide-icon.css';
|
|
8
8
|
import '../styles/collapsible-panel.css';
|
|
9
9
|
export * from '../collapsible-panel.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../styles/foundation.css';
|
|
2
2
|
import '../styles/badge.css';
|
|
3
|
+
import '../styles/skeleton.css';
|
|
3
4
|
import '../styles/lucide-icon.css';
|
|
4
5
|
import '../styles/disclosure-arrow.css';
|
|
5
|
-
import '../styles/skeleton.css';
|
|
6
6
|
import '../styles/text.css';
|
|
7
7
|
import '../styles/list-header.css';
|
|
8
8
|
export * from '../list-header.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '../styles/foundation.css';
|
|
2
|
-
import '../styles/lucide-icon.css';
|
|
3
2
|
import '../styles/toolbar.css';
|
|
4
3
|
import '../styles/loading-spinner.css';
|
|
5
4
|
import '../styles/toolbar-control-group.css';
|
|
6
5
|
import '../styles/skeleton.css';
|
|
7
6
|
import '../styles/toolbar-text.css';
|
|
7
|
+
import '../styles/lucide-icon.css';
|
|
8
8
|
import '../styles/nav-stack.css';
|
|
9
9
|
export * from '../nav-stack.js';
|
package/dist/browser/select.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import '../styles/foundation.css';
|
|
2
|
-
import '../styles/lucide-icon.css';
|
|
3
2
|
import '../styles/toolbar.css';
|
|
4
3
|
import '../styles/loading-spinner.css';
|
|
5
4
|
import '../styles/toolbar-control-group.css';
|
|
6
5
|
import '../styles/skeleton.css';
|
|
7
6
|
import '../styles/toolbar-text.css';
|
|
7
|
+
import '../styles/lucide-icon.css';
|
|
8
8
|
import '../styles/nav-stack.css';
|
|
9
9
|
import '../styles/resizable-region.css';
|
|
10
10
|
import '../styles/split-view.css';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import '../styles/foundation.css';
|
|
2
2
|
import '../styles/resizable-region.css';
|
|
3
|
-
import '../styles/floating-toolbar.css';
|
|
4
|
-
import '../styles/list.css';
|
|
5
|
-
import '../styles/lucide-icon.css';
|
|
6
3
|
import '../styles/toolbar.css';
|
|
7
4
|
import '../styles/loading-spinner.css';
|
|
8
5
|
import '../styles/toolbar-control-group.css';
|
|
6
|
+
import '../styles/list.css';
|
|
7
|
+
import '../styles/pane.css';
|
|
8
|
+
import '../styles/lucide-icon.css';
|
|
9
|
+
import '../styles/floating-toolbar.css';
|
|
9
10
|
import '../styles/skeleton.css';
|
|
10
11
|
import '../styles/toolbar-text.css';
|
|
11
12
|
import '../styles/nav-stack.css';
|
|
12
|
-
import '../styles/pane.css';
|
|
13
13
|
import '../styles/workbench.css';
|
|
14
14
|
export * from '../workbench.js';
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { C as CatalogResource } from './types-
|
|
2
|
-
import './semantic-content-BbzjvSu9.js';
|
|
3
|
-
import 'kerfjs';
|
|
1
|
+
import { C as CatalogResource } from './types-C9BubXfz.js';
|
|
4
2
|
import './toolbar.js';
|
|
5
|
-
import '
|
|
3
|
+
import 'kerfjs';
|
|
4
|
+
import './semantic-content-BbzjvSu9.js';
|
|
6
5
|
import './sides-BPSWde0A.js';
|
|
6
|
+
import './pane.js';
|
|
7
7
|
import './workbench.js';
|
|
8
8
|
import './list.js';
|
|
9
|
-
import './css-values.js';
|
|
10
9
|
import './flex-alignment-4ms8ZbV8.js';
|
|
10
|
+
import './css-values.js';
|
|
11
11
|
import './nav-stack.js';
|
|
12
12
|
import './toolbar-text.js';
|
|
13
13
|
import './resizable-region.js';
|
|
14
|
-
import './panel-toolbar-
|
|
14
|
+
import './panel-toolbar-CL9tYOkh.js';
|
|
15
15
|
import './lucide-icon.js';
|
|
16
16
|
import 'lucide';
|
|
17
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/catalog-resources.ts"],"names":[],"mappings":";AAuCO,SAAS,iBACd,KAAA,EACmB;AACnB,EAAA,MAAM,SAAA,GAA+B;AAAA,IACnC,EAAE,KAAA,EAAO,aAAA,EAAe,GAAG,MAAM,UAAA;AAAW,GAC9C;AACA,EAAA,IAAI,KAAA,CAAM,eAAA;AACR,IAAA,SAAA,CAAU,IAAA,CAAK;AAAA,MACb,KAAA,EAAO,kBAAA;AAAA,MACP,GAAG,KAAA,CAAM;AAAA,KACV,CAAA;AACH,EAAA,IAAI,KAAA,CAAM,cAAA;AACR,IAAA,SAAA,CAAU,KAAK,EAAE,KAAA,EAAO,mBAAmB,GAAG,KAAA,CAAM,gBAAgB,CAAA;AACtE,EAAA,SAAA,CAAU,IAAA,CAAK;AAAA,IACb,KAAA,EACE,KAAA,CAAM,YAAA,KAAiB,qBAAA,GACnB,sBAAA,GACA,UAAA;AAAA,IACN,GAAG,KAAA,CAAM;AAAA,GACV,CAAA;AACD,EAAA,OAAO,SAAA;AACT","file":"catalog-resources.js","sourcesContent":["import type { CatalogResource } from '
|
|
1
|
+
{"version":3,"sources":["../src/catalog/resources/catalog-resources.ts"],"names":[],"mappings":";AAuCO,SAAS,iBACd,KAAA,EACmB;AACnB,EAAA,MAAM,SAAA,GAA+B;AAAA,IACnC,EAAE,KAAA,EAAO,aAAA,EAAe,GAAG,MAAM,UAAA;AAAW,GAC9C;AACA,EAAA,IAAI,KAAA,CAAM,eAAA;AACR,IAAA,SAAA,CAAU,IAAA,CAAK;AAAA,MACb,KAAA,EAAO,kBAAA;AAAA,MACP,GAAG,KAAA,CAAM;AAAA,KACV,CAAA;AACH,EAAA,IAAI,KAAA,CAAM,cAAA;AACR,IAAA,SAAA,CAAU,KAAK,EAAE,KAAA,EAAO,mBAAmB,GAAG,KAAA,CAAM,gBAAgB,CAAA;AACtE,EAAA,SAAA,CAAU,IAAA,CAAK;AAAA,IACb,KAAA,EACE,KAAA,CAAM,YAAA,KAAiB,qBAAA,GACnB,sBAAA,GACA,UAAA;AAAA,IACN,GAAG,KAAA,CAAM;AAAA,GACV,CAAA;AACD,EAAA,OAAO,SAAA;AACT","file":"catalog-resources.js","sourcesContent":["import type { CatalogResource } from '../../catalog.js';\n\n/**\n * Standard resource labels for a Kerf catalog detail footer. Keep these labels\n * stable across catalogs so people and AI-generated integrations see the same\n * choices in the same vocabulary.\n */\nexport type CatalogResourceKind =\n | 'demoSource'\n | 'componentSource'\n | 'designTemplate'\n | 'guidance'\n | 'integrationGuidance';\n\nexport type CatalogGuidanceKind = 'guidance' | 'integrationGuidance';\n\nexport interface CatalogResourceTarget {\n href: string;\n /** Optional monospace detail, normally the repository-relative source path. */\n detail?: string;\n}\n\nexport interface CatalogResourcesInput {\n /** Required source for the runnable demonstration. */\n demoSource: CatalogResourceTarget;\n /** Source for the production component; omit for recipes and integrations. */\n componentSource?: CatalogResourceTarget;\n /** Optional design-tool template associated with the component. */\n designTemplate?: CatalogResourceTarget;\n /** Required UI or integration guidance. */\n guidance: CatalogResourceTarget;\n /** Use `integrationGuidance` when the component implementation is upstream. */\n guidanceKind?: CatalogGuidanceKind;\n}\n\n/**\n * Build the standard catalog resource group in its canonical order: demo,\n * component, optional design template, then guidance.\n */\nexport function catalogResources(\n input: CatalogResourcesInput,\n): CatalogResource[] {\n const resources: CatalogResource[] = [\n { label: 'Demo source', ...input.demoSource },\n ];\n if (input.componentSource)\n resources.push({\n label: 'Component source',\n ...input.componentSource,\n });\n if (input.designTemplate)\n resources.push({ label: 'Design template', ...input.designTemplate });\n resources.push({\n label:\n input.guidanceKind === 'integrationGuidance'\n ? 'Integration guidance'\n : 'Guidance',\n ...input.guidance,\n });\n return resources;\n}\n"]}
|
package/dist/catalog.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import * as kerfjs from 'kerfjs';
|
|
2
2
|
import { SafeHtml } from 'kerfjs';
|
|
3
|
-
import { a as CatalogProps } from './types-
|
|
4
|
-
export { b as CatalogBrand, c as CatalogEntry, d as CatalogRelated, C as CatalogResource, e as CatalogSecondaryGroup, f as CatalogSection, g as CatalogStageRootAttributes } from './types-
|
|
3
|
+
import { a as CatalogProps } from './types-C9BubXfz.js';
|
|
4
|
+
export { b as CatalogBrand, c as CatalogEntry, d as CatalogRelated, C as CatalogResource, e as CatalogSecondaryGroup, f as CatalogSection, g as CatalogStageRootAttributes } from './types-C9BubXfz.js';
|
|
5
5
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
6
6
|
import './toolbar.js';
|
|
7
|
-
import './pane.js';
|
|
8
7
|
import './sides-BPSWde0A.js';
|
|
8
|
+
import './pane.js';
|
|
9
9
|
import './workbench.js';
|
|
10
10
|
import './list.js';
|
|
11
|
-
import './css-values.js';
|
|
12
11
|
import './flex-alignment-4ms8ZbV8.js';
|
|
12
|
+
import './css-values.js';
|
|
13
13
|
import './nav-stack.js';
|
|
14
14
|
import './toolbar-text.js';
|
|
15
15
|
import './resizable-region.js';
|
|
16
|
-
import './panel-toolbar-
|
|
16
|
+
import './panel-toolbar-CL9tYOkh.js';
|
|
17
17
|
import './lucide-icon.js';
|
|
18
18
|
import 'lucide';
|
|
19
19
|
|
package/dist/catalog.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { Workbench } from './chunk-
|
|
1
|
+
import { Workbench } from './chunk-6VQPLV3O.js';
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
import { PopupMenu } from './chunk-
|
|
4
|
+
import { PopupMenu } from './chunk-NJZMR7HM.js';
|
|
5
5
|
|
|
6
|
-
import { Row } from './chunk-
|
|
7
|
-
import { ListHeader } from './chunk-
|
|
8
|
-
import { Text } from './chunk-
|
|
9
|
-
import { ListInsetText } from './chunk-
|
|
10
|
-
import { ListItem } from './chunk-
|
|
11
|
-
import { ToolbarText } from './chunk-
|
|
6
|
+
import { Row } from './chunk-5D3WDMIK.js';
|
|
7
|
+
import { ListHeader } from './chunk-M6BWQMQY.js';
|
|
8
|
+
import { Text } from './chunk-4Y4L5YEI.js';
|
|
9
|
+
import { ListInsetText } from './chunk-NMWDHZVM.js';
|
|
10
|
+
import { ListItem } from './chunk-HFQDSSED.js';
|
|
11
|
+
import { ToolbarText } from './chunk-VHXHLZ6R.js';
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
@@ -16,13 +16,13 @@ import { ToolbarText } from './chunk-HKVJ5MW3.js';
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
import { List } from './chunk-
|
|
19
|
+
import { List } from './chunk-NVRJ7C3W.js';
|
|
20
20
|
|
|
21
|
-
import { ToolbarControlGroup, ToolbarActionLink } from './chunk-
|
|
22
|
-
import { Toolbar } from './chunk-
|
|
23
|
-
import { LucideIcon } from './chunk-
|
|
21
|
+
import { ToolbarControlGroup, ToolbarActionLink } from './chunk-RRCD3A6G.js';
|
|
22
|
+
import { Toolbar } from './chunk-BYHGRKC3.js';
|
|
23
|
+
import { LucideIcon } from './chunk-PQQQXJGV.js';
|
|
24
24
|
|
|
25
|
-
import { filterDataAttributes } from './chunk-
|
|
25
|
+
import { filterDataAttributes } from './chunk-LAZLBC2Q.js';
|
|
26
26
|
|
|
27
27
|
import { Moon, Sun, Waypoints, ExternalLink } from 'lucide';
|
|
28
28
|
import { jsx, jsxs, Fragment } from 'kerfjs/jsx-runtime';
|