@kerfjs/ui 5.0.0-beta.17 → 5.0.0-beta.21

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.
Files changed (274) hide show
  1. package/README.md +221 -81
  2. package/ai/application-ui-diagnostic-ids-v1.json +92 -0
  3. package/ai/application-ui-profile-sync.cjs +529 -0
  4. package/ai/application-ui-profile.d.mts +1 -0
  5. package/ai/application-ui-profile.d.ts +102 -0
  6. package/ai/application-ui-profile.defaults.json +41 -0
  7. package/ai/application-ui-profile.mjs +626 -0
  8. package/ai/application-ui-profile.schema.json +130 -0
  9. package/ai/catalog-authoring.json +25 -0
  10. package/ai/catalog-authoring.schema.json +61 -0
  11. package/ai/compile-time-contracts-v1.json +101 -0
  12. package/ai/compile-time-contracts-v1.schema.json +49 -0
  13. package/ai/component-catalog-extension-v2.d.ts +7 -0
  14. package/ai/component-catalog-extension-v2.schema.json +7 -0
  15. package/ai/component-catalog-extension.schema.json +79 -0
  16. package/ai/component-catalog-v2-overrides.json +326 -0
  17. package/ai/component-catalog-v2.d.ts +67 -0
  18. package/ai/component-catalog-v2.json +4441 -0
  19. package/ai/component-catalog-v2.schema.json +246 -0
  20. package/ai/component-catalog.json +649 -6
  21. package/ai/component-catalog.schema.json +15 -0
  22. package/ai/public-api-signatures-v1.md +357 -91
  23. package/ai/skill.md +95 -50
  24. package/ai/webawesome-jsx-signatures-v1.md +1 -1
  25. package/analyzer/cli.mjs +46 -0
  26. package/analyzer/index.d.mts +45 -0
  27. package/analyzer/index.mjs +743 -0
  28. package/analyzer/report.schema.json +66 -0
  29. package/dist/app-tab.d.ts +1 -1
  30. package/dist/app-tab.js +1 -1
  31. package/dist/browser/pane.js +3 -0
  32. package/dist/browser/sunken-panel.js +3 -0
  33. package/dist/catalog-resources.d.ts +34 -0
  34. package/dist/catalog-resources.js +22 -0
  35. package/dist/catalog-resources.js.map +1 -0
  36. package/dist/catalog.d.ts +29 -4
  37. package/dist/catalog.js +302 -84
  38. package/dist/catalog.js.map +1 -1
  39. package/dist/chunk-5VTB2BKP.js +35 -0
  40. package/dist/chunk-5VTB2BKP.js.map +1 -0
  41. package/dist/chunk-6WTETUZ6.js +21 -0
  42. package/dist/chunk-6WTETUZ6.js.map +1 -0
  43. package/dist/chunk-7KEUJIIC.js +218 -0
  44. package/dist/chunk-7KEUJIIC.js.map +1 -0
  45. package/dist/chunk-7L6EHUMV.js +31 -0
  46. package/dist/chunk-7L6EHUMV.js.map +1 -0
  47. package/dist/{chunk-XXMOARTH.js → chunk-AASLYRGE.js} +57 -16
  48. package/dist/chunk-AASLYRGE.js.map +1 -0
  49. package/dist/chunk-BBRXX6PF.js +108 -0
  50. package/dist/chunk-BBRXX6PF.js.map +1 -0
  51. package/dist/{chunk-6NLRBSVX.js → chunk-CN2XNTAM.js} +129 -72
  52. package/dist/chunk-CN2XNTAM.js.map +1 -0
  53. package/dist/chunk-DPDBVKNA.js +113 -0
  54. package/dist/chunk-DPDBVKNA.js.map +1 -0
  55. package/dist/chunk-DSNIYOZ3.js +114 -0
  56. package/dist/chunk-DSNIYOZ3.js.map +1 -0
  57. package/dist/chunk-ELSJX4W7.js +68 -0
  58. package/dist/chunk-ELSJX4W7.js.map +1 -0
  59. package/dist/{chunk-AHQI52QO.js → chunk-FEY65TBV.js} +6 -2
  60. package/dist/chunk-FEY65TBV.js.map +1 -0
  61. package/dist/chunk-JRKSK2HX.js +79 -0
  62. package/dist/chunk-JRKSK2HX.js.map +1 -0
  63. package/dist/chunk-K57KRAOV.js +117 -0
  64. package/dist/chunk-K57KRAOV.js.map +1 -0
  65. package/dist/chunk-LPOMRC4C.js +25 -0
  66. package/dist/chunk-LPOMRC4C.js.map +1 -0
  67. package/dist/chunk-M7JBER5U.js +41 -0
  68. package/dist/chunk-M7JBER5U.js.map +1 -0
  69. package/dist/chunk-NENBUYX5.js +79 -0
  70. package/dist/chunk-NENBUYX5.js.map +1 -0
  71. package/dist/chunk-OHU6CI22.js +83 -0
  72. package/dist/chunk-OHU6CI22.js.map +1 -0
  73. package/dist/{chunk-YGN7OMLT.js → chunk-OZWU5ZPZ.js} +2 -2
  74. package/dist/chunk-OZWU5ZPZ.js.map +1 -0
  75. package/dist/chunk-PIDTEQ3U.js +105 -0
  76. package/dist/chunk-PIDTEQ3U.js.map +1 -0
  77. package/dist/chunk-PX3YSS5C.js +32 -0
  78. package/dist/chunk-PX3YSS5C.js.map +1 -0
  79. package/dist/chunk-PZQVSDLH.js +61 -0
  80. package/dist/chunk-PZQVSDLH.js.map +1 -0
  81. package/dist/chunk-QO55FN2Y.js +20 -0
  82. package/dist/chunk-QO55FN2Y.js.map +1 -0
  83. package/dist/chunk-QQFJMRIB.js +45 -0
  84. package/dist/chunk-QQFJMRIB.js.map +1 -0
  85. package/dist/chunk-RYRIFZCT.js +58 -0
  86. package/dist/chunk-RYRIFZCT.js.map +1 -0
  87. package/dist/{chunk-7BR3DO2A.js → chunk-SRSJO5QE.js} +13 -4
  88. package/dist/chunk-SRSJO5QE.js.map +1 -0
  89. package/dist/chunk-VLYV65LK.js +38 -0
  90. package/dist/chunk-VLYV65LK.js.map +1 -0
  91. package/dist/chunk-W4CXQYSG.js +23 -0
  92. package/dist/chunk-W4CXQYSG.js.map +1 -0
  93. package/dist/{chunk-WXMGNX2Y.js → chunk-W7YD6E4N.js} +2 -2
  94. package/dist/chunk-W7YD6E4N.js.map +1 -0
  95. package/dist/{chunk-56RJXPHG.js → chunk-Y6LYKFXY.js} +1 -1
  96. package/dist/{chunk-56RJXPHG.js.map → chunk-Y6LYKFXY.js.map} +1 -1
  97. package/dist/collapsible-panel.d.ts +2 -2
  98. package/dist/collapsible-panel.js +47 -6
  99. package/dist/collapsible-panel.js.map +1 -1
  100. package/dist/device-class.js +33 -5
  101. package/dist/device-class.js.map +1 -1
  102. package/dist/disclosure-arrow.js +1 -1
  103. package/dist/empty-state.d.ts +1 -1
  104. package/dist/empty-state.js +1 -1
  105. package/dist/floating-toolbar.d.ts +1 -1
  106. package/dist/floating-toolbar.js +1 -1
  107. package/dist/index.d.ts +6 -4
  108. package/dist/index.js +27 -25
  109. package/dist/list-action-row.d.ts +1 -1
  110. package/dist/list-action-row.js +1 -1
  111. package/dist/list-header.d.ts +30 -9
  112. package/dist/list-header.js +1 -1
  113. package/dist/list-inset-control.d.ts +1 -1
  114. package/dist/list-inset-control.js +1 -1
  115. package/dist/list-inset-text.d.ts +1 -1
  116. package/dist/list-inset-text.js +1 -1
  117. package/dist/list-item.d.ts +1 -1
  118. package/dist/list-item.js +1 -1
  119. package/dist/loading-spinner.js +1 -1
  120. package/dist/nav-stack.d.ts +1 -1
  121. package/dist/nav-stack.js +1 -1
  122. package/dist/pane.d.ts +49 -0
  123. package/dist/pane.js +4 -0
  124. package/dist/pane.js.map +1 -0
  125. package/dist/panel-header.d.ts +10 -4
  126. package/dist/panel-header.js +1 -1
  127. package/dist/resizable-region.d.ts +1 -1
  128. package/dist/resizable-region.js +1 -1
  129. package/dist/segmented-control.d.ts +6 -6
  130. package/dist/segmented-control.js +1 -1
  131. package/dist/select.d.ts +11 -5
  132. package/dist/select.js +1 -1
  133. package/dist/skeleton.d.ts +1 -1
  134. package/dist/skeleton.js +1 -1
  135. package/dist/split-view.d.ts +1 -1
  136. package/dist/split-view.js +70 -10
  137. package/dist/split-view.js.map +1 -1
  138. package/dist/state-banner.d.ts +4 -3
  139. package/dist/state-banner.js +1 -1
  140. package/dist/styles/catalog.css +32 -6
  141. package/dist/styles/layout.css +2 -20
  142. package/dist/styles/pane.css +62 -0
  143. package/dist/styles/segmented-control.css +3 -7
  144. package/dist/styles/sunken-panel.css +18 -0
  145. package/dist/sunken-panel.d.ts +16 -0
  146. package/dist/sunken-panel.js +3 -0
  147. package/dist/sunken-panel.js.map +1 -0
  148. package/dist/tab-bar.d.ts +4 -3
  149. package/dist/tab-bar.js +1 -1
  150. package/dist/tab-scaffold.d.ts +6 -6
  151. package/dist/tab-scaffold.js +43 -8
  152. package/dist/tab-scaffold.js.map +1 -1
  153. package/dist/token-search-field.d.ts +25 -9
  154. package/dist/token-search-field.js +1 -1
  155. package/dist/toolbar-control-group.d.ts +10 -6
  156. package/dist/toolbar-control-group.js +1 -1
  157. package/dist/toolbar-text.d.ts +10 -11
  158. package/dist/toolbar-text.js +1 -1
  159. package/dist/toolbar.d.ts +1 -1
  160. package/dist/toolbar.js +1 -1
  161. package/dist/value-table.d.ts +2 -2
  162. package/dist/value-table.js +1 -1
  163. package/dist/wire-catalog.d.ts +31 -2
  164. package/dist/wire-catalog.js +203 -8
  165. package/dist/wire-catalog.js.map +1 -1
  166. package/dist/wire-nav-stack.js +22 -7
  167. package/dist/wire-nav-stack.js.map +1 -1
  168. package/dist/wire-resizable-regions.d.ts +1 -1
  169. package/dist/wire-resizable-regions.js +1 -1
  170. package/dist/wire-sidebar.js +52 -41
  171. package/dist/wire-sidebar.js.map +1 -1
  172. package/dist/wire-tab-bars.d.ts +5 -2
  173. package/dist/wire-tab-bars.js +1 -1
  174. package/dist/wire-tab-scaffold.js +9 -4
  175. package/dist/wire-tab-scaffold.js.map +1 -1
  176. package/dist/wire-token-search-fields.d.ts +12 -7
  177. package/dist/wire-token-search-fields.js +1 -1
  178. package/dist/workbench.d.ts +1 -1
  179. package/dist/workbench.js +56 -9
  180. package/dist/workbench.js.map +1 -1
  181. package/docs/app-layouts.md +7 -7
  182. package/docs/catalog.md +249 -46
  183. package/docs/collapsible-panel.md +38 -11
  184. package/docs/component-contract.md +132 -7
  185. package/docs/component-selection.md +79 -67
  186. package/docs/design/templates.md +1 -1
  187. package/docs/design-philosophy.md +7 -9
  188. package/docs/device-class.md +8 -8
  189. package/docs/examples/application-ui-profile.json +60 -0
  190. package/docs/examples/command-palette-adapter.tsx +67 -17
  191. package/docs/examples/component-catalog-extension-v2.json +81 -0
  192. package/docs/examples/component-catalog-extension.json +45 -0
  193. package/docs/layout.md +51 -32
  194. package/docs/nav-stack.md +15 -6
  195. package/docs/recipes.md +4 -4
  196. package/docs/split-view.md +3 -3
  197. package/docs/sunken-panel.md +43 -0
  198. package/docs/tab-scaffold.md +16 -7
  199. package/docs/type-contracts.md +99 -0
  200. package/docs/ui-analyzer.md +81 -0
  201. package/docs/ui-doctor.md +77 -0
  202. package/docs/ui-evaluator.md +122 -0
  203. package/docs/webawesome-theme.md +8 -8
  204. package/docs/workbench.md +18 -5
  205. package/doctor/cli.mjs +115 -0
  206. package/doctor/config.schema.json +68 -0
  207. package/doctor/index.d.mts +116 -0
  208. package/doctor/index.mjs +1256 -0
  209. package/doctor/report.schema.json +118 -0
  210. package/evaluator/cli.mjs +89 -0
  211. package/evaluator/index.d.mts +90 -0
  212. package/evaluator/index.mjs +1138 -0
  213. package/evaluator/report.schema.json +152 -0
  214. package/llms.txt +58 -15
  215. package/package.json +70 -10
  216. package/ux-demo/recipes/app-shell.tsx +206 -10
  217. package/ux-demo/recipes/collapsible-sidebar.tsx +167 -44
  218. package/ux-demo/recipes/compact-toolbar.tsx +114 -12
  219. package/ux-demo/recipes/composer-form.tsx +106 -18
  220. package/ux-demo/recipes/list-detail-dialog.tsx +144 -8
  221. package/ux-demo/recipes/list-workspace-states.tsx +165 -8
  222. package/ux-demo/recipes/loaders.ts +5 -2
  223. package/ux-demo/recipes/loading-inspector.tsx +124 -41
  224. package/ux-demo/recipes/mount-recipe.ts +27 -6
  225. package/ux-demo/recipes/navigation-sidebar.tsx +120 -9
  226. package/ux-demo/recipes/navigation-stack.tsx +61 -19
  227. package/ux-demo/recipes/types.ts +3 -1
  228. package/ux-demo/recipes/workspace-header.tsx +57 -2
  229. package/dist/chunk-2Z5TWHKQ.js +0 -34
  230. package/dist/chunk-2Z5TWHKQ.js.map +0 -1
  231. package/dist/chunk-37T3VNIZ.js +0 -19
  232. package/dist/chunk-37T3VNIZ.js.map +0 -1
  233. package/dist/chunk-55DATV3A.js +0 -10
  234. package/dist/chunk-55DATV3A.js.map +0 -1
  235. package/dist/chunk-5ATCDSQS.js +0 -42
  236. package/dist/chunk-5ATCDSQS.js.map +0 -1
  237. package/dist/chunk-5E2HVJ33.js +0 -10
  238. package/dist/chunk-5E2HVJ33.js.map +0 -1
  239. package/dist/chunk-6NLRBSVX.js.map +0 -1
  240. package/dist/chunk-7BR3DO2A.js.map +0 -1
  241. package/dist/chunk-7JB7VPRI.js +0 -34
  242. package/dist/chunk-7JB7VPRI.js.map +0 -1
  243. package/dist/chunk-7LDCTU7D.js +0 -134
  244. package/dist/chunk-7LDCTU7D.js.map +0 -1
  245. package/dist/chunk-AHQI52QO.js.map +0 -1
  246. package/dist/chunk-AQNKJRFH.js +0 -79
  247. package/dist/chunk-AQNKJRFH.js.map +0 -1
  248. package/dist/chunk-AVZHJN6C.js +0 -14
  249. package/dist/chunk-AVZHJN6C.js.map +0 -1
  250. package/dist/chunk-B24C4A6T.js +0 -22
  251. package/dist/chunk-B24C4A6T.js.map +0 -1
  252. package/dist/chunk-CH4SQ6H5.js +0 -39
  253. package/dist/chunk-CH4SQ6H5.js.map +0 -1
  254. package/dist/chunk-DAFFDO33.js +0 -14
  255. package/dist/chunk-DAFFDO33.js.map +0 -1
  256. package/dist/chunk-I7INRJO4.js +0 -17
  257. package/dist/chunk-I7INRJO4.js.map +0 -1
  258. package/dist/chunk-L4OKFDJY.js +0 -24
  259. package/dist/chunk-L4OKFDJY.js.map +0 -1
  260. package/dist/chunk-M5JRI6MN.js +0 -27
  261. package/dist/chunk-M5JRI6MN.js.map +0 -1
  262. package/dist/chunk-RNPGFQ33.js +0 -10
  263. package/dist/chunk-RNPGFQ33.js.map +0 -1
  264. package/dist/chunk-VPCTCUED.js +0 -10
  265. package/dist/chunk-VPCTCUED.js.map +0 -1
  266. package/dist/chunk-WRTAQ7BZ.js +0 -23
  267. package/dist/chunk-WRTAQ7BZ.js.map +0 -1
  268. package/dist/chunk-WVPYVDXY.js +0 -15
  269. package/dist/chunk-WVPYVDXY.js.map +0 -1
  270. package/dist/chunk-WXMGNX2Y.js.map +0 -1
  271. package/dist/chunk-XXMOARTH.js.map +0 -1
  272. package/dist/chunk-YGN7OMLT.js.map +0 -1
  273. package/dist/chunk-ZQQ6P4SV.js +0 -20
  274. package/dist/chunk-ZQQ6P4SV.js.map +0 -1
