@kerfjs/ui 5.0.0-beta.51 → 5.0.0-beta.53

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 (149) hide show
  1. package/ai/component-catalog-v2.d.ts +3 -0
  2. package/ai/component-catalog-v2.json +3 -1
  3. package/ai/component-catalog-v2.schema.json +7 -0
  4. package/ai/component-catalog.json +3 -1
  5. package/ai/public-api-signatures-v1.md +30 -11
  6. package/ai/skill.md +15 -15
  7. package/ai/webawesome-jsx-signatures-v1.md +1 -1
  8. package/dist/app-tab.d.ts +10 -1
  9. package/dist/app-tab.js +1 -1
  10. package/dist/browser/segmented-control.js +0 -1
  11. package/dist/catalog.js +4 -4
  12. package/dist/{chunk-S4QRSBFI.js → chunk-3NBL3OUQ.js} +2 -2
  13. package/dist/{chunk-S4QRSBFI.js.map → chunk-3NBL3OUQ.js.map} +1 -1
  14. package/dist/{chunk-UPZ6EEJN.js → chunk-44IG7PFV.js} +3 -3
  15. package/dist/{chunk-UPZ6EEJN.js.map → chunk-44IG7PFV.js.map} +1 -1
  16. package/dist/{chunk-NZXWU4R5.js → chunk-5I22LMCV.js} +2 -2
  17. package/dist/{chunk-NZXWU4R5.js.map → chunk-5I22LMCV.js.map} +1 -1
  18. package/dist/{chunk-ULCDZTWL.js → chunk-ATHXW6RP.js} +4 -2
  19. package/dist/chunk-ATHXW6RP.js.map +1 -0
  20. package/dist/{chunk-JM53SMVF.js → chunk-BJJKFVWW.js} +14 -5
  21. package/dist/chunk-BJJKFVWW.js.map +1 -0
  22. package/dist/{chunk-AEPXGCNF.js → chunk-C2FAYFDE.js} +2 -2
  23. package/dist/{chunk-AEPXGCNF.js.map → chunk-C2FAYFDE.js.map} +1 -1
  24. package/dist/{chunk-5FZZMIMD.js → chunk-CCMKJWLX.js} +16 -12
  25. package/dist/chunk-CCMKJWLX.js.map +1 -0
  26. package/dist/{chunk-5PMGQDG7.js → chunk-DQA5FMOX.js} +2 -2
  27. package/dist/{chunk-5PMGQDG7.js.map → chunk-DQA5FMOX.js.map} +1 -1
  28. package/dist/{chunk-NMGTHYW3.js → chunk-GUIHMIT2.js} +13 -11
  29. package/dist/chunk-GUIHMIT2.js.map +1 -0
  30. package/dist/{chunk-KX7DP2GO.js → chunk-KPNTVB7A.js} +9 -4
  31. package/dist/chunk-KPNTVB7A.js.map +1 -0
  32. package/dist/{chunk-D547PH4L.js → chunk-RNZAKSME.js} +11 -8
  33. package/dist/chunk-RNZAKSME.js.map +1 -0
  34. package/dist/{chunk-UBH743HV.js → chunk-T22EM4ET.js} +7 -5
  35. package/dist/chunk-T22EM4ET.js.map +1 -0
  36. package/dist/{chunk-O3RCCSQJ.js → chunk-TZ5IHWB2.js} +3 -3
  37. package/dist/{chunk-O3RCCSQJ.js.map → chunk-TZ5IHWB2.js.map} +1 -1
  38. package/dist/{chunk-MO56ZZLG.js → chunk-WZ2GLEY4.js} +6 -2
  39. package/dist/chunk-WZ2GLEY4.js.map +1 -0
  40. package/dist/{chunk-DVZCMMB3.js → chunk-X5QSICJ3.js} +5 -5
  41. package/dist/chunk-X5QSICJ3.js.map +1 -0
  42. package/dist/{chunk-JMGKM7RK.js → chunk-ZMBU522F.js} +2 -2
  43. package/dist/{chunk-JMGKM7RK.js.map → chunk-ZMBU522F.js.map} +1 -1
  44. package/dist/css-values.d.ts +4 -2
  45. package/dist/css-values.js +1 -1
  46. package/dist/grid.js +1 -1
  47. package/dist/index.js +15 -15
  48. package/dist/list-action-row.d.ts +2 -1
  49. package/dist/list-action-row.js +1 -1
  50. package/dist/list-header.d.ts +1 -0
  51. package/dist/list-header.js +1 -1
  52. package/dist/list-item.d.ts +5 -3
  53. package/dist/list-item.js +1 -1
  54. package/dist/list.js +1 -1
  55. package/dist/nav-stack.js +1 -1
  56. package/dist/row.js +1 -1
  57. package/dist/segmented-control.d.ts +1 -1
  58. package/dist/segmented-control.js +1 -3
  59. package/dist/select.js +1 -1
  60. package/dist/skeleton.d.ts +5 -1
  61. package/dist/skeleton.js +1 -1
  62. package/dist/spacer.js +1 -1
  63. package/dist/split-view.js +1 -1
  64. package/dist/state-banner.d.ts +1 -1
  65. package/dist/state-banner.js +1 -1
  66. package/dist/styles/app-tab.css +9 -0
  67. package/dist/styles/badge.css +17 -6
  68. package/dist/styles/collapsible-panel.css +1 -1
  69. package/dist/styles/foundation.css +82 -26
  70. package/dist/styles/list-action-row.css +29 -8
  71. package/dist/styles/list-header.css +19 -7
  72. package/dist/styles/list-item.css +11 -3
  73. package/dist/styles/resizable-region.css +1 -1
  74. package/dist/styles/segmented-control.css +21 -1
  75. package/dist/styles/select.css +24 -13
  76. package/dist/styles/skeleton.css +37 -3
  77. package/dist/styles/state-banner.css +48 -12
  78. package/dist/styles/webawesome.css +47 -20
  79. package/dist/styles/workbench.css +1 -1
  80. package/dist/toolbar-text.js +1 -1
  81. package/dist/value-table.js +1 -1
  82. package/dist/wire-sidebar.js +1 -1
  83. package/dist/wire-sidebar.js.map +1 -1
  84. package/docs/accessibility.md +4 -1
  85. package/docs/collapsible-panel.md +2 -1
  86. package/docs/component-contract.md +84 -7
  87. package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
  88. package/docs/design/templates/empty-state-dark.svg +1 -1
  89. package/docs/design/templates/list/stack-dark.svg +1 -1
  90. package/docs/design/templates/list/stack.svg +1 -1
  91. package/docs/design/templates/list-action-row/selected.svg +1 -1
  92. package/docs/design/templates/list-action-row.svg +1 -1
  93. package/docs/design/templates/list-dark.svg +1 -1
  94. package/docs/design/templates/list-header/action-dark.svg +1 -1
  95. package/docs/design/templates/list-header/action.svg +1 -1
  96. package/docs/design/templates/list-header/count-dark.svg +1 -1
  97. package/docs/design/templates/list-header/count.svg +1 -1
  98. package/docs/design/templates/list-header/inline-action-dark.svg +1 -1
  99. package/docs/design/templates/list-header/inline-action.svg +1 -1
  100. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
  101. package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
  102. package/docs/design/templates/list-header-dark.svg +1 -1
  103. package/docs/design/templates/list-header.svg +1 -1
  104. package/docs/design/templates/list-item/selected.svg +1 -1
  105. package/docs/design/templates/list-item.svg +1 -1
  106. package/docs/design/templates/list.svg +1 -1
  107. package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
  108. package/docs/design/templates/segmented-control/equal.svg +1 -1
  109. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
  110. package/docs/design/templates/segmented-control/pill-small.svg +1 -1
  111. package/docs/design/templates/segmented-control-dark.svg +1 -1
  112. package/docs/design/templates/segmented-control.svg +1 -1
  113. package/docs/design/templates/state-banner/danger-dark.svg +1 -1
  114. package/docs/design/templates/state-banner/danger.svg +1 -1
  115. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -1
  116. package/docs/design/templates/state-banner/info-badge.svg +1 -1
  117. package/docs/design/templates/state-banner/info-dark.svg +1 -1
  118. package/docs/design/templates/state-banner/info.svg +1 -1
  119. package/docs/design/templates/state-banner/success-dark.svg +1 -1
  120. package/docs/design/templates/state-banner/success.svg +1 -1
  121. package/docs/design/templates/state-banner/warning-dark.svg +1 -1
  122. package/docs/design/templates/state-banner/warning.svg +1 -1
  123. package/docs/design/templates/state-banner-dark.svg +1 -1
  124. package/docs/design/templates/state-banner.svg +1 -1
  125. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
  126. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
  127. package/docs/design/templates/tab-bar-dark.svg +1 -1
  128. package/docs/design/templates/tab-bar.svg +1 -1
  129. package/docs/design/templates/token-search-field/tokens.svg +1 -1
  130. package/docs/design/templates/token-search-field.svg +1 -1
  131. package/docs/design/templates.md +11 -1
  132. package/docs/device-class.md +2 -1
  133. package/docs/recipes.md +6 -4
  134. package/docs/ux-demo.md +2 -2
  135. package/docs/webawesome-theme.md +9 -2
  136. package/llms.txt +7 -3
  137. package/package.json +1 -1
  138. package/ux-demo/recipes/collapsible-sidebar.tsx +12 -11
  139. package/ux-demo/recipes/composer-form.tsx +2 -0
  140. package/ux-demo/recipes/loading-inspector.tsx +7 -6
  141. package/dist/chunk-5FZZMIMD.js.map +0 -1
  142. package/dist/chunk-D547PH4L.js.map +0 -1
  143. package/dist/chunk-DVZCMMB3.js.map +0 -1
  144. package/dist/chunk-JM53SMVF.js.map +0 -1
  145. package/dist/chunk-KX7DP2GO.js.map +0 -1
  146. package/dist/chunk-MO56ZZLG.js.map +0 -1
  147. package/dist/chunk-NMGTHYW3.js.map +0 -1
  148. package/dist/chunk-UBH743HV.js.map +0 -1
  149. package/dist/chunk-ULCDZTWL.js.map +0 -1
