@kerfjs/ui 5.0.0-beta.55 → 5.0.0-beta.56
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 +12 -10
- package/ai/compile-time-contracts-v1.json +2 -2
- package/ai/component-catalog-v2.json +149 -39
- package/ai/component-catalog.json +202 -51
- package/ai/public-api-signatures-v1.md +439 -97
- package/ai/skill.md +43 -40
- package/ai/webawesome-jsx-signatures-v1.md +8 -2
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +35 -7
- package/dist/badge.js +1 -1
- package/dist/browser/content-item.js +3 -0
- package/dist/browser/select.js +1 -0
- package/dist/catalog-resources.d.ts +12 -1
- package/dist/catalog.d.ts +14 -3
- package/dist/catalog.js +52 -43
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-WZ2GLEY4.js → chunk-2G2ZJQYK.js} +2 -14
- package/dist/chunk-2G2ZJQYK.js.map +1 -0
- package/dist/{chunk-D7GWXIAS.js → chunk-5I7QGQVT.js} +1 -1
- package/dist/chunk-5I7QGQVT.js.map +1 -0
- package/dist/{chunk-RNRUVPJ3.js → chunk-63ZWBGE3.js} +3 -2
- package/dist/chunk-63ZWBGE3.js.map +1 -0
- package/dist/{chunk-44IG7PFV.js → chunk-6CINWX2E.js} +3 -3
- package/dist/{chunk-44IG7PFV.js.map → chunk-6CINWX2E.js.map} +1 -1
- package/dist/{chunk-C2FAYFDE.js → chunk-AGXQQFKZ.js} +2 -2
- package/dist/{chunk-C2FAYFDE.js.map → chunk-AGXQQFKZ.js.map} +1 -1
- package/dist/{chunk-ATHXW6RP.js → chunk-AHEG27M7.js} +2 -2
- package/dist/{chunk-ATHXW6RP.js.map → chunk-AHEG27M7.js.map} +1 -1
- package/dist/{chunk-7GUQYHKA.js → chunk-AK67F6QN.js} +4 -1
- package/dist/chunk-AK67F6QN.js.map +1 -0
- package/dist/chunk-BFPBS5Y4.js +250 -0
- package/dist/chunk-BFPBS5Y4.js.map +1 -0
- package/dist/{chunk-5OLVUEND.js → chunk-DG6G5EPF.js} +4 -6
- package/dist/chunk-DG6G5EPF.js.map +1 -0
- package/dist/{chunk-MTM43SJO.js → chunk-G33XC2NB.js} +1 -1
- package/dist/chunk-G33XC2NB.js.map +1 -0
- package/dist/{chunk-TZ5IHWB2.js → chunk-K6UNVKDK.js} +3 -3
- package/dist/{chunk-TZ5IHWB2.js.map → chunk-K6UNVKDK.js.map} +1 -1
- package/dist/{chunk-HMQ2ZDGG.js → chunk-KROD7KZK.js} +3 -2
- package/dist/chunk-KROD7KZK.js.map +1 -0
- package/dist/{chunk-5NDQABWK.js → chunk-M7QV3IHH.js} +3 -1
- package/dist/chunk-M7QV3IHH.js.map +1 -0
- package/dist/{chunk-RNZAKSME.js → chunk-MA6Z6EIM.js} +3 -3
- package/dist/{chunk-RNZAKSME.js.map → chunk-MA6Z6EIM.js.map} +1 -1
- package/dist/chunk-MA73TA6D.js +42 -0
- package/dist/chunk-MA73TA6D.js.map +1 -0
- package/dist/{chunk-ZMBU522F.js → chunk-MEY33VWB.js} +2 -2
- package/dist/{chunk-ZMBU522F.js.map → chunk-MEY33VWB.js.map} +1 -1
- package/dist/{chunk-T22EM4ET.js → chunk-MOBRFZH3.js} +81 -31
- package/dist/chunk-MOBRFZH3.js.map +1 -0
- package/dist/chunk-MP2GDBQZ.js +50 -0
- package/dist/chunk-MP2GDBQZ.js.map +1 -0
- package/dist/{chunk-3NBL3OUQ.js → chunk-NAPE7WUS.js} +2 -2
- package/dist/chunk-NAPE7WUS.js.map +1 -0
- package/dist/{chunk-BSKEH3UC.js → chunk-NBYTIVHS.js} +2 -2
- package/dist/{chunk-BSKEH3UC.js.map → chunk-NBYTIVHS.js.map} +1 -1
- package/dist/chunk-O3EXIBEZ.js +114 -0
- package/dist/chunk-O3EXIBEZ.js.map +1 -0
- package/dist/{chunk-R754MHXX.js → chunk-PK4N5QTO.js} +7 -6
- package/dist/chunk-PK4N5QTO.js.map +1 -0
- package/dist/{chunk-EAX2GSS4.js → chunk-QQOTQTDD.js} +51 -20
- package/dist/chunk-QQOTQTDD.js.map +1 -0
- package/dist/{chunk-LZXQVUGN.js → chunk-T4UZTNZ4.js} +4 -4
- package/dist/{chunk-LZXQVUGN.js.map → chunk-T4UZTNZ4.js.map} +1 -1
- package/dist/{chunk-N7FHFNT6.js → chunk-V65EOWNF.js} +33 -5
- package/dist/chunk-V65EOWNF.js.map +1 -0
- package/dist/{chunk-GUIHMIT2.js → chunk-VNPQDCQZ.js} +3 -3
- package/dist/{chunk-GUIHMIT2.js.map → chunk-VNPQDCQZ.js.map} +1 -1
- package/dist/{chunk-5I22LMCV.js → chunk-VZOFZPSO.js} +2 -2
- package/dist/chunk-VZOFZPSO.js.map +1 -0
- package/dist/{chunk-4BIMLITI.js → chunk-WLG6SSNT.js} +5 -3
- package/dist/chunk-WLG6SSNT.js.map +1 -0
- package/dist/{chunk-NE5JAOQS.js → chunk-WOUF7YXM.js} +3 -3
- package/dist/{chunk-NE5JAOQS.js.map → chunk-WOUF7YXM.js.map} +1 -1
- package/dist/collapsible-panel.d.ts +14 -3
- package/dist/collapsible-panel.js +13 -16
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +46 -0
- package/dist/content-item.js +4 -0
- package/dist/content-item.js.map +1 -0
- package/dist/css-values.d.ts +5 -11
- package/dist/css-values.js +1 -1
- package/dist/disclosure-arrow.d.ts +4 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/floating-toolbar.d.ts +17 -6
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.js +1 -1
- package/dist/help-tags-register.d.ts +13 -0
- package/dist/help-tags-register.js +9 -0
- package/dist/help-tags-register.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +27 -26
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.d.ts +14 -1
- package/dist/list-header.js +1 -1
- package/dist/list-inset-control.d.ts +1 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +3 -10
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +10 -3
- package/dist/list.js +1 -1
- package/dist/nav-stack.d.ts +38 -5
- package/dist/nav-stack.js +4 -1
- package/dist/pane.d.ts +20 -2
- package/dist/pane.js +1 -1
- package/dist/{panel-toolbar-BFQxFITu.d.ts → panel-toolbar-C8sF-YZC.d.ts} +12 -1
- package/dist/popup-menu-register.js +3 -2
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.js +1 -1
- package/dist/row.d.ts +1 -1
- package/dist/row.js +1 -1
- package/dist/select-register.js +70 -3
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +46 -8
- package/dist/select.js +2 -1
- package/dist/{divider-sides-BzB6rphT.d.ts → sides-BPSWde0A.d.ts} +1 -3
- package/dist/skeleton.js +1 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +31 -3
- package/dist/split-view.js +33 -5
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.js +1 -1
- package/dist/styles/badge.css +13 -0
- package/dist/styles/catalog/components/catalog-example.css +1 -1
- package/dist/styles/catalog/components/catalog-stage.css +1 -1
- package/dist/styles/collapsible-panel.css +192 -39
- package/dist/styles/content-item.css +30 -0
- package/dist/styles/floating-toolbar.css +5 -0
- package/dist/styles/foundation.css +28 -19
- package/dist/styles/layout.css +1 -21
- package/dist/styles/list-action-row.css +13 -1
- package/dist/styles/list-inset-text.css +1 -2
- package/dist/styles/list-item.css +14 -1
- package/dist/styles/list.css +1 -1
- package/dist/styles/nav-stack.css +29 -64
- package/dist/styles/pane.css +33 -1
- package/dist/styles/popup-menu.css +78 -0
- package/dist/styles/resizable-region.css +53 -10
- package/dist/styles/select.css +39 -12
- package/dist/styles/split-view.css +21 -25
- package/dist/styles/tab-scaffold.css +36 -14
- package/dist/styles/text.css +1 -1
- package/dist/styles/token-search-field.css +4 -4
- package/dist/styles/toolbar-control-group.css +31 -12
- package/dist/styles/toolbar.css +14 -5
- package/dist/styles/value-table.css +19 -2
- package/dist/styles/webawesome.css +3 -1
- package/dist/styles/workbench.css +134 -31
- package/dist/tab-scaffold.d.ts +35 -1
- package/dist/tab-scaffold.js +50 -16
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/token-search-field.d.ts +4 -2
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +12 -4
- package/dist/toolbar.js +1 -1
- package/dist/{types-D6vzj-VT.d.ts → types-DXAGogOS.d.ts} +39 -6
- package/dist/value-table.js +1 -1
- package/dist/webawesome.d.ts +7 -1
- package/dist/wire-catalog.d.ts +12 -1
- package/dist/wire-catalog.js +10 -2
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +59 -22
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +116 -7
- package/docs/app-layouts.md +9 -7
- package/docs/catalog.md +17 -3
- package/docs/collapsible-panel.md +26 -7
- package/docs/component-contract.md +36 -10
- package/docs/component-selection.md +41 -40
- 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/compact-dark.svg +1 -1
- package/docs/design/templates/list/compact.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-action-row/default-dark.svg +1 -1
- package/docs/design/templates/list-action-row/default.svg +1 -1
- package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
- package/docs/design/templates/list-action-row/selected.svg +1 -1
- package/docs/design/templates/list-action-row-dark.svg +1 -1
- package/docs/design/templates/list-action-row.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-item/default-dark.svg +1 -1
- package/docs/design/templates/list-item/default.svg +1 -1
- package/docs/design/templates/list-item/selected-dark.svg +1 -1
- package/docs/design/templates/list-item/selected.svg +1 -1
- package/docs/design/templates/list-item/trailing-dark.svg +1 -1
- package/docs/design/templates/list-item/trailing.svg +1 -1
- package/docs/design/templates/list-item-dark.svg +1 -1
- package/docs/design/templates/list-item.svg +1 -1
- package/docs/design/templates/list.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-philosophy.md +1 -1
- package/docs/examples/command-palette-adapter.tsx +3 -2
- package/docs/layout.md +69 -29
- package/docs/nav-stack.md +45 -1
- package/docs/recipes.md +4 -3
- package/docs/split-view.md +46 -2
- package/docs/tab-scaffold.md +50 -1
- package/docs/type-contracts.md +17 -17
- package/docs/ux-demo.md +2 -2
- package/docs/webawesome-theme.md +1 -2
- package/docs/workbench.md +45 -9
- package/llms.txt +32 -4
- package/package.json +13 -2
- package/ux-demo/recipes/collapsible-sidebar.tsx +3 -2
- package/ux-demo/recipes/navigation-sidebar.tsx +3 -2
- package/ux-demo/recipes/navigation-stack.tsx +3 -2
- package/dist/chunk-3NBL3OUQ.js.map +0 -1
- package/dist/chunk-4BIMLITI.js.map +0 -1
- package/dist/chunk-5I22LMCV.js.map +0 -1
- package/dist/chunk-5NDQABWK.js.map +0 -1
- package/dist/chunk-5OLVUEND.js.map +0 -1
- package/dist/chunk-7GUQYHKA.js.map +0 -1
- package/dist/chunk-D7GWXIAS.js.map +0 -1
- package/dist/chunk-DQA5FMOX.js +0 -85
- package/dist/chunk-DQA5FMOX.js.map +0 -1
- package/dist/chunk-EAX2GSS4.js.map +0 -1
- package/dist/chunk-HMQ2ZDGG.js.map +0 -1
- package/dist/chunk-MTM43SJO.js.map +0 -1
- package/dist/chunk-N7FHFNT6.js.map +0 -1
- package/dist/chunk-R754MHXX.js.map +0 -1
- package/dist/chunk-RNRUVPJ3.js.map +0 -1
- package/dist/chunk-T22EM4ET.js.map +0 -1
- package/dist/chunk-WZ2GLEY4.js.map +0 -1
- package/dist/chunk-XD7DWYXG.js +0 -34
- package/dist/chunk-XD7DWYXG.js.map +0 -1
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"neutral, brand, pop, success, warning, or danger tone",
|
|
34
34
|
"quiet, solid, or outline appearance",
|
|
35
35
|
"pill or rounded shape",
|
|
36
|
-
"compact or default size",
|
|
36
|
+
"compact or default size, or a text-free dot (size: 'dot')",
|
|
37
37
|
"labeled or decorative duplicate"
|
|
38
38
|
],
|
|
39
39
|
"accessibility": [
|
|
40
|
-
"Badge is non-interactive. Supply label when visible content is abbreviated, and ariaHidden when it repeats an accessible name owned by the surrounding component.",
|
|
40
|
+
"Badge is non-interactive. Supply label when visible content is abbreviated, and ariaHidden when it repeats an accessible name owned by the surrounding component. A text-free dot must take either label (exposed as an image) or ariaHidden, which the types enforce.",
|
|
41
41
|
"Keep meaningful text visible because tone is supplementary."
|
|
42
42
|
],
|
|
43
43
|
"geometry": {
|
|
@@ -133,6 +133,31 @@
|
|
|
133
133
|
"publicExports": [
|
|
134
134
|
"DisclosureArrow"
|
|
135
135
|
],
|
|
136
|
+
"cssValueProps": [
|
|
137
|
+
{
|
|
138
|
+
"path": "size",
|
|
139
|
+
"grammar": "length",
|
|
140
|
+
"helpers": [
|
|
141
|
+
"px",
|
|
142
|
+
"rem",
|
|
143
|
+
"em",
|
|
144
|
+
"pct",
|
|
145
|
+
"space",
|
|
146
|
+
"lengthVar",
|
|
147
|
+
"calc"
|
|
148
|
+
],
|
|
149
|
+
"nonStandaloneHelpers": [
|
|
150
|
+
"plus"
|
|
151
|
+
],
|
|
152
|
+
"shorthands": [],
|
|
153
|
+
"canonicalShorthands": [],
|
|
154
|
+
"exceptionalShorthands": [],
|
|
155
|
+
"rawPolicy": "forbid",
|
|
156
|
+
"examples": [
|
|
157
|
+
"size={remify(24)}"
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
],
|
|
136
161
|
"useWhen": [
|
|
137
162
|
"Add a shortest-path rotating indicator to a control that owns open and closed state; author replacement icon content facing right before direction transforms are applied."
|
|
138
163
|
],
|
|
@@ -331,18 +356,6 @@
|
|
|
331
356
|
"--kui-color-danger-on-normal",
|
|
332
357
|
"--kui-color-danger-on-loud",
|
|
333
358
|
"--kui-color-danger-on-fill",
|
|
334
|
-
"--kui-color-border",
|
|
335
|
-
"--kui-color-border-quiet",
|
|
336
|
-
"--kui-color-accent",
|
|
337
|
-
"--kui-color-accent-text",
|
|
338
|
-
"--kui-color-pop",
|
|
339
|
-
"--kui-color-pop-text",
|
|
340
|
-
"--kui-color-success",
|
|
341
|
-
"--kui-color-success-text",
|
|
342
|
-
"--kui-color-warning",
|
|
343
|
-
"--kui-color-warning-text",
|
|
344
|
-
"--kui-color-danger",
|
|
345
|
-
"--kui-color-danger-text",
|
|
346
359
|
"--kui-focus-ring",
|
|
347
360
|
"--kui-shadow-s",
|
|
348
361
|
"--kui-shadow-l"
|
|
@@ -421,7 +434,9 @@
|
|
|
421
434
|
"kind": "composition",
|
|
422
435
|
"source": "kerf",
|
|
423
436
|
"description": "Unpadded panes, 24px content stacks, and self-contained 8/1/8 content items for application layout boundaries.",
|
|
424
|
-
"uses": [
|
|
437
|
+
"uses": [
|
|
438
|
+
"content-item"
|
|
439
|
+
],
|
|
425
440
|
"purpose": "Provide one reusable pane, toolbar, content stack, and content-item geometry across sidebars, main areas, and dialogs.",
|
|
426
441
|
"publicExports": [],
|
|
427
442
|
"useWhen": [
|
|
@@ -442,8 +457,6 @@
|
|
|
442
457
|
"variants": [
|
|
443
458
|
"toolbar + content",
|
|
444
459
|
"toolbar + content + footer",
|
|
445
|
-
"rounded content item",
|
|
446
|
-
"pill content item",
|
|
447
460
|
"hidden inline-start pane restored from main-toolbar leading",
|
|
448
461
|
"hidden inline-end pane restored from main-toolbar trailing"
|
|
449
462
|
],
|
|
@@ -465,8 +478,6 @@
|
|
|
465
478
|
"wiring": [],
|
|
466
479
|
"publicClasses": [
|
|
467
480
|
"kui-content",
|
|
468
|
-
"kui-content-item",
|
|
469
|
-
"kui-content-item--pill",
|
|
470
481
|
"kui-control-cluster",
|
|
471
482
|
"kui-inline-metadata",
|
|
472
483
|
"kui-scroll-owner"
|
|
@@ -581,11 +592,14 @@
|
|
|
581
592
|
"source": "kerf",
|
|
582
593
|
"description": "A controlled one-pane navigation stack that keeps prior views mounted, slides content on push and pop, cross-fades per-view chrome, and moves/restores focus.",
|
|
583
594
|
"uses": [
|
|
595
|
+
"toolbar",
|
|
596
|
+
"toolbar-control-group",
|
|
584
597
|
"toolbar-text"
|
|
585
598
|
],
|
|
586
599
|
"purpose": "Present a single linear or drill-down flow while preserving each prior view's state, scroll position, and place in the stack.",
|
|
587
600
|
"publicExports": [
|
|
588
601
|
"NavStackView",
|
|
602
|
+
"NavStackToolbarConfig",
|
|
589
603
|
"NavStackProps",
|
|
590
604
|
"NavStack"
|
|
591
605
|
],
|
|
@@ -614,17 +628,22 @@
|
|
|
614
628
|
"view content and titles",
|
|
615
629
|
"push and pop actions",
|
|
616
630
|
"preferred initial focus targets when DOM order is insufficient",
|
|
617
|
-
"per-view bottom toolbar content or a persistent fallback"
|
|
631
|
+
"per-view bottom toolbar content or a persistent fallback",
|
|
632
|
+
"per-view leading, center, and trailing top-toolbar groups",
|
|
633
|
+
"top-toolbar configuration, title size, and heading level"
|
|
618
634
|
],
|
|
619
635
|
"variants": [
|
|
620
636
|
"single root view",
|
|
621
637
|
"pushed detail view",
|
|
622
638
|
"toolbar hidden",
|
|
639
|
+
"configured top toolbar",
|
|
640
|
+
"custom back icon or visible back text",
|
|
623
641
|
"per-view bottom toolbar",
|
|
624
642
|
"persistent bottom-toolbar fallback"
|
|
625
643
|
],
|
|
626
644
|
"accessibility": [
|
|
627
|
-
"Give the stack region an accessible label and every back control a stable action label.",
|
|
645
|
+
"Give the stack region an accessible label and every back control a stable action label; visible backText names the control itself.",
|
|
646
|
+
"Set toolbarConfig.headingLevel when the view title is the page's or section's heading landmark.",
|
|
628
647
|
"Use wireNavStack so each controlled push moves focus into the new top view and each pop restores the revealed view's remembered descendant.",
|
|
629
648
|
"Mark a preferred initial heading or control with data-nav-focus when the first enabled focusable descendant is not the right target."
|
|
630
649
|
],
|
|
@@ -675,11 +694,8 @@
|
|
|
675
694
|
"kui-nav-stack__chrome-copy",
|
|
676
695
|
"kui-nav-stack__chrome-copy--bottom",
|
|
677
696
|
"kui-nav-stack__chrome-copy--exiting",
|
|
678
|
-
"kui-nav-
|
|
679
|
-
"kui-nav-stack__back",
|
|
680
|
-
"kui-nav-stack__back-icon",
|
|
697
|
+
"kui-nav-stack__toolbar",
|
|
681
698
|
"kui-nav-stack__title",
|
|
682
|
-
"kui-nav-stack__actions",
|
|
683
699
|
"kui-nav-stack__viewport",
|
|
684
700
|
"kui-nav-stack__view",
|
|
685
701
|
"kui-nav-stack__view--entering",
|
|
@@ -709,7 +725,9 @@
|
|
|
709
725
|
"publicExports": [
|
|
710
726
|
"SplitView",
|
|
711
727
|
"SplitViewProps",
|
|
712
|
-
"SplitViewResizable"
|
|
728
|
+
"SplitViewResizable",
|
|
729
|
+
"SplitViewCompactStack",
|
|
730
|
+
"SplitViewCompactViewToolbars"
|
|
713
731
|
],
|
|
714
732
|
"useWhen": [
|
|
715
733
|
"Selection in a primary list updates a related detail pane and both should remain visible on roomy device classes.",
|
|
@@ -736,13 +754,17 @@
|
|
|
736
754
|
"selected item and detail-active state",
|
|
737
755
|
"list and detail content",
|
|
738
756
|
"optional list width and persistence",
|
|
757
|
+
"optional list collapse state and its restore control",
|
|
758
|
+
"compact list and detail toolbar groups and toolbar configuration",
|
|
739
759
|
"back action"
|
|
740
760
|
],
|
|
741
761
|
"variants": [
|
|
742
762
|
"fixed roomy split",
|
|
743
763
|
"resizable roomy split",
|
|
764
|
+
"collapsed resizable list with a restore control",
|
|
744
765
|
"compact list",
|
|
745
|
-
"compact detail"
|
|
766
|
+
"compact detail",
|
|
767
|
+
"compact stack with configured toolbars"
|
|
746
768
|
],
|
|
747
769
|
"accessibility": [
|
|
748
770
|
"Give the overall split and both meaningful panes accessible labels.",
|
|
@@ -826,7 +848,9 @@
|
|
|
826
848
|
"kind": "component",
|
|
827
849
|
"source": "kerf",
|
|
828
850
|
"description": "A controlled compact-device bottom tab scaffold that keeps every tab scene mounted so its navigation and scroll state survive selection changes.",
|
|
829
|
-
"uses": [
|
|
851
|
+
"uses": [
|
|
852
|
+
"badge"
|
|
853
|
+
],
|
|
830
854
|
"purpose": "Switch among two to five co-equal top-level destinations on compact devices while preserving each destination's independent content state.",
|
|
831
855
|
"publicExports": [
|
|
832
856
|
"TabScaffoldTab",
|
|
@@ -856,17 +880,20 @@
|
|
|
856
880
|
"appOwns": [
|
|
857
881
|
"controlled active tab id",
|
|
858
882
|
"tab labels, icons, and content",
|
|
883
|
+
"tab badge counts or dots and their localized badgeLabel phrases",
|
|
859
884
|
"routing and persistence",
|
|
860
885
|
"responsive replacement on larger device classes"
|
|
861
886
|
],
|
|
862
887
|
"variants": [
|
|
863
888
|
"text-only tabs",
|
|
864
889
|
"icon and text tabs",
|
|
890
|
+
"badged tabs (count or text-free dot)",
|
|
865
891
|
"one NavStack per tab"
|
|
866
892
|
],
|
|
867
893
|
"accessibility": [
|
|
868
894
|
"Give the tablist an accessible label and keep exactly the active tab in the sequential focus order.",
|
|
869
|
-
"Wire selection through the controlled active id while leaving inactive scenes mounted and hidden."
|
|
895
|
+
"Wire selection through the controlled active id while leaving inactive scenes mounted and hidden.",
|
|
896
|
+
"A tab badge is aria-hidden; supply badgeLabel so the tab's accessible name becomes \"<label>, <badgeLabel>\" (it defaults to the badge text). The dot form, badge: true, has no text, so its badgeLabel is required."
|
|
870
897
|
],
|
|
871
898
|
"geometry": {
|
|
872
899
|
"margin": "none",
|
|
@@ -897,6 +924,7 @@
|
|
|
897
924
|
"kui-tab-scaffold__bar",
|
|
898
925
|
"kui-tab-scaffold__tab",
|
|
899
926
|
"kui-tab-scaffold__tab-icon",
|
|
927
|
+
"kui-tab-scaffold__tab-badge",
|
|
900
928
|
"kui-tab-scaffold__tab-label"
|
|
901
929
|
],
|
|
902
930
|
"publicTokens": [],
|
|
@@ -1309,7 +1337,7 @@
|
|
|
1309
1337
|
"kui-toolbar__trailing"
|
|
1310
1338
|
],
|
|
1311
1339
|
"publicTokens": [
|
|
1312
|
-
"--kui-color-border",
|
|
1340
|
+
"--kui-color-neutral-border-normal",
|
|
1313
1341
|
"--kui-font-sans",
|
|
1314
1342
|
"--kui-toolbar-divider-color"
|
|
1315
1343
|
],
|
|
@@ -1380,7 +1408,8 @@
|
|
|
1380
1408
|
"contained avatar background on a single group or selected multi-button highlight"
|
|
1381
1409
|
],
|
|
1382
1410
|
"accessibility": [
|
|
1383
|
-
"Name the group when its relationship is not evident from context."
|
|
1411
|
+
"Name the group when its relationship is not evident from context.",
|
|
1412
|
+
"Name an icon-only button or link with aria-label, not title. Once any help-tag installer is imported (select/register, popup-menu/register, or help-tags/register), it shows an aria-hidden Web Awesome help tag repeating that name after a 500ms hover and at once on keyboard focus, hidden on a press and on Escape, and never joins aria-labelledby. A native title keeps the browser tooltip and gets no second tag."
|
|
1384
1413
|
],
|
|
1385
1414
|
"geometry": {
|
|
1386
1415
|
"margin": "none",
|
|
@@ -1515,6 +1544,31 @@
|
|
|
1515
1544
|
"publicExports": [
|
|
1516
1545
|
"FloatingToolbar"
|
|
1517
1546
|
],
|
|
1547
|
+
"cssValueProps": [
|
|
1548
|
+
{
|
|
1549
|
+
"path": "inset",
|
|
1550
|
+
"grammar": "length",
|
|
1551
|
+
"helpers": [
|
|
1552
|
+
"px",
|
|
1553
|
+
"rem",
|
|
1554
|
+
"em",
|
|
1555
|
+
"pct",
|
|
1556
|
+
"space",
|
|
1557
|
+
"lengthVar",
|
|
1558
|
+
"calc"
|
|
1559
|
+
],
|
|
1560
|
+
"nonStandaloneHelpers": [
|
|
1561
|
+
"plus"
|
|
1562
|
+
],
|
|
1563
|
+
"shorthands": [],
|
|
1564
|
+
"canonicalShorthands": [],
|
|
1565
|
+
"exceptionalShorthands": [],
|
|
1566
|
+
"rawPolicy": "forbid",
|
|
1567
|
+
"examples": [
|
|
1568
|
+
"inset={space(\"xs\")}"
|
|
1569
|
+
]
|
|
1570
|
+
}
|
|
1571
|
+
],
|
|
1518
1572
|
"useWhen": [
|
|
1519
1573
|
"Float a small cluster of controls (e.g. a drawer restore) over scrolling content without covering dialogs."
|
|
1520
1574
|
],
|
|
@@ -1713,7 +1767,7 @@
|
|
|
1713
1767
|
"kui-text"
|
|
1714
1768
|
],
|
|
1715
1769
|
"publicTokens": [
|
|
1716
|
-
"--kui-color-danger-
|
|
1770
|
+
"--kui-color-danger-on-quiet",
|
|
1717
1771
|
"--kui-color-text-quiet",
|
|
1718
1772
|
"--kui-font-mono",
|
|
1719
1773
|
"--kui-font-xs",
|
|
@@ -1834,7 +1888,7 @@
|
|
|
1834
1888
|
"kui-value-table__label"
|
|
1835
1889
|
],
|
|
1836
1890
|
"publicTokens": [
|
|
1837
|
-
"--kui-color-border",
|
|
1891
|
+
"--kui-color-neutral-border-normal",
|
|
1838
1892
|
"--kui-color-surface-lowered",
|
|
1839
1893
|
"--kui-color-text",
|
|
1840
1894
|
"--kui-color-text-quiet",
|
|
@@ -2468,7 +2522,7 @@
|
|
|
2468
2522
|
"kui-list"
|
|
2469
2523
|
],
|
|
2470
2524
|
"publicTokens": [
|
|
2471
|
-
"--kui-color-border",
|
|
2525
|
+
"--kui-color-neutral-border-normal",
|
|
2472
2526
|
"--kui-layout-item-gap",
|
|
2473
2527
|
"--kui-list-divider-color",
|
|
2474
2528
|
"--kui-list-gap"
|
|
@@ -2900,8 +2954,7 @@
|
|
|
2900
2954
|
],
|
|
2901
2955
|
"variants": [
|
|
2902
2956
|
"all-side inset by default",
|
|
2903
|
-
"top/right/bottom/left inset combinations"
|
|
2904
|
-
"deprecated horizontalOnly compatibility alias for sides=\"rl\""
|
|
2957
|
+
"top/right/bottom/left inset combinations"
|
|
2905
2958
|
],
|
|
2906
2959
|
"accessibility": [
|
|
2907
2960
|
"A layout wrapper only; it adds no role or name."
|
|
@@ -2920,8 +2973,7 @@
|
|
|
2920
2973
|
},
|
|
2921
2974
|
"wiring": [],
|
|
2922
2975
|
"publicClasses": [
|
|
2923
|
-
"kui-list-inset-text"
|
|
2924
|
-
"kui-list-inset-text--horizontal"
|
|
2976
|
+
"kui-list-inset-text"
|
|
2925
2977
|
],
|
|
2926
2978
|
"publicTokens": [],
|
|
2927
2979
|
"links": {
|
|
@@ -2930,6 +2982,97 @@
|
|
|
2930
2982
|
"recipe": "docs/component-selection.md#problem-to-component-matrix"
|
|
2931
2983
|
}
|
|
2932
2984
|
},
|
|
2985
|
+
{
|
|
2986
|
+
"id": "content-item",
|
|
2987
|
+
"name": "ContentItem",
|
|
2988
|
+
"category": "Structure",
|
|
2989
|
+
"kind": "component",
|
|
2990
|
+
"source": "kerf",
|
|
2991
|
+
"description": "One self-contained content child with the shared 8px margin + 1px border + 8px padding geometry, a typed frame, and a rounded or pill shape.",
|
|
2992
|
+
"uses": [],
|
|
2993
|
+
"purpose": "Render one self-contained .kui-content child that owns its 8px inline margin, real 1px border, 8px padding, and radius, with framing and shape chosen by typed props instead of hand-written modifier classes.",
|
|
2994
|
+
"publicExports": [
|
|
2995
|
+
"ContentItem"
|
|
2996
|
+
],
|
|
2997
|
+
"useWhen": [
|
|
2998
|
+
"An ordinary surface-like child of a Pane or .kui-content stack needs the shared content-item geometry so its content edge lands at the standard 17px inset.",
|
|
2999
|
+
"A content item marks a real distinction and must read as visibly bounded: pass frame=\"framed\" (the border is always reserved, so geometry does not change).",
|
|
3000
|
+
"A content item should follow a pill control's 22px radius: pass shape=\"pill\"."
|
|
3001
|
+
],
|
|
3002
|
+
"avoidWhen": [
|
|
3003
|
+
"Do not wrap a component that already owns content-item geometry (ListItem, ListHeader, StateBanner, Toolbar, ValueTable) or pad around a ContentItem; either double-insets.",
|
|
3004
|
+
"Do not frame an item only to make it look contained; hierarchy comes from alignment, spacing, and type first.",
|
|
3005
|
+
"Do not use it as a filled or lowered card; use SunkenPanel for a lowered surface.",
|
|
3006
|
+
"Do not use it for bare text alone; use ListInsetText, which adds the same inset without claiming a surface."
|
|
3007
|
+
],
|
|
3008
|
+
"alternatives": [
|
|
3009
|
+
{
|
|
3010
|
+
"id": "list-inset-text",
|
|
3011
|
+
"relationship": "nearest",
|
|
3012
|
+
"when": "Use ListInsetText when bare text only needs to align with neighboring content items."
|
|
3013
|
+
},
|
|
3014
|
+
{
|
|
3015
|
+
"id": "sunken-panel",
|
|
3016
|
+
"relationship": "nearest",
|
|
3017
|
+
"when": "Use SunkenPanel for a lowered, filled surface around a vertical stack."
|
|
3018
|
+
},
|
|
3019
|
+
{
|
|
3020
|
+
"id": "layout",
|
|
3021
|
+
"relationship": "composes-with",
|
|
3022
|
+
"when": "Place ContentItem children in a Pane or .kui-content stack, which owns the 24px major rhythm."
|
|
3023
|
+
}
|
|
3024
|
+
],
|
|
3025
|
+
"appOwns": [
|
|
3026
|
+
"the item content",
|
|
3027
|
+
"whether the item marks a real distinction that warrants a visible frame",
|
|
3028
|
+
"corner shape",
|
|
3029
|
+
"region semantics and accessible name",
|
|
3030
|
+
"whether the item is a programmatic focus target"
|
|
3031
|
+
],
|
|
3032
|
+
"variants": [
|
|
3033
|
+
"unframed rounded item",
|
|
3034
|
+
"framed rounded item",
|
|
3035
|
+
"pill item",
|
|
3036
|
+
"framed pill item",
|
|
3037
|
+
"named focus-target region"
|
|
3038
|
+
],
|
|
3039
|
+
"accessibility": [
|
|
3040
|
+
"An ordinary item adds no role or name; pass ariaLabel only when the item is a distinct named region (it then renders role=\"region\").",
|
|
3041
|
+
"focusTarget makes the item a programmatic focus target (tabindex=\"-1\", never a tab stop), such as a NavStack view's data-nav-focus target.",
|
|
3042
|
+
"The frame is decorative and never the only signal of state."
|
|
3043
|
+
],
|
|
3044
|
+
"geometry": {
|
|
3045
|
+
"margin": "self",
|
|
3046
|
+
"border": "self",
|
|
3047
|
+
"padding": "self",
|
|
3048
|
+
"notes": [
|
|
3049
|
+
"The 1px border is always reserved and transparent unless frame=\"framed\", so framed and unframed items share the same geometry."
|
|
3050
|
+
]
|
|
3051
|
+
},
|
|
3052
|
+
"delivery": {
|
|
3053
|
+
"browserImport": "@kerfjs/ui/content-item",
|
|
3054
|
+
"manualCssImport": "@kerfjs/ui/content-item.css",
|
|
3055
|
+
"sideEffects": [
|
|
3056
|
+
"browser-condition-css"
|
|
3057
|
+
]
|
|
3058
|
+
},
|
|
3059
|
+
"wiring": [],
|
|
3060
|
+
"publicClasses": [
|
|
3061
|
+
"kui-content-item",
|
|
3062
|
+
"kui-content-item--pill",
|
|
3063
|
+
"kui-content-item--framed"
|
|
3064
|
+
],
|
|
3065
|
+
"publicTokens": [
|
|
3066
|
+
"--kui-content-item-border",
|
|
3067
|
+
"--kui-content-item-radius",
|
|
3068
|
+
"--kui-content-item-background"
|
|
3069
|
+
],
|
|
3070
|
+
"links": {
|
|
3071
|
+
"catalogRoute": "?component=content-item",
|
|
3072
|
+
"documentation": "docs/layout.md",
|
|
3073
|
+
"recipe": "docs/layout.md#content-items"
|
|
3074
|
+
}
|
|
3075
|
+
},
|
|
2933
3076
|
{
|
|
2934
3077
|
"id": "application-tabs",
|
|
2935
3078
|
"name": "Application tabs",
|
|
@@ -3412,9 +3555,9 @@
|
|
|
3412
3555
|
"kui-token-search__trailing"
|
|
3413
3556
|
],
|
|
3414
3557
|
"publicTokens": [
|
|
3415
|
-
"--kui-color-
|
|
3416
|
-
"--kui-color-
|
|
3417
|
-
"--kui-color-border",
|
|
3558
|
+
"--kui-color-brand-fill-normal",
|
|
3559
|
+
"--kui-color-brand-on-quiet",
|
|
3560
|
+
"--kui-color-neutral-border-normal",
|
|
3418
3561
|
"--kui-color-text-link",
|
|
3419
3562
|
"--kui-color-surface",
|
|
3420
3563
|
"--kui-color-text",
|
|
@@ -3544,7 +3687,7 @@
|
|
|
3544
3687
|
"kui-resizable-region__restore"
|
|
3545
3688
|
],
|
|
3546
3689
|
"publicTokens": [
|
|
3547
|
-
"--kui-color-border",
|
|
3690
|
+
"--kui-color-neutral-border-normal",
|
|
3548
3691
|
"--kui-color-neutral-on-quiet",
|
|
3549
3692
|
"--kui-color-text-link",
|
|
3550
3693
|
"--kui-focus-ring",
|
|
@@ -3571,9 +3714,10 @@
|
|
|
3571
3714
|
"category": "Controls",
|
|
3572
3715
|
"kind": "component",
|
|
3573
3716
|
"source": "kerf",
|
|
3574
|
-
"description": "Controlled Web Awesome select with typed form, toolbar, navigation, compact, icon-only, truncating, hint, and grouped-choice presentations.",
|
|
3717
|
+
"description": "Controlled Web Awesome select with typed single or multiple values and form, toolbar, navigation, compact, icon-only, truncating, hint, and grouped-choice presentations.",
|
|
3575
3718
|
"uses": [
|
|
3576
3719
|
"lucide-icon",
|
|
3720
|
+
"badge",
|
|
3577
3721
|
"wa-select",
|
|
3578
3722
|
"wa-option"
|
|
3579
3723
|
],
|
|
@@ -3643,13 +3787,18 @@
|
|
|
3643
3787
|
"default or compact size",
|
|
3644
3788
|
"label or icon-only selected presentation",
|
|
3645
3789
|
"select- or group-owned focus ring",
|
|
3646
|
-
"label maximum width and truncation"
|
|
3790
|
+
"label maximum width and truncation",
|
|
3791
|
+
"multiple selection",
|
|
3792
|
+
"multiple icon-only filter trigger with a fixed triggerIcon"
|
|
3647
3793
|
],
|
|
3648
3794
|
"accessibility": [
|
|
3649
3795
|
"Verify the live value, standard events, focus, and rendered output.",
|
|
3650
3796
|
"A nonempty label names the internal combobox; otherwise ariaLabel supplies a visually hidden label without adding control height, including custom selected content.",
|
|
3651
3797
|
"Hint text is visible below the control through Web Awesome's native hint relationship; placeholderText remains the empty value inside the closed control.",
|
|
3652
|
-
"Import select/register once; its scoped lifecycle adapter keeps the latest open/close request authoritative across animation reversals, canceled transitions, and removal. Do not add consumer popup timing or position repairs."
|
|
3798
|
+
"Import select/register once; its scoped lifecycle adapter keeps the latest open/close request authoritative across animation reversals, canceled transitions, and removal. Do not add consumer popup timing or position repairs.",
|
|
3799
|
+
"With multiple, the popup stays open while choices toggle (pointer, Enter, or Space) and closes on an outside press, Escape, or focus leaving; each chosen option shows a check, and the closed control summarizes the chosen labels in choice order.",
|
|
3800
|
+
"A multiple icon-only trigger shows its fixed triggerIcon and, while any choice is chosen, an aria-hidden count Badge; the combobox's accessible name ends with the chosen labels in choice order, and its hidden value stays empty.",
|
|
3801
|
+
"Once registered, an icon-only trigger (single or multiple) shows an aria-hidden Web Awesome help tag repeating its accessible name (a single Select adds its current choice) after a 500ms hover and at once on keyboard focus; it hides while the popup is open, on a press, and on Escape, and never joins aria-labelledby. Do not add a title or another tooltip."
|
|
3653
3802
|
],
|
|
3654
3803
|
"geometry": {
|
|
3655
3804
|
"margin": "none",
|
|
@@ -3677,8 +3826,6 @@
|
|
|
3677
3826
|
"kui-select__icon"
|
|
3678
3827
|
],
|
|
3679
3828
|
"publicTokens": [
|
|
3680
|
-
"--kui-color-brand-fill-normal",
|
|
3681
|
-
"--kui-color-brand-on-fill",
|
|
3682
3829
|
"--kui-color-neutral-border-quiet",
|
|
3683
3830
|
"--kui-color-neutral-on-quiet",
|
|
3684
3831
|
"--kui-disclosure-icon-scale",
|
|
@@ -3740,7 +3887,8 @@
|
|
|
3740
3887
|
"placement"
|
|
3741
3888
|
],
|
|
3742
3889
|
"accessibility": [
|
|
3743
|
-
"An icon-only trigger requires label, rendered as visually hidden slotted text because a Web Awesome button takes its accessible name from its content; a trigger with visible text is named by that text. Web Awesome provides menu roles, arrow-key navigation, typeahead, and Escape."
|
|
3890
|
+
"An icon-only trigger requires label, rendered as visually hidden slotted text because a Web Awesome button takes its accessible name from its content; a trigger with visible text is named by that text. Web Awesome provides menu roles, arrow-key navigation, typeahead, and Escape.",
|
|
3891
|
+
"Once registered, an icon-only trigger shows its label as an aria-hidden Web Awesome help tag after a 500ms hover and at once on keyboard focus; it hides while the menu is open, on a press, and on Escape, and never joins aria-labelledby. Do not add a title or another tooltip."
|
|
3744
3892
|
],
|
|
3745
3893
|
"geometry": {
|
|
3746
3894
|
"margin": "none",
|
|
@@ -7095,7 +7243,8 @@
|
|
|
7095
7243
|
"toolbar",
|
|
7096
7244
|
"toolbar-control-group",
|
|
7097
7245
|
"lucide-icon",
|
|
7098
|
-
"layout"
|
|
7246
|
+
"layout",
|
|
7247
|
+
"content-item"
|
|
7099
7248
|
],
|
|
7100
7249
|
"useWhen": [
|
|
7101
7250
|
"A workspace sidebar needs the shared toolbar/content/footer pane model, 24px major section rhythm, and 44px row and utility-action targets."
|
|
@@ -7368,7 +7517,8 @@
|
|
|
7368
7517
|
"row",
|
|
7369
7518
|
"text",
|
|
7370
7519
|
"lucide-icon",
|
|
7371
|
-
"layout"
|
|
7520
|
+
"layout",
|
|
7521
|
+
"content-item"
|
|
7372
7522
|
],
|
|
7373
7523
|
"useWhen": [
|
|
7374
7524
|
"A flow drills from a list into detail and back on one pane, at any device size or inside a dialog."
|
|
@@ -7466,7 +7616,8 @@
|
|
|
7466
7616
|
"toolbar-text",
|
|
7467
7617
|
"value-table",
|
|
7468
7618
|
"lucide-icon",
|
|
7469
|
-
"layout"
|
|
7619
|
+
"layout",
|
|
7620
|
+
"content-item"
|
|
7470
7621
|
],
|
|
7471
7622
|
"useWhen": [
|
|
7472
7623
|
"A rail or drawer must collapse and expand outside a full Workbench shell, keeping the app's collapsed signals, sizes, and content while the wire owns toggle, focus, the compact overlay, and persistence."
|