@kerfjs/ui 5.0.0-beta.29 → 5.0.0-beta.30
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 +43 -8
- package/ai/application-ui-diagnostic-ids-v1.json +5 -0
- package/ai/compile-time-contracts-v1.json +37 -0
- package/ai/compile-time-contracts-v1.schema.json +3 -1
- package/ai/component-catalog-v2-overrides.json +198 -1
- package/ai/component-catalog-v2.d.ts +22 -0
- package/ai/component-catalog-v2.json +488 -32
- package/ai/component-catalog-v2.schema.json +51 -0
- package/ai/component-catalog.json +251 -36
- package/ai/component-catalog.schema.json +23 -0
- package/ai/public-api-signatures-v1.md +231 -84
- package/ai/skill.md +32 -10
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/index.mjs +247 -5
- package/dist/app-tab.d.ts +3 -2
- package/dist/app-tab.js +2 -1
- package/dist/catalog-resources.d.ts +1 -0
- package/dist/catalog.d.ts +7 -6
- package/dist/catalog.js +8 -7
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-PX3YSS5C.js → chunk-6NDBE2OK.js} +1 -1
- package/dist/chunk-6NDBE2OK.js.map +1 -0
- package/dist/{chunk-B3A3IVO5.js → chunk-AQFWBG23.js} +3 -3
- package/dist/chunk-AQFWBG23.js.map +1 -0
- package/dist/{chunk-WNWD54GR.js → chunk-B6JYRX3P.js} +4 -2
- package/dist/chunk-B6JYRX3P.js.map +1 -0
- package/dist/{chunk-HP2B2L26.js → chunk-CAB6NQ2T.js} +1 -1
- package/dist/chunk-CAB6NQ2T.js.map +1 -0
- package/dist/{chunk-2NMQW7FX.js → chunk-CK6P5AUK.js} +4 -3
- package/dist/chunk-CK6P5AUK.js.map +1 -0
- package/dist/{chunk-VCE4MPVE.js → chunk-DAO2VFTT.js} +5 -6
- package/dist/chunk-DAO2VFTT.js.map +1 -0
- package/dist/{chunk-LPOMRC4C.js → chunk-DYBPI5O2.js} +1 -1
- package/dist/chunk-DYBPI5O2.js.map +1 -0
- package/dist/{chunk-IJBSZ4NX.js → chunk-E34TE2ZI.js} +4 -3
- package/dist/chunk-E34TE2ZI.js.map +1 -0
- package/dist/{chunk-4EF2CMYS.js → chunk-I45QO2IZ.js} +8 -7
- package/dist/chunk-I45QO2IZ.js.map +1 -0
- package/dist/{chunk-JRKSK2HX.js → chunk-I4V3UDSA.js} +1 -1
- package/dist/chunk-I4V3UDSA.js.map +1 -0
- package/dist/{chunk-FEY65TBV.js → chunk-KFUUFNTS.js} +1 -1
- package/dist/chunk-KFUUFNTS.js.map +1 -0
- package/dist/{chunk-QO55FN2Y.js → chunk-MFR2IIFG.js} +1 -1
- package/dist/chunk-MFR2IIFG.js.map +1 -0
- package/dist/{chunk-GWEAPEZI.js → chunk-OC275HHS.js} +4 -3
- package/dist/chunk-OC275HHS.js.map +1 -0
- package/dist/chunk-OL4TC3U2.js +156 -0
- package/dist/chunk-OL4TC3U2.js.map +1 -0
- package/dist/{chunk-OT6RPYAP.js → chunk-OMSRSL3B.js} +4 -3
- package/dist/chunk-OMSRSL3B.js.map +1 -0
- package/dist/{chunk-J5BFYY7Q.js → chunk-RL6COPKF.js} +12 -3
- package/dist/chunk-RL6COPKF.js.map +1 -0
- package/dist/{chunk-TB6DY7H5.js → chunk-SOK5EUF7.js} +1 -1
- package/dist/chunk-SOK5EUF7.js.map +1 -0
- package/dist/{chunk-RKVQEH4J.js → chunk-T7DOWS6T.js} +3 -3
- package/dist/chunk-T7DOWS6T.js.map +1 -0
- package/dist/{chunk-7KEUJIIC.js → chunk-TIGSG6BX.js} +1 -1
- package/dist/chunk-TIGSG6BX.js.map +1 -0
- package/dist/{chunk-W5L2JSBY.js → chunk-UDHHKZWO.js} +6 -5
- package/dist/chunk-UDHHKZWO.js.map +1 -0
- package/dist/{chunk-R7ZWUN64.js → chunk-V6GQKOX2.js} +4 -3
- package/dist/chunk-V6GQKOX2.js.map +1 -0
- package/dist/{chunk-KWWR5VMS.js → chunk-V6HCTCVD.js} +4 -3
- package/dist/chunk-V6HCTCVD.js.map +1 -0
- package/dist/{chunk-JFGXQBIP.js → chunk-VDUJZF5G.js} +76 -13
- package/dist/chunk-VDUJZF5G.js.map +1 -0
- package/dist/{chunk-SYDMYBPG.js → chunk-VXFGMDA7.js} +1 -1
- package/dist/chunk-VXFGMDA7.js.map +1 -0
- package/dist/{chunk-YMKH5XTF.js → chunk-WN52USHV.js} +2 -2
- package/dist/{chunk-YMKH5XTF.js.map → chunk-WN52USHV.js.map} +1 -1
- package/dist/{chunk-OBLTAKSX.js → chunk-WSXUPSID.js} +1 -1
- package/dist/chunk-WSXUPSID.js.map +1 -0
- package/dist/{chunk-X2U3QJCJ.js → chunk-ZPWZIVI6.js} +1 -1
- package/dist/chunk-ZPWZIVI6.js.map +1 -0
- package/dist/collapsible-panel.d.ts +5 -2
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/css-values.d.ts +75 -0
- package/dist/css-values.js +3 -0
- package/dist/css-values.js.map +1 -0
- package/dist/empty-state.d.ts +2 -1
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +4 -3
- package/dist/floating-toolbar.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +26 -25
- package/dist/list-action-row.d.ts +1 -2
- package/dist/list-action-row.js +2 -1
- package/dist/list-header.d.ts +1 -1
- package/dist/list-header.js +2 -1
- package/dist/list-inset-control.d.ts +4 -3
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +4 -3
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.d.ts +4 -3
- package/dist/list-item.js +2 -1
- package/dist/list.d.ts +10 -8
- package/dist/list.js +2 -1
- package/dist/nav-stack.d.ts +9 -6
- package/dist/nav-stack.js +2 -1
- package/dist/pane.d.ts +6 -5
- package/dist/pane.js +1 -1
- package/dist/resizable-region.d.ts +2 -1
- package/dist/resizable-region.js +1 -1
- package/dist/segmented-control.d.ts +4 -3
- package/dist/segmented-control.js +2 -1
- package/dist/select.d.ts +3 -1
- package/dist/select.js +2 -1
- package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
- package/dist/skeleton.d.ts +7 -6
- package/dist/skeleton.js +2 -1
- package/dist/split-view.d.ts +5 -4
- package/dist/split-view.js +3 -2
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +3 -2
- package/dist/state-banner.js +2 -1
- package/dist/styles/catalog.css +8 -1
- package/dist/styles/collapsible-panel.css +6 -2
- package/dist/styles/foundation.css +44 -0
- package/dist/styles/list-header.css +6 -0
- package/dist/styles/list-item.css +9 -0
- package/dist/styles/nav-stack.css +32 -2
- package/dist/styles/segmented-control.css +8 -1
- package/dist/styles/select.css +2 -1
- package/dist/styles/state-banner.css +14 -0
- package/dist/styles/tab-scaffold.css +1 -0
- package/dist/styles/token-search-field.css +4 -0
- package/dist/styles/toolbar-control-group.css +98 -16
- package/dist/styles/webawesome.css +22 -0
- package/dist/styles/workbench.css +4 -0
- package/dist/sunken-panel.d.ts +4 -3
- package/dist/sunken-panel.js +1 -1
- package/dist/surface-scaffold.d.ts +6 -5
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-bar.d.ts +6 -5
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +2 -1
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/token-search-field.d.ts +5 -4
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-control-group.d.ts +10 -4
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.js +2 -1
- package/dist/toolbar.d.ts +6 -5
- package/dist/toolbar.js +1 -1
- package/dist/value-table.d.ts +4 -2
- package/dist/value-table.js +2 -1
- package/dist/wire-nav-stack.d.ts +4 -1
- package/dist/wire-nav-stack.js +125 -0
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-tab-bars.d.ts +1 -0
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +7 -4
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +9 -3
- package/docs/collapsible-panel.md +4 -1
- package/docs/component-contract.md +56 -8
- package/docs/component-selection.md +45 -8
- 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/multiline-dark.svg +1 -1
- package/docs/design/templates/list-item/multiline.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-philosophy.md +4 -2
- package/docs/examples/component-catalog-extension-v2.json +2 -0
- package/docs/layout.md +12 -4
- package/docs/nav-stack.md +29 -8
- package/docs/recipes.md +8 -4
- package/docs/split-view.md +6 -0
- package/docs/surface-scaffold.md +8 -0
- package/docs/tab-scaffold.md +3 -1
- package/docs/type-contracts.md +39 -12
- package/docs/ui-analyzer.md +17 -3
- package/docs/ui-doctor.md +7 -0
- package/docs/ux-demo.md +10 -4
- package/docs/webawesome-theme.md +6 -0
- package/docs/workbench.md +6 -4
- package/llms.txt +46 -6
- package/package.json +5 -1
- package/ux-demo/recipes/compact-toolbar.tsx +10 -9
- package/ux-demo/recipes/composer-form.tsx +6 -3
- package/ux-demo/recipes/loading-inspector.tsx +2 -1
- package/dist/chunk-2NMQW7FX.js.map +0 -1
- package/dist/chunk-4EF2CMYS.js.map +0 -1
- package/dist/chunk-7KEUJIIC.js.map +0 -1
- package/dist/chunk-B3A3IVO5.js.map +0 -1
- package/dist/chunk-FEY65TBV.js.map +0 -1
- package/dist/chunk-GWEAPEZI.js.map +0 -1
- package/dist/chunk-HP2B2L26.js.map +0 -1
- package/dist/chunk-IJBSZ4NX.js.map +0 -1
- package/dist/chunk-J5BFYY7Q.js.map +0 -1
- package/dist/chunk-JFGXQBIP.js.map +0 -1
- package/dist/chunk-JRKSK2HX.js.map +0 -1
- package/dist/chunk-KWWR5VMS.js.map +0 -1
- package/dist/chunk-LPOMRC4C.js.map +0 -1
- package/dist/chunk-OBLTAKSX.js.map +0 -1
- package/dist/chunk-OT6RPYAP.js.map +0 -1
- package/dist/chunk-PX3YSS5C.js.map +0 -1
- package/dist/chunk-QO55FN2Y.js.map +0 -1
- package/dist/chunk-R7ZWUN64.js.map +0 -1
- package/dist/chunk-RKVQEH4J.js.map +0 -1
- package/dist/chunk-SYDMYBPG.js.map +0 -1
- package/dist/chunk-TB6DY7H5.js.map +0 -1
- package/dist/chunk-VCE4MPVE.js.map +0 -1
- package/dist/chunk-W5L2JSBY.js.map +0 -1
- package/dist/chunk-WNWD54GR.js.map +0 -1
- package/dist/chunk-X2U3QJCJ.js.map +0 -1
|
@@ -45,6 +45,14 @@
|
|
|
45
45
|
"required": ["id", "accepts", "cardinality", "exclusiveWith"],
|
|
46
46
|
"properties": {
|
|
47
47
|
"id": { "type": "string", "minLength": 1 },
|
|
48
|
+
"jsx": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": ["prop"],
|
|
51
|
+
"properties": {
|
|
52
|
+
"prop": { "type": "string", "minLength": 1 }
|
|
53
|
+
},
|
|
54
|
+
"additionalProperties": false
|
|
55
|
+
},
|
|
48
56
|
"accepts": { "$ref": "#/$defs/stringList" },
|
|
49
57
|
"cardinality": { "$ref": "#/$defs/cardinality" },
|
|
50
58
|
"exclusiveWith": { "$ref": "#/$defs/stringList" }
|
|
@@ -211,6 +219,10 @@
|
|
|
211
219
|
"properties": { "obligations": { "$ref": "#/$defs/stringList" } },
|
|
212
220
|
"additionalProperties": false
|
|
213
221
|
},
|
|
222
|
+
"cssValueProps": {
|
|
223
|
+
"type": "array",
|
|
224
|
+
"items": { "$ref": "#/$defs/cssValueProp" }
|
|
225
|
+
},
|
|
214
226
|
"boundaries": {
|
|
215
227
|
"type": "object",
|
|
216
228
|
"required": ["rootClass", "publicClasses", "publicTokens"],
|
|
@@ -242,6 +254,45 @@
|
|
|
242
254
|
}
|
|
243
255
|
},
|
|
244
256
|
"additionalProperties": false
|
|
257
|
+
},
|
|
258
|
+
"cssValueProp": {
|
|
259
|
+
"type": "object",
|
|
260
|
+
"required": [
|
|
261
|
+
"path",
|
|
262
|
+
"grammar",
|
|
263
|
+
"helpers",
|
|
264
|
+
"shorthands",
|
|
265
|
+
"canonicalShorthands",
|
|
266
|
+
"exceptionalShorthands",
|
|
267
|
+
"rawPolicy",
|
|
268
|
+
"examples"
|
|
269
|
+
],
|
|
270
|
+
"properties": {
|
|
271
|
+
"path": {
|
|
272
|
+
"type": "string",
|
|
273
|
+
"pattern": "^[A-Za-z][A-Za-z0-9]*(?:\\[\\]\\.[A-Za-z][A-Za-z0-9]*)?$"
|
|
274
|
+
},
|
|
275
|
+
"grammar": {
|
|
276
|
+
"enum": [
|
|
277
|
+
"length",
|
|
278
|
+
"size",
|
|
279
|
+
"flex",
|
|
280
|
+
"color",
|
|
281
|
+
"declarations",
|
|
282
|
+
"media-query",
|
|
283
|
+
"pixels"
|
|
284
|
+
]
|
|
285
|
+
},
|
|
286
|
+
"helpers": { "$ref": "#/$defs/stringList" },
|
|
287
|
+
"nonStandaloneHelpers": { "$ref": "#/$defs/stringList" },
|
|
288
|
+
"shorthands": { "$ref": "#/$defs/stringList" },
|
|
289
|
+
"canonicalShorthands": { "$ref": "#/$defs/stringList" },
|
|
290
|
+
"exceptionalShorthands": { "$ref": "#/$defs/stringList" },
|
|
291
|
+
"rawPolicy": { "enum": ["forbid", "allow", "unsafe-only"] },
|
|
292
|
+
"unsafeHelper": { "type": "string", "minLength": 1 },
|
|
293
|
+
"examples": { "$ref": "#/$defs/stringList" }
|
|
294
|
+
},
|
|
295
|
+
"additionalProperties": false
|
|
245
296
|
}
|
|
246
297
|
}
|
|
247
298
|
}
|
|
@@ -271,7 +271,8 @@
|
|
|
271
271
|
],
|
|
272
272
|
"variants": [
|
|
273
273
|
"light",
|
|
274
|
-
"dark"
|
|
274
|
+
"dark",
|
|
275
|
+
"increased contrast"
|
|
275
276
|
],
|
|
276
277
|
"accessibility": [
|
|
277
278
|
"Preserve semantic contrast relationships and the visible focus ring when overriding foundation colors."
|
|
@@ -317,6 +318,7 @@
|
|
|
317
318
|
"--kui-layout-content-gap",
|
|
318
319
|
"--kui-layout-control-gap",
|
|
319
320
|
"--kui-layout-metadata-gap",
|
|
321
|
+
"--kui-layout-highlight-inset",
|
|
320
322
|
"--kui-layout-rounded-radius",
|
|
321
323
|
"--kui-layout-pill-radius",
|
|
322
324
|
"--kui-toolbar-group-inner-size",
|
|
@@ -353,6 +355,16 @@
|
|
|
353
355
|
"--kui-color-brand-on-normal",
|
|
354
356
|
"--kui-color-brand-on-loud",
|
|
355
357
|
"--kui-color-brand-on-fill",
|
|
358
|
+
"--kui-color-pop-fill-loud",
|
|
359
|
+
"--kui-color-pop-fill-quiet",
|
|
360
|
+
"--kui-color-pop-fill-normal",
|
|
361
|
+
"--kui-color-pop-border-quiet",
|
|
362
|
+
"--kui-color-pop-border-normal",
|
|
363
|
+
"--kui-color-pop-border-loud",
|
|
364
|
+
"--kui-color-pop-on-quiet",
|
|
365
|
+
"--kui-color-pop-on-normal",
|
|
366
|
+
"--kui-color-pop-on-loud",
|
|
367
|
+
"--kui-color-pop-on-fill",
|
|
356
368
|
"--kui-color-success-fill-loud",
|
|
357
369
|
"--kui-color-success-fill-quiet",
|
|
358
370
|
"--kui-color-success-fill-normal",
|
|
@@ -386,6 +398,8 @@
|
|
|
386
398
|
"--kui-color-border-quiet",
|
|
387
399
|
"--kui-color-accent",
|
|
388
400
|
"--kui-color-accent-text",
|
|
401
|
+
"--kui-color-pop",
|
|
402
|
+
"--kui-color-pop-text",
|
|
389
403
|
"--kui-color-success",
|
|
390
404
|
"--kui-color-success-text",
|
|
391
405
|
"--kui-color-warning",
|
|
@@ -561,7 +575,7 @@
|
|
|
561
575
|
"category": "Structure",
|
|
562
576
|
"kind": "component",
|
|
563
577
|
"source": "kerf",
|
|
564
|
-
"description": "A controlled one-pane navigation stack that keeps prior views mounted
|
|
578
|
+
"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.",
|
|
565
579
|
"uses": [
|
|
566
580
|
"toolbar-text"
|
|
567
581
|
],
|
|
@@ -595,18 +609,20 @@
|
|
|
595
609
|
"ordered view stack and stable keys",
|
|
596
610
|
"view content and titles",
|
|
597
611
|
"push and pop actions",
|
|
598
|
-
"focus
|
|
599
|
-
"
|
|
612
|
+
"preferred initial focus targets when DOM order is insufficient",
|
|
613
|
+
"per-view bottom toolbar content or a persistent fallback"
|
|
600
614
|
],
|
|
601
615
|
"variants": [
|
|
602
616
|
"single root view",
|
|
603
617
|
"pushed detail view",
|
|
604
618
|
"toolbar hidden",
|
|
605
|
-
"
|
|
619
|
+
"per-view bottom toolbar",
|
|
620
|
+
"persistent bottom-toolbar fallback"
|
|
606
621
|
],
|
|
607
622
|
"accessibility": [
|
|
608
623
|
"Give the stack region an accessible label and every back control a stable action label.",
|
|
609
|
-
"
|
|
624
|
+
"Use wireNavStack so each controlled push moves focus into the new top view and each pop restores the revealed view's remembered descendant.",
|
|
625
|
+
"Mark a preferred initial heading or control with data-nav-focus when the first enabled focusable descendant is not the right target."
|
|
610
626
|
],
|
|
611
627
|
"geometry": {
|
|
612
628
|
"margin": "none",
|
|
@@ -633,6 +649,11 @@
|
|
|
633
649
|
"publicClasses": [
|
|
634
650
|
"kui-nav-stack",
|
|
635
651
|
"kui-nav-stack__chrome",
|
|
652
|
+
"kui-nav-stack__bottom",
|
|
653
|
+
"kui-nav-stack__chrome--entering",
|
|
654
|
+
"kui-nav-stack__chrome-copy",
|
|
655
|
+
"kui-nav-stack__chrome-copy--bottom",
|
|
656
|
+
"kui-nav-stack__chrome-copy--exiting",
|
|
636
657
|
"kui-nav-stack__lead",
|
|
637
658
|
"kui-nav-stack__back",
|
|
638
659
|
"kui-nav-stack__back-icon",
|
|
@@ -641,10 +662,11 @@
|
|
|
641
662
|
"kui-nav-stack__viewport",
|
|
642
663
|
"kui-nav-stack__view",
|
|
643
664
|
"kui-nav-stack__view--entering",
|
|
644
|
-
"kui-nav-stack__view--exiting"
|
|
645
|
-
|
|
665
|
+
"kui-nav-stack__view--exiting"
|
|
666
|
+
],
|
|
667
|
+
"publicTokens": [
|
|
668
|
+
"--kui-nav-stack-transition-duration"
|
|
646
669
|
],
|
|
647
|
-
"publicTokens": [],
|
|
648
670
|
"links": {
|
|
649
671
|
"catalogRoute": "?component=nav-stack",
|
|
650
672
|
"documentation": "docs/nav-stack.md",
|
|
@@ -1198,7 +1220,8 @@
|
|
|
1198
1220
|
],
|
|
1199
1221
|
"useWhen": [
|
|
1200
1222
|
"Group related controls inside a toolbar with a supported visual treatment.",
|
|
1201
|
-
"Fill it with plain <button> controls (the group styles > button fully); use wa-button only for a Web Awesome feature such as a wa-dropdown popup trigger."
|
|
1223
|
+
"Fill it with plain <button> controls (the group styles > button fully); use wa-button only for a Web Awesome feature such as a wa-dropdown popup trigger.",
|
|
1224
|
+
"For an avatar control, set content=avatar and avatarImage instead of inserting an img; one button paints the group and multiple buttons paint only the pressed highlight."
|
|
1202
1225
|
],
|
|
1203
1226
|
"avoidWhen": [
|
|
1204
1227
|
"Do not use merely to align unrelated buttons or to imitate an exclusive choice.",
|
|
@@ -1217,7 +1240,8 @@
|
|
|
1217
1240
|
"appOwns": [
|
|
1218
1241
|
"actions",
|
|
1219
1242
|
"pressed state",
|
|
1220
|
-
"expanded state"
|
|
1243
|
+
"expanded state",
|
|
1244
|
+
"avatar image URL"
|
|
1221
1245
|
],
|
|
1222
1246
|
"variants": [
|
|
1223
1247
|
"contained",
|
|
@@ -1228,9 +1252,10 @@
|
|
|
1228
1252
|
"comfortable or tight density",
|
|
1229
1253
|
"icon, text, mixed, or avatar content",
|
|
1230
1254
|
"raised, filled, or outline selected chrome",
|
|
1231
|
-
"brand or
|
|
1255
|
+
"brand, neutral, or pop selected tone",
|
|
1232
1256
|
"nested dropdown trigger",
|
|
1233
|
-
"avatar scrim"
|
|
1257
|
+
"avatar scrim",
|
|
1258
|
+
"contained avatar background on a single group or selected multi-button highlight"
|
|
1234
1259
|
],
|
|
1235
1260
|
"accessibility": [
|
|
1236
1261
|
"Name the group when its relationship is not evident from context."
|
|
@@ -1253,6 +1278,10 @@
|
|
|
1253
1278
|
],
|
|
1254
1279
|
"publicTokens": [
|
|
1255
1280
|
"--kui-color-brand-on-quiet",
|
|
1281
|
+
"--kui-color-pop-border-normal",
|
|
1282
|
+
"--kui-color-pop-fill-normal",
|
|
1283
|
+
"--kui-color-pop-on-normal",
|
|
1284
|
+
"--kui-color-pop-on-quiet",
|
|
1256
1285
|
"--kui-color-neutral-border-loud",
|
|
1257
1286
|
"--kui-color-neutral-border-normal",
|
|
1258
1287
|
"--kui-color-neutral-fill-loud",
|
|
@@ -1298,10 +1327,12 @@
|
|
|
1298
1327
|
"PopupSurface"
|
|
1299
1328
|
],
|
|
1300
1329
|
"useWhen": [
|
|
1301
|
-
"A Web Awesome dialog or dropdown needs a standard size, presentation, body/footer inset, or list-compatible menu inset."
|
|
1330
|
+
"A Web Awesome dialog or dropdown needs a standard size, presentation, body/footer inset, or list-compatible menu inset.",
|
|
1331
|
+
"A dialog body should compose rows, sections, or aligned bare prose through List and ListInsetText."
|
|
1302
1332
|
],
|
|
1303
1333
|
"avoidWhen": [
|
|
1304
|
-
"Do not use it as a generic layout wrapper or to replace application-owned modal state and focus lifecycle."
|
|
1334
|
+
"Do not use it as a generic layout wrapper or to replace application-owned modal state and focus lifecycle.",
|
|
1335
|
+
"Do not stack a dialog body inset around children that already own List or content-item geometry; use bodyInset none."
|
|
1305
1336
|
],
|
|
1306
1337
|
"alternatives": [],
|
|
1307
1338
|
"appOwns": [
|
|
@@ -1611,7 +1642,7 @@
|
|
|
1611
1642
|
"category": "Navigation",
|
|
1612
1643
|
"kind": "component",
|
|
1613
1644
|
"source": "kerf",
|
|
1614
|
-
"description": "A stretch-aligned vertical stack with optional gap, flex growth, vertical scrolling, and independently selectable divider edges.",
|
|
1645
|
+
"description": "A stretch-aligned vertical stack with optional typed token/length gap, flex growth, vertical scrolling, and independently selectable divider edges.",
|
|
1615
1646
|
"uses": [
|
|
1616
1647
|
"list-header",
|
|
1617
1648
|
"list-action-row",
|
|
@@ -1619,26 +1650,63 @@
|
|
|
1619
1650
|
],
|
|
1620
1651
|
"purpose": "Standardize vertical component layout and its scroll/divider ownership instead of repeating ad-hoc flex-column wrappers.",
|
|
1621
1652
|
"publicExports": [
|
|
1622
|
-
"List"
|
|
1653
|
+
"List",
|
|
1654
|
+
"px",
|
|
1655
|
+
"rem",
|
|
1656
|
+
"em",
|
|
1657
|
+
"pct",
|
|
1658
|
+
"space",
|
|
1659
|
+
"lengthVar",
|
|
1660
|
+
"plus",
|
|
1661
|
+
"calc",
|
|
1662
|
+
"flex"
|
|
1663
|
+
],
|
|
1664
|
+
"cssValueProps": [
|
|
1665
|
+
{
|
|
1666
|
+
"path": "gap",
|
|
1667
|
+
"grammar": "length",
|
|
1668
|
+
"helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
|
|
1669
|
+
"nonStandaloneHelpers": ["plus"],
|
|
1670
|
+
"shorthands": ["none", "2xs", "xs", "s", "m", "l", "xl"],
|
|
1671
|
+
"canonicalShorthands": ["none", "2xs", "xs", "m", "l"],
|
|
1672
|
+
"exceptionalShorthands": ["s", "xl"],
|
|
1673
|
+
"rawPolicy": "forbid",
|
|
1674
|
+
"examples": ["gap=\"xs\"", "gap={rem(0.25)}", "gap={calc(plus(rem(0.25), pct(10)))}"]
|
|
1675
|
+
},
|
|
1676
|
+
{
|
|
1677
|
+
"path": "flex",
|
|
1678
|
+
"grammar": "flex",
|
|
1679
|
+
"helpers": ["flex"],
|
|
1680
|
+
"shorthands": ["none", "auto", "initial"],
|
|
1681
|
+
"canonicalShorthands": ["none", "auto", "initial"],
|
|
1682
|
+
"exceptionalShorthands": [],
|
|
1683
|
+
"rawPolicy": "forbid",
|
|
1684
|
+
"examples": ["flex=\"none\"", "flex={flex(1, 1, rem(20))}"]
|
|
1685
|
+
}
|
|
1623
1686
|
],
|
|
1624
1687
|
"useWhen": [
|
|
1625
1688
|
"Arrange component rows or sections in a vertical stretch-aligned stack.",
|
|
1626
|
-
"Let one bounded list own vertical scrolling, flex growth, or one or more physical-edge dividers."
|
|
1689
|
+
"Let one bounded list own vertical scrolling, flex growth, or one or more physical-edge dividers.",
|
|
1690
|
+
"Choose a finite gap shorthand such as xs or m, or compose a typed length with @kerfjs/ui/css-values when the spacing scale is insufficient.",
|
|
1691
|
+
"Use a finite flex keyword or the flex() builder when List participates in flexible layout."
|
|
1627
1692
|
],
|
|
1628
1693
|
"avoidWhen": [
|
|
1629
1694
|
"Do not use List as semantic list markup; use ul/ol when list semantics are required and apply layout deliberately.",
|
|
1630
|
-
"Do not create nested scroll owners or use divider sides as a substitute for meaningful grouping."
|
|
1695
|
+
"Do not create nested scroll owners or use divider sides as a substitute for meaningful grouping.",
|
|
1696
|
+
"Do not pass raw CSS strings to gap or flex, mix their distinct grammars, or use the off-rhythm s/xl spacing steps without a deliberate exception."
|
|
1631
1697
|
],
|
|
1632
1698
|
"alternatives": [],
|
|
1633
1699
|
"appOwns": [
|
|
1634
1700
|
"child semantics and content",
|
|
1635
1701
|
"the bounded height needed for scrolling",
|
|
1636
|
-
"gap, flex, and divider choices"
|
|
1702
|
+
"typed gap, flex, and divider choices"
|
|
1637
1703
|
],
|
|
1638
1704
|
"variants": [
|
|
1639
1705
|
"no gap",
|
|
1640
|
-
"standard
|
|
1641
|
-
"
|
|
1706
|
+
"standard boolean gap",
|
|
1707
|
+
"named none/2xs/xs/s/m/l/xl token gap",
|
|
1708
|
+
"typed CssLength gap",
|
|
1709
|
+
"boolean, finite-keyword, or typed CssFlex flex",
|
|
1642
1710
|
"scrollable",
|
|
1643
1711
|
"top/right/bottom/left divider combinations"
|
|
1644
1712
|
],
|
|
@@ -1722,7 +1790,7 @@
|
|
|
1722
1790
|
"toggle",
|
|
1723
1791
|
"placeholder (loading)",
|
|
1724
1792
|
"compact density",
|
|
1725
|
-
"neutral, accent, or danger indicator tone",
|
|
1793
|
+
"neutral, accent, pop, or danger indicator tone",
|
|
1726
1794
|
"before, after, or paired group divider"
|
|
1727
1795
|
],
|
|
1728
1796
|
"accessibility": [
|
|
@@ -1768,6 +1836,8 @@
|
|
|
1768
1836
|
"--kui-list-header-hover-background",
|
|
1769
1837
|
"--kui-list-group-divider-color",
|
|
1770
1838
|
"--kui-color-brand-on-normal",
|
|
1839
|
+
"--kui-color-pop-fill-normal",
|
|
1840
|
+
"--kui-color-pop-on-normal",
|
|
1771
1841
|
"--kui-color-danger-fill-normal",
|
|
1772
1842
|
"--kui-color-danger-on-normal"
|
|
1773
1843
|
],
|
|
@@ -1792,11 +1862,24 @@
|
|
|
1792
1862
|
"publicExports": [
|
|
1793
1863
|
"ListActionRow"
|
|
1794
1864
|
],
|
|
1865
|
+
"cssValueProps": [
|
|
1866
|
+
{
|
|
1867
|
+
"path": "style",
|
|
1868
|
+
"grammar": "declarations",
|
|
1869
|
+
"helpers": [],
|
|
1870
|
+
"shorthands": [],
|
|
1871
|
+
"canonicalShorthands": [],
|
|
1872
|
+
"exceptionalShorthands": [],
|
|
1873
|
+
"rawPolicy": "forbid",
|
|
1874
|
+
"examples": ["className=\"app-row\""]
|
|
1875
|
+
}
|
|
1876
|
+
],
|
|
1795
1877
|
"useWhen": [
|
|
1796
1878
|
"A navigation or item row needs both a primary selectable action and an independently focusable trailing action."
|
|
1797
1879
|
],
|
|
1798
1880
|
"avoidWhen": [
|
|
1799
|
-
"Use ListItem when trailing content is dormant metadata; use AppTab only for tablist semantics and ToolbarControlGroup only for toolbar controls."
|
|
1881
|
+
"Use ListItem when trailing content is dormant metadata; use AppTab only for tablist semantics and ToolbarControlGroup only for toolbar controls.",
|
|
1882
|
+
"Do not inject declaration strings; use className, public tokens, and cataloged component props for application styling."
|
|
1800
1883
|
],
|
|
1801
1884
|
"alternatives": [
|
|
1802
1885
|
{
|
|
@@ -1896,7 +1979,7 @@
|
|
|
1896
1979
|
"category": "Navigation",
|
|
1897
1980
|
"kind": "component",
|
|
1898
1981
|
"source": "kerf",
|
|
1899
|
-
"description": "Configurable native-button navigation rows with structured labels, status/busy metadata, density, group dividers,
|
|
1982
|
+
"description": "Configurable native-button navigation rows with structured labels, status/busy metadata, density, group dividers, protected domain metadata hooks, and rounded-boundary overflow clipping.",
|
|
1900
1983
|
"uses": [
|
|
1901
1984
|
"lucide-icon",
|
|
1902
1985
|
"loading-spinner"
|
|
@@ -1905,11 +1988,24 @@
|
|
|
1905
1988
|
"publicExports": [
|
|
1906
1989
|
"ListItem"
|
|
1907
1990
|
],
|
|
1991
|
+
"cssValueProps": [
|
|
1992
|
+
{
|
|
1993
|
+
"path": "style",
|
|
1994
|
+
"grammar": "declarations",
|
|
1995
|
+
"helpers": [],
|
|
1996
|
+
"shorthands": [],
|
|
1997
|
+
"canonicalShorthands": [],
|
|
1998
|
+
"exceptionalShorthands": [],
|
|
1999
|
+
"rawPolicy": "forbid",
|
|
2000
|
+
"examples": ["className=\"app-row\""]
|
|
2001
|
+
}
|
|
2002
|
+
],
|
|
1908
2003
|
"useWhen": [
|
|
1909
|
-
"Render a selectable, disabled, trailing, or multiline sidebar/navigation action row."
|
|
2004
|
+
"Render a selectable, disabled, trailing, or multiline sidebar/navigation action row whose descendants must remain clipped to the rounded row boundary."
|
|
1910
2005
|
],
|
|
1911
2006
|
"avoidWhen": [
|
|
1912
|
-
"Do not use for an ordinary inline link, form button, isolated ARIA menuitem, or an interactive trailing action; use ListActionRow for sibling row actions."
|
|
2007
|
+
"Do not use for an ordinary inline link, form button, isolated ARIA menuitem, or an interactive trailing action; use ListActionRow for sibling row actions.",
|
|
2008
|
+
"Do not inject declaration strings; use className, public tokens, and cataloged component props for application styling."
|
|
1913
2009
|
],
|
|
1914
2010
|
"alternatives": [
|
|
1915
2011
|
{
|
|
@@ -2095,6 +2191,61 @@
|
|
|
2095
2191
|
"recipe": "docs/component-selection.md#problem-to-component-matrix"
|
|
2096
2192
|
}
|
|
2097
2193
|
},
|
|
2194
|
+
{
|
|
2195
|
+
"id": "application-tabs",
|
|
2196
|
+
"name": "Application tabs composition",
|
|
2197
|
+
"category": "Navigation",
|
|
2198
|
+
"kind": "composition",
|
|
2199
|
+
"source": "kerf",
|
|
2200
|
+
"description": "Controlled document tabs with application-owned state and panels.",
|
|
2201
|
+
"uses": [
|
|
2202
|
+
"tabs",
|
|
2203
|
+
"tab-bar",
|
|
2204
|
+
"toolbar-control-group"
|
|
2205
|
+
],
|
|
2206
|
+
"purpose": "Show AppTab and TabBar in a complete controlled composition.",
|
|
2207
|
+
"publicExports": [],
|
|
2208
|
+
"useWhen": [
|
|
2209
|
+
"Compose application state, panels, actions, overflow, and reordering around TabBar and AppTab."
|
|
2210
|
+
],
|
|
2211
|
+
"avoidWhen": [
|
|
2212
|
+
"Use SegmentedControl instead for a compact local choice."
|
|
2213
|
+
],
|
|
2214
|
+
"alternatives": [],
|
|
2215
|
+
"appOwns": [
|
|
2216
|
+
"ordered tabs",
|
|
2217
|
+
"selected tab",
|
|
2218
|
+
"tabpanels",
|
|
2219
|
+
"add and close policy",
|
|
2220
|
+
"routing and persistence"
|
|
2221
|
+
],
|
|
2222
|
+
"variants": [
|
|
2223
|
+
"overflow",
|
|
2224
|
+
"keyboard and pointer reordering",
|
|
2225
|
+
"adding and closing documents"
|
|
2226
|
+
],
|
|
2227
|
+
"accessibility": [
|
|
2228
|
+
"Keep one selected tab synchronized with one named tabpanel and retain the wireTabBars disposer."
|
|
2229
|
+
],
|
|
2230
|
+
"geometry": {
|
|
2231
|
+
"margin": "child",
|
|
2232
|
+
"border": "child",
|
|
2233
|
+
"padding": "child"
|
|
2234
|
+
},
|
|
2235
|
+
"delivery": {
|
|
2236
|
+
"sideEffects": [
|
|
2237
|
+
"css"
|
|
2238
|
+
]
|
|
2239
|
+
},
|
|
2240
|
+
"wiring": [],
|
|
2241
|
+
"publicClasses": [],
|
|
2242
|
+
"publicTokens": [],
|
|
2243
|
+
"links": {
|
|
2244
|
+
"catalogRoute": "?component=application-tabs",
|
|
2245
|
+
"documentation": "docs/accessibility.md",
|
|
2246
|
+
"recipe": "docs/accessibility.md#tabs"
|
|
2247
|
+
}
|
|
2248
|
+
},
|
|
2098
2249
|
{
|
|
2099
2250
|
"id": "tabs",
|
|
2100
2251
|
"name": "AppTab",
|
|
@@ -2440,7 +2591,7 @@
|
|
|
2440
2591
|
],
|
|
2441
2592
|
"accessibility": [
|
|
2442
2593
|
"Announce result changes when useful and keep tokens atomic during editing.",
|
|
2443
|
-
"Keep leading and trailing controls aligned to the first text line while content wraps.",
|
|
2594
|
+
"Keep leading and trailing controls aligned to the first text line while content wraps. Managed Clear restores replacement focus before the next input task, preserving immediate typing and later focus handoffs without a frame delay.",
|
|
2444
2595
|
"Wire Enter to submit without inserting a contenteditable line break and preserve focus plus the text-relative caret across controlled keyboard chip deletion before the next keystroke. Select All deletion preserves managed open state and replacement focus; persist both edited query and tokens. Visual wrapping remains available.",
|
|
2445
2596
|
"In collapsible mode, wireTokenSearchFields manages this by default: activating the trigger reveals the searchbox and moves focus into it, Escape on an empty field collapses and returns focus to the trigger, and focus leaving an empty field collapses it; each behavior is individually opt-out."
|
|
2446
2597
|
],
|
|
@@ -2639,10 +2790,25 @@
|
|
|
2639
2790
|
],
|
|
2640
2791
|
"purpose": "Controlled Web Awesome select with typed form, toolbar, navigation, compact, icon-only, truncating, hint, and grouped-choice presentations.",
|
|
2641
2792
|
"publicExports": [
|
|
2642
|
-
"Select"
|
|
2793
|
+
"Select",
|
|
2794
|
+
"uiColor",
|
|
2795
|
+
"colorVar"
|
|
2796
|
+
],
|
|
2797
|
+
"cssValueProps": [
|
|
2798
|
+
{
|
|
2799
|
+
"path": "choices[].color",
|
|
2800
|
+
"grammar": "color",
|
|
2801
|
+
"helpers": ["uiColor", "colorVar"],
|
|
2802
|
+
"shorthands": [],
|
|
2803
|
+
"canonicalShorthands": [],
|
|
2804
|
+
"exceptionalShorthands": [],
|
|
2805
|
+
"rawPolicy": "forbid",
|
|
2806
|
+
"examples": ["color: uiColor(\"success\")", "color: colorVar(\"--app-choice-color\")"]
|
|
2807
|
+
}
|
|
2643
2808
|
],
|
|
2644
2809
|
"useWhen": [
|
|
2645
|
-
"Choose a controlled value from a moderate or long list, including grouped and icon-bearing choices."
|
|
2810
|
+
"Choose a controlled value from a moderate or long list, including grouped and icon-bearing choices.",
|
|
2811
|
+
"Color an optional choice icon with uiColor() or colorVar(); the CssColor contract intentionally rejects lengths and raw color strings."
|
|
2646
2812
|
],
|
|
2647
2813
|
"avoidWhen": [
|
|
2648
2814
|
"Do not use for commands or a small choice set that should stay visible."
|
|
@@ -2804,11 +2970,11 @@
|
|
|
2804
2970
|
"category": "Feedback",
|
|
2805
2971
|
"kind": "component",
|
|
2806
2972
|
"source": "kerf",
|
|
2807
|
-
"description": "Polite status and assertive alert feedback with semantic tones.",
|
|
2973
|
+
"description": "Polite status and assertive alert feedback with semantic tones, plus non-status pop emphasis for featured or novel content.",
|
|
2808
2974
|
"uses": [
|
|
2809
2975
|
"lucide-icon"
|
|
2810
2976
|
],
|
|
2811
|
-
"purpose": "
|
|
2977
|
+
"purpose": "Present persistent inline feedback or attractive non-status emphasis with a named semantic tone.",
|
|
2812
2978
|
"publicExports": [
|
|
2813
2979
|
"StateBanner"
|
|
2814
2980
|
],
|
|
@@ -2816,7 +2982,8 @@
|
|
|
2816
2982
|
"Place persistent inline semantic status beside affected work."
|
|
2817
2983
|
],
|
|
2818
2984
|
"avoidWhen": [
|
|
2819
|
-
"Do not use for an absent-content screen or transient confirmation."
|
|
2985
|
+
"Do not use for an absent-content screen or transient confirmation.",
|
|
2986
|
+
"Do not use pop as a substitute for success, warning, or danger."
|
|
2820
2987
|
],
|
|
2821
2988
|
"alternatives": [
|
|
2822
2989
|
{
|
|
@@ -2842,6 +3009,7 @@
|
|
|
2842
3009
|
"variants": [
|
|
2843
3010
|
"neutral",
|
|
2844
3011
|
"info",
|
|
3012
|
+
"pop",
|
|
2845
3013
|
"success",
|
|
2846
3014
|
"warning",
|
|
2847
3015
|
"danger",
|
|
@@ -2879,6 +3047,9 @@
|
|
|
2879
3047
|
"--kui-color-brand-border-quiet",
|
|
2880
3048
|
"--kui-color-brand-fill-quiet",
|
|
2881
3049
|
"--kui-color-brand-on-fill",
|
|
3050
|
+
"--kui-color-pop-border-normal",
|
|
3051
|
+
"--kui-color-pop-fill-quiet",
|
|
3052
|
+
"--kui-color-pop-on-fill",
|
|
2882
3053
|
"--kui-color-danger-border-quiet",
|
|
2883
3054
|
"--kui-color-danger-fill-quiet",
|
|
2884
3055
|
"--kui-color-danger-on-quiet",
|
|
@@ -2910,6 +3081,9 @@
|
|
|
2910
3081
|
"--kui-state-banner-info-background",
|
|
2911
3082
|
"--kui-state-banner-info-border",
|
|
2912
3083
|
"--kui-state-banner-info-foreground",
|
|
3084
|
+
"--kui-state-banner-pop-background",
|
|
3085
|
+
"--kui-state-banner-pop-border",
|
|
3086
|
+
"--kui-state-banner-pop-foreground",
|
|
2913
3087
|
"--kui-state-banner-neutral-background",
|
|
2914
3088
|
"--kui-state-banner-neutral-border",
|
|
2915
3089
|
"--kui-state-banner-neutral-foreground",
|
|
@@ -3082,13 +3256,50 @@
|
|
|
3082
3256
|
"publicExports": [
|
|
3083
3257
|
"Skeleton"
|
|
3084
3258
|
],
|
|
3259
|
+
"cssValueProps": [
|
|
3260
|
+
{
|
|
3261
|
+
"path": "width",
|
|
3262
|
+
"grammar": "size",
|
|
3263
|
+
"helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
|
|
3264
|
+
"nonStandaloneHelpers": ["plus"],
|
|
3265
|
+
"shorthands": ["auto", "min-content", "max-content", "fit-content"],
|
|
3266
|
+
"canonicalShorthands": ["auto", "min-content", "max-content", "fit-content"],
|
|
3267
|
+
"exceptionalShorthands": [],
|
|
3268
|
+
"rawPolicy": "forbid",
|
|
3269
|
+
"examples": ["width={em(12)}", "width=\"fit-content\""]
|
|
3270
|
+
},
|
|
3271
|
+
{
|
|
3272
|
+
"path": "height",
|
|
3273
|
+
"grammar": "size",
|
|
3274
|
+
"helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
|
|
3275
|
+
"nonStandaloneHelpers": ["plus"],
|
|
3276
|
+
"shorthands": ["auto", "min-content", "max-content", "fit-content"],
|
|
3277
|
+
"canonicalShorthands": ["auto", "min-content", "max-content", "fit-content"],
|
|
3278
|
+
"exceptionalShorthands": [],
|
|
3279
|
+
"rawPolicy": "forbid",
|
|
3280
|
+
"examples": ["height={em(1.5)}"]
|
|
3281
|
+
},
|
|
3282
|
+
{
|
|
3283
|
+
"path": "radius",
|
|
3284
|
+
"grammar": "length",
|
|
3285
|
+
"helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
|
|
3286
|
+
"nonStandaloneHelpers": ["plus"],
|
|
3287
|
+
"shorthands": [],
|
|
3288
|
+
"canonicalShorthands": [],
|
|
3289
|
+
"exceptionalShorthands": [],
|
|
3290
|
+
"rawPolicy": "forbid",
|
|
3291
|
+
"examples": ["radius={px(999)}"]
|
|
3292
|
+
}
|
|
3293
|
+
],
|
|
3085
3294
|
"useWhen": [
|
|
3086
3295
|
"Stand in for a value that is still loading, on its own or via a component's placeholder prop, keeping the surrounding layout stable.",
|
|
3087
|
-
"Placeholder a custom or free-text slot with the same visual the components' placeholder mode uses."
|
|
3296
|
+
"Placeholder a custom or free-text slot with the same visual the components' placeholder mode uses.",
|
|
3297
|
+
"Set width and height with typed length builders or finite intrinsic-size keywords; set radius with a typed length."
|
|
3088
3298
|
],
|
|
3089
3299
|
"avoidWhen": [
|
|
3090
3300
|
"Do not use for known progress or a busy spinner; use LoadingSpinner.",
|
|
3091
|
-
"Do not animate it or use it as decorative filler."
|
|
3301
|
+
"Do not animate it or use it as decorative filler.",
|
|
3302
|
+
"Do not pass raw CSS strings or cross property grammars into width, height, or radius."
|
|
3092
3303
|
],
|
|
3093
3304
|
"alternatives": [
|
|
3094
3305
|
{
|
|
@@ -3104,7 +3315,8 @@
|
|
|
3104
3315
|
"variants": [
|
|
3105
3316
|
"block",
|
|
3106
3317
|
"lines",
|
|
3107
|
-
"labeled"
|
|
3318
|
+
"labeled",
|
|
3319
|
+
"typed width, height, and radius"
|
|
3108
3320
|
],
|
|
3109
3321
|
"accessibility": [
|
|
3110
3322
|
"Decorative by default (aria-hidden); pass label to announce it as an image. A component in placeholder mode marks itself aria-busy and disables its own controls."
|
|
@@ -4135,6 +4347,9 @@
|
|
|
4135
4347
|
],
|
|
4136
4348
|
"recommendation": "supported",
|
|
4137
4349
|
"alternatives": [],
|
|
4350
|
+
"publicClasses": [
|
|
4351
|
+
"hide-actions"
|
|
4352
|
+
],
|
|
4138
4353
|
"geometry": {
|
|
4139
4354
|
"margin": "none",
|
|
4140
4355
|
"border": "child",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"accessibility": { "type": "array", "items": { "type": "string" } },
|
|
41
41
|
"publicClasses": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
42
42
|
"publicTokens": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
43
|
+
"cssValueProps": { "type": "array", "items": { "$ref": "#/$defs/cssValueProp" }, "uniqueItems": true },
|
|
43
44
|
"geometry": { "$ref": "#/$defs/geometry" },
|
|
44
45
|
"delivery": { "$ref": "#/$defs/delivery" },
|
|
45
46
|
"links": { "$ref": "#/$defs/links" }
|
|
@@ -60,6 +61,28 @@
|
|
|
60
61
|
"geometryOwner": {
|
|
61
62
|
"enum": ["self", "parent", "child", "none", "conditional"]
|
|
62
63
|
},
|
|
64
|
+
"cssValueProp": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"required": ["path", "grammar", "helpers", "shorthands", "canonicalShorthands", "exceptionalShorthands", "rawPolicy", "examples"],
|
|
67
|
+
"properties": {
|
|
68
|
+
"path": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9]*(?:\\[\\]\\.[A-Za-z][A-Za-z0-9]*)?$" },
|
|
69
|
+
"grammar": { "enum": ["length", "size", "flex", "color", "declarations", "media-query", "pixels"] },
|
|
70
|
+
"helpers": { "$ref": "#/$defs/stringList" },
|
|
71
|
+
"nonStandaloneHelpers": { "$ref": "#/$defs/stringList" },
|
|
72
|
+
"shorthands": { "$ref": "#/$defs/stringList" },
|
|
73
|
+
"canonicalShorthands": { "$ref": "#/$defs/stringList" },
|
|
74
|
+
"exceptionalShorthands": { "$ref": "#/$defs/stringList" },
|
|
75
|
+
"rawPolicy": { "enum": ["forbid", "allow", "unsafe-only"] },
|
|
76
|
+
"unsafeHelper": { "type": "string", "minLength": 1 },
|
|
77
|
+
"examples": { "$ref": "#/$defs/stringList" }
|
|
78
|
+
},
|
|
79
|
+
"additionalProperties": false
|
|
80
|
+
},
|
|
81
|
+
"stringList": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"items": { "type": "string", "minLength": 1 },
|
|
84
|
+
"uniqueItems": true
|
|
85
|
+
},
|
|
63
86
|
"alternative": {
|
|
64
87
|
"type": "object",
|
|
65
88
|
"required": ["id", "relationship"],
|