@@ -39,6 +39,11 @@
39
39
  "accessibility": [
40
40
  "Decorative icons are aria-hidden; meaningful icons require a label."
41
41
  ],
42
+ "geometry": {
43
+ "margin": "none",
44
+ "border": "none",
45
+ "padding": "none"
46
+ },
42
47
  "delivery": {
43
48
  "browserImport": "@kerfjs/ui/lucide-icon",
44
49
  "manualCssImport": "@kerfjs/ui/lucide-icon.css",
@@ -90,6 +95,11 @@
90
95
  "accessibility": [
91
96
  "The arrow is decorative; expose expanded state through aria-expanded on its owning control and keep that control's accessible name stable."
92
97
  ],
98
+ "geometry": {
99
+ "margin": "none",
100
+ "border": "none",
101
+ "padding": "none"
102
+ },
93
103
  "delivery": {
94
104
  "browserImport": "@kerfjs/ui/disclosure-arrow",
95
105
  "manualCssImport": "@kerfjs/ui/disclosure-arrow.css",
@@ -211,6 +221,11 @@
211
221
  "accessibility": [
212
222
  "Preserve Web Awesome semantics and Kerf focus/contrast tokens."
213
223
  ],
224
+ "geometry": {
225
+ "margin": "child",
226
+ "border": "child",
227
+ "padding": "child"
228
+ },
214
229
  "delivery": {
215
230
  "manualCssImport": "@kerfjs/ui/webawesome.css",
216
231
  "sideEffects": [
@@ -270,6 +285,11 @@
270
285
  "Keep reading and focus order coherent when controls wrap or panes relocate, and preserve one scroll owner per pane.",
271
286
  "When collapse replaces one control with its counterpart in another toolbar, move focus to the newly rendered restore or collapse control."
272
287
  ],
288
+ "geometry": {
289
+ "margin": "child",
290
+ "border": "child",
291
+ "padding": "child"
292
+ },
273
293
  "delivery": {
274
294
  "manualCssImport": "@kerfjs/ui/layout.css",
275
295
  "sideEffects": [
@@ -283,10 +303,6 @@
283
303
  "kui-content-item--pill",
284
304
  "kui-control-cluster",
285
305
  "kui-inline-metadata",
286
- "kui-pane",
287
- "kui-pane__content",
288
- "kui-pane__footer",
289
- "kui-pane__toolbar",
290
306
  "kui-scroll-owner"
291
307
  ],
292
308
  "publicTokens": [
@@ -305,6 +321,155 @@
305
321
  "recipe": "docs/layout.md#public-roles-and-tokens"
306
322
  }
307
323
  },
324
+ {
325
+ "id": "pane",
326
+ "name": "Pane",
327
+ "category": "Structure",
328
+ "kind": "component",
329
+ "source": "kerf",
330
+ "description": "An unpadded application column with optional vertical header/footer slots, one scrolling vertical content stack, and independent logical-edge separators.",
331
+ "uses": [],
332
+ "purpose": "Organize a sidebar, main area, inspector, or dialog column into fixed vertical header/footer chrome around one scrolling content owner.",
333
+ "publicExports": [
334
+ "Pane"
335
+ ],
336
+ "useWhen": [
337
+ "An application column needs shared header, content, and optional footer organization with exactly one scrolling content owner.",
338
+ "A pane boundary needs an opt-in separator on any combination of logical sides."
339
+ ],
340
+ "avoidWhen": [
341
+ "Do not use Pane as a padded card or add a competing scroll owner around its content slot.",
342
+ "Do not enable separators merely as decoration; use them only where the pane owns a real boundary."
343
+ ],
344
+ "alternatives": [
345
+ {
346
+ "id": "layout",
347
+ "relationship": "composes-with",
348
+ "when": "Use the layout content-item and control classes inside Pane when children need shared geometry."
349
+ }
350
+ ],
351
+ "appOwns": [
352
+ "root and content semantics",
353
+ "accessible labels",
354
+ "header, content, and footer children",
355
+ "which logical boundaries show separators",
356
+ "responsive placement and visibility"
357
+ ],
358
+ "variants": [
359
+ "content only",
360
+ "header + content",
361
+ "header + content + footer",
362
+ "block-start separator",
363
+ "block-end separator",
364
+ "inline-start separator",
365
+ "inline-end separator"
366
+ ],
367
+ "accessibility": [
368
+ "Choose semantic root and content elements that match the region and provide labels for landmark elements.",
369
+ "Keep fixed header/footer chrome outside the single scrolling content slot so reading and focus order remain coherent."
370
+ ],
371
+ "geometry": {
372
+ "margin": "child",
373
+ "border": "conditional",
374
+ "padding": "child",
375
+ "notes": [
376
+ "The pane is unpadded; separators are independently opt-in on logical edges and default off."
377
+ ]
378
+ },
379
+ "delivery": {
380
+ "browserImport": "@kerfjs/ui/pane",
381
+ "manualCssImport": "@kerfjs/ui/pane.css",
382
+ "sideEffects": [
383
+ "browser-condition-css"
384
+ ]
385
+ },
386
+ "wiring": [],
387
+ "publicClasses": [
388
+ "kui-pane",
389
+ "kui-pane__content",
390
+ "kui-pane__footer",
391
+ "kui-pane__header",
392
+ "kui-pane__toolbar"
393
+ ],
394
+ "publicTokens": [
395
+ "--kui-pane-separator-color",
396
+ "--kui-pane-separator-width"
397
+ ],
398
+ "links": {
399
+ "catalogRoute": "?component=pane",
400
+ "documentation": "docs/component-selection.md",
401
+ "recipe": "docs/layout.md#anatomy"
402
+ }
403
+ },
404
+ {
405
+ "id": "sunken-panel",
406
+ "name": "SunkenPanel",
407
+ "category": "Structure",
408
+ "kind": "component",
409
+ "source": "kerf",
410
+ "description": "A lowered application surface with one compact inset and a vertical content stack.",
411
+ "uses": [],
412
+ "purpose": "Group a vertical list of application content on a visually lowered surface with one owned 8px inset.",
413
+ "publicExports": [
414
+ "SunkenPanel"
415
+ ],
416
+ "useWhen": [
417
+ "A main content region or nested work area needs a darker/lowered background and one compact inset around a vertical stack."
418
+ ],
419
+ "avoidWhen": [
420
+ "Do not use it merely to add padding, as a substitute for Pane anatomy, or around children that already own the same outer surface."
421
+ ],
422
+ "alternatives": [
423
+ {
424
+ "id": "layout",
425
+ "relationship": "composes-with",
426
+ "when": "Use layout roles for pane, toolbar, scroll, and ordinary content-stack ownership."
427
+ }
428
+ ],
429
+ "appOwns": [
430
+ "region semantics and accessible name",
431
+ "scroll ownership",
432
+ "child ordering and content"
433
+ ],
434
+ "variants": [
435
+ "unnamed surface",
436
+ "named region"
437
+ ],
438
+ "accessibility": [
439
+ "Pass ariaLabel only when the surface is a distinct named region; otherwise it remains a non-landmark grouping."
440
+ ],
441
+ "geometry": {
442
+ "margin": "none",
443
+ "border": "none",
444
+ "padding": "self",
445
+ "notes": [
446
+ "The root owns one 8px inset and vertical gap; children own their borders and internal geometry."
447
+ ]
448
+ },
449
+ "delivery": {
450
+ "browserImport": "@kerfjs/ui/sunken-panel",
451
+ "manualCssImport": "@kerfjs/ui/sunken-panel.css",
452
+ "sideEffects": [
453
+ "browser-condition-css"
454
+ ]
455
+ },
456
+ "wiring": [],
457
+ "publicClasses": [
458
+ "kui-sunken-panel"
459
+ ],
460
+ "publicTokens": [
461
+ "--kui-sunken-panel-background",
462
+ "--kui-sunken-panel-foreground",
463
+ "--kui-sunken-panel-gap",
464
+ "--kui-sunken-panel-padding",
465
+ "--kui-sunken-panel-radius"
466
+ ],
467
+ "links": {
468
+ "catalogRoute": "?component=sunken-panel",
469
+ "documentation": "docs/sunken-panel.md",
470
+ "recipe": "docs/sunken-panel.md#ownership"
471
+ }
472
+ },
308
473
  {
309
474
  "id": "toolbar",
310
475
  "name": "Toolbar",
@@ -345,6 +510,14 @@
345
510
  "accessibility": [
346
511
  "Supply a label when the toolbar needs an accessible name."
347
512
  ],
513
+ "geometry": {
514
+ "margin": "none",
515
+ "border": "conditional",
516
+ "padding": "self",
517
+ "notes": [
518
+ "Padding belongs to the toolbar; the optional divider variant also owns its border."
519
+ ]
520
+ },
348
521
  "delivery": {
349
522
  "browserImport": "@kerfjs/ui/toolbar",
350
523
  "manualCssImport": "@kerfjs/ui/toolbar.css",
@@ -416,6 +589,11 @@
416
589
  "accessibility": [
417
590
  "Name the group when its relationship is not evident from context."
418
591
  ],
592
+ "geometry": {
593
+ "margin": "none",
594
+ "border": "self",
595
+ "padding": "self"
596
+ },
419
597
  "delivery": {
420
598
  "browserImport": "@kerfjs/ui/toolbar-control-group",
421
599
  "manualCssImport": "@kerfjs/ui/toolbar-control-group.css",
@@ -496,6 +674,11 @@
496
674
  "accessibility": [
497
675
  "Give the toolbar an accessible name (label is required — it exposes role=\"toolbar\")."
498
676
  ],
677
+ "geometry": {
678
+ "margin": "none",
679
+ "border": "child",
680
+ "padding": "child"
681
+ },
499
682
  "delivery": {
500
683
  "browserImport": "@kerfjs/ui/floating-toolbar",
501
684
  "manualCssImport": "@kerfjs/ui/floating-toolbar.css",
@@ -555,6 +738,11 @@
555
738
  "accessibility": [
556
739
  "Plain text is not a heading; pass headingLevel to expose role=heading + aria-level for a page/section title."
557
740
  ],
741
+ "geometry": {
742
+ "margin": "none",
743
+ "border": "none",
744
+ "padding": "none"
745
+ },
558
746
  "delivery": {
559
747
  "browserImport": "@kerfjs/ui/toolbar-text",
560
748
  "manualCssImport": "@kerfjs/ui/toolbar-text.css",
@@ -621,6 +809,11 @@
621
809
  "accessibility": [
622
810
  "Preserve heading and description relationships for the containing surface."
623
811
  ],
812
+ "geometry": {
813
+ "margin": "child",
814
+ "border": "child",
815
+ "padding": "child"
816
+ },
624
817
  "delivery": {
625
818
  "sideEffects": [
626
819
  "css"
@@ -688,6 +881,11 @@
688
881
  "Pass the trailing actions as a labeled ToolbarControlGroup when the group needs an accessible name.",
689
882
  "For a page/view title pass headingLevel (usually 1) so the title exposes role=heading + aria-level as a heading landmark; omit it for a dialog title, which is referenced via aria-labelledby to titleId."
690
883
  ],
884
+ "geometry": {
885
+ "margin": "none",
886
+ "border": "child",
887
+ "padding": "child"
888
+ },
691
889
  "delivery": {
692
890
  "browserImport": "@kerfjs/ui/panel-header",
693
891
  "manualCssImport": "@kerfjs/ui/panel-header.css",
@@ -750,6 +948,11 @@
750
948
  "accessibility": [
751
949
  "Name ValueTable with its label; ValueTableRow supplies dt/dd semantics, and row icons stay decorative unless meaning requires an accessible label."
752
950
  ],
951
+ "geometry": {
952
+ "margin": "self",
953
+ "border": "self",
954
+ "padding": "self"
955
+ },
753
956
  "delivery": {
754
957
  "browserImport": "@kerfjs/ui/value-table",
755
958
  "manualCssImport": "@kerfjs/ui/value-table.css",
@@ -822,6 +1025,11 @@
822
1025
  "Use native links for link navigation, retain ListItem button semantics for actions, and keep standalone header and toolbar actions at least 44px square.",
823
1026
  "A ListHeader disclosure controls real content, keeps a stable accessible name and aria-expanded state, and uses the production DisclosureArrow visual."
824
1027
  ],
1028
+ "geometry": {
1029
+ "margin": "child",
1030
+ "border": "child",
1031
+ "padding": "child"
1032
+ },
825
1033
  "delivery": {
826
1034
  "manualCssImport": "@kerfjs/ui/layout.css",
827
1035
  "sideEffects": [
@@ -831,8 +1039,7 @@
831
1039
  "wiring": [],
832
1040
  "publicClasses": [
833
1041
  "kui-content",
834
- "kui-content-item",
835
- "kui-pane"
1042
+ "kui-content-item"
836
1043
  ],
837
1044
  "publicTokens": [
838
1045
  "--kui-layout-content-gap",
@@ -895,6 +1102,11 @@
895
1102
  "A valid count is hidden as duplicate visual text and its required localized countLabel joins the owned heading or disclosure-button accessible name; zero remains visible.",
896
1103
  "The application controls and updates disclosure state and the revealed content; the default DisclosureArrow mirrors expanded while the button name stays stable. triggerAttributes can describe the controlled relationship but cannot replace the owned accessible name or expanded state."
897
1104
  ],
1105
+ "geometry": {
1106
+ "margin": "self",
1107
+ "border": "self",
1108
+ "padding": "self"
1109
+ },
898
1110
  "delivery": {
899
1111
  "browserImport": "@kerfjs/ui/list-header",
900
1112
  "manualCssImport": "@kerfjs/ui/list-header.css",
@@ -985,6 +1197,11 @@
985
1197
  "The noninteractive root contains two sibling native buttons in primary-then-trailing focus order; each button has its own action, item identity, accessible name, and disabled state.",
986
1198
  "Selection semantics are exposed only by the primary button; label, icon, and trailingActionIcon are dormant SafeHtml and must not contain interactive descendants; never place an interactive descendant in ListItem.trailing."
987
1199
  ],
1200
+ "geometry": {
1201
+ "margin": "self",
1202
+ "border": "self",
1203
+ "padding": "self"
1204
+ },
988
1205
  "delivery": {
989
1206
  "browserImport": "@kerfjs/ui/list-action-row",
990
1207
  "manualCssImport": "@kerfjs/ui/list-action-row.css",
@@ -1074,6 +1291,11 @@
1074
1291
  "accessibility": [
1075
1292
  "Uses native button activation; selected maps to aria-current and pressed to aria-pressed; rootAttributes cannot add role=menuitem or replace owned ARIA; trailing is dormant content and must not contain controls."
1076
1293
  ],
1294
+ "geometry": {
1295
+ "margin": "self",
1296
+ "border": "self",
1297
+ "padding": "self"
1298
+ },
1077
1299
  "delivery": {
1078
1300
  "browserImport": "@kerfjs/ui/list-item",
1079
1301
  "manualCssImport": "@kerfjs/ui/list-item.css",
@@ -1139,6 +1361,11 @@
1139
1361
  "accessibility": [
1140
1362
  "A layout wrapper only; it adds no role or name — the wrapped control keeps its own."
1141
1363
  ],
1364
+ "geometry": {
1365
+ "margin": "self",
1366
+ "border": "child",
1367
+ "padding": "child"
1368
+ },
1142
1369
  "delivery": {
1143
1370
  "browserImport": "@kerfjs/ui/list-inset-control",
1144
1371
  "manualCssImport": "@kerfjs/ui/list-inset-control.css",
@@ -1189,6 +1416,11 @@
1189
1416
  "accessibility": [
1190
1417
  "A layout wrapper only; it adds no role or name."
1191
1418
  ],
1419
+ "geometry": {
1420
+ "margin": "self",
1421
+ "border": "self",
1422
+ "padding": "self"
1423
+ },
1192
1424
  "delivery": {
1193
1425
  "browserImport": "@kerfjs/ui/list-inset-text",
1194
1426
  "manualCssImport": "@kerfjs/ui/list-inset-text.css",
@@ -1255,6 +1487,11 @@
1255
1487
  "Keep closeIcon decorative and free of interactive descendants; the owning close button supplies its accessible name and interaction.",
1256
1488
  "Use rootAttributes only for application data-* metadata; component-owned identity, state, action, and role semantics are protected at runtime."
1257
1489
  ],
1490
+ "geometry": {
1491
+ "margin": "none",
1492
+ "border": "self",
1493
+ "padding": "self"
1494
+ },
1258
1495
  "delivery": {
1259
1496
  "browserImport": "@kerfjs/ui/app-tab",
1260
1497
  "manualCssImport": "@kerfjs/ui/app-tab.css",
@@ -1350,6 +1587,11 @@
1350
1587
  "accessibility": [
1351
1588
  "Keep exactly one selected tab at tabindex 0 and preserve the wiring keyboard model."
1352
1589
  ],
1590
+ "geometry": {
1591
+ "margin": "none",
1592
+ "border": "self",
1593
+ "padding": "self"
1594
+ },
1353
1595
  "delivery": {
1354
1596
  "browserImport": "@kerfjs/ui/tab-bar",
1355
1597
  "manualCssImport": "@kerfjs/ui/tab-bar.css",
@@ -1438,6 +1680,11 @@
1438
1680
  "accessibility": [
1439
1681
  "Keep choice labels meaningful and every enabled native button in sequential Tab order."
1440
1682
  ],
1683
+ "geometry": {
1684
+ "margin": "none",
1685
+ "border": "self",
1686
+ "padding": "self"
1687
+ },
1441
1688
  "delivery": {
1442
1689
  "browserImport": "@kerfjs/ui/segmented-control",
1443
1690
  "manualCssImport": "@kerfjs/ui/segmented-control.css",
@@ -1533,6 +1780,11 @@
1533
1780
  "Wire Enter to submit without inserting a contenteditable line break and preserve focus plus the text-relative caret across controlled keyboard chip deletion; visual wrapping remains available.",
1534
1781
  "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."
1535
1782
  ],
1783
+ "geometry": {
1784
+ "margin": "none",
1785
+ "border": "self",
1786
+ "padding": "self"
1787
+ },
1536
1788
  "delivery": {
1537
1789
  "browserImport": "@kerfjs/ui/token-search-field",
1538
1790
  "manualCssImport": "@kerfjs/ui/token-search-field.css",
@@ -1644,6 +1896,14 @@
1644
1896
  "Preserve separator naming, value ARIA, and keyboard behavior.",
1645
1897
  "Keep handleIcon decorative and free of interactive descendants; the separator owns focus, naming, and pointer/keyboard interaction."
1646
1898
  ],
1899
+ "geometry": {
1900
+ "margin": "none",
1901
+ "border": "conditional",
1902
+ "padding": "conditional",
1903
+ "notes": [
1904
+ "The region delegates visible separator geometry and hit-area padding to its orientation-specific handle."
1905
+ ]
1906
+ },
1647
1907
  "delivery": {
1648
1908
  "browserImport": "@kerfjs/ui/resizable-region",
1649
1909
  "manualCssImport": "@kerfjs/ui/resizable-region.css",
@@ -1744,6 +2004,11 @@
1744
2004
  "accessibility": [
1745
2005
  "Verify the live value, standard events, focus, and rendered output."
1746
2006
  ],
2007
+ "geometry": {
2008
+ "margin": "none",
2009
+ "border": "self",
2010
+ "padding": "self"
2011
+ },
1747
2012
  "delivery": {
1748
2013
  "browserImport": "@kerfjs/ui/select",
1749
2014
  "manualCssImport": "@kerfjs/ui/select.css",
@@ -1829,6 +2094,11 @@
1829
2094
  "accessibility": [
1830
2095
  "Choose polite status versus assertive alert deliberately."
1831
2096
  ],
2097
+ "geometry": {
2098
+ "margin": "child",
2099
+ "border": "child",
2100
+ "padding": "child"
2101
+ },
1832
2102
  "delivery": {
1833
2103
  "sideEffects": [
1834
2104
  "css"
@@ -1896,6 +2166,11 @@
1896
2166
  "accessibility": [
1897
2167
  "Use alert urgency only for an attention-requiring failure."
1898
2168
  ],
2169
+ "geometry": {
2170
+ "margin": "self",
2171
+ "border": "self",
2172
+ "padding": "self"
2173
+ },
1899
2174
  "delivery": {
1900
2175
  "browserImport": "@kerfjs/ui/state-banner",
1901
2176
  "manualCssImport": "@kerfjs/ui/state-banner.css",
@@ -2003,6 +2278,11 @@
2003
2278
  "accessibility": [
2004
2279
  "Busy state uses aria-busy; the illustration never supplies the only label."
2005
2280
  ],
2281
+ "geometry": {
2282
+ "margin": "self",
2283
+ "border": "self",
2284
+ "padding": "self"
2285
+ },
2006
2286
  "delivery": {
2007
2287
  "browserImport": "@kerfjs/ui/empty-state",
2008
2288
  "manualCssImport": "@kerfjs/ui/empty-state.css",
@@ -2075,6 +2355,11 @@
2075
2355
  "accessibility": [
2076
2356
  "Labeled spinners use role img; decorative spinners are hidden and stop for reduced motion."
2077
2357
  ],
2358
+ "geometry": {
2359
+ "margin": "none",
2360
+ "border": "none",
2361
+ "padding": "none"
2362
+ },
2078
2363
  "delivery": {
2079
2364
  "browserImport": "@kerfjs/ui/loading-spinner",
2080
2365
  "manualCssImport": "@kerfjs/ui/loading-spinner.css",
@@ -2132,6 +2417,11 @@
2132
2417
  "accessibility": [
2133
2418
  "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."
2134
2419
  ],
2420
+ "geometry": {
2421
+ "margin": "none",
2422
+ "border": "none",
2423
+ "padding": "none"
2424
+ },
2135
2425
  "delivery": {
2136
2426
  "browserImport": "@kerfjs/ui/skeleton",
2137
2427
  "manualCssImport": "@kerfjs/ui/skeleton.css",
@@ -2174,6 +2464,11 @@
2174
2464
  ],
2175
2465
  "recommendation": "supported",
2176
2466
  "alternatives": [],
2467
+ "geometry": {
2468
+ "margin": "none",
2469
+ "border": "self",
2470
+ "padding": "self"
2471
+ },
2177
2472
  "delivery": {
2178
2473
  "registrationImport": "@awesome.me/webawesome/dist/components/button/button.js",
2179
2474
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2212,6 +2507,11 @@
2212
2507
  "relationship": "prefer-kerf"
2213
2508
  }
2214
2509
  ],
2510
+ "geometry": {
2511
+ "margin": "none",
2512
+ "border": "child",
2513
+ "padding": "child"
2514
+ },
2215
2515
  "delivery": {
2216
2516
  "registrationImport": "@awesome.me/webawesome/dist/components/button-group/button-group.js",
2217
2517
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2246,6 +2546,11 @@
2246
2546
  ],
2247
2547
  "recommendation": "supported",
2248
2548
  "alternatives": [],
2549
+ "geometry": {
2550
+ "margin": "none",
2551
+ "border": "self",
2552
+ "padding": "self"
2553
+ },
2249
2554
  "delivery": {
2250
2555
  "registrationImport": "@awesome.me/webawesome/dist/components/copy-button/copy-button.js",
2251
2556
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2285,6 +2590,11 @@
2285
2590
  "relationship": "prefer-kerf"
2286
2591
  }
2287
2592
  ],
2593
+ "geometry": {
2594
+ "margin": "none",
2595
+ "border": "child",
2596
+ "padding": "child"
2597
+ },
2288
2598
  "delivery": {
2289
2599
  "registrationImport": "@awesome.me/webawesome/dist/components/dropdown/dropdown.js",
2290
2600
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2323,6 +2633,11 @@
2323
2633
  "relationship": "prefer-kerf"
2324
2634
  }
2325
2635
  ],
2636
+ "geometry": {
2637
+ "margin": "none",
2638
+ "border": "self",
2639
+ "padding": "self"
2640
+ },
2326
2641
  "delivery": {
2327
2642
  "registrationImport": "@awesome.me/webawesome/dist/components/dropdown-item/dropdown-item.js",
2328
2643
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2356,6 +2671,11 @@
2356
2671
  ],
2357
2672
  "recommendation": "supported",
2358
2673
  "alternatives": [],
2674
+ "geometry": {
2675
+ "margin": "none",
2676
+ "border": "self",
2677
+ "padding": "self"
2678
+ },
2359
2679
  "delivery": {
2360
2680
  "registrationImport": "@awesome.me/webawesome/dist/components/checkbox/checkbox.js",
2361
2681
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2389,6 +2709,11 @@
2389
2709
  ],
2390
2710
  "recommendation": "supported",
2391
2711
  "alternatives": [],
2712
+ "geometry": {
2713
+ "margin": "self",
2714
+ "border": "child",
2715
+ "padding": "child"
2716
+ },
2392
2717
  "delivery": {
2393
2718
  "registrationImport": "@awesome.me/webawesome/dist/components/checkbox-group/checkbox-group.js",
2394
2719
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2425,6 +2750,11 @@
2425
2750
  ],
2426
2751
  "recommendation": "supported",
2427
2752
  "alternatives": [],
2753
+ "geometry": {
2754
+ "margin": "none",
2755
+ "border": "self",
2756
+ "padding": "self"
2757
+ },
2428
2758
  "delivery": {
2429
2759
  "registrationImport": "@awesome.me/webawesome/dist/components/color-picker/color-picker.js",
2430
2760
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2463,6 +2793,11 @@
2463
2793
  "relationship": "prefer-kerf"
2464
2794
  }
2465
2795
  ],
2796
+ "geometry": {
2797
+ "margin": "none",
2798
+ "border": "self",
2799
+ "padding": "self"
2800
+ },
2466
2801
  "delivery": {
2467
2802
  "registrationImport": "@awesome.me/webawesome/dist/components/input/input.js",
2468
2803
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2494,6 +2829,11 @@
2494
2829
  ],
2495
2830
  "recommendation": "supported",
2496
2831
  "alternatives": [],
2832
+ "geometry": {
2833
+ "margin": "none",
2834
+ "border": "self",
2835
+ "padding": "self"
2836
+ },
2497
2837
  "delivery": {
2498
2838
  "registrationImport": "@awesome.me/webawesome/dist/components/known-date/known-date.js",
2499
2839
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2527,6 +2867,11 @@
2527
2867
  ],
2528
2868
  "recommendation": "supported",
2529
2869
  "alternatives": [],
2870
+ "geometry": {
2871
+ "margin": "none",
2872
+ "border": "self",
2873
+ "padding": "self"
2874
+ },
2530
2875
  "delivery": {
2531
2876
  "registrationImport": "@awesome.me/webawesome/dist/components/number-input/number-input.js",
2532
2877
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2565,6 +2910,11 @@
2565
2910
  "relationship": "prefer-kerf"
2566
2911
  }
2567
2912
  ],
2913
+ "geometry": {
2914
+ "margin": "none",
2915
+ "border": "self",
2916
+ "padding": "self"
2917
+ },
2568
2918
  "delivery": {
2569
2919
  "registrationImport": "@awesome.me/webawesome/dist/components/option/option.js",
2570
2920
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2596,6 +2946,11 @@
2596
2946
  ],
2597
2947
  "recommendation": "supported",
2598
2948
  "alternatives": [],
2949
+ "geometry": {
2950
+ "margin": "none",
2951
+ "border": "self",
2952
+ "padding": "self"
2953
+ },
2599
2954
  "delivery": {
2600
2955
  "registrationImport": "@awesome.me/webawesome/dist/components/otp-input/otp-input.js",
2601
2956
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2629,6 +2984,11 @@
2629
2984
  ],
2630
2985
  "recommendation": "supported",
2631
2986
  "alternatives": [],
2987
+ "geometry": {
2988
+ "margin": "none",
2989
+ "border": "self",
2990
+ "padding": "self"
2991
+ },
2632
2992
  "delivery": {
2633
2993
  "registrationImport": "@awesome.me/webawesome/dist/components/radio/radio.js",
2634
2994
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2662,6 +3022,11 @@
2662
3022
  ],
2663
3023
  "recommendation": "supported",
2664
3024
  "alternatives": [],
3025
+ "geometry": {
3026
+ "margin": "self",
3027
+ "border": "child",
3028
+ "padding": "child"
3029
+ },
2665
3030
  "delivery": {
2666
3031
  "registrationImport": "@awesome.me/webawesome/dist/components/radio-group/radio-group.js",
2667
3032
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2695,6 +3060,11 @@
2695
3060
  ],
2696
3061
  "recommendation": "supported",
2697
3062
  "alternatives": [],
3063
+ "geometry": {
3064
+ "margin": "none",
3065
+ "border": "none",
3066
+ "padding": "none"
3067
+ },
2698
3068
  "delivery": {
2699
3069
  "registrationImport": "@awesome.me/webawesome/dist/components/rating/rating.js",
2700
3070
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2736,6 +3106,11 @@
2736
3106
  "relationship": "prefer-kerf"
2737
3107
  }
2738
3108
  ],
3109
+ "geometry": {
3110
+ "margin": "none",
3111
+ "border": "self",
3112
+ "padding": "self"
3113
+ },
2739
3114
  "delivery": {
2740
3115
  "registrationImport": "@awesome.me/webawesome/dist/components/select/select.js",
2741
3116
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2769,6 +3144,11 @@
2769
3144
  ],
2770
3145
  "recommendation": "supported",
2771
3146
  "alternatives": [],
3147
+ "geometry": {
3148
+ "margin": "self",
3149
+ "border": "none",
3150
+ "padding": "child"
3151
+ },
2772
3152
  "delivery": {
2773
3153
  "registrationImport": "@awesome.me/webawesome/dist/components/slider/slider.js",
2774
3154
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2800,6 +3180,11 @@
2800
3180
  ],
2801
3181
  "recommendation": "supported",
2802
3182
  "alternatives": [],
3183
+ "geometry": {
3184
+ "margin": "none",
3185
+ "border": "self",
3186
+ "padding": "self"
3187
+ },
2803
3188
  "delivery": {
2804
3189
  "registrationImport": "@awesome.me/webawesome/dist/components/switch/switch.js",
2805
3190
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2831,6 +3216,11 @@
2831
3216
  ],
2832
3217
  "recommendation": "supported",
2833
3218
  "alternatives": [],
3219
+ "geometry": {
3220
+ "margin": "none",
3221
+ "border": "self",
3222
+ "padding": "self"
3223
+ },
2834
3224
  "delivery": {
2835
3225
  "registrationImport": "@awesome.me/webawesome/dist/components/textarea/textarea.js",
2836
3226
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2865,6 +3255,11 @@
2865
3255
  ],
2866
3256
  "recommendation": "supported",
2867
3257
  "alternatives": [],
3258
+ "geometry": {
3259
+ "margin": "none",
3260
+ "border": "self",
3261
+ "padding": "self"
3262
+ },
2868
3263
  "delivery": {
2869
3264
  "registrationImport": "@awesome.me/webawesome/dist/components/time-input/time-input.js",
2870
3265
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2898,6 +3293,11 @@
2898
3293
  ],
2899
3294
  "recommendation": "supported",
2900
3295
  "alternatives": [],
3296
+ "geometry": {
3297
+ "margin": "self",
3298
+ "border": "self",
3299
+ "padding": "self"
3300
+ },
2901
3301
  "delivery": {
2902
3302
  "registrationImport": "@awesome.me/webawesome/dist/components/accordion/accordion.js",
2903
3303
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2931,6 +3331,11 @@
2931
3331
  ],
2932
3332
  "recommendation": "supported",
2933
3333
  "alternatives": [],
3334
+ "geometry": {
3335
+ "margin": "none",
3336
+ "border": "self",
3337
+ "padding": "self"
3338
+ },
2934
3339
  "delivery": {
2935
3340
  "registrationImport": "@awesome.me/webawesome/dist/components/accordion-item/accordion-item.js",
2936
3341
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2962,6 +3367,11 @@
2962
3367
  ],
2963
3368
  "recommendation": "supported",
2964
3369
  "alternatives": [],
3370
+ "geometry": {
3371
+ "margin": "self",
3372
+ "border": "self",
3373
+ "padding": "self"
3374
+ },
2965
3375
  "delivery": {
2966
3376
  "registrationImport": "@awesome.me/webawesome/dist/components/card/card.js",
2967
3377
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -2995,6 +3405,11 @@
2995
3405
  ],
2996
3406
  "recommendation": "supported",
2997
3407
  "alternatives": [],
3408
+ "geometry": {
3409
+ "margin": "self",
3410
+ "border": "self",
3411
+ "padding": "self"
3412
+ },
2998
3413
  "delivery": {
2999
3414
  "registrationImport": "@awesome.me/webawesome/dist/components/details/details.js",
3000
3415
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3028,6 +3443,11 @@
3028
3443
  ],
3029
3444
  "recommendation": "supported",
3030
3445
  "alternatives": [],
3446
+ "geometry": {
3447
+ "margin": "none",
3448
+ "border": "child",
3449
+ "padding": "child"
3450
+ },
3031
3451
  "delivery": {
3032
3452
  "registrationImport": "@awesome.me/webawesome/dist/components/dialog/dialog.js",
3033
3453
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3059,6 +3479,11 @@
3059
3479
  ],
3060
3480
  "recommendation": "supported",
3061
3481
  "alternatives": [],
3482
+ "geometry": {
3483
+ "margin": "parent",
3484
+ "border": "self",
3485
+ "padding": "none"
3486
+ },
3062
3487
  "delivery": {
3063
3488
  "registrationImport": "@awesome.me/webawesome/dist/components/divider/divider.js",
3064
3489
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3092,6 +3517,11 @@
3092
3517
  ],
3093
3518
  "recommendation": "supported",
3094
3519
  "alternatives": [],
3520
+ "geometry": {
3521
+ "margin": "none",
3522
+ "border": "child",
3523
+ "padding": "child"
3524
+ },
3095
3525
  "delivery": {
3096
3526
  "registrationImport": "@awesome.me/webawesome/dist/components/drawer/drawer.js",
3097
3527
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3123,6 +3553,11 @@
3123
3553
  ],
3124
3554
  "recommendation": "supported",
3125
3555
  "alternatives": [],
3556
+ "geometry": {
3557
+ "margin": "none",
3558
+ "border": "child",
3559
+ "padding": "child"
3560
+ },
3126
3561
  "delivery": {
3127
3562
  "registrationImport": "@awesome.me/webawesome/dist/components/page/page.js",
3128
3563
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3154,6 +3589,11 @@
3154
3589
  ],
3155
3590
  "recommendation": "supported",
3156
3591
  "alternatives": [],
3592
+ "geometry": {
3593
+ "margin": "none",
3594
+ "border": "child",
3595
+ "padding": "child"
3596
+ },
3157
3597
  "delivery": {
3158
3598
  "registrationImport": "@awesome.me/webawesome/dist/components/scroller/scroller.js",
3159
3599
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3190,6 +3630,11 @@
3190
3630
  "relationship": "prefer-kerf"
3191
3631
  }
3192
3632
  ],
3633
+ "geometry": {
3634
+ "margin": "none",
3635
+ "border": "child",
3636
+ "padding": "child"
3637
+ },
3193
3638
  "delivery": {
3194
3639
  "registrationImport": "@awesome.me/webawesome/dist/components/split-panel/split-panel.js",
3195
3640
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3224,6 +3669,11 @@
3224
3669
  ],
3225
3670
  "recommendation": "supported",
3226
3671
  "alternatives": [],
3672
+ "geometry": {
3673
+ "margin": "none",
3674
+ "border": "child",
3675
+ "padding": "child"
3676
+ },
3227
3677
  "delivery": {
3228
3678
  "registrationImport": "@awesome.me/webawesome/dist/components/breadcrumb/breadcrumb.js",
3229
3679
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3255,6 +3705,11 @@
3255
3705
  ],
3256
3706
  "recommendation": "supported",
3257
3707
  "alternatives": [],
3708
+ "geometry": {
3709
+ "margin": "none",
3710
+ "border": "none",
3711
+ "padding": "none"
3712
+ },
3258
3713
  "delivery": {
3259
3714
  "registrationImport": "@awesome.me/webawesome/dist/components/breadcrumb-item/breadcrumb-item.js",
3260
3715
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3288,6 +3743,11 @@
3288
3743
  ],
3289
3744
  "recommendation": "supported",
3290
3745
  "alternatives": [],
3746
+ "geometry": {
3747
+ "margin": "none",
3748
+ "border": "child",
3749
+ "padding": "child"
3750
+ },
3291
3751
  "delivery": {
3292
3752
  "registrationImport": "@awesome.me/webawesome/dist/components/pagination/pagination.js",
3293
3753
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3328,6 +3788,11 @@
3328
3788
  "relationship": "prefer-kerf"
3329
3789
  }
3330
3790
  ],
3791
+ "geometry": {
3792
+ "margin": "none",
3793
+ "border": "self",
3794
+ "padding": "self"
3795
+ },
3331
3796
  "delivery": {
3332
3797
  "registrationImport": "@awesome.me/webawesome/dist/components/tab/tab.js",
3333
3798
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3372,6 +3837,11 @@
3372
3837
  "relationship": "prefer-kerf"
3373
3838
  }
3374
3839
  ],
3840
+ "geometry": {
3841
+ "margin": "none",
3842
+ "border": "child",
3843
+ "padding": "child"
3844
+ },
3375
3845
  "delivery": {
3376
3846
  "registrationImport": "@awesome.me/webawesome/dist/components/tab-group/tab-group.js",
3377
3847
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3408,6 +3878,14 @@
3408
3878
  "relationship": "prefer-kerf"
3409
3879
  }
3410
3880
  ],
3881
+ "geometry": {
3882
+ "margin": "none",
3883
+ "border": "none",
3884
+ "padding": "conditional",
3885
+ "notes": [
3886
+ "Container-mode tab panels own the themed container inset; uncontained panels do not."
3887
+ ]
3888
+ },
3411
3889
  "delivery": {
3412
3890
  "registrationImport": "@awesome.me/webawesome/dist/components/tab-panel/tab-panel.js",
3413
3891
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3441,6 +3919,11 @@
3441
3919
  ],
3442
3920
  "recommendation": "exceptional",
3443
3921
  "alternatives": [],
3922
+ "geometry": {
3923
+ "margin": "none",
3924
+ "border": "child",
3925
+ "padding": "child"
3926
+ },
3444
3927
  "delivery": {
3445
3928
  "registrationImport": "@awesome.me/webawesome/dist/components/tree/tree.js",
3446
3929
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3476,6 +3959,11 @@
3476
3959
  ],
3477
3960
  "recommendation": "exceptional",
3478
3961
  "alternatives": [],
3962
+ "geometry": {
3963
+ "margin": "none",
3964
+ "border": "self",
3965
+ "padding": "self"
3966
+ },
3479
3967
  "delivery": {
3480
3968
  "registrationImport": "@awesome.me/webawesome/dist/components/tree-item/tree-item.js",
3481
3969
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3507,6 +3995,11 @@
3507
3995
  ],
3508
3996
  "recommendation": "supported",
3509
3997
  "alternatives": [],
3998
+ "geometry": {
3999
+ "margin": "none",
4000
+ "border": "self",
4001
+ "padding": "self"
4002
+ },
3510
4003
  "delivery": {
3511
4004
  "registrationImport": "@awesome.me/webawesome/dist/components/badge/badge.js",
3512
4005
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3543,6 +4036,11 @@
3543
4036
  "relationship": "prefer-kerf"
3544
4037
  }
3545
4038
  ],
4039
+ "geometry": {
4040
+ "margin": "self",
4041
+ "border": "self",
4042
+ "padding": "self"
4043
+ },
3546
4044
  "delivery": {
3547
4045
  "registrationImport": "@awesome.me/webawesome/dist/components/callout/callout.js",
3548
4046
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3574,6 +4072,11 @@
3574
4072
  ],
3575
4073
  "recommendation": "supported",
3576
4074
  "alternatives": [],
4075
+ "geometry": {
4076
+ "margin": "none",
4077
+ "border": "self",
4078
+ "padding": "self"
4079
+ },
3577
4080
  "delivery": {
3578
4081
  "registrationImport": "@awesome.me/webawesome/dist/components/progress-bar/progress-bar.js",
3579
4082
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3605,6 +4108,11 @@
3605
4108
  ],
3606
4109
  "recommendation": "supported",
3607
4110
  "alternatives": [],
4111
+ "geometry": {
4112
+ "margin": "none",
4113
+ "border": "self",
4114
+ "padding": "self"
4115
+ },
3608
4116
  "delivery": {
3609
4117
  "registrationImport": "@awesome.me/webawesome/dist/components/progress-ring/progress-ring.js",
3610
4118
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3636,6 +4144,11 @@
3636
4144
  ],
3637
4145
  "recommendation": "supported",
3638
4146
  "alternatives": [],
4147
+ "geometry": {
4148
+ "margin": "none",
4149
+ "border": "none",
4150
+ "padding": "none"
4151
+ },
3639
4152
  "delivery": {
3640
4153
  "registrationImport": "@awesome.me/webawesome/dist/components/skeleton/skeleton.js",
3641
4154
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3672,6 +4185,11 @@
3672
4185
  "relationship": "prefer-kerf"
3673
4186
  }
3674
4187
  ],
4188
+ "geometry": {
4189
+ "margin": "none",
4190
+ "border": "none",
4191
+ "padding": "none"
4192
+ },
3675
4193
  "delivery": {
3676
4194
  "registrationImport": "@awesome.me/webawesome/dist/components/spinner/spinner.js",
3677
4195
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3710,6 +4228,11 @@
3710
4228
  "relationship": "prefer-kerf"
3711
4229
  }
3712
4230
  ],
4231
+ "geometry": {
4232
+ "margin": "none",
4233
+ "border": "self",
4234
+ "padding": "self"
4235
+ },
3713
4236
  "delivery": {
3714
4237
  "registrationImport": "@awesome.me/webawesome/dist/components/tag/tag.js",
3715
4238
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3752,6 +4275,11 @@
3752
4275
  "relationship": "prefer-kerf"
3753
4276
  }
3754
4277
  ],
4278
+ "geometry": {
4279
+ "margin": "none",
4280
+ "border": "child",
4281
+ "padding": "child"
4282
+ },
3755
4283
  "delivery": {
3756
4284
  "registrationImport": "@awesome.me/webawesome/dist/components/toast/toast.js",
3757
4285
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3795,6 +4323,11 @@
3795
4323
  "relationship": "prefer-kerf"
3796
4324
  }
3797
4325
  ],
4326
+ "geometry": {
4327
+ "margin": "none",
4328
+ "border": "self",
4329
+ "padding": "self"
4330
+ },
3798
4331
  "delivery": {
3799
4332
  "registrationImport": "@awesome.me/webawesome/dist/components/toast-item/toast-item.js",
3800
4333
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3828,6 +4361,11 @@
3828
4361
  ],
3829
4362
  "recommendation": "supported",
3830
4363
  "alternatives": [],
4364
+ "geometry": {
4365
+ "margin": "none",
4366
+ "border": "self",
4367
+ "padding": "self"
4368
+ },
3831
4369
  "delivery": {
3832
4370
  "registrationImport": "@awesome.me/webawesome/dist/components/tooltip/tooltip.js",
3833
4371
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3861,6 +4399,11 @@
3861
4399
  ],
3862
4400
  "recommendation": "exceptional",
3863
4401
  "alternatives": [],
4402
+ "geometry": {
4403
+ "margin": "none",
4404
+ "border": "self",
4405
+ "padding": "none"
4406
+ },
3864
4407
  "delivery": {
3865
4408
  "registrationImport": "@awesome.me/webawesome/dist/components/animated-image/animated-image.js",
3866
4409
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3894,6 +4437,11 @@
3894
4437
  ],
3895
4438
  "recommendation": "supported",
3896
4439
  "alternatives": [],
4440
+ "geometry": {
4441
+ "margin": "none",
4442
+ "border": "self",
4443
+ "padding": "none"
4444
+ },
3897
4445
  "delivery": {
3898
4446
  "registrationImport": "@awesome.me/webawesome/dist/components/avatar/avatar.js",
3899
4447
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3928,6 +4476,11 @@
3928
4476
  ],
3929
4477
  "recommendation": "supported",
3930
4478
  "alternatives": [],
4479
+ "geometry": {
4480
+ "margin": "none",
4481
+ "border": "self",
4482
+ "padding": "child"
4483
+ },
3931
4484
  "delivery": {
3932
4485
  "registrationImport": "@awesome.me/webawesome/dist/components/carousel/carousel.js",
3933
4486
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3959,6 +4512,11 @@
3959
4512
  ],
3960
4513
  "recommendation": "supported",
3961
4514
  "alternatives": [],
4515
+ "geometry": {
4516
+ "margin": "none",
4517
+ "border": "none",
4518
+ "padding": "none"
4519
+ },
3962
4520
  "delivery": {
3963
4521
  "registrationImport": "@awesome.me/webawesome/dist/components/carousel-item/carousel-item.js",
3964
4522
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -3992,6 +4550,11 @@
3992
4550
  ],
3993
4551
  "recommendation": "exceptional",
3994
4552
  "alternatives": [],
4553
+ "geometry": {
4554
+ "margin": "none",
4555
+ "border": "self",
4556
+ "padding": "child"
4557
+ },
3995
4558
  "delivery": {
3996
4559
  "registrationImport": "@awesome.me/webawesome/dist/components/comparison/comparison.js",
3997
4560
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4028,6 +4591,11 @@
4028
4591
  "relationship": "prefer-kerf"
4029
4592
  }
4030
4593
  ],
4594
+ "geometry": {
4595
+ "margin": "none",
4596
+ "border": "none",
4597
+ "padding": "none"
4598
+ },
4031
4599
  "delivery": {
4032
4600
  "registrationImport": "@awesome.me/webawesome/dist/components/icon/icon.js",
4033
4601
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4059,6 +4627,11 @@
4059
4627
  ],
4060
4628
  "recommendation": "supported",
4061
4629
  "alternatives": [],
4630
+ "geometry": {
4631
+ "margin": "none",
4632
+ "border": "child",
4633
+ "padding": "child"
4634
+ },
4062
4635
  "delivery": {
4063
4636
  "registrationImport": "@awesome.me/webawesome/dist/components/markdown/markdown.js",
4064
4637
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4090,6 +4663,11 @@
4090
4663
  ],
4091
4664
  "recommendation": "supported",
4092
4665
  "alternatives": [],
4666
+ "geometry": {
4667
+ "margin": "none",
4668
+ "border": "self",
4669
+ "padding": "self"
4670
+ },
4093
4671
  "delivery": {
4094
4672
  "registrationImport": "@awesome.me/webawesome/dist/components/qr-code/qr-code.js",
4095
4673
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4123,6 +4701,11 @@
4123
4701
  ],
4124
4702
  "recommendation": "avoid",
4125
4703
  "alternatives": [],
4704
+ "geometry": {
4705
+ "margin": "none",
4706
+ "border": "self",
4707
+ "padding": "child"
4708
+ },
4126
4709
  "delivery": {
4127
4710
  "registrationImport": "@awesome.me/webawesome/dist/components/zoomable-frame/zoomable-frame.js",
4128
4711
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4156,6 +4739,11 @@
4156
4739
  ],
4157
4740
  "recommendation": "supported",
4158
4741
  "alternatives": [],
4742
+ "geometry": {
4743
+ "margin": "none",
4744
+ "border": "child",
4745
+ "padding": "child"
4746
+ },
4159
4747
  "delivery": {
4160
4748
  "registrationImport": "@awesome.me/webawesome/dist/components/animation/animation.js",
4161
4749
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4187,6 +4775,11 @@
4187
4775
  ],
4188
4776
  "recommendation": "supported",
4189
4777
  "alternatives": [],
4778
+ "geometry": {
4779
+ "margin": "none",
4780
+ "border": "none",
4781
+ "padding": "none"
4782
+ },
4190
4783
  "delivery": {
4191
4784
  "registrationImport": "@awesome.me/webawesome/dist/components/format-bytes/format-bytes.js",
4192
4785
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4218,6 +4811,11 @@
4218
4811
  ],
4219
4812
  "recommendation": "supported",
4220
4813
  "alternatives": [],
4814
+ "geometry": {
4815
+ "margin": "none",
4816
+ "border": "none",
4817
+ "padding": "none"
4818
+ },
4221
4819
  "delivery": {
4222
4820
  "registrationImport": "@awesome.me/webawesome/dist/components/format-date/format-date.js",
4223
4821
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4249,6 +4847,11 @@
4249
4847
  ],
4250
4848
  "recommendation": "supported",
4251
4849
  "alternatives": [],
4850
+ "geometry": {
4851
+ "margin": "none",
4852
+ "border": "none",
4853
+ "padding": "none"
4854
+ },
4252
4855
  "delivery": {
4253
4856
  "registrationImport": "@awesome.me/webawesome/dist/components/format-number/format-number.js",
4254
4857
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4280,6 +4883,11 @@
4280
4883
  ],
4281
4884
  "recommendation": "supported",
4282
4885
  "alternatives": [],
4886
+ "geometry": {
4887
+ "margin": "self",
4888
+ "border": "self",
4889
+ "padding": "self"
4890
+ },
4283
4891
  "delivery": {
4284
4892
  "registrationImport": "@awesome.me/webawesome/dist/components/include/include.js",
4285
4893
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4311,6 +4919,11 @@
4311
4919
  ],
4312
4920
  "recommendation": "supported",
4313
4921
  "alternatives": [],
4922
+ "geometry": {
4923
+ "margin": "none",
4924
+ "border": "none",
4925
+ "padding": "none"
4926
+ },
4314
4927
  "delivery": {
4315
4928
  "registrationImport": "@awesome.me/webawesome/dist/components/intersection-observer/intersection-observer.js",
4316
4929
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4342,6 +4955,11 @@
4342
4955
  ],
4343
4956
  "recommendation": "supported",
4344
4957
  "alternatives": [],
4958
+ "geometry": {
4959
+ "margin": "none",
4960
+ "border": "none",
4961
+ "padding": "none"
4962
+ },
4345
4963
  "delivery": {
4346
4964
  "registrationImport": "@awesome.me/webawesome/dist/components/mutation-observer/mutation-observer.js",
4347
4965
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4375,6 +4993,11 @@
4375
4993
  ],
4376
4994
  "recommendation": "supported",
4377
4995
  "alternatives": [],
4996
+ "geometry": {
4997
+ "margin": "none",
4998
+ "border": "self",
4999
+ "padding": "self"
5000
+ },
4378
5001
  "delivery": {
4379
5002
  "registrationImport": "@awesome.me/webawesome/dist/components/popover/popover.js",
4380
5003
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4406,6 +5029,11 @@
4406
5029
  ],
4407
5030
  "recommendation": "conditional",
4408
5031
  "alternatives": [],
5032
+ "geometry": {
5033
+ "margin": "none",
5034
+ "border": "child",
5035
+ "padding": "child"
5036
+ },
4409
5037
  "delivery": {
4410
5038
  "registrationImport": "@awesome.me/webawesome/dist/components/popup/popup.js",
4411
5039
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4437,6 +5065,11 @@
4437
5065
  ],
4438
5066
  "recommendation": "supported",
4439
5067
  "alternatives": [],
5068
+ "geometry": {
5069
+ "margin": "none",
5070
+ "border": "child",
5071
+ "padding": "child"
5072
+ },
4440
5073
  "delivery": {
4441
5074
  "registrationImport": "@awesome.me/webawesome/dist/components/random-content/random-content.js",
4442
5075
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4468,6 +5101,11 @@
4468
5101
  ],
4469
5102
  "recommendation": "supported",
4470
5103
  "alternatives": [],
5104
+ "geometry": {
5105
+ "margin": "none",
5106
+ "border": "none",
5107
+ "padding": "none"
5108
+ },
4471
5109
  "delivery": {
4472
5110
  "registrationImport": "@awesome.me/webawesome/dist/components/relative-time/relative-time.js",
4473
5111
  "themeCssImport": "@kerfjs/ui/webawesome.css",
@@ -4499,6 +5137,11 @@
4499
5137
  ],
4500
5138
  "recommendation": "supported",
4501
5139
  "alternatives": [],
5140
+ "geometry": {
5141
+ "margin": "none",
5142
+ "border": "none",
5143
+ "padding": "none"
5144
+ },
4502
5145
  "delivery": {
4503
5146
  "registrationImport": "@awesome.me/webawesome/dist/components/resize-observer/resize-observer.js",
4504
5147
  "themeCssImport": "@kerfjs/ui/webawesome.css",