@@ -1,7 +1,6 @@
1
- import { Skeleton } from './chunk-ULCDZTWL.js';
2
- import { em } from './chunk-MO56ZZLG.js';
3
1
  import { jsx } from 'kerfjs/jsx-runtime';
4
2
 
3
+ // src/segmented-control.tsx
5
4
  function SegmentedControl({
6
5
  id,
7
6
  label,
@@ -33,7 +32,7 @@ function SegmentedControl({
33
32
  "aria-busy": placeholder ? "true" : void 0,
34
33
  slot,
35
34
  children: choices.map((choice) => {
36
- const selected = choice.value === value;
35
+ const selected = !placeholder && choice.value === value;
37
36
  return /* @__PURE__ */ jsx(
38
37
  "button",
39
38
  {
@@ -47,7 +46,8 @@ function SegmentedControl({
47
46
  title: placeholder ? void 0 : choice.title,
48
47
  disabled: choice.disabled || placeholder,
49
48
  tabindex: placeholder ? "-1" : "0",
50
- children: placeholder ? /* @__PURE__ */ jsx(Skeleton, { width: em(4) }) : choice.content ?? /* @__PURE__ */ jsx("span", { children: choice.label })
49
+ "data-kui-disabled": choice.disabled ? "true" : void 0,
50
+ children: choice.content ?? /* @__PURE__ */ jsx("span", { children: choice.label })
51
51
  }
52
52
  );
53
53
  })
@@ -57,4 +57,4 @@ function SegmentedControl({
57
57
 
58
58
  export { SegmentedControl };
59
59
 
60
- //# sourceMappingURL=chunk-DVZCMMB3.js.map
60
+ //# sourceMappingURL=chunk-X5QSICJ3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/segmented-control.tsx"],"names":[],"mappings":";;;AAgCO,SAAS,gBAAA,CAAuC;AAAA,EACrD,EAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,gBAAA;AAAA,EACT,UAAA,GAAa,QAAA;AAAA,EACb,KAAA,GAAQ,SAAA;AAAA,EACR,IAAA,GAAO,SAAA;AAAA,EACP,MAAA,GAAS,SAAA;AAAA,EACT,SAAA,GAAY,EAAA;AAAA,EACZ,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,EAAiC;AAC/B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,sBAAA,EAAyB,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MACjD,gBAAA,EAAe,mBAAA;AAAA,MACf,2BAAA,EAA2B,EAAA;AAAA,MAC3B,YAAA,EAAY,KAAA;AAAA,MACZ,iBAAA,EAAiB,UAAA;AAAA,MACjB,YAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAa,MAAA;AAAA,MACb,kBAAA,EAAkB,cAAc,MAAA,GAAS,MAAA;AAAA,MACzC,IAAA,EAAK,OAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAW,cAAc,MAAA,GAAS,MAAA;AAAA,MAClC,IAAA;AAAA,MAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AAGvB,QAAA,MAAM,QAAA,GAAW,CAAC,WAAA,IAAe,MAAA,CAAO,KAAA,KAAU,KAAA;AAClD,QAAA,uBACE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAM,6BAAA;AAAA,YACN,aAAA,EAAa,cAAc,MAAA,GAAY,MAAA;AAAA,YACvC,sBAAoB,MAAA,CAAO,KAAA;AAAA,YAC3B,eAAA,EAAe,OAAO,QAAQ,CAAA;AAAA,YAC9B,cAAY,MAAA,CAAO,KAAA;AAAA,YACnB,cAAA,EAAc,OAAO,QAAQ,CAAA;AAAA,YAC7B,KAAA,EAAO,WAAA,GAAc,MAAA,GAAY,MAAA,CAAO,KAAA;AAAA,YACxC,QAAA,EAAU,OAAO,QAAA,IAAY,WAAA;AAAA,YAC7B,QAAA,EAAU,cAAc,IAAA,GAAO,GAAA;AAAA,YAC/B,mBAAA,EAAmB,MAAA,CAAO,QAAA,GAAW,MAAA,GAAS,MAAA;AAAA,YAE7C,QAAA,EAAA,MAAA,CAAO,OAAA,oBAAW,GAAA,CAAC,MAAA,EAAA,EAAM,iBAAO,KAAA,EAAM;AAAA;AAAA,SACzC;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ","file":"chunk-X5QSICJ3.js","sourcesContent":["import type { KerfUiContent } from './semantic-content.js';\n\nexport type SegmentedControlAppearance = 'filled' | 'outlined' | 'toolbar';\nexport type SegmentedControlShape = 'rounded' | 'pill';\nexport type SegmentedControlSize = 'small' | 'default';\nexport type SegmentedControlLayout = 'content' | 'equal';\n\nexport interface SegmentedControlChoice<Value extends string = string> {\n value: Value;\n label: string;\n content?: KerfUiContent;\n title?: string;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<Value extends string = string> {\n id: string;\n label: string;\n value: NoInfer<Value>;\n choices: readonly SegmentedControlChoice<Value>[];\n action?: string;\n appearance?: SegmentedControlAppearance;\n shape?: SegmentedControlShape;\n size?: SegmentedControlSize;\n layout?: SegmentedControlLayout;\n className?: string;\n /** Render as a loading placeholder: every choice keeps its live label or icon, none is selected, and every segment is disabled. */\n placeholder?: boolean;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\nexport function SegmentedControl<Value extends string>({\n id,\n label,\n value,\n choices,\n action = 'select-segment',\n appearance = 'filled',\n shape = 'rounded',\n size = 'default',\n layout = 'content',\n className = '',\n placeholder = false,\n slot,\n}: SegmentedControlProps<Value>) {\n return (\n <div\n class={`kui-segmented-control ${className}`.trim()}\n data-component=\"segmented-control\"\n data-segmented-control-id={id}\n data-value={value}\n data-appearance={appearance}\n data-shape={shape}\n data-size={size}\n data-layout={layout}\n data-placeholder={placeholder ? 'true' : undefined}\n role=\"group\"\n aria-label={label}\n aria-busy={placeholder ? 'true' : undefined}\n slot={slot}\n >\n {choices.map((choice) => {\n // The choices are known chrome; only the selection is unknown while\n // loading, so a placeholder shows every choice and selects none.\n const selected = !placeholder && choice.value === value;\n return (\n <button\n type=\"button\"\n class=\"kui-segmented-control__item\"\n data-action={placeholder ? undefined : action}\n data-segment-value={choice.value}\n data-selected={String(selected)}\n aria-label={choice.label}\n aria-pressed={String(selected)}\n title={placeholder ? undefined : choice.title}\n disabled={choice.disabled || placeholder}\n tabindex={placeholder ? '-1' : '0'}\n data-kui-disabled={choice.disabled ? 'true' : undefined}\n >\n {choice.content ?? <span>{choice.label}</span>}\n </button>\n );\n })}\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { space } from './chunk-MO56ZZLG.js';
1
+ import { space } from './chunk-WZ2GLEY4.js';
2
2
  import { jsx } from 'kerfjs/jsx-runtime';
3
3
 
4
4
  var spaceNames = [
@@ -41,4 +41,4 @@ function Spacer({
41
41
 
42
42
  export { Spacer };
43
43
 
44
- //# sourceMappingURL=chunk-JMGKM7RK.js.map
44
+ //# sourceMappingURL=chunk-ZMBU522F.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/spacer.tsx"],"names":[],"mappings":";;;AAEA,IAAM,UAAA,GAAqC;AAAA,EACzC,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA;AAcA,SAAS,UAAU,KAAA,EAAwD;AACzE,EAAA,OAAO,WAAW,QAAA,CAAS,KAAoB,CAAA,GAC3C,KAAA,CAAM,KAAoB,CAAA,GACzB,KAAA;AACP;AAGO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA,GAAO,KAAA;AAAA,EACP,KAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,UAAA,GAAa,UAAU,KAAK,CAAA;AAClC,EAAA,MAAM,WAAA,GAAc,UAAU,MAAM,CAAA;AACpC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,UAAA,GAAa,CAAA,MAAA,EAAS,UAAU,CAAA,CAAA,GAAK,EAAA;AAAA,IACrC,WAAA,GAAc,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA,GAAK;AAAA,GAC1C,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,WAAA,EAAc,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MACtC,gBAAA,EAAe,QAAA;AAAA,MACf,WAAA,EAAW,OAAO,IAAI,CAAA;AAAA,MACtB,aAAA,EAAY,MAAA;AAAA,MACZ,OAAO,KAAA,IAAS,MAAA;AAAA,MAChB;AAAA;AAAA,GACD;AAEL","file":"chunk-JMGKM7RK.js","sourcesContent":["import { type CssLength, space, type UiSpaceName } from './css-values.js';\n\nconst spaceNames: readonly UiSpaceName[] = [\n 'none',\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n];\n\nexport interface SpacerProps {\n /** Grow and shrink to fill the available space along a parent's flex axis. */\n flex?: boolean;\n /** A named UI spacing token or typed physical width. */\n width?: UiSpaceName | CssLength;\n /** A named UI spacing token or typed physical height. */\n height?: UiSpaceName | CssLength;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\nfunction dimension(value?: UiSpaceName | CssLength): CssLength | undefined {\n return spaceNames.includes(value as UiSpaceName)\n ? space(value as UiSpaceName)\n : (value as CssLength | undefined);\n}\n\n/** A decorative fixed-size or flexible gap for Row, List, and other flex layouts. */\nexport function Spacer({\n flex = false,\n width,\n height,\n className = '',\n slot,\n}: SpacerProps) {\n const widthValue = dimension(width);\n const heightValue = dimension(height);\n const style = [\n widthValue ? `width:${widthValue}` : '',\n heightValue ? `height:${heightValue}` : '',\n ]\n .filter(Boolean)\n .join(';');\n\n return (\n <div\n class={`kui-spacer ${className}`.trim()}\n data-component=\"spacer\"\n data-flex={String(flex)}\n aria-hidden=\"true\"\n style={style || undefined}\n slot={slot}\n ></div>\n );\n}\n\nexport type { CssLength, UiSpaceName } from './css-values.js';\n"]}
1
+ {"version":3,"sources":["../src/spacer.tsx"],"names":[],"mappings":";;;AAEA,IAAM,UAAA,GAAqC;AAAA,EACzC,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA;AAcA,SAAS,UAAU,KAAA,EAAwD;AACzE,EAAA,OAAO,WAAW,QAAA,CAAS,KAAoB,CAAA,GAC3C,KAAA,CAAM,KAAoB,CAAA,GACzB,KAAA;AACP;AAGO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA,GAAO,KAAA;AAAA,EACP,KAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,UAAA,GAAa,UAAU,KAAK,CAAA;AAClC,EAAA,MAAM,WAAA,GAAc,UAAU,MAAM,CAAA;AACpC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,UAAA,GAAa,CAAA,MAAA,EAAS,UAAU,CAAA,CAAA,GAAK,EAAA;AAAA,IACrC,WAAA,GAAc,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA,GAAK;AAAA,GAC1C,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,WAAA,EAAc,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MACtC,gBAAA,EAAe,QAAA;AAAA,MACf,WAAA,EAAW,OAAO,IAAI,CAAA;AAAA,MACtB,aAAA,EAAY,MAAA;AAAA,MACZ,OAAO,KAAA,IAAS,MAAA;AAAA,MAChB;AAAA;AAAA,GACD;AAEL","file":"chunk-ZMBU522F.js","sourcesContent":["import { type CssLength, space, type UiSpaceName } from './css-values.js';\n\nconst spaceNames: readonly UiSpaceName[] = [\n 'none',\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n];\n\nexport interface SpacerProps {\n /** Grow and shrink to fill the available space along a parent's flex axis. */\n flex?: boolean;\n /** A named UI spacing token or typed physical width. */\n width?: UiSpaceName | CssLength;\n /** A named UI spacing token or typed physical height. */\n height?: UiSpaceName | CssLength;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\nfunction dimension(value?: UiSpaceName | CssLength): CssLength | undefined {\n return spaceNames.includes(value as UiSpaceName)\n ? space(value as UiSpaceName)\n : (value as CssLength | undefined);\n}\n\n/** A decorative fixed-size or flexible gap for Row, List, and other flex layouts. */\nexport function Spacer({\n flex = false,\n width,\n height,\n className = '',\n slot,\n}: SpacerProps) {\n const widthValue = dimension(width);\n const heightValue = dimension(height);\n const style = [\n widthValue ? `width:${widthValue}` : '',\n heightValue ? `height:${heightValue}` : '',\n ]\n .filter(Boolean)\n .join(';');\n\n return (\n <div\n class={`kui-spacer ${className}`.trim()}\n data-component=\"spacer\"\n data-flex={String(flex)}\n aria-hidden=\"true\"\n style={style || undefined}\n slot={slot}\n ></div>\n );\n}\n\nexport type { CssLength, UiSpaceName } from './css-values.js';\n"]}
@@ -53,7 +53,7 @@ type CssFlexBasis = CssLength | 'auto' | 'content' | 'min-content' | 'max-conten
53
53
  type CssSizeKeyword = 'auto' | 'min-content' | 'max-content' | 'fit-content';
54
54
  /** A complete width/height value accepted by dimension-valued UI props. */
55
55
  type CssSize = CssLength | CssSizeKeyword;
56
- declare const uiColorNames: readonly ["accent", "accent-text", "border", "border-quiet", "brand-border-loud", "brand-border-normal", "brand-border-quiet", "brand-fill-loud", "brand-fill-normal", "brand-fill-quiet", "brand-on-fill", "brand-on-loud", "brand-on-normal", "brand-on-quiet", "danger", "danger-border-loud", "danger-border-normal", "danger-border-quiet", "danger-fill-loud", "danger-fill-normal", "danger-fill-quiet", "danger-on-loud", "danger-on-normal", "danger-on-quiet", "danger-text", "neutral-border-loud", "neutral-border-normal", "neutral-border-quiet", "neutral-fill-loud", "neutral-fill-normal", "neutral-fill-quiet", "neutral-on-loud", "neutral-on-normal", "neutral-on-quiet", "pop", "pop-border-loud", "pop-border-normal", "pop-border-quiet", "pop-fill-loud", "pop-fill-normal", "pop-fill-quiet", "pop-on-fill", "pop-on-loud", "pop-on-normal", "pop-on-quiet", "pop-text", "success", "success-border-loud", "success-border-normal", "success-border-quiet", "success-fill-loud", "success-fill-normal", "success-fill-quiet", "success-on-fill", "success-on-loud", "success-on-normal", "success-on-quiet", "success-text", "surface", "surface-lowered", "surface-raised", "text", "text-link", "text-quiet", "warning", "warning-border-loud", "warning-border-normal", "warning-border-quiet", "warning-fill-loud", "warning-fill-normal", "warning-fill-quiet", "warning-on-fill", "warning-on-loud", "warning-on-normal", "warning-on-quiet", "warning-text"];
56
+ declare const uiColorNames: readonly ["accent", "accent-text", "border", "border-quiet", "brand-border-loud", "brand-border-normal", "brand-border-quiet", "brand-fill-loud", "brand-fill-normal", "brand-fill-quiet", "brand-on-fill", "brand-on-loud", "brand-on-normal", "brand-on-quiet", "danger", "danger-border-loud", "danger-border-normal", "danger-border-quiet", "danger-fill-loud", "danger-fill-normal", "danger-fill-quiet", "danger-on-fill", "danger-on-loud", "danger-on-normal", "danger-on-quiet", "danger-text", "neutral-border-loud", "neutral-border-normal", "neutral-border-quiet", "neutral-fill-loud", "neutral-fill-normal", "neutral-fill-quiet", "neutral-on-loud", "neutral-on-normal", "neutral-on-quiet", "pop", "pop-border-loud", "pop-border-normal", "pop-border-quiet", "pop-fill-loud", "pop-fill-normal", "pop-fill-quiet", "pop-on-fill", "pop-on-loud", "pop-on-normal", "pop-on-quiet", "pop-text", "success", "success-border-loud", "success-border-normal", "success-border-quiet", "success-fill-loud", "success-fill-normal", "success-fill-quiet", "success-on-fill", "success-on-loud", "success-on-normal", "success-on-quiet", "success-text", "surface", "surface-lowered", "surface-raised", "text", "text-link", "text-quiet", "warning", "warning-border-loud", "warning-border-normal", "warning-border-quiet", "warning-fill-loud", "warning-fill-normal", "warning-fill-quiet", "warning-on-fill", "warning-on-loud", "warning-on-normal", "warning-on-quiet", "warning-text"];
57
57
  /** Names of the public `--kui-color-*` semantic tokens. */
58
58
  type UiColorName = (typeof uiColorNames)[number];
59
59
  /**
@@ -69,6 +69,8 @@ type UiSpaceName = 'none' | '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl';
69
69
  declare function px(value: number): CssLength;
70
70
  /** Create a complete root-font-relative length. */
71
71
  declare function rem(value: number): CssLength;
72
+ /** Converts a pixel value into rem units by dividing by 16. */
73
+ declare function remify(value: number): CssLength;
72
74
  /** Create a complete current-font-relative length. */
73
75
  declare function em(value: number): CssLength;
74
76
  /** Create a complete percentage length. */
@@ -108,4 +110,4 @@ declare function colorVar(name: `--${string}`, fallback?: CssColor): CssColor;
108
110
  */
109
111
  declare function foregroundColorVar(name: `--${string}`, fallback?: CssForegroundColor): CssForegroundColor;
110
112
 
111
- export { type CssColor, type CssFlex, type CssFlexBasis, type CssFlexKeyword, type CssForegroundColor, type CssLength, type CssLengthExpression, type CssSize, type CssSizeKeyword, type CssValue, type UiColor, type UiColorName, type UiForegroundColorName, type UiSpaceName, calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, space, uiColor };
113
+ export { type CssColor, type CssFlex, type CssFlexBasis, type CssFlexKeyword, type CssForegroundColor, type CssLength, type CssLengthExpression, type CssSize, type CssSizeKeyword, type CssValue, type UiColor, type UiColorName, type UiForegroundColorName, type UiSpaceName, calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, remify, space, uiColor };
@@ -1,3 +1,3 @@
1
- export { calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, space, uiColor } from './chunk-MO56ZZLG.js';
1
+ export { calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, remify, space, uiColor } from './chunk-WZ2GLEY4.js';
2
2
 
3
3
  //# sourceMappingURL=css-values.js.map
package/dist/grid.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Grid } from './chunk-AEPXGCNF.js';
1
+ export { Grid } from './chunk-C2FAYFDE.js';
2
2
 
3
3
 
4
4
 
package/dist/index.js CHANGED
@@ -1,38 +1,38 @@
1
1
  export { wireTokenSearchFields } from './chunk-CMUIXJZM.js';
2
- export { ValueTable, ValueTableRow } from './chunk-UPZ6EEJN.js';
2
+ export { ValueTable, ValueTableRow } from './chunk-44IG7PFV.js';
3
3
  export { wireResizableRegions } from './chunk-EKYZCRCX.js';
4
4
  export { reorderTabs, wireTabBars } from './chunk-UKKSMZYT.js';
5
5
  export { DialogSurface, PopupSurface } from './chunk-NN6GYOA2.js';
6
6
  export { TabBar } from './chunk-N3GKMPDW.js';
7
7
  export { TokenSearchField, placeTokenSearchCaret, readTokenSearchField } from './chunk-HJKRCKDR.js';
8
- export { SegmentedControl } from './chunk-DVZCMMB3.js';
9
- export { Select } from './chunk-UBH743HV.js';
10
- export { Spacer } from './chunk-JMGKM7RK.js';
11
- export { StateBanner } from './chunk-JM53SMVF.js';
8
+ export { SegmentedControl } from './chunk-X5QSICJ3.js';
9
+ export { Select } from './chunk-T22EM4ET.js';
10
+ export { Spacer } from './chunk-ZMBU522F.js';
11
+ export { StateBanner } from './chunk-BJJKFVWW.js';
12
12
  export { SunkenPanel } from './chunk-6ZXOQEAN.js';
13
13
  export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-VOCPXGQN.js';
14
- export { Row } from './chunk-NZXWU4R5.js';
14
+ export { Row } from './chunk-5I22LMCV.js';
15
15
  export { EmptyState } from './chunk-E36EVCKG.js';
16
16
  export { FloatingToolbar } from './chunk-NDUGJ4TU.js';
17
- export { Grid } from './chunk-AEPXGCNF.js';
18
- export { ListActionRow } from './chunk-D547PH4L.js';
17
+ export { Grid } from './chunk-C2FAYFDE.js';
18
+ export { ListActionRow } from './chunk-RNZAKSME.js';
19
19
  export { ListInsetControl } from './chunk-D7GWXIAS.js';
20
20
  export { ListInsetText } from './chunk-ZK5EGVFP.js';
21
- export { AppTab } from './chunk-5FZZMIMD.js';
21
+ export { AppTab } from './chunk-CCMKJWLX.js';
22
22
  export { ToolbarActionLink, ToolbarControlGroup } from './chunk-ZIYOJFZD.js';
23
23
  export { Toolbar } from './chunk-MTM43SJO.js';
24
- export { ListItem } from './chunk-NMGTHYW3.js';
25
- export { List } from './chunk-S4QRSBFI.js';
26
- export { ToolbarText } from './chunk-O3RCCSQJ.js';
24
+ export { ListItem } from './chunk-GUIHMIT2.js';
25
+ export { List } from './chunk-3NBL3OUQ.js';
26
+ export { ToolbarText } from './chunk-TZ5IHWB2.js';
27
27
  export { Pane } from './chunk-7GUQYHKA.js';
28
28
 
29
29
  export { LoadingSpinner } from './chunk-ZLWQZUGF.js';
30
- export { ListHeader } from './chunk-KX7DP2GO.js';
30
+ export { ListHeader } from './chunk-KPNTVB7A.js';
31
31
  export { Text } from './chunk-7IUSV4XG.js';
32
- export { Skeleton } from './chunk-ULCDZTWL.js';
32
+ export { Skeleton } from './chunk-ATHXW6RP.js';
33
33
 
34
34
  export { Badge } from './chunk-XD7DWYXG.js';
35
- export { calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, space, uiColor } from './chunk-MO56ZZLG.js';
35
+ export { calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, space, uiColor } from './chunk-WZ2GLEY4.js';
36
36
  export { DisclosureArrow } from './chunk-HMQ2ZDGG.js';
37
37
  export { LucideIcon } from './chunk-4R777DUZ.js';
38
38
 
@@ -18,6 +18,7 @@ type ListActionRowTrailingAttributes = Readonly<Record<`data-${string}`, string
18
18
  'data-component'?: never;
19
19
  'data-action'?: never;
20
20
  'data-item-id'?: never;
21
+ 'data-kui-disabled'?: never;
21
22
  popoverTarget?: string;
22
23
  popoverTargetAction?: 'toggle' | 'show' | 'hide';
23
24
  'aria-controls'?: string;
@@ -43,7 +44,7 @@ interface ListActionRowProps {
43
44
  state?: string;
44
45
  disabled?: boolean;
45
46
  tabIndex?: number;
46
- /** Render as an unanimated loading skeleton, disabling both actions. */
47
+ /** Render as an unanimated loading skeleton, disabling both actions: label, description, icon, and status text become skeletons; the `busy` indicator stays live. */
47
48
  placeholder?: boolean;
48
49
  trailingAction: string;
49
50
  trailingActionLabel: string;
@@ -1,4 +1,4 @@
1
- export { ListActionRow } from './chunk-D547PH4L.js';
1
+ export { ListActionRow } from './chunk-RNZAKSME.js';
2
2
 
3
3
 
4
4
 
@@ -14,6 +14,7 @@ type ListHeaderRootAttributes = Readonly<Record<`data-${string}`, string | undef
14
14
  }>;
15
15
  type ListHeaderTriggerAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
16
16
  'data-action'?: never;
17
+ 'data-kui-disabled'?: never;
17
18
  popoverTarget?: string;
18
19
  popoverTargetAction?: 'toggle' | 'show' | 'hide';
19
20
  'aria-controls'?: string;
@@ -1,4 +1,4 @@
1
- export { ListHeader } from './chunk-KX7DP2GO.js';
1
+ export { ListHeader } from './chunk-KPNTVB7A.js';
2
2
 
3
3
 
4
4
 
@@ -12,16 +12,18 @@ type ListItemRootAttributes = Readonly<Record<`data-${string}`, string | undefin
12
12
  'data-divider'?: never;
13
13
  'data-busy'?: never;
14
14
  'data-state'?: never;
15
+ 'data-kui-disabled'?: never;
15
16
  }>;
16
17
  interface ListItemProps {
17
18
  label: string | SafeHtml;
18
19
  /** App-owned supporting text rendered in the component's stable label stack. */
19
20
  description?: string | SafeHtml;
20
21
  icon?: SafeHtml;
22
+ /** Dormant author content at the row's end; a placeholder renders it as a skeleton. */
21
23
  trailing?: KerfUiContent;
22
- /** Dormant status metadata rendered before trailing content. */
24
+ /** Dormant status metadata rendered before trailing content; a placeholder renders it as a skeleton. */
23
25
  status?: string | SafeHtml;
24
- /** Show a progress indicator and expose the row as busy without replacing its content. */
26
+ /** Show a progress indicator and expose the row as busy without replacing its content; a placeholder keeps the indicator. */
25
27
  busy?: boolean;
26
28
  density?: 'standard' | 'compact';
27
29
  divider?: 'none' | 'before' | 'after' | 'both';
@@ -36,7 +38,7 @@ interface ListItemProps {
36
38
  state?: string;
37
39
  disabled?: boolean;
38
40
  tabIndex?: number;
39
- /** Render the row as an unanimated loading skeleton, disabling its action. */
41
+ /** Render the row as an unanimated loading skeleton, disabling its action: label, description, icon, status, and trailing content become skeletons; the `busy` indicator stays live. */
40
42
  placeholder?: boolean;
41
43
  rootAttributes?: ListItemRootAttributes;
42
44
  /** Native named-slot assignment when composed inside a web component. */
package/dist/list-item.js CHANGED
@@ -1,4 +1,4 @@
1
- export { ListItem } from './chunk-NMGTHYW3.js';
1
+ export { ListItem } from './chunk-GUIHMIT2.js';
2
2
 
3
3
 
4
4
 
package/dist/list.js CHANGED
@@ -1,4 +1,4 @@
1
- export { List } from './chunk-S4QRSBFI.js';
1
+ export { List } from './chunk-3NBL3OUQ.js';
2
2
 
3
3
 
4
4
 
package/dist/nav-stack.js CHANGED
@@ -1,4 +1,4 @@
1
- export { NavStack } from './chunk-5PMGQDG7.js';
1
+ export { NavStack } from './chunk-DQA5FMOX.js';
2
2
 
3
3
 
4
4
 
package/dist/row.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Row } from './chunk-NZXWU4R5.js';
1
+ export { Row } from './chunk-5I22LMCV.js';
2
2
 
3
3
 
4
4
 
@@ -23,7 +23,7 @@ interface SegmentedControlProps<Value extends string = string> {
23
23
  size?: SegmentedControlSize;
24
24
  layout?: SegmentedControlLayout;
25
25
  className?: string;
26
- /** Render as an unanimated loading skeleton, disabling every segment. */
26
+ /** Render as a loading placeholder: every choice keeps its live label or icon, none is selected, and every segment is disabled. */
27
27
  placeholder?: boolean;
28
28
  /** Native named-slot assignment when composed inside a web component. */
29
29
  slot?: string;
@@ -1,5 +1,3 @@
1
- export { SegmentedControl } from './chunk-DVZCMMB3.js';
2
-
3
-
1
+ export { SegmentedControl } from './chunk-X5QSICJ3.js';
4
2
 
5
3
  //# sourceMappingURL=segmented-control.js.map
package/dist/select.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Select } from './chunk-UBH743HV.js';
1
+ export { Select } from './chunk-T22EM4ET.js';
2
2
 
3
3
 
4
4
 
@@ -10,6 +10,10 @@ interface SkeletonProps {
10
10
  radius?: CssLength;
11
11
  /** Render this many stacked lines (the last one shorter), for multi-line text. */
12
12
  lines?: number;
13
+ /** Lay the block out as `display: block` instead of the default
14
+ * `inline-block`, so it takes no text line of its own: no baseline gap
15
+ * below it, and it centers like an icon in a slot. Defaults to `false`. */
16
+ block?: boolean;
13
17
  /** Accessible label. Omit to keep the block decorative (`aria-hidden`). */
14
18
  label?: string;
15
19
  className?: string;
@@ -22,6 +26,6 @@ interface SkeletonProps {
22
26
  * `placeholder` prop. Decorative by default (`aria-hidden`); pass `label` to
23
27
  * announce it. Sizes to its slot unless `width`/`height` are given.
24
28
  */
25
- declare function Skeleton({ width, height, radius, lines, label, className, slot, }: SkeletonProps): kerfjs.SafeHtml;
29
+ declare function Skeleton({ width, height, radius, lines, block, label, className, slot, }: SkeletonProps): kerfjs.SafeHtml;
26
30
 
27
31
  export { Skeleton, type SkeletonProps };
package/dist/skeleton.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Skeleton } from './chunk-ULCDZTWL.js';
1
+ export { Skeleton } from './chunk-ATHXW6RP.js';
2
2
 
3
3
 
4
4
  //# sourceMappingURL=skeleton.js.map
package/dist/spacer.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Spacer } from './chunk-JMGKM7RK.js';
1
+ export { Spacer } from './chunk-ZMBU522F.js';
2
2
 
3
3
 
4
4
  //# sourceMappingURL=spacer.js.map
@@ -1,4 +1,4 @@
1
- import { NavStack } from './chunk-5PMGQDG7.js';
1
+ import { NavStack } from './chunk-DQA5FMOX.js';
2
2
  import { ResizableRegion } from './chunk-VOCPXGQN.js';
3
3
 
4
4
 
@@ -13,7 +13,7 @@ interface StateBannerProps {
13
13
  tone?: StateBannerTone;
14
14
  urgency?: StateBannerUrgency;
15
15
  className?: string;
16
- /** Render the title, badge, and detail as unanimated loading skeletons, keeping the icon and tone. */
16
+ /** Render the title, badge, and detail as unanimated loading skeletons, keeping the icon and tone. The detail line appears only when `detail` is set, as in the live banner. */
17
17
  placeholder?: boolean;
18
18
  /** Native named-slot assignment when composed inside a web component. */
19
19
  slot?: string;
@@ -1,4 +1,4 @@
1
- export { StateBanner } from './chunk-JM53SMVF.js';
1
+ export { StateBanner } from './chunk-BJJKFVWW.js';
2
2
 
3
3
 
4
4
 
@@ -148,6 +148,15 @@
148
148
  .kui-app-tab__close:hover {
149
149
  color: var(--kui-color-text);
150
150
  }
151
+ /* A dormant tab keeps its close button's space, so it matches the live tab's
152
+ geometry, but never shows a control it has disabled. */
153
+ .kui-app-tab:is([data-placeholder="true"], [data-pending="true"])
154
+ .kui-app-tab__close {
155
+ visibility: hidden;
156
+ }
157
+ .kui-app-tab[data-pending="true"] .kui-app-tab__name {
158
+ color: var(--kui-color-text-quiet);
159
+ }
151
160
  .kui-app-tab__close-icon {
152
161
  display: grid;
153
162
  width: 0.6375rem;
@@ -27,7 +27,7 @@
27
27
  --_kui-badge-fill-quiet: var(--kui-color-brand-fill-quiet);
28
28
  --_kui-badge-fill-solid: var(--kui-color-brand-on-fill);
29
29
  --_kui-badge-border: var(--kui-color-brand-border-normal);
30
- --_kui-badge-on-quiet: var(--kui-color-brand-on-quiet);
30
+ --_kui-badge-on-quiet: var(--kui-color-brand-on-fill);
31
31
  --_kui-badge-on-solid: var(--kui-color-surface);
32
32
  }
33
33
 
@@ -35,7 +35,7 @@
35
35
  --_kui-badge-fill-quiet: var(--kui-color-pop-fill-quiet);
36
36
  --_kui-badge-fill-solid: var(--kui-color-pop-on-fill);
37
37
  --_kui-badge-border: var(--kui-color-pop-border-normal);
38
- --_kui-badge-on-quiet: var(--kui-color-pop-on-quiet);
38
+ --_kui-badge-on-quiet: var(--kui-color-pop-on-fill);
39
39
  --_kui-badge-on-solid: var(--kui-color-surface);
40
40
  }
41
41
 
@@ -43,7 +43,7 @@
43
43
  --_kui-badge-fill-quiet: var(--kui-color-success-fill-quiet);
44
44
  --_kui-badge-fill-solid: var(--kui-color-success-on-fill);
45
45
  --_kui-badge-border: var(--kui-color-success-border-normal);
46
- --_kui-badge-on-quiet: var(--kui-color-success-on-quiet);
46
+ --_kui-badge-on-quiet: var(--kui-color-success-on-fill);
47
47
  --_kui-badge-on-solid: var(--kui-color-surface);
48
48
  }
49
49
 
@@ -51,19 +51,30 @@
51
51
  --_kui-badge-fill-quiet: var(--kui-color-warning-fill-quiet);
52
52
  --_kui-badge-fill-solid: var(--kui-color-warning-on-fill);
53
53
  --_kui-badge-border: var(--kui-color-warning-border-normal);
54
- --_kui-badge-on-quiet: var(--kui-color-warning-on-quiet);
54
+ --_kui-badge-on-quiet: var(--kui-color-warning-on-fill);
55
55
  --_kui-badge-on-solid: var(--kui-color-surface);
56
56
  }
57
57
 
58
58
  .kui-badge[data-tone="danger"] {
59
59
  --_kui-badge-fill-quiet: var(--kui-color-danger-fill-quiet);
60
- --_kui-badge-fill-solid: var(--kui-color-danger-on-quiet);
60
+ --_kui-badge-fill-solid: var(--kui-color-danger-on-fill);
61
61
  --_kui-badge-border: var(--kui-color-danger-border-normal);
62
- --_kui-badge-on-quiet: var(--kui-color-danger-on-quiet);
62
+ --_kui-badge-on-quiet: var(--kui-color-danger-on-fill);
63
63
  --_kui-badge-on-solid: var(--kui-color-surface);
64
64
  }
65
65
 
66
66
  .kui-badge[data-appearance="solid"] {
67
+ /* A placeholder's skeleton inside a solid badge: the generic text-color tint
68
+ is nearly invisible on the saturated fill, so derive it from the badge's
69
+ own foreground instead, which contrasts with the fill in every tone and
70
+ color scheme. Quiet and outline badges sit on a pale fill and keep the
71
+ generic tint. */
72
+ --_kui-skeleton-fill: color-mix(
73
+ in srgb,
74
+ var(--_kui-badge-on-solid) 45%,
75
+ transparent
76
+ );
77
+
67
78
  color: var(--_kui-badge-on-solid);
68
79
  background: var(--_kui-badge-fill-solid);
69
80
  }
@@ -232,7 +232,7 @@
232
232
  .kui-collapsible-panel[data-presentation="overlay"] {
233
233
  position: fixed;
234
234
  z-index: var(--kui-collapsible-panel-overlay-z, 40);
235
- box-shadow: var(--kui-shadow-l, 0 8px 32px rgb(0 0 0 / 24%));
235
+ box-shadow: var(--kui-shadow-l);
236
236
  }
237
237
 
238
238
  [data-collapsible-overlay="true"] .kui-collapsible-panel--left,