@kerfjs/ui 5.0.0-beta.74 → 5.0.0-beta.76
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 +29 -1
- package/ai/component-catalog.json +54 -16
- package/ai/component-composition.json +18 -6
- 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/list.md +3 -2
- package/ai/components/lucide-icon.md +20 -1
- package/ai/components/select.md +5 -4
- package/ai/public-api-signatures-v1.md +101 -61
- package/ai/skill.md +35 -4
- 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-I6FTU27I.js → chunk-3RE2JMZU.js} +7 -3
- package/dist/chunk-3RE2JMZU.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-VZOFZPSO.js → chunk-5D3WDMIK.js} +4 -4
- package/dist/chunk-5D3WDMIK.js.map +1 -0
- package/dist/{chunk-IJNYCPAU.js → chunk-5PAVAR4B.js} +3 -3
- package/dist/chunk-5PAVAR4B.js.map +1 -0
- package/dist/{chunk-2IGHGE3M.js → chunk-72LLWYP2.js} +6 -6
- package/dist/chunk-72LLWYP2.js.map +1 -0
- package/dist/{chunk-KZRR7NNV.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-33EOFAUN.js → chunk-7QWIJEK5.js} +9 -9
- package/dist/chunk-7QWIJEK5.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-RT5WKYX3.js → chunk-ARZ4RSQO.js} +5 -6
- package/dist/chunk-ARZ4RSQO.js.map +1 -0
- package/dist/{chunk-ZSJOLL3S.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-TT5ROTQK.js → chunk-EFDCALR3.js} +2 -2
- package/dist/chunk-EFDCALR3.js.map +1 -0
- package/dist/{chunk-RVERAFFY.js → chunk-G4VKQP7B.js} +2 -2
- package/dist/chunk-G4VKQP7B.js.map +1 -0
- package/dist/{chunk-BGD7EHUE.js → chunk-GO2CZX4M.js} +2 -2
- package/dist/chunk-GO2CZX4M.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-KFJSNWO4.js → chunk-H7ZJEI3H.js} +3 -3
- package/dist/chunk-H7ZJEI3H.js.map +1 -0
- package/dist/{chunk-7KHKLG5C.js → chunk-HFLGWMG3.js} +4 -4
- package/dist/chunk-HFLGWMG3.js.map +1 -0
- package/dist/{chunk-6LAQWWEX.js → chunk-HFQDSSED.js} +6 -6
- package/dist/chunk-HFQDSSED.js.map +1 -0
- package/dist/{chunk-2RMDP7HQ.js → chunk-HGSTMZZ6.js} +6 -6
- package/dist/chunk-HGSTMZZ6.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-G4S2QU6V.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-RU2EMR56.js → chunk-IVLTEBBT.js} +8 -8
- package/dist/chunk-IVLTEBBT.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-2G2ZJQYK.js → chunk-LRAIS3YB.js} +9 -3
- package/dist/chunk-LRAIS3YB.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-W2AC6Q2A.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-WTSNV5RG.js → chunk-PQQQXJGV.js} +9 -3
- 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-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-L67OYMGE.js → chunk-SJY7KC45.js} +5 -5
- package/dist/chunk-SJY7KC45.js.map +1 -0
- package/dist/{chunk-DB5ADJKF.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-B2ZMR7NY.js → chunk-VR7MWD2X.js} +10 -4
- package/dist/chunk-VR7MWD2X.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-3DOHW3K4.js → chunk-YLJ6X3AC.js} +2 -2
- package/dist/chunk-YLJ6X3AC.js.map +1 -0
- package/dist/{chunk-YDGNU2OD.js → chunk-ZVYA6TLR.js} +5 -2
- package/dist/chunk-ZVYA6TLR.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.d.ts +6 -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 +27 -26
- package/dist/index.js +40 -40
- package/dist/list-action-row.js +1 -1
- 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 -1
- package/dist/loading-spinner.js +1 -1
- package/dist/lucide-icon.d.ts +6 -1
- package/dist/lucide-icon.js +1 -1
- package/dist/nav-stack.d.ts +1 -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 +6 -6
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +1 -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 +392 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +790 -0
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +153 -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 +237 -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 +139 -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/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 +12 -8
- 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.js +1 -1
- 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 +1 -1
- 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-workbench.js +1 -1
- package/dist/workbench.d.ts +3 -3
- package/dist/workbench.js +1 -1
- package/docs/collapsible-panel.md +1 -1
- package/docs/component-contract.md +25 -7
- package/docs/component-selection.md +19 -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-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/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/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/document-baseline.md +4 -0
- package/docs/layout.md +11 -5
- package/docs/sunken-panel.md +7 -7
- package/docs/type-contracts.md +17 -17
- 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 +20 -3
- package/package.json +3 -2
- package/dist/chunk-2G2ZJQYK.js.map +0 -1
- package/dist/chunk-2IGHGE3M.js.map +0 -1
- package/dist/chunk-2RMDP7HQ.js.map +0 -1
- package/dist/chunk-33EOFAUN.js.map +0 -1
- package/dist/chunk-3BYFWTP3.js.map +0 -1
- package/dist/chunk-3DOHW3K4.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-6DFDTWGG.js.map +0 -1
- package/dist/chunk-6LAQWWEX.js.map +0 -1
- package/dist/chunk-7KHKLG5C.js.map +0 -1
- package/dist/chunk-ALGYHYXP.js.map +0 -1
- package/dist/chunk-AYUHMAI6.js.map +0 -1
- package/dist/chunk-B2ZMR7NY.js.map +0 -1
- package/dist/chunk-BFPBS5Y4.js.map +0 -1
- package/dist/chunk-BGD7EHUE.js.map +0 -1
- package/dist/chunk-DB5ADJKF.js.map +0 -1
- package/dist/chunk-DG6G5EPF.js.map +0 -1
- package/dist/chunk-DPAUKNB6.js.map +0 -1
- package/dist/chunk-G4S2QU6V.js.map +0 -1
- package/dist/chunk-I3Q7KKYM.js.map +0 -1
- package/dist/chunk-I6FTU27I.js.map +0 -1
- package/dist/chunk-IJNYCPAU.js.map +0 -1
- package/dist/chunk-K47P7QZC.js.map +0 -1
- package/dist/chunk-KFJSNWO4.js.map +0 -1
- package/dist/chunk-KZRR7NNV.js.map +0 -1
- package/dist/chunk-L67OYMGE.js.map +0 -1
- package/dist/chunk-NCSWXG7G.js.map +0 -1
- package/dist/chunk-NN6GYOA2.js.map +0 -1
- package/dist/chunk-OXO2QJWV.js.map +0 -1
- package/dist/chunk-PSHUSWQH.js.map +0 -1
- package/dist/chunk-RGS4WX2M.js.map +0 -1
- package/dist/chunk-RT5WKYX3.js.map +0 -1
- package/dist/chunk-RU2EMR56.js.map +0 -1
- package/dist/chunk-RVERAFFY.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-TDN5EE3S.js.map +0 -1
- package/dist/chunk-TT5ROTQK.js.map +0 -1
- package/dist/chunk-V4WLBOVJ.js.map +0 -1
- package/dist/chunk-VZOFZPSO.js.map +0 -1
- package/dist/chunk-W2AC6Q2A.js.map +0 -1
- package/dist/chunk-WF75U3V4.js.map +0 -1
- package/dist/chunk-WTSNV5RG.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/chunk-ZSJOLL3S.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
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 274" width="492" height="274"><defs><clipPath id="cp0"><rect x="16" y="38" width="460" height="220"/></clipPath><clipPath id="ct1"><rect x="16" y="16" width="460" height="22"/></clipPath><clipPath id="irc2"><rect x="16" y="38" width="460" height="220" rx="0"/></clipPath></defs><rect x="0" y="0" width="492" height="274" rx="0" fill="rgb(28,28,30)"/><text x="16" y="28" font-family="system-ui, "-apple-system", sans-serif" font-size="12" font-weight="600" fill="rgb(174,174,178)">Key/value detail rows</text><g clip-path="url(#cp0)"><g clip-path="url(#irc2)"><clipPath id="svgimg3vclip"><rect x="16" y="38" width="460" height="220"/></clipPath><g clip-path="url(#svgimg3vclip)"><g transform="translate(16 38)"><defs><clipPath id="svgimg3cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="svgimg3ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="svgimg3cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct4"><rect x="241.7" y="32.4" width="181.3" height="18"/></clipPath><clipPath id="svgimg3cp5"><rect x="37" y="70" width="24" height="24.2"/></clipPath><clipPath id="svgimg3cp7"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct8"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct9"><rect x="253.1" y="73.2" width="169.9" height="18"/></clipPath><clipPath id="svgimg3cp10"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct11"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct12"><rect x="222.2" y="114" width="200.8" height="18"/></clipPath><clipPath id="svgimg3cp13"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct14"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct15"><rect x="230.9" y="154.8" width="192.1" height="18"/></clipPath></defs><g clip-path="url(#svgimg3cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 274" width="492" height="274"><defs><clipPath id="cp0"><rect x="16" y="38" width="460" height="220"/></clipPath><clipPath id="ct1"><rect x="16" y="16" width="460" height="22"/></clipPath><clipPath id="irc2"><rect x="16" y="38" width="460" height="220" rx="0"/></clipPath></defs><rect x="0" y="0" width="492" height="274" rx="0" fill="rgb(28,28,30)"/><text x="16" y="28" font-family="system-ui, "-apple-system", sans-serif" font-size="12" font-weight="600" fill="rgb(174,174,178)">Key/value detail rows</text><g clip-path="url(#cp0)"><g clip-path="url(#irc2)"><clipPath id="svgimg3vclip"><rect x="16" y="38" width="460" height="220"/></clipPath><g clip-path="url(#svgimg3vclip)"><g transform="translate(16 38)"><defs><clipPath id="svgimg3cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="svgimg3ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="svgimg3cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct4"><rect x="241.7" y="32.4" width="181.3" height="18"/></clipPath><clipPath id="svgimg3cp5"><rect x="37" y="70" width="24" height="24.2"/></clipPath><clipPath id="svgimg3cp7"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct8"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct9"><rect x="253.1" y="73.2" width="169.9" height="18"/></clipPath><clipPath id="svgimg3cp10"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct11"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct12"><rect x="222.2" y="114" width="200.8" height="18"/></clipPath><clipPath id="svgimg3cp13"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct14"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct15"><rect x="230.9" y="154.8" width="192.1" height="18"/></clipPath></defs><g clip-path="url(#svgimg3cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="rgba(228,228,255,0.075)"/><rect x="28.5" y="20.5" width="403" height="164" rx="11.5" fill="none" stroke="rgba(253,253,255,0.196)" stroke-width="1"/></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp2)"><g clip-path="url(#svgimg3ct3)"><text x="37" y="47.39" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(174,174,178)">Status</text></g></g><text x="391.91" y="47.39" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(245,245,247)">Live</text></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp5)"><g color="rgb(174, 174, 178)"><clipPath id="svgimg3svgic6"><rect x="37" y="70.2" width="24" height="24"/></clipPath><g clip-path="url(#svgimg3svgic6)"><g transform="translate(37 70.188)"><path d="M12 15v5s3-.6 4-2c1-1.6 0-5 0-5" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(174, 174, 178)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M4.5 16.5c-1.5 1.3-2 5-2 5s3.7-.5 5-2c.7-.8.7-2.1 0-3a2 2 0 0 0-3 0" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(174, 174, 178)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M9 12a22 22 0 0 1 2-4 13 13 0 0 1 11-6c0 2.7-.8 7.5-6 11a22 22 0 0 1-4 2Z" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(174, 174, 178)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M9 12H4s.5-3 2-4c1.6-1 5 0 5 0" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(174, 174, 178)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/></g></g></g></g><g clip-path="url(#svgimg3cp7)"><g clip-path="url(#svgimg3ct8)"><text x="69" y="88.19" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(174,174,178)">Environment</text></g></g><text x="338.63" y="88.19" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(245,245,247)">Production</text><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="69" y1="62.5" x2="423" y2="62.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp10)"><g clip-path="url(#svgimg3ct11)"><text x="37" y="128.98" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(174,174,178)">Region</text></g></g><text x="349.39" y="128.98" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(245,245,247)">us-east-1</text><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="103.5" x2="423" y2="103.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp13)"><g clip-path="url(#svgimg3ct14)"><text x="37" y="169.78" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(174,174,178)">Last deploy</text></g></g><text x="333.14" y="169.78" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(245,245,247)">2 hours ago</text><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="143.5" x2="423" y2="143.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g></g></g></g></g></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 274" width="492" height="274"><defs><clipPath id="cp0"><rect x="16" y="38" width="460" height="220"/></clipPath><clipPath id="ct1"><rect x="16" y="16" width="460" height="22"/></clipPath><clipPath id="irc2"><rect x="16" y="38" width="460" height="220" rx="0"/></clipPath></defs><rect x="0" y="0" width="492" height="274" rx="0" fill="rgb(255,255,255)"/><text x="16" y="28" font-family="system-ui, "-apple-system", sans-serif" font-size="12" font-weight="600" fill="rgb(110,110,115)">Key/value detail rows</text><g clip-path="url(#cp0)"><g clip-path="url(#irc2)"><clipPath id="svgimg3vclip"><rect x="16" y="38" width="460" height="220"/></clipPath><g clip-path="url(#svgimg3vclip)"><g transform="translate(16 38)"><defs><clipPath id="svgimg3cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="svgimg3ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="svgimg3cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct4"><rect x="241.7" y="32.4" width="181.3" height="18"/></clipPath><clipPath id="svgimg3cp5"><rect x="37" y="70" width="24" height="24.2"/></clipPath><clipPath id="svgimg3cp7"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct8"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct9"><rect x="253.1" y="73.2" width="169.9" height="18"/></clipPath><clipPath id="svgimg3cp10"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct11"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct12"><rect x="222.2" y="114" width="200.8" height="18"/></clipPath><clipPath id="svgimg3cp13"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct14"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct15"><rect x="230.9" y="154.8" width="192.1" height="18"/></clipPath></defs><g clip-path="url(#svgimg3cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 274" width="492" height="274"><defs><clipPath id="cp0"><rect x="16" y="38" width="460" height="220"/></clipPath><clipPath id="ct1"><rect x="16" y="16" width="460" height="22"/></clipPath><clipPath id="irc2"><rect x="16" y="38" width="460" height="220" rx="0"/></clipPath></defs><rect x="0" y="0" width="492" height="274" rx="0" fill="rgb(255,255,255)"/><text x="16" y="28" font-family="system-ui, "-apple-system", sans-serif" font-size="12" font-weight="600" fill="rgb(110,110,115)">Key/value detail rows</text><g clip-path="url(#cp0)"><g clip-path="url(#irc2)"><clipPath id="svgimg3vclip"><rect x="16" y="38" width="460" height="220"/></clipPath><g clip-path="url(#svgimg3vclip)"><g transform="translate(16 38)"><defs><clipPath id="svgimg3cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="svgimg3ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="svgimg3cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg3ct4"><rect x="241.7" y="32.4" width="181.3" height="18"/></clipPath><clipPath id="svgimg3cp5"><rect x="37" y="70" width="24" height="24.2"/></clipPath><clipPath id="svgimg3cp7"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct8"><rect x="69" y="73.2" width="90.6" height="18"/></clipPath><clipPath id="svgimg3ct9"><rect x="253.1" y="73.2" width="169.9" height="18"/></clipPath><clipPath id="svgimg3cp10"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct11"><rect x="37" y="114" width="50" height="18"/></clipPath><clipPath id="svgimg3ct12"><rect x="222.2" y="114" width="200.8" height="18"/></clipPath><clipPath id="svgimg3cp13"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct14"><rect x="37" y="154.8" width="83.7" height="18"/></clipPath><clipPath id="svgimg3ct15"><rect x="230.9" y="154.8" width="192.1" height="18"/></clipPath></defs><g clip-path="url(#svgimg3cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="rgba(0,0,98,0.05)"/><rect x="28.5" y="20.5" width="403" height="164" rx="11.5" fill="none" stroke="rgba(0,0,28,0.18)" stroke-width="1"/></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp2)"><g clip-path="url(#svgimg3ct3)"><text x="37" y="47.39" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(110,110,115)">Status</text></g></g><text x="391.91" y="47.39" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(29,29,31)">Live</text></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp5)"><g color="rgb(110, 110, 115)"><clipPath id="svgimg3svgic6"><rect x="37" y="70.2" width="24" height="24"/></clipPath><g clip-path="url(#svgimg3svgic6)"><g transform="translate(37 70.188)"><path d="M12 15v5s3-.6 4-2c1-1.6 0-5 0-5" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(110, 110, 115)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M4.5 16.5c-1.5 1.3-2 5-2 5s3.7-.5 5-2c.7-.8.7-2.1 0-3a2 2 0 0 0-3 0" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(110, 110, 115)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M9 12a22 22 0 0 1 2-4 13 13 0 0 1 11-6c0 2.7-.8 7.5-6 11a22 22 0 0 1-4 2Z" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(110, 110, 115)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M9 12H4s.5-3 2-4c1.6-1 5 0 5 0" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(110, 110, 115)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/></g></g></g></g><g clip-path="url(#svgimg3cp7)"><g clip-path="url(#svgimg3ct8)"><text x="69" y="88.19" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(110,110,115)">Environment</text></g></g><text x="338.63" y="88.19" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(29,29,31)">Production</text><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="69" y1="62.5" x2="423" y2="62.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp10)"><g clip-path="url(#svgimg3ct11)"><text x="37" y="128.98" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(110,110,115)">Region</text></g></g><text x="349.39" y="128.98" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(29,29,31)">us-east-1</text><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="103.5" x2="423" y2="103.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg3ov1)"><g clip-path="url(#svgimg3cp13)"><g clip-path="url(#svgimg3ct14)"><text x="37" y="169.78" font-family="system-ui, "-apple-system", sans-serif" font-size="16" fill="rgb(110,110,115)">Last deploy</text></g></g><text x="333.14" y="169.78" font-family="system-ui, "-apple-system", sans-serif" font-size="16" font-weight="650" fill="rgb(29,29,31)">2 hours ago</text><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="143.5" x2="423" y2="143.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g></g></g></g></g></svg>
|
|
@@ -17,6 +17,10 @@ The opt-in stylesheet applies `border-box` sizing to every element and
|
|
|
17
17
|
pseudo-element, removes the body margin, and gives the body the foundation
|
|
18
18
|
font, foreground, lowered surface, and `1.45` line height. Plain links use the
|
|
19
19
|
semantic `--kui-color-text-link` token with zero selector specificity.
|
|
20
|
+
Native table cells (`th`, `td`) and form controls (`button`, `input`, `select`,
|
|
21
|
+
`textarea`) inherit the surrounding font family, size, and line height through
|
|
22
|
+
zero-specificity selectors. Table headers keep their native bold weight and
|
|
23
|
+
alignment, and application styles can override the baseline.
|
|
20
24
|
|
|
21
25
|
`html`, `body`, and `.kui-app-root` form a definite `height: 100%` chain. Add
|
|
22
26
|
`.kui-app-root` to the one direct mount container of a full-height application
|
package/docs/layout.md
CHANGED
|
@@ -194,6 +194,7 @@ import { ContentItem } from "@kerfjs/ui/content-item";
|
|
|
194
194
|
<Pane label="Inspector">
|
|
195
195
|
<ContentItem>{details}</ContentItem>
|
|
196
196
|
<ContentItem frame="framed">{pendingChanges}</ContentItem>
|
|
197
|
+
<ContentItem appearance="success">{completedWork}</ContentItem>
|
|
197
198
|
<ContentItem flush>{markdownPreview}</ContentItem>
|
|
198
199
|
<ContentItem shape="pill">{summary}</ContentItem>
|
|
199
200
|
</Pane>;
|
|
@@ -203,8 +204,11 @@ import { ContentItem } from "@kerfjs/ui/content-item";
|
|
|
203
204
|
reserves, so framed and unframed items share the same geometry. Frame an item
|
|
204
205
|
only when it marks a real distinction and must read as visibly bounded; do not
|
|
205
206
|
frame it to make it "look contained". `shape="pill"` selects the 22px pill
|
|
206
|
-
radius expressed as `calc(1px + remify(21px))`.
|
|
207
|
-
|
|
207
|
+
radius expressed as `calc(1px + remify(21px))`. `appearance="surface"` paints
|
|
208
|
+
the base surface. The `neutral`, `info`, `pop`, `success`, `warning`, and
|
|
209
|
+
`danger` appearances coordinate the same quiet status background, border, and
|
|
210
|
+
foreground tokens as `StateBanner`; `transparent` is the default. A lowered,
|
|
211
|
+
inset surface around a content stack is `SunkenPanel`, and bare text that only
|
|
208
212
|
needs to align with neighboring items is `ListInsetText`. Safe `data-*`
|
|
209
213
|
metadata goes in `rootAttributes`. Pass `ariaLabel` only for a distinct named
|
|
210
214
|
region (`role="region"`), and `focusTarget` to make the item a programmatic
|
|
@@ -489,6 +493,8 @@ their shared track width rather than expanding across an otherwise empty row.
|
|
|
489
493
|
It requires `minColumnWidth`; the default `auto-fit` keeps the existing form
|
|
490
494
|
behavior. When Grid is a direct child of a flex-owned `ListInsetControl`, pass
|
|
491
495
|
`flex` so the Grid takes the available row width instead of shrink-wrapping.
|
|
496
|
+
`textInsets` adds the standard 17px physical-side inset and `controlInsets`
|
|
497
|
+
adds 8px on selected sides; text insets take precedence where they overlap.
|
|
492
498
|
Grid is layout-only by default and adds no ARIA grid role. With
|
|
493
499
|
`selectionMode="multiple"` and a required `ariaLabel`, it supplies a labeled
|
|
494
500
|
multi-select grid for `ContentItem selectionMode="multiple"` tiles. Their
|
|
@@ -557,14 +563,14 @@ and its safe-area padding keeps an edge-docked rail or drawer from painting
|
|
|
557
563
|
through the unsafe area. A `Pane` is for a real column with a header, one
|
|
558
564
|
scrolling content region, or a footer.
|
|
559
565
|
|
|
560
|
-
|
|
566
|
+
`Row`, `Grid`, and `List` also accept `textInsets` and `controlInsets` using the shared
|
|
561
567
|
physical `Sides` union. Values follow canonical top/right/bottom/left order
|
|
562
568
|
(`t`, `rb`, `tbl`, `trbl`, and so on). A selected control side adds 8px of
|
|
563
569
|
padding. A selected text side adds the complete content-item alignment inset —
|
|
564
570
|
8px outer margin + 1px border + 8px inner padding, represented as 17px of
|
|
565
571
|
container padding. When both props select the same side, the text inset wins.
|
|
566
|
-
Each nested `Row` or `List` resolves its own four inset sides;
|
|
567
|
-
reset to zero instead of inheriting a same-type parent's inset selection.
|
|
572
|
+
Each nested `Row`, `Grid`, or `List` resolves its own four inset sides;
|
|
573
|
+
unselected sides reset to zero instead of inheriting a same-type parent's inset selection.
|
|
568
574
|
The same holds for `gap` and `flex` on a nested `List`, `Row`, or `Grid`: an
|
|
569
575
|
omitted prop falls back to that component's own default (no gap for `List`,
|
|
570
576
|
`xs` for `Row` and `Grid`; the CSS initial `flex`) rather than the enclosing
|
package/docs/sunken-panel.md
CHANGED
|
@@ -74,13 +74,13 @@ Override the public properties at the composition boundary:
|
|
|
74
74
|
- `--kui-sunken-panel-gap`
|
|
75
75
|
- `--kui-sunken-panel-radius`
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
The default background uses the shared translucent lowered-surface token.
|
|
78
|
+
Nested panels composite naturally at every depth: darker in light mode and
|
|
79
|
+
lighter in dark mode, without wrappers, depth classes, or per-instance token
|
|
80
|
+
assignments. Pane and Web Awesome sunken surfaces use the same palette.
|
|
81
|
+
See [Contextual transparency](./webawesome-theme.md#contextual-transparency).
|
|
82
|
+
Keep ordinary composition on these defaults; public properties are theming
|
|
83
|
+
escape hatches, not a reason to restyle each demo or nesting level.
|
|
84
84
|
|
|
85
85
|
The public root class is `.kui-sunken-panel`. Prefer the properties above over
|
|
86
86
|
styling descendants. The `square` shape deliberately overrides the radius
|
package/docs/type-contracts.md
CHANGED
|
@@ -11,22 +11,22 @@ public-signature artifact.
|
|
|
11
11
|
|
|
12
12
|
## Strengthened contracts
|
|
13
13
|
|
|
14
|
-
| ID | Compile-time guarantee
|
|
15
|
-
| ---------- |
|
|
16
|
-
| `KUI-T001` | `ListHeader` is a passive heading, a fully named/icon-bearing trailing action, or a controlled disclosure with `action` + `expanded`. Props ignored by the selected mode are rejected.
|
|
17
|
-
| `KUI-T002` | `Select` has a visible `label` or an `ariaLabel`.
|
|
18
|
-
| `KUI-T003` | A literal `Select.value` belongs to its literal `choices`.
|
|
19
|
-
| `KUI-T004` | A literal `SegmentedControl.value` belongs to its literal `choices`.
|
|
20
|
-
| `KUI-T005` | `expanded`, `expandAction`, and `expandLabel` exist only on `TokenSearchField({ collapsible: true })`.
|
|
21
|
-
| `KUI-T006` | `TokenSearchEditorAttributes` accepts application `data-*` metadata but rejects component-owned identity, morph, count, and placeholder attributes.
|
|
22
|
-
| `KUI-T007` | `ToolbarText.maxLines` requires `wrap: true`; it is never silently ignored in typed code.
|
|
23
|
-
| `KUI-T008` | A literal `TabScaffold.active` id belongs to its literal `tabs`.
|
|
24
|
-
| `KUI-T009` | Adjacent-token keyboard removal requires `onRemoveToken`; disabling removal rejects the now-meaningless callback.
|
|
25
|
-
| `KUI-T010` | Finite public variants have named exported union types, including divider sides, tab activation, banner urgency, and all AppTab, TabBar, ToolbarControlGroup, and Select presentation axes; the convenience root barrel re-exports them.
|
|
26
|
-
| `KUI-T011` | Semantic component zones use the recursive `KerfUiContent` type: `SafeHtml`, runtime-empty booleans/nullish values, and readonly nested arrays are valid; arbitrary strings, numbers, and signals are rejected. Explicit text positions such as `ListInsetText` retain their text exception.
|
|
27
|
-
| `KUI-T012` | `List.gap` accepts finite `UiSpaceName` shorthands or a complete branded `CssLength`; raw strings and non-standalone `CssLengthExpression` arithmetic are rejected. `calc(plus(...))` promotes a typed expression to a complete value.
|
|
28
|
-
| `KUI-T013` | CSS-valued props preserve property grammar: `List.flex` uses `CssFlex`, `Skeleton` dimensions use `CssSize`/`CssLength`, and choice icons use `CssForegroundColor` (foreground tokens via `uiColor()` or `
|
|
29
|
-
| `KUI-T014` | Stable single-root visual components accept the explicit native `slot` attribute. Multi-root `ResizableRegion` and `CollapsiblePanel` remain excluded because no single returned element can own the assignment, and other arbitrary native attributes remain rejected.
|
|
14
|
+
| ID | Compile-time guarantee |
|
|
15
|
+
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
16
|
+
| `KUI-T001` | `ListHeader` is a passive heading, a fully named/icon-bearing trailing action, or a controlled disclosure with `action` + `expanded`. Props ignored by the selected mode are rejected. |
|
|
17
|
+
| `KUI-T002` | `Select` has a visible `label` or an `ariaLabel`. |
|
|
18
|
+
| `KUI-T003` | A literal `Select.value` belongs to its literal `choices`. |
|
|
19
|
+
| `KUI-T004` | A literal `SegmentedControl.value` belongs to its literal `choices`. |
|
|
20
|
+
| `KUI-T005` | `expanded`, `expandAction`, and `expandLabel` exist only on `TokenSearchField({ collapsible: true })`. |
|
|
21
|
+
| `KUI-T006` | `TokenSearchEditorAttributes` accepts application `data-*` metadata but rejects component-owned identity, morph, count, and placeholder attributes. |
|
|
22
|
+
| `KUI-T007` | `ToolbarText.maxLines` requires `wrap: true`; it is never silently ignored in typed code. |
|
|
23
|
+
| `KUI-T008` | A literal `TabScaffold.active` id belongs to its literal `tabs`. |
|
|
24
|
+
| `KUI-T009` | Adjacent-token keyboard removal requires `onRemoveToken`; disabling removal rejects the now-meaningless callback. |
|
|
25
|
+
| `KUI-T010` | Finite public variants have named exported union types, including divider sides, tab activation, banner urgency, and all AppTab, TabBar, ToolbarControlGroup, and Select presentation axes; the convenience root barrel re-exports them. |
|
|
26
|
+
| `KUI-T011` | Semantic component zones use the recursive `KerfUiContent` type: `SafeHtml`, runtime-empty booleans/nullish values, and readonly nested arrays are valid; arbitrary strings, numbers, and signals are rejected. Explicit text positions such as `ListInsetText` retain their text exception. |
|
|
27
|
+
| `KUI-T012` | `List.gap` accepts finite `UiSpaceName` shorthands or a complete branded `CssLength`; raw strings and non-standalone `CssLengthExpression` arithmetic are rejected. `calc(plus(...))` promotes a typed expression to a complete value. |
|
|
28
|
+
| `KUI-T013` | CSS-valued props preserve property grammar: `List.flex` uses `CssFlex`, `Skeleton` dimensions use `CssSize`/`CssLength`, and choice icons and `LucideIcon.color` use `CssForegroundColor` (foreground tokens via `uiColor()`, `foregroundColorVar()`, or custom values via `foregroundColor()`; fill tokens such as `uiColor('success-fill-quiet')` are rejected); row declaration strings are absent. |
|
|
29
|
+
| `KUI-T014` | Stable single-root visual components accept the explicit native `slot` attribute. Multi-root `ResizableRegion` and `CollapsiblePanel` remain excluded because no single returned element can own the assignment, and other arbitrary native attributes remain rejected. |
|
|
30
30
|
|
|
31
31
|
`KerfUiContent` lets conditionals and mapped component collections be direct
|
|
32
32
|
siblings without an otherwise-unnecessary `Fragment`:
|
|
@@ -123,7 +123,7 @@ move errors into casts without making the integration safer.
|
|
|
123
123
|
- Replace raw `List.flex` shorthands with `flex(grow, shrink, basis)` or a finite
|
|
124
124
|
keyword; replace raw Skeleton dimensions with `px`/`rem`/`em`/`pct` builders;
|
|
125
125
|
and replace raw choice colors with a foreground token such as
|
|
126
|
-
`uiColor('success-on-quiet')
|
|
126
|
+
`uiColor('success-on-quiet')`, an app-owned `foregroundColorVar()`, or `foregroundColor('rebeccapurple')` for an application-chosen CSS color.
|
|
127
127
|
`SelectChoice.color` rejects fill tokens (`uiColor('success-fill-quiet')`) and
|
|
128
128
|
unqualified `colorVar()` values because a fill paints a nearly invisible
|
|
129
129
|
icon.
|
package/docs/ui-analyzer.md
CHANGED
|
@@ -121,6 +121,15 @@ applications and component packages; the selector parsing is the same module
|
|
|
121
121
|
(`analyzer/selectors.mjs`), so the package rule and the consumer rule agree on
|
|
122
122
|
which element a selector styles.
|
|
123
123
|
|
|
124
|
+
A component may freely style raw HTML and Web Awesome elements it renders and
|
|
125
|
+
controls in its own stylesheet. A nested Kerf or application component remains
|
|
126
|
+
a separate owner. A thin composition that only connects children should
|
|
127
|
+
normally have no stylesheet; if it owns raw wrapper markup or layout, its CSS
|
|
128
|
+
may style that markup while these diagnostics continue to reject child
|
|
129
|
+
overrides. “Thin composition” is architectural guidance rather than a static
|
|
130
|
+
classification, so Doctor reports concrete ownership violations instead of
|
|
131
|
+
rejecting every stylesheet attached to a `kind: composition` catalog entry.
|
|
132
|
+
|
|
124
133
|
- **`KUI-L019` — a rule restyles a cataloged component.** The rule's subject
|
|
125
134
|
(the rightmost compound of each selector, ignoring `:has()` and `:not()`
|
|
126
135
|
arguments) names a public class of a cataloged component (`.kui-toolbar`,
|
|
@@ -162,7 +171,9 @@ which element a selector styles.
|
|
|
162
171
|
- **`KUI-L022` — a hook class on a component's root.** A literal class on an
|
|
163
172
|
imported component's JSX (`<Toolbar className="header" />`) is the subject
|
|
164
173
|
of a rule in a stylesheet that file imports, so the application restyles the
|
|
165
|
-
component through it.
|
|
174
|
+
component through it. This also checks components nested in JSX prop values
|
|
175
|
+
(such as `Toolbar.leading`) and application-owned classes placed on another
|
|
176
|
+
component's root. The evidence names the stylesheet, line, and selector.
|
|
166
177
|
For cataloged application components, the import may be direct and relative
|
|
167
178
|
or use an exact or wildcard TypeScript `paths` alias from the nearest
|
|
168
179
|
`tsconfig.json` inside the analyzed root (including inherited options).
|
package/docs/ui-doctor.md
CHANGED
|
@@ -35,7 +35,8 @@ Component ownership is part of the same loop. The analyzer stage reports
|
|
|
35
35
|
application or third-party CSS that restyles another package's component
|
|
36
36
|
(`KUI-L019`), touches its private `--_*` variables (`KUI-L020`), overrides a
|
|
37
37
|
token a typed prop sets (`KUI-L021`), or styles it through a hook class on its
|
|
38
|
-
root (`KUI-L022`)
|
|
38
|
+
root (`KUI-L022`), including components nested in JSX prop values and hooks
|
|
39
|
+
owned by the surrounding application. It also reports source modules that render another
|
|
39
40
|
component's public classes as their own markup (`KUI-L023`), including raw HTML
|
|
40
41
|
and DOM class writes. Raw HTML checks include complete static class tokens in
|
|
41
42
|
interpolated template literals. `KUI-L023` skips `*.test.*`, `*.spec.*`, and `__tests__/`
|
|
@@ -73,6 +74,13 @@ including dynamic BEM modifiers; `evidence.components` names the co-owner set.
|
|
|
73
74
|
Set `"implicitComponentOwnership": true` to include uncataloged modules
|
|
74
75
|
that directly import CSS. Component mode reports sibling CSS and hook-class
|
|
75
76
|
restyles while allowing a component's own stylesheet and module.
|
|
77
|
+
For an application with reusable or app-level components, the recommended
|
|
78
|
+
policy is `"ownership": "component"`, `"implicitComponentOwnership": true`,
|
|
79
|
+
and `"ownershipContext": "any-package"`. This lets components style raw HTML
|
|
80
|
+
and Web Awesome elements they own while blocking overrides of nested Kerf and
|
|
81
|
+
application components. Thin glue compositions should normally omit CSS; when
|
|
82
|
+
they own wrapper markup or layout, Doctor permits that own CSS and reports any
|
|
83
|
+
selector that crosses into a child component.
|
|
76
84
|
For an entry stylesheet shared by modules without direct CSS imports, configure
|
|
77
85
|
`"ownershipGroups": [{ "styleSources": ["src/style.css"], "sources": ["src/main.tsx", "src/app/"] }]`.
|
|
78
86
|
These package-relative paths define one owner: its stylesheet and every listed
|
|
@@ -105,7 +113,7 @@ excluded consistently from TypeScript, the isolated ESLint pass, analyzer
|
|
|
105
113
|
discovery, and cache inputs, even when one lives below another application
|
|
106
114
|
directory.
|
|
107
115
|
|
|
108
|
-
TypeScript constructs the selected package's program so compiler options retain their real meaning,
|
|
116
|
+
TypeScript constructs the selected package's program so compiler options retain their real meaning. In changed mode, its root inputs are narrowed to changed source files plus the tsconfig's declaration roots, so ambient globals still participate; reported source diagnostics stay scoped to the changed files. Use `--full` for release gates.
|
|
109
117
|
|
|
110
118
|
## Configuration and suppressions
|
|
111
119
|
|
|
@@ -117,6 +125,8 @@ Place `.kerf-ui-doctor.json` at the workspace root:
|
|
|
117
125
|
"schemaVersion": 1,
|
|
118
126
|
"mode": "full",
|
|
119
127
|
"ownership": "component",
|
|
128
|
+
"ownershipContext": "any-package",
|
|
129
|
+
"implicitComponentOwnership": true,
|
|
120
130
|
"stages": { "browser": false },
|
|
121
131
|
"cache": true,
|
|
122
132
|
"failOn": "warning",
|
package/docs/webawesome-theme.md
CHANGED
|
@@ -140,65 +140,35 @@ tiers:
|
|
|
140
140
|
|
|
141
141
|
## Contextual transparency
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
The
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
The
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
application-owned wrapper; the component inside inherits its public color
|
|
173
|
-
override:
|
|
174
|
-
|
|
175
|
-
| Depth | Light tint | Dark tint | Treatment |
|
|
176
|
-
| ---------------- | ----------- | ----------- | ----------------------------------------------- |
|
|
177
|
-
| First | 5.5% black | 12% black | Shows the backdrop through the lowered surface. |
|
|
178
|
-
| Second | 3.5% black | 5% black | Adds a smaller inset step. |
|
|
179
|
-
| Third and deeper | transparent | transparent | Caps accumulated darkening. |
|
|
180
|
-
|
|
181
|
-
Over default white, the light levels approximate `#f1f1f1` then `#e9e9e9`;
|
|
182
|
-
over dark default `#1c1c1e`, they approximate `#19191a` then `#171719`.
|
|
183
|
-
The dark lowered backdrop reaches roughly `#0f0f11` then `#0e0e10`, which is
|
|
184
|
-
still visually close to black. Warm and textured backdrops retain their tone
|
|
185
|
-
and pattern; the first and second layers remain discernible in light mode but
|
|
186
|
-
are subtle in dark mode. These values are sRGB estimates; actual rendering
|
|
187
|
-
depends on backdrop and browser.
|
|
188
|
-
|
|
189
|
-
The browser matrix covers one and two layers on default, lowered, warm, and
|
|
190
|
-
two textured stripe colors in light and dark, across Chromium, Firefox, and
|
|
191
|
-
WebKit. It composites computed text and control colors with each tint and
|
|
192
|
-
requires at least 4.5:1 for panel text, an opaque button, Card text, and
|
|
193
|
-
Details text. It also checks a visible focus outline with forced colors and
|
|
194
|
-
the third layer's transparent cap. Theme colors must finish transitioning
|
|
195
|
-
before contrast is measured. The prototype keeps controls on opaque semantic
|
|
196
|
-
surfaces for predictable contrast.
|
|
197
|
-
|
|
198
|
-
Keep this treatment opt-in. It needs explicit depth assignment, and the dark
|
|
199
|
-
lowered case has too little separation to replace the opaque default. A
|
|
200
|
-
future default would need a stronger depth and contrast rule for arbitrary
|
|
201
|
-
backdrops, especially dark textures and nested mixed components.
|
|
143
|
+
The lowered surface, neutral quiet/normal fills, and neutral borders are
|
|
144
|
+
translucent shared theme colors. The foundation mirrors them when Web Awesome
|
|
145
|
+
is absent. Nested SunkenPanel, Pane, and Web Awesome sunken surfaces therefore
|
|
146
|
+
composite on their actual backdrop without application-owned depth wrappers
|
|
147
|
+
or component-token overrides.
|
|
148
|
+
|
|
149
|
+
The lowered light tint is `rgb(0 0 98.076923 / 0.05098)` (approximately
|
|
150
|
+
`#f2f2f7` over white); dark is `rgb(228.157895 228.157895 255 / 0.07451)`
|
|
151
|
+
(approximately `#111113` over black). Repeated layers darken in light mode
|
|
152
|
+
and brighten in dark mode. The same value is used at every depth; there is no
|
|
153
|
+
arbitrary third-level cap. Neutral normal fills and borders use alpha values
|
|
154
|
+
chosen to retain their former single-layer appearance over the default surface.
|
|
155
|
+
Their painted result adapts to other backgrounds. Neutral on-quiet text uses
|
|
156
|
+
`#626267` / `#c2c2c6` to retain AA contrast across the tested layered catalog
|
|
157
|
+
surfaces.
|
|
158
|
+
|
|
159
|
+
Default/raised surfaces remain opaque canvas and overlay anchors. The optional
|
|
160
|
+
document baseline paints an opaque default surface on `html` and one lowered
|
|
161
|
+
layer on `body`. Normal/quiet foregrounds, focus indicators, and loud neutral
|
|
162
|
+
fills remain opaque for legible controls. Colored semantic fill/border tokens
|
|
163
|
+
also remain opaque pending their separate contrast evaluation. Transparency
|
|
164
|
+
is not a guarantee of contrast on an arbitrary photograph or infinitely nested
|
|
165
|
+
surface; applications must verify their actual composition and keep text and
|
|
166
|
+
interactive controls on suitable surfaces.
|
|
167
|
+
|
|
168
|
+
The catalog demonstrates three directly nested panels, a sunken Pane containing
|
|
169
|
+
a panel, and a Web Awesome card containing details, using public components and
|
|
170
|
+
no demo stylesheet. Browser tests cover repeated layers, actual compositing,
|
|
171
|
+
text contrast, light/dark switching, narrow/wide layouts, and forced colors.
|
|
202
172
|
|
|
203
173
|
Add `class="hide-actions"` to a `wa-dialog` when the dialog supplies its own
|
|
204
174
|
dismissal affordance and should omit Web Awesome's header action region. The
|
package/doctor/index.mjs
CHANGED
|
@@ -847,13 +847,14 @@ async function runTypeScript({ packageRoot, paths }) {
|
|
|
847
847
|
{ ...ts.default.sys, onUnRecoverableConfigFileDiagnostic: () => {} },
|
|
848
848
|
);
|
|
849
849
|
if (!parsed) throw new Error('TypeScript could not parse tsconfig.json.');
|
|
850
|
-
|
|
851
|
-
(
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
850
|
+
const selected = paths?.length
|
|
851
|
+
? new Set(paths.map((path) => resolve(packageRoot, path)))
|
|
852
|
+
: undefined;
|
|
853
|
+
parsed.fileNames = parsed.fileNames.filter((file) => {
|
|
854
|
+
if (isUiTraversalExcluded(packageRoot, file)) return false;
|
|
855
|
+
if (!selected || selected.has(file)) return true;
|
|
856
|
+
return /\.d\.(?:ts|mts|cts)$/.test(file);
|
|
857
|
+
});
|
|
857
858
|
const program = ts.default.createProgram(
|
|
858
859
|
parsed.fileNames,
|
|
859
860
|
{ ...parsed.options, noEmit: true },
|
|
@@ -864,30 +865,38 @@ async function runTypeScript({ packageRoot, paths }) {
|
|
|
864
865
|
const diagnostics = [
|
|
865
866
|
...parsed.errors,
|
|
866
867
|
...ts.default.getPreEmitDiagnostics(program),
|
|
867
|
-
]
|
|
868
|
-
|
|
869
|
-
item
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
868
|
+
]
|
|
869
|
+
.filter(
|
|
870
|
+
(item) =>
|
|
871
|
+
!selected || !item.file || selected.has(resolve(item.file.fileName)),
|
|
872
|
+
)
|
|
873
|
+
.map((item) => {
|
|
874
|
+
const point =
|
|
875
|
+
item.file && item.start !== undefined
|
|
876
|
+
? item.file.getLineAndCharacterOfPosition(item.start)
|
|
877
|
+
: undefined;
|
|
878
|
+
return normalizedDiagnostic({
|
|
879
|
+
id: `TS${item.code}`,
|
|
880
|
+
severity:
|
|
881
|
+
item.category === ts.default.DiagnosticCategory.Error
|
|
882
|
+
? 'error'
|
|
883
|
+
: 'warning',
|
|
884
|
+
stage: 'typescript',
|
|
885
|
+
message: ts.default.flattenDiagnosticMessageText(
|
|
886
|
+
item.messageText,
|
|
887
|
+
'\n',
|
|
888
|
+
),
|
|
889
|
+
location: item.file
|
|
890
|
+
? {
|
|
891
|
+
file: portablePath(packageRoot, item.file.fileName),
|
|
892
|
+
line: (point?.line ?? 0) + 1,
|
|
893
|
+
column: (point?.character ?? 0) + 1,
|
|
894
|
+
}
|
|
895
|
+
: undefined,
|
|
896
|
+
action: 'Repair the TypeScript diagnostic at this source location.',
|
|
897
|
+
meaning: `TypeScript diagnostic TS${item.code}`,
|
|
898
|
+
});
|
|
889
899
|
});
|
|
890
|
-
});
|
|
891
900
|
return { diagnostics };
|
|
892
901
|
}
|
|
893
902
|
|
package/llms.txt
CHANGED
|
@@ -17,6 +17,16 @@ component per source file and one owned stylesheet per visual component. Keep it
|
|
|
17
17
|
compatibility entrypoints implementation-free: JavaScript/TypeScript only re-exports
|
|
18
18
|
the folder modules, and CSS only imports their owner stylesheets.
|
|
19
19
|
|
|
20
|
+
### Shared semantic tones
|
|
21
|
+
|
|
22
|
+
`SemanticTone` is the shared color-role type for `Badge`, `Chip`, `StateBanner`,
|
|
23
|
+
and semantic `ContentItem` appearances: `neutral`, `info`, `pop`, `success`,
|
|
24
|
+
`warning`, and `danger`. Import it as a type from `@kerfjs/ui`,
|
|
25
|
+
`@kerfjs/ui/badge`, `@kerfjs/ui/state-banner`, or `@kerfjs/ui/content-item`.
|
|
26
|
+
Use `info` for the role backed by the existing `--kui-color-brand-*` tokens.
|
|
27
|
+
Migrate Badge/Chip `tone="brand"` to `tone="info"`; `BadgeTone` and
|
|
28
|
+
`StateBannerTone` remain deprecated aliases of `SemanticTone`.
|
|
29
|
+
|
|
20
30
|
## The rule: components own their styles
|
|
21
31
|
|
|
22
32
|
Configure components through their typed props (size, density, inset,
|
|
@@ -147,7 +157,8 @@ headingLevel`, `TokenSearchField clearIcon`, `ContentItem frame="framed"` for a
|
|
|
147
157
|
container padding on top of a content-item's own margin — pick one owner. Use
|
|
148
158
|
`.kui-content` for 24px major vertical rhythm.
|
|
149
159
|
- **Opt into document globals explicitly.** Import `@kerfjs/ui/document.css`
|
|
150
|
-
once for border-box sizing, token-backed body/link presentation,
|
|
160
|
+
once for border-box sizing, token-backed body/link presentation, inherited
|
|
161
|
+
native table-cell and form-control font metrics, and zero body
|
|
151
162
|
margin. Put `.kui-app-root` on the one direct mount container only when a
|
|
152
163
|
percentage-height shell needs the provided `html` → `body` → app-root height
|
|
153
164
|
chain. The baseline is not part of `styles.css` or component browser imports.
|
|
@@ -204,15 +215,19 @@ headingLevel`, `TokenSearchField clearIcon`, `ContentItem frame="framed"` for a
|
|
|
204
215
|
shorthand (`gap="xs"`, `gap="m"`) or a complete `CssLength` from the CSS-free
|
|
205
216
|
`@kerfjs/ui/css-values` builders; raw CSS strings are rejected. Use `flex()`
|
|
206
217
|
for List flex, typed lengths for Skeleton geometry, and
|
|
207
|
-
foreground colors for choice icons
|
|
208
|
-
or `
|
|
218
|
+
foreground colors for choice icons and `LucideIcon.color`: `uiColor()` with an `*-on-*`/text token,
|
|
219
|
+
`foregroundColorVar()`, or `foregroundColor()` for a custom CSS color; fill tokens such as `uiColor('success-fill-quiet')` do not
|
|
209
220
|
type-check. These brands are intentionally
|
|
210
221
|
not interchangeable; rows use classes/tokens/props rather than raw `style`.
|
|
222
|
+
Set `LucideIcon.inline` for an icon in `Text` or prose; it changes the SVG
|
|
223
|
+
from block to inline-block without changing its inherited 1em size.
|
|
211
224
|
- **Use `Grid` for equal-width columns.** Set a fixed positive `columns` count
|
|
212
225
|
or typed `minColumnWidth` for automatic container-width collapse, never both.
|
|
213
226
|
The app owns the outer width and child semantics; use custom CSS grid for
|
|
214
227
|
asymmetric/intrinsic tracks and `ResizableRegion` for adjustable boundaries.
|
|
215
228
|
`Grid.gap` and `Grid.flex` use the same typed grammars as Row.
|
|
229
|
+
`Grid.textInsets` and `Grid.controlInsets` select physical sides for the
|
|
230
|
+
standard 17px text and 8px control inset; text wins on overlap.
|
|
216
231
|
For selectable document tiles, use `selectionMode="multiple"` and a required
|
|
217
232
|
`ariaLabel`, with `ContentItem selectionMode="multiple"` children. Wire
|
|
218
233
|
`wireContentItems` for spatial arrow navigation and Enter/Space activation.
|
|
@@ -516,3 +531,5 @@ shell, `@kerfjs/ui/collapsible-panel` (`CollapsiblePanel`, `CollapsiblePanelTogg
|
|
|
516
531
|
- [component-catalog.json](./ai/component-catalog.json) + [component-catalog-extension.schema.json](./ai/component-catalog-extension.schema.json) + [catalog-authoring.json](./ai/catalog-authoring.json) + [public-api-signatures-v1.md](./ai/public-api-signatures-v1.md) + [webawesome-jsx-signatures-v1.md](./ai/webawesome-jsx-signatures-v1.md): machine-readable selection facts, a reusable app-component extension contract, Catalog authoring discovery, and exact signatures.
|
|
517
532
|
- [compile-time-contracts-v1.json](./ai/compile-time-contracts-v1.json) + [type-contracts.md](./docs/type-contracts.md): stable compile diagnostics, packed-declaration proof, migrations, and explicit non-goals.
|
|
518
533
|
- [README.md](./README.md): package overview and the component subpath table.
|
|
534
|
+
|
|
535
|
+
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.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kerfjs/ui",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.76",
|
|
4
4
|
"description": "Accessible, composable UI primitives for kerf applications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -428,6 +428,7 @@
|
|
|
428
428
|
"check:demo-conformance": "node scripts/check-catalog-demo-conformance.mjs",
|
|
429
429
|
"check:recipes": "node scripts/check-recipes.mjs",
|
|
430
430
|
"check:css-ownership": "node scripts/check-css-ownership.mjs",
|
|
431
|
+
"check:source-organization": "node scripts/check-source-organization.mjs",
|
|
431
432
|
"check:ai-regressions": "node scripts/check-ai-regressions.mjs && node scripts/audit-ai-regression-results.mjs && node scripts/audit-ai-regression-results-v3.mjs",
|
|
432
433
|
"check:ai-signatures": "node scripts/sync-ai-public-signatures.mjs --check",
|
|
433
434
|
"ai:signatures:sync": "npm run build && node scripts/sync-ai-public-signatures.mjs",
|
|
@@ -455,7 +456,7 @@
|
|
|
455
456
|
"test:contract-types:packed": "node scripts/check-packed-type-contracts.mjs",
|
|
456
457
|
"test:consumer-types": "npm run test:contract-types:source && npm run build && node node_modules/typescript7/bin/tsc -p tests/consumer-types/webawesome/tsconfig.json && npm run test:contract-types:packed",
|
|
457
458
|
"test:e2e": "playwright test",
|
|
458
|
-
"check": "npm run check:catalog && npm run check:component-integrations && npm run check:profile && npm run check:demo-conformance && npm run check:recipes && npm run check:css-ownership && npm run check:guidance && npm run check:ai-compatibility && npm run check:ai-regressions && npm run lint && npm run typecheck && npm test && npm run test:consumer-types && npm run check:ai-signatures && npm run demo:build && npm run check:design-templates && npm pack --dry-run",
|
|
459
|
+
"check": "npm run check:source-organization && npm run check:catalog && npm run check:component-integrations && npm run check:profile && npm run check:demo-conformance && npm run check:recipes && npm run check:css-ownership && npm run check:guidance && npm run check:ai-compatibility && npm run check:ai-regressions && npm run lint && npm run typecheck && npm test && npm run test:consumer-types && npm run check:ai-signatures && npm run demo:build && npm run check:design-templates && npm pack --dry-run",
|
|
459
460
|
"prepublishOnly": "npm run check",
|
|
460
461
|
"check:design-templates": "node scripts/check-design-templates.mjs",
|
|
461
462
|
"check:design-templates:drift": "node scripts/check-design-templates-drift.mjs",
|