@kerfjs/ui 5.0.0-beta.54 → 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 +14 -11
- package/ai/compile-time-contracts-v1.json +2 -2
- package/ai/component-catalog-v2.json +206 -39
- package/ai/component-catalog.json +306 -58
- package/ai/public-api-signatures-v1.md +671 -92
- package/ai/skill.md +43 -38
- 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/popup-menu.js +3 -0
- package/dist/browser/select.js +1 -0
- package/dist/catalog-resources.d.ts +12 -1
- package/dist/catalog.d.ts +21 -4
- package/dist/catalog.js +260 -308
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-7IUSV4XG.js → chunk-24PHKUR3.js} +2 -2
- package/dist/chunk-24PHKUR3.js.map +1 -0
- 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-HJKRCKDR.js → chunk-63ZWBGE3.js} +6 -3
- 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-DG6G5EPF.js +35 -0
- 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-KH6VUGHU.js +399 -0
- package/dist/chunk-KH6VUGHU.js.map +1 -0
- 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-CMUIXJZM.js → chunk-NBYTIVHS.js} +2 -2
- package/dist/{chunk-CMUIXJZM.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-KPNTVB7A.js → chunk-PK4N5QTO.js} +8 -7
- package/dist/chunk-PK4N5QTO.js.map +1 -0
- package/dist/chunk-QQOTQTDD.js +415 -0
- package/dist/chunk-QQOTQTDD.js.map +1 -0
- package/dist/{chunk-BJJKFVWW.js → chunk-T4UZTNZ4.js} +5 -5
- package/dist/chunk-T4UZTNZ4.js.map +1 -0
- package/dist/chunk-V65EOWNF.js +83 -0
- 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-WLG6SSNT.js +94 -0
- 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 +51 -13
- package/dist/collapsible-panel.js +38 -10
- 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 +7 -5
- package/dist/index.js +31 -29
- 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 +9 -10
- package/dist/list-inset-text.js +2 -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-C8sF-YZC.d.ts +63 -0
- package/dist/popup-menu-register.d.ts +9 -0
- package/dist/popup-menu-register.js +31 -0
- package/dist/popup-menu-register.js.map +1 -0
- package/dist/popup-menu.d.ts +71 -0
- package/dist/popup-menu.js +3 -0
- package/dist/popup-menu.js.map +1 -0
- 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 -17
- package/dist/styles/catalog/components/catalog-stage.css +9 -14
- package/dist/styles/catalog/components/catalog.css +8 -18
- package/dist/styles/catalog.css +0 -5
- 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 +90 -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/state-banner.css +13 -4
- package/dist/styles/styles.css +1 -0
- package/dist/styles/tab-bar.css +31 -3
- 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 +44 -12
- package/dist/styles/toolbar.css +57 -7
- package/dist/styles/value-table.css +19 -2
- package/dist/styles/webawesome.css +3 -1
- package/dist/styles/workbench.css +165 -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/text.js +1 -1
- package/dist/token-search-field.d.ts +13 -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-CEsieBZi.d.ts → types-DXAGogOS.d.ts} +48 -0
- package/dist/value-table.js +1 -1
- package/dist/webawesome.d.ts +7 -1
- package/dist/wire-catalog.d.ts +24 -1
- package/dist/wire-catalog.js +26 -3
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-sidebar.js +6 -3
- package/dist/wire-sidebar.js.map +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/wire-workbench.js +1 -350
- package/dist/wire-workbench.js.map +1 -1
- package/dist/workbench.d.ts +144 -6
- package/dist/workbench.js +11 -208
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +126 -6
- package/docs/app-layouts.md +9 -7
- package/docs/catalog.md +41 -9
- package/docs/collapsible-panel.md +79 -5
- package/docs/component-contract.md +38 -12
- package/docs/component-selection.md +64 -55
- 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/state-banner/danger-dark.svg +1 -1
- package/docs/design/templates/state-banner/danger.svg +1 -1
- package/docs/design/templates/state-banner/info-dark.svg +1 -1
- package/docs/design/templates/state-banner/info.svg +1 -1
- package/docs/design/templates/state-banner/success-dark.svg +1 -1
- package/docs/design/templates/state-banner/success.svg +1 -1
- package/docs/design/templates/state-banner/warning-dark.svg +1 -1
- package/docs/design/templates/state-banner/warning.svg +1 -1
- package/docs/design/templates/state-banner-dark.svg +1 -1
- package/docs/design/templates/state-banner.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 +74 -29
- package/docs/nav-stack.md +45 -1
- package/docs/recipes.md +48 -40
- package/docs/split-view.md +46 -2
- package/docs/surface-scaffold.md +1 -1
- package/docs/tab-scaffold.md +50 -1
- package/docs/type-contracts.md +17 -17
- package/docs/ux-demo.md +8 -4
- package/docs/webawesome-theme.md +1 -2
- package/docs/workbench.md +131 -10
- package/llms.txt +38 -9
- package/package.json +24 -2
- package/ux-demo/recipes/app-shell.tsx +141 -223
- package/ux-demo/recipes/collapsible-sidebar.tsx +47 -77
- package/ux-demo/recipes/list-detail-dialog.tsx +150 -54
- package/ux-demo/recipes/mount-recipe.ts +0 -5
- package/ux-demo/recipes/navigation-sidebar.tsx +3 -2
- package/ux-demo/recipes/navigation-stack.tsx +3 -2
- package/ux-demo/recipes/types.ts +0 -1
- package/dist/chunk-3NBL3OUQ.js.map +0 -1
- package/dist/chunk-5I22LMCV.js.map +0 -1
- package/dist/chunk-5NDQABWK.js.map +0 -1
- package/dist/chunk-7GUQYHKA.js.map +0 -1
- package/dist/chunk-7IUSV4XG.js.map +0 -1
- package/dist/chunk-BJJKFVWW.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-HJKRCKDR.js.map +0 -1
- package/dist/chunk-HMQ2ZDGG.js.map +0 -1
- package/dist/chunk-KPNTVB7A.js.map +0 -1
- package/dist/chunk-MTM43SJO.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
- package/dist/chunk-ZK5EGVFP.js +0 -27
- package/dist/chunk-ZK5EGVFP.js.map +0 -1
- package/dist/styles/catalog/components/catalog-detail.css +0 -35
- package/dist/styles/catalog/components/catalog-resource-footer.css +0 -37
- package/dist/styles/catalog/components/catalog-secondary-sections.css +0 -38
- package/dist/styles/catalog/components/catalog-section-list.css +0 -22
- package/dist/styles/catalog/components/catalog-sidebar.css +0 -82
|
@@ -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": [],
|
|
@@ -917,8 +945,14 @@
|
|
|
917
945
|
"purpose": "Arrange a complex tool or editor as a stable central work area with optional peripheral rails and a bottom drawer.",
|
|
918
946
|
"publicExports": [
|
|
919
947
|
"Workbench",
|
|
948
|
+
"WorkbenchChromePlacement",
|
|
949
|
+
"WorkbenchCompactOverlay",
|
|
950
|
+
"WorkbenchMainBottomToolbar",
|
|
951
|
+
"WorkbenchMainToolbar",
|
|
920
952
|
"WorkbenchPanel",
|
|
921
953
|
"WorkbenchPanelResizable",
|
|
954
|
+
"WorkbenchPanelToggle",
|
|
955
|
+
"WorkbenchPanelToolbar",
|
|
922
956
|
"WorkbenchProps",
|
|
923
957
|
"WorkbenchResponsiveOverlayAt"
|
|
924
958
|
],
|
|
@@ -1025,7 +1059,8 @@
|
|
|
1025
1059
|
"--kui-workbench-overlay-max-width",
|
|
1026
1060
|
"--kui-workbench-overlay-max-height",
|
|
1027
1061
|
"--kui-workbench-restore-inset",
|
|
1028
|
-
"--kui-workbench-restore-z"
|
|
1062
|
+
"--kui-workbench-restore-z",
|
|
1063
|
+
"--kui-workbench-overlay-dismiss-margin"
|
|
1029
1064
|
],
|
|
1030
1065
|
"links": {
|
|
1031
1066
|
"catalogRoute": "?component=workbench",
|
|
@@ -1047,10 +1082,14 @@
|
|
|
1047
1082
|
"publicExports": [
|
|
1048
1083
|
"CollapsiblePanelSide",
|
|
1049
1084
|
"collapsiblePanelToggleIcon",
|
|
1085
|
+
"CollapsiblePanelToolbarToggle",
|
|
1086
|
+
"CollapsiblePanelToolbar",
|
|
1050
1087
|
"CollapsiblePanelToggleProps",
|
|
1051
1088
|
"CollapsiblePanelToggle",
|
|
1052
1089
|
"CollapsiblePanelProps",
|
|
1053
|
-
"CollapsiblePanel"
|
|
1090
|
+
"CollapsiblePanel",
|
|
1091
|
+
"CollapsiblePanelRelocatedProps",
|
|
1092
|
+
"CollapsiblePanelRelocated"
|
|
1054
1093
|
],
|
|
1055
1094
|
"useWhen": [
|
|
1056
1095
|
"An application needs one collapsible side rail or bottom drawer outside a full Workbench.",
|
|
@@ -1298,7 +1337,7 @@
|
|
|
1298
1337
|
"kui-toolbar__trailing"
|
|
1299
1338
|
],
|
|
1300
1339
|
"publicTokens": [
|
|
1301
|
-
"--kui-color-border",
|
|
1340
|
+
"--kui-color-neutral-border-normal",
|
|
1302
1341
|
"--kui-font-sans",
|
|
1303
1342
|
"--kui-toolbar-divider-color"
|
|
1304
1343
|
],
|
|
@@ -1369,7 +1408,8 @@
|
|
|
1369
1408
|
"contained avatar background on a single group or selected multi-button highlight"
|
|
1370
1409
|
],
|
|
1371
1410
|
"accessibility": [
|
|
1372
|
-
"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."
|
|
1373
1413
|
],
|
|
1374
1414
|
"geometry": {
|
|
1375
1415
|
"margin": "none",
|
|
@@ -1504,6 +1544,31 @@
|
|
|
1504
1544
|
"publicExports": [
|
|
1505
1545
|
"FloatingToolbar"
|
|
1506
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
|
+
],
|
|
1507
1572
|
"useWhen": [
|
|
1508
1573
|
"Float a small cluster of controls (e.g. a drawer restore) over scrolling content without covering dialogs."
|
|
1509
1574
|
],
|
|
@@ -1702,7 +1767,7 @@
|
|
|
1702
1767
|
"kui-text"
|
|
1703
1768
|
],
|
|
1704
1769
|
"publicTokens": [
|
|
1705
|
-
"--kui-color-danger-
|
|
1770
|
+
"--kui-color-danger-on-quiet",
|
|
1706
1771
|
"--kui-color-text-quiet",
|
|
1707
1772
|
"--kui-font-mono",
|
|
1708
1773
|
"--kui-font-xs",
|
|
@@ -1823,7 +1888,7 @@
|
|
|
1823
1888
|
"kui-value-table__label"
|
|
1824
1889
|
],
|
|
1825
1890
|
"publicTokens": [
|
|
1826
|
-
"--kui-color-border",
|
|
1891
|
+
"--kui-color-neutral-border-normal",
|
|
1827
1892
|
"--kui-color-surface-lowered",
|
|
1828
1893
|
"--kui-color-text",
|
|
1829
1894
|
"--kui-color-text-quiet",
|
|
@@ -2457,7 +2522,7 @@
|
|
|
2457
2522
|
"kui-list"
|
|
2458
2523
|
],
|
|
2459
2524
|
"publicTokens": [
|
|
2460
|
-
"--kui-color-border",
|
|
2525
|
+
"--kui-color-neutral-border-normal",
|
|
2461
2526
|
"--kui-layout-item-gap",
|
|
2462
2527
|
"--kui-list-divider-color",
|
|
2463
2528
|
"--kui-list-gap"
|
|
@@ -2889,8 +2954,7 @@
|
|
|
2889
2954
|
],
|
|
2890
2955
|
"variants": [
|
|
2891
2956
|
"all-side inset by default",
|
|
2892
|
-
"top/right/bottom/left inset combinations"
|
|
2893
|
-
"deprecated horizontalOnly compatibility alias for sides=\"rl\""
|
|
2957
|
+
"top/right/bottom/left inset combinations"
|
|
2894
2958
|
],
|
|
2895
2959
|
"accessibility": [
|
|
2896
2960
|
"A layout wrapper only; it adds no role or name."
|
|
@@ -2909,8 +2973,7 @@
|
|
|
2909
2973
|
},
|
|
2910
2974
|
"wiring": [],
|
|
2911
2975
|
"publicClasses": [
|
|
2912
|
-
"kui-list-inset-text"
|
|
2913
|
-
"kui-list-inset-text--horizontal"
|
|
2976
|
+
"kui-list-inset-text"
|
|
2914
2977
|
],
|
|
2915
2978
|
"publicTokens": [],
|
|
2916
2979
|
"links": {
|
|
@@ -2919,6 +2982,97 @@
|
|
|
2919
2982
|
"recipe": "docs/component-selection.md#problem-to-component-matrix"
|
|
2920
2983
|
}
|
|
2921
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
|
+
},
|
|
2922
3076
|
{
|
|
2923
3077
|
"id": "application-tabs",
|
|
2924
3078
|
"name": "Application tabs",
|
|
@@ -3333,6 +3487,7 @@
|
|
|
3333
3487
|
"tokens",
|
|
3334
3488
|
"query execution",
|
|
3335
3489
|
"results",
|
|
3490
|
+
"the revision that rebuilds the DOM-owned editor for a programmatic text replacement",
|
|
3336
3491
|
"optional override of the collapsible expand/collapse/focus, which wireTokenSearchFields manages by default (adopt an app expanded signal, opt out per behavior, or drive it via the returned handle)"
|
|
3337
3492
|
],
|
|
3338
3493
|
"variants": [
|
|
@@ -3400,9 +3555,9 @@
|
|
|
3400
3555
|
"kui-token-search__trailing"
|
|
3401
3556
|
],
|
|
3402
3557
|
"publicTokens": [
|
|
3403
|
-
"--kui-color-
|
|
3404
|
-
"--kui-color-
|
|
3405
|
-
"--kui-color-border",
|
|
3558
|
+
"--kui-color-brand-fill-normal",
|
|
3559
|
+
"--kui-color-brand-on-quiet",
|
|
3560
|
+
"--kui-color-neutral-border-normal",
|
|
3406
3561
|
"--kui-color-text-link",
|
|
3407
3562
|
"--kui-color-surface",
|
|
3408
3563
|
"--kui-color-text",
|
|
@@ -3532,7 +3687,7 @@
|
|
|
3532
3687
|
"kui-resizable-region__restore"
|
|
3533
3688
|
],
|
|
3534
3689
|
"publicTokens": [
|
|
3535
|
-
"--kui-color-border",
|
|
3690
|
+
"--kui-color-neutral-border-normal",
|
|
3536
3691
|
"--kui-color-neutral-on-quiet",
|
|
3537
3692
|
"--kui-color-text-link",
|
|
3538
3693
|
"--kui-focus-ring",
|
|
@@ -3559,9 +3714,10 @@
|
|
|
3559
3714
|
"category": "Controls",
|
|
3560
3715
|
"kind": "component",
|
|
3561
3716
|
"source": "kerf",
|
|
3562
|
-
"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.",
|
|
3563
3718
|
"uses": [
|
|
3564
3719
|
"lucide-icon",
|
|
3720
|
+
"badge",
|
|
3565
3721
|
"wa-select",
|
|
3566
3722
|
"wa-option"
|
|
3567
3723
|
],
|
|
@@ -3631,13 +3787,18 @@
|
|
|
3631
3787
|
"default or compact size",
|
|
3632
3788
|
"label or icon-only selected presentation",
|
|
3633
3789
|
"select- or group-owned focus ring",
|
|
3634
|
-
"label maximum width and truncation"
|
|
3790
|
+
"label maximum width and truncation",
|
|
3791
|
+
"multiple selection",
|
|
3792
|
+
"multiple icon-only filter trigger with a fixed triggerIcon"
|
|
3635
3793
|
],
|
|
3636
3794
|
"accessibility": [
|
|
3637
3795
|
"Verify the live value, standard events, focus, and rendered output.",
|
|
3638
3796
|
"A nonempty label names the internal combobox; otherwise ariaLabel supplies a visually hidden label without adding control height, including custom selected content.",
|
|
3639
3797
|
"Hint text is visible below the control through Web Awesome's native hint relationship; placeholderText remains the empty value inside the closed control.",
|
|
3640
|
-
"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."
|
|
3641
3802
|
],
|
|
3642
3803
|
"geometry": {
|
|
3643
3804
|
"margin": "none",
|
|
@@ -3665,8 +3826,6 @@
|
|
|
3665
3826
|
"kui-select__icon"
|
|
3666
3827
|
],
|
|
3667
3828
|
"publicTokens": [
|
|
3668
|
-
"--kui-color-brand-fill-normal",
|
|
3669
|
-
"--kui-color-brand-on-fill",
|
|
3670
3829
|
"--kui-color-neutral-border-quiet",
|
|
3671
3830
|
"--kui-color-neutral-on-quiet",
|
|
3672
3831
|
"--kui-disclosure-icon-scale",
|
|
@@ -3678,6 +3837,86 @@
|
|
|
3678
3837
|
"recipe": "docs/component-selection.md#web-awesome-overlap-policy"
|
|
3679
3838
|
}
|
|
3680
3839
|
},
|
|
3840
|
+
{
|
|
3841
|
+
"id": "popup-menu",
|
|
3842
|
+
"name": "PopupMenu",
|
|
3843
|
+
"category": "Controls",
|
|
3844
|
+
"kind": "component",
|
|
3845
|
+
"source": "kerf",
|
|
3846
|
+
"description": "A trigger button that opens a typed list of commands, built on the Web Awesome dropdown.",
|
|
3847
|
+
"uses": [
|
|
3848
|
+
"wa-dropdown",
|
|
3849
|
+
"wa-dropdown-item",
|
|
3850
|
+
"wa-button",
|
|
3851
|
+
"wa-divider"
|
|
3852
|
+
],
|
|
3853
|
+
"purpose": "A trigger button that opens a typed list of commands, built on the Web Awesome dropdown.",
|
|
3854
|
+
"publicExports": [
|
|
3855
|
+
"PopupMenu"
|
|
3856
|
+
],
|
|
3857
|
+
"useWhen": [
|
|
3858
|
+
"Offer a short list of commands behind one trigger, such as a toolbar sort or More menu.",
|
|
3859
|
+
"Group related commands under headings and dividers in one popup."
|
|
3860
|
+
],
|
|
3861
|
+
"avoidWhen": [
|
|
3862
|
+
"Do not use it to choose a persistent value (use Select) or for navigation rows (use ListItem).",
|
|
3863
|
+
"Do not hand-write wa-dropdown / wa-dropdown-item markup for an action menu; use PopupMenu."
|
|
3864
|
+
],
|
|
3865
|
+
"alternatives": [
|
|
3866
|
+
{
|
|
3867
|
+
"id": "select",
|
|
3868
|
+
"relationship": "nearest"
|
|
3869
|
+
},
|
|
3870
|
+
{
|
|
3871
|
+
"id": "wa-dropdown",
|
|
3872
|
+
"relationship": "prefer-over"
|
|
3873
|
+
}
|
|
3874
|
+
],
|
|
3875
|
+
"appOwns": [
|
|
3876
|
+
"commands and their delegated actions",
|
|
3877
|
+
"which items are enabled",
|
|
3878
|
+
"reactions to the menu opening or closing"
|
|
3879
|
+
],
|
|
3880
|
+
"variants": [
|
|
3881
|
+
"icon trigger",
|
|
3882
|
+
"text trigger",
|
|
3883
|
+
"icon and text trigger",
|
|
3884
|
+
"headings and dividers",
|
|
3885
|
+
"item icons",
|
|
3886
|
+
"disabled items",
|
|
3887
|
+
"placement"
|
|
3888
|
+
],
|
|
3889
|
+
"accessibility": [
|
|
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."
|
|
3892
|
+
],
|
|
3893
|
+
"geometry": {
|
|
3894
|
+
"margin": "none",
|
|
3895
|
+
"border": "child",
|
|
3896
|
+
"padding": "child"
|
|
3897
|
+
},
|
|
3898
|
+
"delivery": {
|
|
3899
|
+
"browserImport": "@kerfjs/ui/popup-menu",
|
|
3900
|
+
"manualCssImport": "@kerfjs/ui/popup-menu.css",
|
|
3901
|
+
"registrationImport": "@kerfjs/ui/popup-menu/register",
|
|
3902
|
+
"themeCssImport": "@kerfjs/ui/webawesome.css",
|
|
3903
|
+
"sideEffects": [
|
|
3904
|
+
"browser-condition-css",
|
|
3905
|
+
"custom-element-registration"
|
|
3906
|
+
]
|
|
3907
|
+
},
|
|
3908
|
+
"wiring": [],
|
|
3909
|
+
"publicClasses": [
|
|
3910
|
+
"kui-popup-menu",
|
|
3911
|
+
"kui-popup-menu__label"
|
|
3912
|
+
],
|
|
3913
|
+
"publicTokens": [],
|
|
3914
|
+
"links": {
|
|
3915
|
+
"catalogRoute": "?component=popup-menu",
|
|
3916
|
+
"documentation": "docs/component-selection.md",
|
|
3917
|
+
"recipe": "docs/component-selection.md#web-awesome-overlap-policy"
|
|
3918
|
+
}
|
|
3919
|
+
},
|
|
3681
3920
|
{
|
|
3682
3921
|
"id": "feedback",
|
|
3683
3922
|
"name": "Feedback",
|
|
@@ -4330,6 +4569,10 @@
|
|
|
4330
4569
|
],
|
|
4331
4570
|
"recommendation": "conditional",
|
|
4332
4571
|
"alternatives": [
|
|
4572
|
+
{
|
|
4573
|
+
"id": "popup-menu",
|
|
4574
|
+
"relationship": "prefer-kerf"
|
|
4575
|
+
},
|
|
4333
4576
|
{
|
|
4334
4577
|
"id": "select",
|
|
4335
4578
|
"relationship": "prefer-kerf"
|
|
@@ -4373,6 +4616,10 @@
|
|
|
4373
4616
|
],
|
|
4374
4617
|
"recommendation": "conditional",
|
|
4375
4618
|
"alternatives": [
|
|
4619
|
+
{
|
|
4620
|
+
"id": "popup-menu",
|
|
4621
|
+
"relationship": "prefer-kerf"
|
|
4622
|
+
},
|
|
4376
4623
|
{
|
|
4377
4624
|
"id": "select",
|
|
4378
4625
|
"relationship": "prefer-kerf"
|
|
@@ -6941,16 +7188,14 @@
|
|
|
6941
7188
|
"category": "Recipes",
|
|
6942
7189
|
"kind": "recipe",
|
|
6943
7190
|
"source": "kerf",
|
|
6944
|
-
"purpose": "
|
|
7191
|
+
"purpose": "App bar above a Workbench with resizable navigation and inspector rails, relocated rail toggles, narrow-container overlays, and explicit pane scroll owners.",
|
|
6945
7192
|
"uses": [
|
|
6946
7193
|
"pane",
|
|
6947
7194
|
"toolbar",
|
|
6948
7195
|
"toolbar-text",
|
|
6949
7196
|
"toolbar-control-group",
|
|
6950
|
-
"
|
|
6951
|
-
"
|
|
6952
|
-
"resize",
|
|
6953
|
-
"list-header",
|
|
7197
|
+
"workbench",
|
|
7198
|
+
"list",
|
|
6954
7199
|
"list-item",
|
|
6955
7200
|
"value-table",
|
|
6956
7201
|
"lucide-icon",
|
|
@@ -6998,7 +7243,8 @@
|
|
|
6998
7243
|
"toolbar",
|
|
6999
7244
|
"toolbar-control-group",
|
|
7000
7245
|
"lucide-icon",
|
|
7001
|
-
"layout"
|
|
7246
|
+
"layout",
|
|
7247
|
+
"content-item"
|
|
7002
7248
|
],
|
|
7003
7249
|
"useWhen": [
|
|
7004
7250
|
"A workspace sidebar needs the shared toolbar/content/footer pane model, 24px major section rhythm, and 44px row and utility-action targets."
|
|
@@ -7075,7 +7321,7 @@
|
|
|
7075
7321
|
"category": "Recipes",
|
|
7076
7322
|
"kind": "recipe",
|
|
7077
7323
|
"source": "kerf",
|
|
7078
|
-
"purpose": "Production modal
|
|
7324
|
+
"purpose": "Production modal laid out as a workbench: a full-height SplitView list sidebar with its own toolbar beside a full-height detail column that carries the primary title, close control, and record actions; a full-screen drill-down on compact devices.",
|
|
7079
7325
|
"uses": [
|
|
7080
7326
|
"surface-scaffold",
|
|
7081
7327
|
"split-view",
|
|
@@ -7271,7 +7517,8 @@
|
|
|
7271
7517
|
"row",
|
|
7272
7518
|
"text",
|
|
7273
7519
|
"lucide-icon",
|
|
7274
|
-
"layout"
|
|
7520
|
+
"layout",
|
|
7521
|
+
"content-item"
|
|
7275
7522
|
],
|
|
7276
7523
|
"useWhen": [
|
|
7277
7524
|
"A flow drills from a list into detail and back on one pane, at any device size or inside a dialog."
|
|
@@ -7369,7 +7616,8 @@
|
|
|
7369
7616
|
"toolbar-text",
|
|
7370
7617
|
"value-table",
|
|
7371
7618
|
"lucide-icon",
|
|
7372
|
-
"layout"
|
|
7619
|
+
"layout",
|
|
7620
|
+
"content-item"
|
|
7373
7621
|
],
|
|
7374
7622
|
"useWhen": [
|
|
7375
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."
|