@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.
- package/ai/component-catalog-v2.d.ts +3 -0
- package/ai/component-catalog-v2.json +3 -1
- package/ai/component-catalog-v2.schema.json +7 -0
- package/ai/component-catalog.json +3 -1
- package/ai/public-api-signatures-v1.md +30 -11
- package/ai/skill.md +15 -15
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/app-tab.d.ts +10 -1
- package/dist/app-tab.js +1 -1
- package/dist/browser/segmented-control.js +0 -1
- package/dist/catalog.js +4 -4
- package/dist/{chunk-S4QRSBFI.js → chunk-3NBL3OUQ.js} +2 -2
- package/dist/{chunk-S4QRSBFI.js.map → chunk-3NBL3OUQ.js.map} +1 -1
- package/dist/{chunk-UPZ6EEJN.js → chunk-44IG7PFV.js} +3 -3
- package/dist/{chunk-UPZ6EEJN.js.map → chunk-44IG7PFV.js.map} +1 -1
- package/dist/{chunk-NZXWU4R5.js → chunk-5I22LMCV.js} +2 -2
- package/dist/{chunk-NZXWU4R5.js.map → chunk-5I22LMCV.js.map} +1 -1
- package/dist/{chunk-ULCDZTWL.js → chunk-ATHXW6RP.js} +4 -2
- package/dist/chunk-ATHXW6RP.js.map +1 -0
- package/dist/{chunk-JM53SMVF.js → chunk-BJJKFVWW.js} +14 -5
- package/dist/chunk-BJJKFVWW.js.map +1 -0
- package/dist/{chunk-AEPXGCNF.js → chunk-C2FAYFDE.js} +2 -2
- package/dist/{chunk-AEPXGCNF.js.map → chunk-C2FAYFDE.js.map} +1 -1
- package/dist/{chunk-5FZZMIMD.js → chunk-CCMKJWLX.js} +16 -12
- package/dist/chunk-CCMKJWLX.js.map +1 -0
- package/dist/{chunk-5PMGQDG7.js → chunk-DQA5FMOX.js} +2 -2
- package/dist/{chunk-5PMGQDG7.js.map → chunk-DQA5FMOX.js.map} +1 -1
- package/dist/{chunk-NMGTHYW3.js → chunk-GUIHMIT2.js} +13 -11
- package/dist/chunk-GUIHMIT2.js.map +1 -0
- package/dist/{chunk-KX7DP2GO.js → chunk-KPNTVB7A.js} +9 -4
- package/dist/chunk-KPNTVB7A.js.map +1 -0
- package/dist/{chunk-D547PH4L.js → chunk-RNZAKSME.js} +11 -8
- package/dist/chunk-RNZAKSME.js.map +1 -0
- package/dist/{chunk-UBH743HV.js → chunk-T22EM4ET.js} +7 -5
- package/dist/chunk-T22EM4ET.js.map +1 -0
- package/dist/{chunk-O3RCCSQJ.js → chunk-TZ5IHWB2.js} +3 -3
- package/dist/{chunk-O3RCCSQJ.js.map → chunk-TZ5IHWB2.js.map} +1 -1
- package/dist/{chunk-MO56ZZLG.js → chunk-WZ2GLEY4.js} +6 -2
- package/dist/chunk-WZ2GLEY4.js.map +1 -0
- package/dist/{chunk-DVZCMMB3.js → chunk-X5QSICJ3.js} +5 -5
- package/dist/chunk-X5QSICJ3.js.map +1 -0
- package/dist/{chunk-JMGKM7RK.js → chunk-ZMBU522F.js} +2 -2
- package/dist/{chunk-JMGKM7RK.js.map → chunk-ZMBU522F.js.map} +1 -1
- package/dist/css-values.d.ts +4 -2
- package/dist/css-values.js +1 -1
- package/dist/grid.js +1 -1
- package/dist/index.js +15 -15
- package/dist/list-action-row.d.ts +2 -1
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.d.ts +1 -0
- package/dist/list-header.js +1 -1
- package/dist/list-item.d.ts +5 -3
- package/dist/list-item.js +1 -1
- package/dist/list.js +1 -1
- package/dist/nav-stack.js +1 -1
- package/dist/row.js +1 -1
- package/dist/segmented-control.d.ts +1 -1
- package/dist/segmented-control.js +1 -3
- package/dist/select.js +1 -1
- package/dist/skeleton.d.ts +5 -1
- package/dist/skeleton.js +1 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.js +1 -1
- package/dist/state-banner.d.ts +1 -1
- package/dist/state-banner.js +1 -1
- package/dist/styles/app-tab.css +9 -0
- package/dist/styles/badge.css +17 -6
- package/dist/styles/collapsible-panel.css +1 -1
- package/dist/styles/foundation.css +82 -26
- package/dist/styles/list-action-row.css +29 -8
- package/dist/styles/list-header.css +19 -7
- package/dist/styles/list-item.css +11 -3
- package/dist/styles/resizable-region.css +1 -1
- package/dist/styles/segmented-control.css +21 -1
- package/dist/styles/select.css +24 -13
- package/dist/styles/skeleton.css +37 -3
- package/dist/styles/state-banner.css +48 -12
- package/dist/styles/webawesome.css +47 -20
- package/dist/styles/workbench.css +1 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/value-table.js +1 -1
- package/dist/wire-sidebar.js +1 -1
- package/dist/wire-sidebar.js.map +1 -1
- package/docs/accessibility.md +4 -1
- package/docs/collapsible-panel.md +2 -1
- package/docs/component-contract.md +84 -7
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
- package/docs/design/templates/empty-state-dark.svg +1 -1
- package/docs/design/templates/list/stack-dark.svg +1 -1
- package/docs/design/templates/list/stack.svg +1 -1
- package/docs/design/templates/list-action-row/selected.svg +1 -1
- package/docs/design/templates/list-action-row.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-header/action-dark.svg +1 -1
- package/docs/design/templates/list-header/action.svg +1 -1
- package/docs/design/templates/list-header/count-dark.svg +1 -1
- package/docs/design/templates/list-header/count.svg +1 -1
- package/docs/design/templates/list-header/inline-action-dark.svg +1 -1
- package/docs/design/templates/list-header/inline-action.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
- package/docs/design/templates/list-header-dark.svg +1 -1
- package/docs/design/templates/list-header.svg +1 -1
- package/docs/design/templates/list-item/selected.svg +1 -1
- package/docs/design/templates/list-item.svg +1 -1
- package/docs/design/templates/list.svg +1 -1
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
- package/docs/design/templates/segmented-control/equal.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small.svg +1 -1
- package/docs/design/templates/segmented-control-dark.svg +1 -1
- package/docs/design/templates/segmented-control.svg +1 -1
- package/docs/design/templates/state-banner/danger-dark.svg +1 -1
- package/docs/design/templates/state-banner/danger.svg +1 -1
- package/docs/design/templates/state-banner/info-badge-dark.svg +1 -1
- package/docs/design/templates/state-banner/info-badge.svg +1 -1
- package/docs/design/templates/state-banner/info-dark.svg +1 -1
- package/docs/design/templates/state-banner/info.svg +1 -1
- package/docs/design/templates/state-banner/success-dark.svg +1 -1
- package/docs/design/templates/state-banner/success.svg +1 -1
- package/docs/design/templates/state-banner/warning-dark.svg +1 -1
- package/docs/design/templates/state-banner/warning.svg +1 -1
- package/docs/design/templates/state-banner-dark.svg +1 -1
- package/docs/design/templates/state-banner.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
- package/docs/design/templates/tab-bar-dark.svg +1 -1
- package/docs/design/templates/tab-bar.svg +1 -1
- package/docs/design/templates/token-search-field/tokens.svg +1 -1
- package/docs/design/templates/token-search-field.svg +1 -1
- package/docs/design/templates.md +11 -1
- package/docs/device-class.md +2 -1
- package/docs/recipes.md +6 -4
- package/docs/ux-demo.md +2 -2
- package/docs/webawesome-theme.md +9 -2
- package/llms.txt +7 -3
- package/package.json +1 -1
- package/ux-demo/recipes/collapsible-sidebar.tsx +12 -11
- package/ux-demo/recipes/composer-form.tsx +2 -0
- package/ux-demo/recipes/loading-inspector.tsx +7 -6
- package/dist/chunk-5FZZMIMD.js.map +0 -1
- package/dist/chunk-D547PH4L.js.map +0 -1
- package/dist/chunk-DVZCMMB3.js.map +0 -1
- package/dist/chunk-JM53SMVF.js.map +0 -1
- package/dist/chunk-KX7DP2GO.js.map +0 -1
- package/dist/chunk-MO56ZZLG.js.map +0 -1
- package/dist/chunk-NMGTHYW3.js.map +0 -1
- package/dist/chunk-UBH743HV.js.map +0 -1
- 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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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"]}
|
package/dist/css-values.d.ts
CHANGED
|
@@ -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 };
|
package/dist/css-values.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, space, uiColor } from './chunk-
|
|
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
package/dist/index.js
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
export { wireTokenSearchFields } from './chunk-CMUIXJZM.js';
|
|
2
|
-
export { ValueTable, ValueTableRow } from './chunk-
|
|
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-
|
|
9
|
-
export { Select } from './chunk-
|
|
10
|
-
export { Spacer } from './chunk-
|
|
11
|
-
export { StateBanner } from './chunk-
|
|
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-
|
|
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-
|
|
18
|
-
export { ListActionRow } from './chunk-
|
|
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-
|
|
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-
|
|
25
|
-
export { List } from './chunk-
|
|
26
|
-
export { ToolbarText } from './chunk-
|
|
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-
|
|
30
|
+
export { ListHeader } from './chunk-KPNTVB7A.js';
|
|
31
31
|
export { Text } from './chunk-7IUSV4XG.js';
|
|
32
|
-
export { Skeleton } from './chunk-
|
|
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-
|
|
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;
|
package/dist/list-action-row.js
CHANGED
package/dist/list-header.d.ts
CHANGED
|
@@ -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;
|
package/dist/list-header.js
CHANGED
package/dist/list-item.d.ts
CHANGED
|
@@ -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
package/dist/list.js
CHANGED
package/dist/nav-stack.js
CHANGED
package/dist/row.js
CHANGED
|
@@ -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
|
|
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;
|
package/dist/select.js
CHANGED
package/dist/skeleton.d.ts
CHANGED
|
@@ -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
package/dist/spacer.js
CHANGED
package/dist/split-view.js
CHANGED
package/dist/state-banner.d.ts
CHANGED
|
@@ -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;
|
package/dist/state-banner.js
CHANGED
package/dist/styles/app-tab.css
CHANGED
|
@@ -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;
|
package/dist/styles/badge.css
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
235
|
+
box-shadow: var(--kui-shadow-l);
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
[data-collapsible-overlay="true"] .kui-collapsible-panel--left,
|