@kerfjs/ui 5.0.0-beta.54 → 5.0.0-beta.55
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 +3 -2
- package/ai/component-catalog-v2.json +58 -1
- package/ai/component-catalog.json +105 -8
- package/ai/public-api-signatures-v1.md +265 -28
- package/ai/skill.md +6 -4
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/browser/popup-menu.js +3 -0
- package/dist/catalog-resources.d.ts +1 -1
- package/dist/catalog.d.ts +10 -4
- package/dist/catalog.js +243 -300
- 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-4BIMLITI.js +92 -0
- package/dist/chunk-4BIMLITI.js.map +1 -0
- package/dist/{chunk-ZK5EGVFP.js → chunk-5OLVUEND.js} +12 -2
- package/dist/chunk-5OLVUEND.js.map +1 -0
- package/dist/{chunk-CMUIXJZM.js → chunk-BSKEH3UC.js} +2 -2
- package/dist/{chunk-CMUIXJZM.js.map → chunk-BSKEH3UC.js.map} +1 -1
- package/dist/chunk-EAX2GSS4.js +384 -0
- package/dist/chunk-EAX2GSS4.js.map +1 -0
- package/dist/chunk-KH6VUGHU.js +399 -0
- package/dist/chunk-KH6VUGHU.js.map +1 -0
- package/dist/{chunk-BJJKFVWW.js → chunk-LZXQVUGN.js} +2 -2
- package/dist/chunk-LZXQVUGN.js.map +1 -0
- package/dist/chunk-N7FHFNT6.js +55 -0
- package/dist/chunk-N7FHFNT6.js.map +1 -0
- package/dist/{chunk-KPNTVB7A.js → chunk-R754MHXX.js} +3 -3
- package/dist/{chunk-KPNTVB7A.js.map → chunk-R754MHXX.js.map} +1 -1
- package/dist/{chunk-HJKRCKDR.js → chunk-RNRUVPJ3.js} +4 -2
- package/dist/chunk-RNRUVPJ3.js.map +1 -0
- package/dist/collapsible-panel.d.ts +40 -13
- package/dist/collapsible-panel.js +41 -10
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +17 -16
- package/dist/list-header.js +1 -1
- package/dist/list-inset-text.d.ts +7 -1
- package/dist/list-inset-text.js +2 -1
- package/dist/panel-toolbar-BFQxFITu.d.ts +52 -0
- package/dist/popup-menu-register.d.ts +9 -0
- package/dist/popup-menu-register.js +30 -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/state-banner.js +1 -1
- package/dist/styles/catalog/components/catalog-example.css +0 -16
- package/dist/styles/catalog/components/catalog-stage.css +8 -13
- package/dist/styles/catalog/components/catalog.css +8 -18
- package/dist/styles/catalog.css +0 -5
- package/dist/styles/popup-menu.css +12 -0
- 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/toolbar-control-group.css +13 -0
- package/dist/styles/toolbar.css +43 -2
- package/dist/styles/workbench.css +31 -0
- package/dist/text.js +1 -1
- package/dist/token-search-field.d.ts +10 -1
- package/dist/token-search-field.js +1 -1
- package/dist/{types-CEsieBZi.d.ts → types-D6vzj-VT.d.ts} +15 -0
- package/dist/wire-catalog.d.ts +13 -1
- package/dist/wire-catalog.js +18 -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 +107 -6
- package/dist/workbench.js +11 -208
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +12 -1
- package/docs/catalog.md +27 -9
- package/docs/collapsible-panel.md +55 -0
- package/docs/component-contract.md +2 -2
- package/docs/component-selection.md +25 -17
- 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/layout.md +5 -0
- package/docs/recipes.md +44 -37
- package/docs/surface-scaffold.md +1 -1
- package/docs/ux-demo.md +6 -2
- package/docs/workbench.md +92 -7
- package/llms.txt +6 -5
- package/package.json +13 -2
- package/ux-demo/recipes/app-shell.tsx +141 -223
- package/ux-demo/recipes/collapsible-sidebar.tsx +44 -75
- package/ux-demo/recipes/list-detail-dialog.tsx +150 -54
- package/ux-demo/recipes/mount-recipe.ts +0 -5
- package/ux-demo/recipes/types.ts +0 -1
- package/dist/chunk-7IUSV4XG.js.map +0 -1
- package/dist/chunk-BJJKFVWW.js.map +0 -1
- package/dist/chunk-HJKRCKDR.js.map +0 -1
- 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
package/README.md
CHANGED
|
@@ -184,6 +184,7 @@ interchangeable. `ListItem` and `ListActionRow` deliberately expose no raw
|
|
|
184
184
|
| `ToolbarControlGroup`, `ToolbarActionLink` | `@kerfjs/ui/toolbar-control-group` | `@kerfjs/ui/toolbar-control-group.css` |
|
|
185
185
|
| `DialogSurface`, `PopupSurface` | `@kerfjs/ui/surface-scaffold` | `@kerfjs/ui/surface-scaffold.css` |
|
|
186
186
|
| `FloatingToolbar` | `@kerfjs/ui/floating-toolbar` | `@kerfjs/ui/floating-toolbar.css` |
|
|
187
|
+
| `PopupMenu` (register with `@kerfjs/ui/popup-menu/register`) | `@kerfjs/ui/popup-menu` | `@kerfjs/ui/popup-menu.css` |
|
|
187
188
|
| `ToolbarText` | `@kerfjs/ui/toolbar-text` | `@kerfjs/ui/toolbar-text.css` |
|
|
188
189
|
| `Text` | `@kerfjs/ui/text` | `@kerfjs/ui/text.css` |
|
|
189
190
|
| `List` | `@kerfjs/ui/list` | `@kerfjs/ui/list.css` |
|
|
@@ -246,7 +247,7 @@ onto another trailing-aligned row under every `responsive` policy, and a
|
|
|
246
247
|
same way. Wrapping keeps every command visible at its full 44px target without
|
|
247
248
|
moving focus or DOM identity. When a product wants fewer visible commands at
|
|
248
249
|
narrow widths, it chooses them: render a lower-priority command inside an
|
|
249
|
-
app-owned "More"
|
|
250
|
+
app-owned "More" `PopupMenu` (in a `single` group with `nestedDropdown`).
|
|
250
251
|
|
|
251
252
|
`DisclosureArrow` defaults to an 18px root-scaled decorative visual. Override
|
|
252
253
|
`--kui-disclosure-arrow-size` at the narrowest useful scope when a consumer
|
|
@@ -645,7 +646,7 @@ import "@kerfjs/ui/webawesome.css";
|
|
|
645
646
|
import "@kerfjs/ui/select/register";
|
|
646
647
|
```
|
|
647
648
|
|
|
648
|
-
That boundary keeps Web Awesome and its custom-element side effects out of bundles that use unrelated components. Automated consumer-bundle tests enforce it.
|
|
649
|
+
That boundary keeps Web Awesome and its custom-element side effects out of bundles that use unrelated components. Automated consumer-bundle tests enforce it. `PopupMenu` follows the same rule: import `@kerfjs/ui/popup-menu/register` once to register the dropdown, item, button, and divider elements it renders.
|
|
649
650
|
Use `label` for a visible label or `ariaLabel` for a visually hidden name. A
|
|
650
651
|
nonempty visible label takes precedence when both are supplied. Kerf names the
|
|
651
652
|
actual shadow combobox without adding visible label spacing; this also works
|
|
@@ -1007,7 +1007,8 @@
|
|
|
1007
1007
|
"--kui-workbench-overlay-max-width",
|
|
1008
1008
|
"--kui-workbench-overlay-max-height",
|
|
1009
1009
|
"--kui-workbench-restore-inset",
|
|
1010
|
-
"--kui-workbench-restore-z"
|
|
1010
|
+
"--kui-workbench-restore-z",
|
|
1011
|
+
"--kui-workbench-overlay-dismiss-margin"
|
|
1011
1012
|
]
|
|
1012
1013
|
},
|
|
1013
1014
|
"diagnostics": [],
|
|
@@ -3055,6 +3056,62 @@
|
|
|
3055
3056
|
"composition": "README.md#web-awesome-theme"
|
|
3056
3057
|
}
|
|
3057
3058
|
},
|
|
3059
|
+
{
|
|
3060
|
+
"key": "@kerfjs/ui:popup-menu",
|
|
3061
|
+
"package": "@kerfjs/ui",
|
|
3062
|
+
"id": "popup-menu",
|
|
3063
|
+
"name": "PopupMenu",
|
|
3064
|
+
"kind": "component",
|
|
3065
|
+
"source": "kerf",
|
|
3066
|
+
"parents": { "mode": "any", "entries": [] },
|
|
3067
|
+
"contexts": ["application-ui"],
|
|
3068
|
+
"zones": [],
|
|
3069
|
+
"children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
|
|
3070
|
+
"state": [
|
|
3071
|
+
{
|
|
3072
|
+
"id": "commands and their delegated actions",
|
|
3073
|
+
"owner": "application",
|
|
3074
|
+
"required": false
|
|
3075
|
+
},
|
|
3076
|
+
{
|
|
3077
|
+
"id": "which items are enabled",
|
|
3078
|
+
"owner": "application",
|
|
3079
|
+
"required": false
|
|
3080
|
+
},
|
|
3081
|
+
{
|
|
3082
|
+
"id": "reactions to the menu opening or closing",
|
|
3083
|
+
"owner": "application",
|
|
3084
|
+
"required": false
|
|
3085
|
+
}
|
|
3086
|
+
],
|
|
3087
|
+
"wiring": {
|
|
3088
|
+
"required": false,
|
|
3089
|
+
"helpers": [],
|
|
3090
|
+
"obligations": [],
|
|
3091
|
+
"stateAttributes": []
|
|
3092
|
+
},
|
|
3093
|
+
"responsive": { "owner": "not-applicable", "behaviors": [] },
|
|
3094
|
+
"layout": {
|
|
3095
|
+
"roles": ["controls"],
|
|
3096
|
+
"geometry": { "margin": "none", "border": "child", "padding": "child" }
|
|
3097
|
+
},
|
|
3098
|
+
"accessibility": {
|
|
3099
|
+
"obligations": [
|
|
3100
|
+
"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."
|
|
3101
|
+
]
|
|
3102
|
+
},
|
|
3103
|
+
"cssValueProps": [],
|
|
3104
|
+
"boundaries": {
|
|
3105
|
+
"rootClass": "kui-popup-menu",
|
|
3106
|
+
"publicClasses": ["kui-popup-menu", "kui-popup-menu__label"],
|
|
3107
|
+
"publicTokens": []
|
|
3108
|
+
},
|
|
3109
|
+
"diagnostics": [],
|
|
3110
|
+
"provenance": {
|
|
3111
|
+
"selection": "ai/component-catalog.json",
|
|
3112
|
+
"composition": "generated-permissive-default"
|
|
3113
|
+
}
|
|
3114
|
+
},
|
|
3058
3115
|
{
|
|
3059
3116
|
"key": "@kerfjs/ui:feedback",
|
|
3060
3117
|
"package": "@kerfjs/ui",
|
|
@@ -917,8 +917,14 @@
|
|
|
917
917
|
"purpose": "Arrange a complex tool or editor as a stable central work area with optional peripheral rails and a bottom drawer.",
|
|
918
918
|
"publicExports": [
|
|
919
919
|
"Workbench",
|
|
920
|
+
"WorkbenchChromePlacement",
|
|
921
|
+
"WorkbenchCompactOverlay",
|
|
922
|
+
"WorkbenchMainBottomToolbar",
|
|
923
|
+
"WorkbenchMainToolbar",
|
|
920
924
|
"WorkbenchPanel",
|
|
921
925
|
"WorkbenchPanelResizable",
|
|
926
|
+
"WorkbenchPanelToggle",
|
|
927
|
+
"WorkbenchPanelToolbar",
|
|
922
928
|
"WorkbenchProps",
|
|
923
929
|
"WorkbenchResponsiveOverlayAt"
|
|
924
930
|
],
|
|
@@ -1025,7 +1031,8 @@
|
|
|
1025
1031
|
"--kui-workbench-overlay-max-width",
|
|
1026
1032
|
"--kui-workbench-overlay-max-height",
|
|
1027
1033
|
"--kui-workbench-restore-inset",
|
|
1028
|
-
"--kui-workbench-restore-z"
|
|
1034
|
+
"--kui-workbench-restore-z",
|
|
1035
|
+
"--kui-workbench-overlay-dismiss-margin"
|
|
1029
1036
|
],
|
|
1030
1037
|
"links": {
|
|
1031
1038
|
"catalogRoute": "?component=workbench",
|
|
@@ -1047,10 +1054,14 @@
|
|
|
1047
1054
|
"publicExports": [
|
|
1048
1055
|
"CollapsiblePanelSide",
|
|
1049
1056
|
"collapsiblePanelToggleIcon",
|
|
1057
|
+
"CollapsiblePanelToolbarToggle",
|
|
1058
|
+
"CollapsiblePanelToolbar",
|
|
1050
1059
|
"CollapsiblePanelToggleProps",
|
|
1051
1060
|
"CollapsiblePanelToggle",
|
|
1052
1061
|
"CollapsiblePanelProps",
|
|
1053
|
-
"CollapsiblePanel"
|
|
1062
|
+
"CollapsiblePanel",
|
|
1063
|
+
"CollapsiblePanelRelocatedProps",
|
|
1064
|
+
"CollapsiblePanelRelocated"
|
|
1054
1065
|
],
|
|
1055
1066
|
"useWhen": [
|
|
1056
1067
|
"An application needs one collapsible side rail or bottom drawer outside a full Workbench.",
|
|
@@ -3333,6 +3344,7 @@
|
|
|
3333
3344
|
"tokens",
|
|
3334
3345
|
"query execution",
|
|
3335
3346
|
"results",
|
|
3347
|
+
"the revision that rebuilds the DOM-owned editor for a programmatic text replacement",
|
|
3336
3348
|
"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
3349
|
],
|
|
3338
3350
|
"variants": [
|
|
@@ -3678,6 +3690,85 @@
|
|
|
3678
3690
|
"recipe": "docs/component-selection.md#web-awesome-overlap-policy"
|
|
3679
3691
|
}
|
|
3680
3692
|
},
|
|
3693
|
+
{
|
|
3694
|
+
"id": "popup-menu",
|
|
3695
|
+
"name": "PopupMenu",
|
|
3696
|
+
"category": "Controls",
|
|
3697
|
+
"kind": "component",
|
|
3698
|
+
"source": "kerf",
|
|
3699
|
+
"description": "A trigger button that opens a typed list of commands, built on the Web Awesome dropdown.",
|
|
3700
|
+
"uses": [
|
|
3701
|
+
"wa-dropdown",
|
|
3702
|
+
"wa-dropdown-item",
|
|
3703
|
+
"wa-button",
|
|
3704
|
+
"wa-divider"
|
|
3705
|
+
],
|
|
3706
|
+
"purpose": "A trigger button that opens a typed list of commands, built on the Web Awesome dropdown.",
|
|
3707
|
+
"publicExports": [
|
|
3708
|
+
"PopupMenu"
|
|
3709
|
+
],
|
|
3710
|
+
"useWhen": [
|
|
3711
|
+
"Offer a short list of commands behind one trigger, such as a toolbar sort or More menu.",
|
|
3712
|
+
"Group related commands under headings and dividers in one popup."
|
|
3713
|
+
],
|
|
3714
|
+
"avoidWhen": [
|
|
3715
|
+
"Do not use it to choose a persistent value (use Select) or for navigation rows (use ListItem).",
|
|
3716
|
+
"Do not hand-write wa-dropdown / wa-dropdown-item markup for an action menu; use PopupMenu."
|
|
3717
|
+
],
|
|
3718
|
+
"alternatives": [
|
|
3719
|
+
{
|
|
3720
|
+
"id": "select",
|
|
3721
|
+
"relationship": "nearest"
|
|
3722
|
+
},
|
|
3723
|
+
{
|
|
3724
|
+
"id": "wa-dropdown",
|
|
3725
|
+
"relationship": "prefer-over"
|
|
3726
|
+
}
|
|
3727
|
+
],
|
|
3728
|
+
"appOwns": [
|
|
3729
|
+
"commands and their delegated actions",
|
|
3730
|
+
"which items are enabled",
|
|
3731
|
+
"reactions to the menu opening or closing"
|
|
3732
|
+
],
|
|
3733
|
+
"variants": [
|
|
3734
|
+
"icon trigger",
|
|
3735
|
+
"text trigger",
|
|
3736
|
+
"icon and text trigger",
|
|
3737
|
+
"headings and dividers",
|
|
3738
|
+
"item icons",
|
|
3739
|
+
"disabled items",
|
|
3740
|
+
"placement"
|
|
3741
|
+
],
|
|
3742
|
+
"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."
|
|
3744
|
+
],
|
|
3745
|
+
"geometry": {
|
|
3746
|
+
"margin": "none",
|
|
3747
|
+
"border": "child",
|
|
3748
|
+
"padding": "child"
|
|
3749
|
+
},
|
|
3750
|
+
"delivery": {
|
|
3751
|
+
"browserImport": "@kerfjs/ui/popup-menu",
|
|
3752
|
+
"manualCssImport": "@kerfjs/ui/popup-menu.css",
|
|
3753
|
+
"registrationImport": "@kerfjs/ui/popup-menu/register",
|
|
3754
|
+
"themeCssImport": "@kerfjs/ui/webawesome.css",
|
|
3755
|
+
"sideEffects": [
|
|
3756
|
+
"browser-condition-css",
|
|
3757
|
+
"custom-element-registration"
|
|
3758
|
+
]
|
|
3759
|
+
},
|
|
3760
|
+
"wiring": [],
|
|
3761
|
+
"publicClasses": [
|
|
3762
|
+
"kui-popup-menu",
|
|
3763
|
+
"kui-popup-menu__label"
|
|
3764
|
+
],
|
|
3765
|
+
"publicTokens": [],
|
|
3766
|
+
"links": {
|
|
3767
|
+
"catalogRoute": "?component=popup-menu",
|
|
3768
|
+
"documentation": "docs/component-selection.md",
|
|
3769
|
+
"recipe": "docs/component-selection.md#web-awesome-overlap-policy"
|
|
3770
|
+
}
|
|
3771
|
+
},
|
|
3681
3772
|
{
|
|
3682
3773
|
"id": "feedback",
|
|
3683
3774
|
"name": "Feedback",
|
|
@@ -4330,6 +4421,10 @@
|
|
|
4330
4421
|
],
|
|
4331
4422
|
"recommendation": "conditional",
|
|
4332
4423
|
"alternatives": [
|
|
4424
|
+
{
|
|
4425
|
+
"id": "popup-menu",
|
|
4426
|
+
"relationship": "prefer-kerf"
|
|
4427
|
+
},
|
|
4333
4428
|
{
|
|
4334
4429
|
"id": "select",
|
|
4335
4430
|
"relationship": "prefer-kerf"
|
|
@@ -4373,6 +4468,10 @@
|
|
|
4373
4468
|
],
|
|
4374
4469
|
"recommendation": "conditional",
|
|
4375
4470
|
"alternatives": [
|
|
4471
|
+
{
|
|
4472
|
+
"id": "popup-menu",
|
|
4473
|
+
"relationship": "prefer-kerf"
|
|
4474
|
+
},
|
|
4376
4475
|
{
|
|
4377
4476
|
"id": "select",
|
|
4378
4477
|
"relationship": "prefer-kerf"
|
|
@@ -6941,16 +7040,14 @@
|
|
|
6941
7040
|
"category": "Recipes",
|
|
6942
7041
|
"kind": "recipe",
|
|
6943
7042
|
"source": "kerf",
|
|
6944
|
-
"purpose": "
|
|
7043
|
+
"purpose": "App bar above a Workbench with resizable navigation and inspector rails, relocated rail toggles, narrow-container overlays, and explicit pane scroll owners.",
|
|
6945
7044
|
"uses": [
|
|
6946
7045
|
"pane",
|
|
6947
7046
|
"toolbar",
|
|
6948
7047
|
"toolbar-text",
|
|
6949
7048
|
"toolbar-control-group",
|
|
6950
|
-
"
|
|
6951
|
-
"
|
|
6952
|
-
"resize",
|
|
6953
|
-
"list-header",
|
|
7049
|
+
"workbench",
|
|
7050
|
+
"list",
|
|
6954
7051
|
"list-item",
|
|
6955
7052
|
"value-table",
|
|
6956
7053
|
"lucide-icon",
|
|
@@ -7075,7 +7172,7 @@
|
|
|
7075
7172
|
"category": "Recipes",
|
|
7076
7173
|
"kind": "recipe",
|
|
7077
7174
|
"source": "kerf",
|
|
7078
|
-
"purpose": "Production modal
|
|
7175
|
+
"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
7176
|
"uses": [
|
|
7080
7177
|
"surface-scaffold",
|
|
7081
7178
|
"split-view",
|