@kerfjs/ui 5.0.0-beta.62 → 5.0.0-beta.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/ai/component-catalog-extension.schema.json +13 -0
- package/ai/component-catalog.json +8 -2
- package/ai/component-composition.json +9 -2
- package/ai/components/list-item.md +1 -1
- package/ai/components/workbench.md +3 -2
- package/ai/public-api-signatures-v1.md +136 -38
- package/ai/skill.md +9 -5
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/index.mjs +3 -2
- package/catalog-projection-cli.mjs +96 -0
- package/catalog-projection.d.mts +55 -0
- package/catalog-projection.mjs +62 -0
- package/dist/browser/catalog.js +1 -1
- package/dist/browser/collapsible-panel.js +2 -0
- package/dist/browser/nav-stack.js +1 -0
- package/dist/browser/split-view.js +1 -0
- package/dist/browser/toolbar-control-group.js +1 -0
- package/dist/browser/workbench.js +1 -0
- package/dist/catalog-resources.d.ts +1 -1
- package/dist/catalog.d.ts +1 -1
- package/dist/catalog.js +11 -10
- package/dist/catalog.js.map +1 -1
- package/dist/chip.d.ts +9 -3
- package/dist/chip.js +1 -1
- package/dist/{chunk-OD2VXAPL.js → chunk-3BYFWTP3.js} +4 -3
- package/dist/chunk-3BYFWTP3.js.map +1 -0
- package/dist/{chunk-5Q3N6EV7.js → chunk-5IJ6UGNZ.js} +3 -3
- package/dist/{chunk-5Q3N6EV7.js.map → chunk-5IJ6UGNZ.js.map} +1 -1
- package/dist/chunk-7AKGPBCC.js +76 -0
- package/dist/chunk-7AKGPBCC.js.map +1 -0
- package/dist/{chunk-KROD7KZK.js → chunk-AUVG54KC.js} +2 -2
- package/dist/{chunk-KROD7KZK.js.map → chunk-AUVG54KC.js.map} +1 -1
- package/dist/{chunk-AUKT3KMG.js → chunk-CQHN45XR.js} +17 -2
- package/dist/chunk-CQHN45XR.js.map +1 -0
- package/dist/{chunk-SWVW56CV.js → chunk-EN4LDR5Y.js} +2 -2
- package/dist/{chunk-SWVW56CV.js.map → chunk-EN4LDR5Y.js.map} +1 -1
- package/dist/{chunk-4MG3KXJM.js → chunk-F7OCOBTG.js} +2 -2
- package/dist/{chunk-4MG3KXJM.js.map → chunk-F7OCOBTG.js.map} +1 -1
- package/dist/{chunk-KYDDCJXU.js → chunk-HXCMWANP.js} +4 -4
- package/dist/{chunk-KYDDCJXU.js.map → chunk-HXCMWANP.js.map} +1 -1
- package/dist/{chunk-ENGVYQPG.js → chunk-IA4D5XNT.js} +60 -10
- package/dist/chunk-IA4D5XNT.js.map +1 -0
- package/dist/{chunk-F4QMLOXJ.js → chunk-IAOAZUOO.js} +2 -2
- package/dist/{chunk-F4QMLOXJ.js.map → chunk-IAOAZUOO.js.map} +1 -1
- package/dist/{chunk-X6ADHJNI.js → chunk-KFYANKJI.js} +25 -6
- package/dist/chunk-KFYANKJI.js.map +1 -0
- package/dist/chunk-MOSIE4Z2.js +51 -0
- package/dist/chunk-MOSIE4Z2.js.map +1 -0
- package/dist/{chunk-7JUBXOIV.js → chunk-NXWE5S57.js} +25 -6
- package/dist/chunk-NXWE5S57.js.map +1 -0
- package/dist/{chunk-NNMLEDMD.js → chunk-OBAFAH5B.js} +36 -8
- package/dist/chunk-OBAFAH5B.js.map +1 -0
- package/dist/{chunk-A3CKOW2R.js → chunk-R75GGNWY.js} +123 -20
- package/dist/chunk-R75GGNWY.js.map +1 -0
- package/dist/chunk-RGS4WX2M.js +44 -0
- package/dist/chunk-RGS4WX2M.js.map +1 -0
- package/dist/{chunk-RRB26JRJ.js → chunk-RTJNJTG3.js} +2 -2
- package/dist/{chunk-RRB26JRJ.js.map → chunk-RTJNJTG3.js.map} +1 -1
- package/dist/{chunk-EAC4CDY7.js → chunk-SMZGAPCU.js} +15 -2
- package/dist/chunk-SMZGAPCU.js.map +1 -0
- package/dist/{chunk-6ZXOQEAN.js → chunk-WF75U3V4.js} +7 -1
- package/dist/chunk-WF75U3V4.js.map +1 -0
- package/dist/{chunk-VCBTX62E.js → chunk-ZRWXFDDS.js} +2 -2
- package/dist/chunk-ZRWXFDDS.js.map +1 -0
- package/dist/collapsible-panel.d.ts +18 -7
- package/dist/collapsible-panel.js +19 -3
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +36 -5
- package/dist/content-item.js +1 -1
- package/dist/disclosure-arrow.js +2 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +19 -19
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.js +1 -1
- package/dist/list-item.js +1 -1
- package/dist/lucide-icon.d.ts +5 -2
- package/dist/lucide-icon.js +2 -1
- package/dist/nav-stack.js +2 -1
- package/dist/pane.d.ts +2 -1
- package/dist/pane.js +1 -1
- package/dist/{panel-toolbar-DqwtBxQL.d.ts → panel-toolbar-DDKh4uKd.d.ts} +11 -2
- package/dist/popup-menu-register.js +38 -1
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.d.ts +2 -2
- package/dist/popup-menu.js +1 -1
- package/dist/select.js +1 -1
- package/dist/split-view.js +2 -1
- package/dist/split-view.js.map +1 -1
- package/dist/styles/chip.css +14 -0
- package/dist/styles/content-item.css +36 -0
- package/dist/styles/list-action-row.css +4 -3
- package/dist/styles/list-header.css +4 -3
- package/dist/styles/list-item.css +21 -11
- package/dist/styles/lucide-icon.css +5 -0
- package/dist/styles/pane.css +3 -2
- package/dist/styles/popup-menu.css +15 -10
- package/dist/styles/select.css +11 -0
- package/dist/styles/sunken-panel.css +7 -0
- package/dist/styles/text.css +29 -0
- package/dist/styles/token-search-field.css +29 -6
- package/dist/styles/toolbar-control-group.css +35 -0
- package/dist/styles/workbench.css +148 -2
- package/dist/sunken-panel.d.ts +6 -1
- package/dist/sunken-panel.js +1 -1
- package/dist/text.d.ts +14 -3
- package/dist/text.js +1 -1
- package/dist/token-search-field.js +2 -1
- package/dist/toolbar-control-group.d.ts +5 -1
- package/dist/toolbar-control-group.js +2 -1
- package/dist/toolbar.d.ts +5 -2
- package/dist/toolbar.js +1 -1
- package/dist/wire-catalog.js +1 -1
- package/dist/wire-content-items.d.ts +9 -0
- package/dist/wire-content-items.js +62 -0
- package/dist/wire-content-items.js.map +1 -0
- package/dist/wire-token-search-fields.js +2 -1
- package/dist/wire-workbench.d.ts +7 -0
- package/dist/wire-workbench.js +1 -1
- package/dist/workbench.d.ts +24 -8
- package/dist/workbench.js +2 -1
- package/docs/accessibility.md +21 -5
- package/docs/catalog.md +36 -0
- package/docs/collapsible-panel.md +8 -1
- package/docs/component-contract.md +10 -4
- package/docs/component-selection.md +39 -8
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
- package/docs/design/templates/toolbar-dark.svg +1 -1
- package/docs/design/templates/toolbar.svg +1 -1
- package/docs/examples/component-catalog-extension.json +6 -0
- package/docs/layout.md +30 -3
- package/docs/sunken-panel.md +22 -0
- package/docs/ui-analyzer.md +4 -0
- package/docs/workbench.md +38 -4
- package/llms.txt +9 -5
- package/package.json +16 -2
- package/scripts/component-catalog-extension-validation.mjs +28 -0
- package/dist/chunk-4R777DUZ.js +0 -34
- package/dist/chunk-4R777DUZ.js.map +0 -1
- package/dist/chunk-6ZXOQEAN.js.map +0 -1
- package/dist/chunk-7JUBXOIV.js.map +0 -1
- package/dist/chunk-A3CKOW2R.js.map +0 -1
- package/dist/chunk-AUKT3KMG.js.map +0 -1
- package/dist/chunk-EAC4CDY7.js.map +0 -1
- package/dist/chunk-ENGVYQPG.js.map +0 -1
- package/dist/chunk-MA73TA6D.js +0 -42
- package/dist/chunk-MA73TA6D.js.map +0 -1
- package/dist/chunk-N2DRU35S.js +0 -45
- package/dist/chunk-N2DRU35S.js.map +0 -1
- package/dist/chunk-NNMLEDMD.js.map +0 -1
- package/dist/chunk-OD2VXAPL.js.map +0 -1
- package/dist/chunk-VCBTX62E.js.map +0 -1
- package/dist/chunk-X6ADHJNI.js.map +0 -1
package/dist/popup-menu.d.ts
CHANGED
|
@@ -18,9 +18,9 @@ interface PopupMenuItem {
|
|
|
18
18
|
value?: string;
|
|
19
19
|
/** Leading icon, typically a `LucideIcon`; it is placed in the item's icon slot. */
|
|
20
20
|
icon?: SafeHtml;
|
|
21
|
-
/** A
|
|
21
|
+
/** A checkbox choice, including nested choices; omit for a plain command. */
|
|
22
22
|
checked?: boolean;
|
|
23
|
-
/** Trailing safe content, such as
|
|
23
|
+
/** Trailing safe content, such as secondary status. */
|
|
24
24
|
details?: SafeHtml;
|
|
25
25
|
/** Destructive command styling. */
|
|
26
26
|
tone?: 'default' | 'danger';
|
package/dist/popup-menu.js
CHANGED
package/dist/select.js
CHANGED
package/dist/split-view.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NavStack } from './chunk-
|
|
1
|
+
import { NavStack } from './chunk-HXCMWANP.js';
|
|
2
2
|
import { ResizableRegion } from './chunk-KLJKU6ZL.js';
|
|
3
3
|
|
|
4
4
|
|
|
@@ -6,6 +6,7 @@ import { ResizableRegion } from './chunk-KLJKU6ZL.js';
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
|
|
9
10
|
import { jsx, jsxs } from 'kerfjs/jsx-runtime';
|
|
10
11
|
|
|
11
12
|
function SplitView({
|
package/dist/split-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/split-view.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/split-view.tsx"],"names":[],"mappings":";;;;;;;;;;;AAiGO,SAAS,SAAA,CAAU;AAAA,EACxB,EAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,YAAA,GAAe,KAAA;AAAA,EACf,SAAA,GAAY,EAAA;AAAA,EACZ,WAAA,GAAc,EAAA;AAAA,EACd,SAAA,GAAY,MAAA;AAAA,EACZ,eAAe,EAAC;AAAA,EAChB,SAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,EAAmB;AACjB,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,QAAA,GAAyB;AAAA,MAC7B,GAAG,YAAA,CAAa,IAAA;AAAA,MAChB,GAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS;AAAA,KACX;AACA,IAAA,MAAM,QAAwB,YAAA,GAC1B;AAAA,MACE,QAAA;AAAA,MACA;AAAA,QACE,GAAG,YAAA,CAAa,MAAA;AAAA,QAChB,GAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS;AAAA;AACX,KACF,GACA,CAAC,QAAQ,CAAA;AACb,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,CAAA,uCAAA,EAA0C,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,QAClE,EAAA;AAAA,QACA,gBAAA,EAAe,YAAA;AAAA,QACf,iBAAA,EAAgB,SAAA;AAAA,QAChB,IAAA;AAAA,QAEA,QAAA,kBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,YACT,KAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA;AAAA,YACA,UAAU,YAAA,CAAa,QAAA;AAAA,YACvB,UAAU,YAAA,CAAa,QAAA;AAAA,YACvB,eAAe,YAAA,CAAa,aAAA;AAAA,YAC5B,aAAa,YAAA,CAAa,WAAA;AAAA,YAC1B,eAAe,YAAA,CAAa,aAAA;AAAA,YAC5B,gBAAgB,YAAA,CAAa;AAAA;AAAA;AAC/B;AAAA,KACF;AAAA,EAEJ;AACA,EAAA,MAAM,WAAW,SAAA,mBACf,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,GAAG,EAAE,CAAA,KAAA,CAAA;AAAA,MACT,OAAO,SAAA,IAAa,MAAA;AAAA,MACpB,MAAM,SAAA,CAAU,IAAA;AAAA,MAChB,KAAK,SAAA,CAAU,GAAA;AAAA,MACf,KAAK,SAAA,CAAU,GAAA;AAAA,MACf,WAAW,SAAA,CAAU,SAAA;AAAA,MACrB,YAAY,SAAA,CAAU,UAAA;AAAA,MACtB,iBAAiB,SAAA,CAAU,eAAA;AAAA,MAC3B,WAAW,SAAA,CAAU,SAAA;AAAA,MACrB,eAAe,SAAA,CAAU,aAAA;AAAA,MACzB,gBAAgB,SAAA,CAAU,cAAA;AAAA,MAC1B,gBAAgB,SAAA,CAAU,cAAA;AAAA,MAC1B,iBAAiB,SAAA,CAAU,eAAA;AAAA,MAE3B,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,+BAAA;AAAA,UACN,iBAAA,EAAe,IAAA;AAAA,UACf,gBAAA,EAAe,MAAA;AAAA,UAEd,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF,mBAEA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,+BAAA;AAAA,MACN,iBAAA,EAAe,IAAA;AAAA,MACf,gBAAA,EAAe,OAAA;AAAA,MAEd,QAAA,EAAA;AAAA;AAAA,GACH;AAEF,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,eAAA,EAAkB,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MAC1C,EAAA;AAAA,MACA,gBAAA,EAAe,YAAA;AAAA,MACf,iBAAA,EAAgB,OAAA;AAAA,MAChB,YAAA,EAAY,KAAA;AAAA,MACZ,IAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,iCAAA;AAAA,YACN,mBAAA,EAAiB,IAAA;AAAA,YACjB,cAAY,WAAA,IAAe,MAAA;AAAA,YAE1B,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ","file":"split-view.js","sourcesContent":["import {\n NavStack,\n type NavStackProps,\n type NavStackView,\n} from './nav-stack.js';\nimport {\n ResizableRegion,\n type ResizableRegionProps,\n} from './resizable-region.js';\nimport type { KerfUiContent } from './semantic-content.js';\n\n/**\n * The roomy list pane's `ResizableRegion`: its committed `size` and `min` /\n * `max` limits, plus the region configuration that forwards unchanged\n * (`separator`, `handleIcon`, `contentOverflow`, and collapse:\n * `collapsed`, `transitioning`, `collapseMotion`, `restoreControl`,\n * `restorePosition`). Omitted options keep the region's defaults.\n */\nexport interface SplitViewResizable extends Pick<\n ResizableRegionProps,\n | 'separator'\n | 'handleIcon'\n | 'contentOverflow'\n | 'collapsed'\n | 'transitioning'\n | 'collapseMotion'\n | 'restoreControl'\n | 'restorePosition'\n> {\n size: number;\n min: number;\n max: number;\n}\n\n/** One compact view's top- and bottom-toolbar content (see `NavStackView`). */\nexport type SplitViewCompactViewToolbars = Pick<\n NavStackView,\n 'leading' | 'center' | 'toolbar' | 'bottomToolbar'\n>;\n\n/**\n * The compact `NavStack`'s configuration: its toolbar configuration, back\n * control, persistent bottom toolbar, and chrome dividers forward to the\n * stack, and `list` / `detail` give each view its own toolbar groups.\n */\nexport interface SplitViewCompactStack extends Pick<\n NavStackProps,\n | 'toolbarConfig'\n | 'backIcon'\n | 'backText'\n | 'hideToolbar'\n | 'bottomToolbar'\n | 'chromeDividers'\n> {\n /** Toolbar content for the list (root) view. */\n list?: SplitViewCompactViewToolbars;\n /** Toolbar content for the pushed detail view. */\n detail?: SplitViewCompactViewToolbars;\n}\n\nexport interface SplitViewProps {\n id: string;\n label: string;\n /** The list (primary) pane. */\n list: KerfUiContent;\n /** The detail (secondary) pane. */\n detail: KerfUiContent;\n /**\n * Compact (\"one pane at a time\") classes — a handset or portrait tablet.\n * Derive from `deviceClass().value.compact`. When true the split collapses to\n * a `NavStack`: the list is the root and the detail is pushed over it.\n */\n compact?: boolean;\n /** In compact mode, whether the detail is currently pushed over the list. */\n detailActive?: boolean;\n /** Title/label for the list (compact NavStack root + region label). */\n listTitle?: string;\n /** Title/label for the detail (compact NavStack pushed view + region label). */\n detailTitle?: string;\n /** Back label for the compact NavStack (default \"Back\"). */\n backLabel?: string;\n /** Compact NavStack configuration and per-view toolbars. */\n compactStack?: SplitViewCompactStack;\n /** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */\n resizable?: SplitViewResizable;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\n/**\n * A list-detail split. On roomy classes it shows both panes side\n * by side with an optional resizable separator; on compact classes it collapses\n * to a `NavStack` (list → detail). See `docs/23-app-layouts.md` §3.2. Compose the\n * resizable wiring with `wireResizableRegions` and the compact back with\n * `wireNavStack`.\n */\nexport function SplitView({\n id,\n label,\n list,\n detail,\n compact = false,\n detailActive = false,\n listTitle = '',\n detailTitle = '',\n backLabel = 'Back',\n compactStack = {},\n resizable,\n className = '',\n slot,\n}: SplitViewProps) {\n if (compact) {\n const listView: NavStackView = {\n ...compactStack.list,\n key: 'list',\n title: listTitle,\n content: list,\n };\n const views: NavStackView[] = detailActive\n ? [\n listView,\n {\n ...compactStack.detail,\n key: 'detail',\n title: detailTitle,\n content: detail,\n },\n ]\n : [listView];\n return (\n <div\n class={`kui-split-view kui-split-view--compact ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"compact\"\n slot={slot}\n >\n <NavStack\n id={`${id}-stack`}\n label={label}\n views={views}\n backLabel={backLabel}\n backIcon={compactStack.backIcon}\n backText={compactStack.backText}\n toolbarConfig={compactStack.toolbarConfig}\n hideToolbar={compactStack.hideToolbar}\n bottomToolbar={compactStack.bottomToolbar}\n chromeDividers={compactStack.chromeDividers}\n />\n </div>\n );\n }\n const listPane = resizable ? (\n <ResizableRegion\n id={`${id}-list`}\n label={listTitle || 'List'}\n size={resizable.size}\n min={resizable.min}\n max={resizable.max}\n separator={resizable.separator}\n handleIcon={resizable.handleIcon}\n contentOverflow={resizable.contentOverflow}\n collapsed={resizable.collapsed}\n transitioning={resizable.transitioning}\n collapseMotion={resizable.collapseMotion}\n restoreControl={resizable.restoreControl}\n restorePosition={resizable.restorePosition}\n >\n <div\n class=\"kui-split-view__list kui-pane\"\n data-split-list\n data-resizable=\"true\"\n >\n {list}\n </div>\n </ResizableRegion>\n ) : (\n <div\n class=\"kui-split-view__list kui-pane\"\n data-split-list\n data-resizable=\"false\"\n >\n {list}\n </div>\n );\n return (\n <div\n class={`kui-split-view ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"split\"\n aria-label={label}\n slot={slot}\n >\n {listPane}\n <div\n class=\"kui-split-view__detail kui-pane\"\n data-split-detail\n aria-label={detailTitle || undefined}\n >\n {detail}\n </div>\n </div>\n );\n}\n"]}
|
package/dist/styles/chip.css
CHANGED
|
@@ -82,6 +82,20 @@
|
|
|
82
82
|
pointer-events: none;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
.kui-chip[data-truncate] {
|
|
86
|
+
max-width: 100%;
|
|
87
|
+
overflow: hidden;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.kui-chip__icon {
|
|
91
|
+
display: inline-grid;
|
|
92
|
+
width: 1em;
|
|
93
|
+
height: 1em;
|
|
94
|
+
color: inherit;
|
|
95
|
+
place-items: center;
|
|
96
|
+
flex: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
85
99
|
.kui-chip__label {
|
|
86
100
|
min-width: 0;
|
|
87
101
|
overflow: hidden;
|
|
@@ -28,3 +28,39 @@
|
|
|
28
28
|
.kui-content-item--framed {
|
|
29
29
|
--kui-content-item-border: var(--kui-color-neutral-border-normal);
|
|
30
30
|
}
|
|
31
|
+
|
|
32
|
+
.kui-content-item[data-interactive="true"] {
|
|
33
|
+
color: var(--kui-color-neutral-on-normal);
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.kui-content-item[data-interactive="true"]:hover:not(
|
|
38
|
+
[data-disabled="true"],
|
|
39
|
+
[data-selected="true"]
|
|
40
|
+
),
|
|
41
|
+
.kui-content-item[data-interactive="true"][data-kui-pressed="true"]:not(
|
|
42
|
+
[data-selected="true"]
|
|
43
|
+
) {
|
|
44
|
+
--kui-content-item-border: var(--kui-color-neutral-border-normal);
|
|
45
|
+
--kui-content-item-background: var(--kui-color-neutral-fill-quiet);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.kui-content-item[data-interactive="true"]:active:not([data-disabled="true"]) {
|
|
49
|
+
--kui-content-item-background: var(--kui-color-neutral-fill-normal);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.kui-content-item[data-interactive="true"][data-selected="true"] {
|
|
53
|
+
--kui-content-item-border: var(--kui-color-brand-border-quiet);
|
|
54
|
+
--kui-content-item-background: var(--kui-color-brand-fill-normal);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.kui-content-item[data-interactive="true"]:focus-visible {
|
|
58
|
+
outline: var(--kui-focus-ring);
|
|
59
|
+
outline-offset: 1px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.kui-content-item[data-interactive="true"][data-disabled="true"] {
|
|
63
|
+
color: var(--kui-color-neutral-on-quiet);
|
|
64
|
+
opacity: 0.58;
|
|
65
|
+
cursor: not-allowed;
|
|
66
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
.kui-list-action-row {
|
|
2
|
-
--kui-list-group-divider-color: var(--kui-color-neutral-border-quiet);
|
|
3
2
|
--kui-list-action-row-color: var(--kui-color-neutral-on-normal);
|
|
4
3
|
--kui-list-action-row-border: transparent;
|
|
5
4
|
--kui-list-action-row-background: transparent;
|
|
@@ -33,14 +32,16 @@
|
|
|
33
32
|
|
|
34
33
|
.kui-list-action-row[data-divider="before"],
|
|
35
34
|
.kui-list-action-row[data-divider="both"] {
|
|
36
|
-
border-block-start: 1px solid
|
|
35
|
+
border-block-start: 1px solid
|
|
36
|
+
var(--kui-list-group-divider-color, var(--kui-color-neutral-border-quiet));
|
|
37
37
|
border-start-start-radius: 0;
|
|
38
38
|
border-start-end-radius: 0;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
.kui-list-action-row[data-divider="after"],
|
|
42
42
|
.kui-list-action-row[data-divider="both"] {
|
|
43
|
-
border-block-end: 1px solid
|
|
43
|
+
border-block-end: 1px solid
|
|
44
|
+
var(--kui-list-group-divider-color, var(--kui-color-neutral-border-quiet));
|
|
44
45
|
border-end-start-radius: 0;
|
|
45
46
|
border-end-end-radius: 0;
|
|
46
47
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
.kui-list-header {
|
|
2
|
-
--kui-list-group-divider-color: var(--kui-color-neutral-border-quiet);
|
|
3
2
|
--kui-list-header-color: var(--kui-color-neutral-on-quiet);
|
|
4
3
|
--kui-list-header-hover-background: var(--kui-color-neutral-border-quiet);
|
|
5
4
|
--_kui-list-header-action-icon-size: var(
|
|
@@ -32,12 +31,14 @@
|
|
|
32
31
|
|
|
33
32
|
.kui-list-header[data-divider="before"],
|
|
34
33
|
.kui-list-header[data-divider="both"] {
|
|
35
|
-
border-block-start: 1px solid
|
|
34
|
+
border-block-start: 1px solid
|
|
35
|
+
var(--kui-list-group-divider-color, var(--kui-color-neutral-border-quiet));
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.kui-list-header[data-divider="after"],
|
|
39
39
|
.kui-list-header[data-divider="both"] {
|
|
40
|
-
border-block-end: 1px solid
|
|
40
|
+
border-block-end: 1px solid
|
|
41
|
+
var(--kui-list-group-divider-color, var(--kui-color-neutral-border-quiet));
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
.kui-list-header[data-inline="true"] {
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
.kui-list-item {
|
|
2
|
-
--kui-list-group-divider-color: var(--kui-color-neutral-border-quiet);
|
|
3
|
-
--kui-list-item-color: var(--kui-color-neutral-on-normal);
|
|
4
|
-
--kui-list-item-hover-background: var(--kui-color-neutral-fill-quiet);
|
|
5
|
-
--kui-list-item-selected-color: var(--kui-color-neutral-on-normal);
|
|
6
|
-
--kui-list-item-selected-background: var(--kui-color-brand-fill-normal);
|
|
7
2
|
display: grid;
|
|
8
3
|
width: calc(100% - (2 * var(--kui-layout-inline-margin, 0.5rem)));
|
|
9
4
|
min-height: var(--kui-list-item-min-height, 2.75rem);
|
|
@@ -24,7 +19,7 @@
|
|
|
24
19
|
--kui-list-item-radius,
|
|
25
20
|
var(--kui-layout-rounded-radius, calc(1px + 0.6875rem))
|
|
26
21
|
);
|
|
27
|
-
color: var(--kui-list-item-color);
|
|
22
|
+
color: var(--kui-list-item-color, var(--kui-color-neutral-on-normal));
|
|
28
23
|
background: var(--kui-list-item-background, transparent);
|
|
29
24
|
cursor: pointer;
|
|
30
25
|
grid-template-columns: var(--kui-list-item-columns, minmax(0, 1fr) auto);
|
|
@@ -55,14 +50,20 @@
|
|
|
55
50
|
|
|
56
51
|
.kui-list-item[data-divider="before"],
|
|
57
52
|
.kui-list-item[data-divider="both"] {
|
|
58
|
-
border-block-start-color: var(
|
|
53
|
+
border-block-start-color: var(
|
|
54
|
+
--kui-list-group-divider-color,
|
|
55
|
+
var(--kui-color-neutral-border-quiet)
|
|
56
|
+
);
|
|
59
57
|
border-start-start-radius: 0;
|
|
60
58
|
border-start-end-radius: 0;
|
|
61
59
|
}
|
|
62
60
|
|
|
63
61
|
.kui-list-item[data-divider="after"],
|
|
64
62
|
.kui-list-item[data-divider="both"] {
|
|
65
|
-
border-block-end-color: var(
|
|
63
|
+
border-block-end-color: var(
|
|
64
|
+
--kui-list-group-divider-color,
|
|
65
|
+
var(--kui-color-neutral-border-quiet)
|
|
66
|
+
);
|
|
66
67
|
border-end-start-radius: 0;
|
|
67
68
|
border-end-end-radius: 0;
|
|
68
69
|
}
|
|
@@ -99,7 +100,10 @@
|
|
|
99
100
|
--kui-list-item-hover-border,
|
|
100
101
|
var(--kui-color-neutral-border-normal)
|
|
101
102
|
);
|
|
102
|
-
background: var(
|
|
103
|
+
background: var(
|
|
104
|
+
--kui-list-item-hover-background,
|
|
105
|
+
var(--kui-color-neutral-fill-quiet)
|
|
106
|
+
);
|
|
103
107
|
}
|
|
104
108
|
|
|
105
109
|
/* A placeholder is disabled to stay inert, but it is loading, not unavailable:
|
|
@@ -124,8 +128,14 @@
|
|
|
124
128
|
--kui-list-item-selected-border,
|
|
125
129
|
var(--kui-color-brand-border-quiet)
|
|
126
130
|
);
|
|
127
|
-
color: var(
|
|
128
|
-
|
|
131
|
+
color: var(
|
|
132
|
+
--kui-list-item-selected-color,
|
|
133
|
+
var(--kui-color-neutral-on-normal)
|
|
134
|
+
);
|
|
135
|
+
background: var(
|
|
136
|
+
--kui-list-item-selected-background,
|
|
137
|
+
var(--kui-color-brand-fill-normal)
|
|
138
|
+
);
|
|
129
139
|
font-weight: 650;
|
|
130
140
|
}
|
|
131
141
|
|
package/dist/styles/pane.css
CHANGED
|
@@ -176,9 +176,10 @@
|
|
|
176
176
|
|
|
177
177
|
/* Chrome dividers: one line under the header and one over the footer, where
|
|
178
178
|
the pinned chrome meets the scrolling content, whatever the chrome holds.
|
|
179
|
-
`chromeDividers="scroll"` (the default, no attribute) draws each only while
|
|
179
|
+
`chromeDividers="scroll"` (the plain-pane default, no attribute) draws each only while
|
|
180
180
|
`wireScrollDividers` reports content scrolled away beneath it through
|
|
181
|
-
`data-scroll-divider` on the slot;
|
|
181
|
+
`data-scroll-divider` on the slot; a sunken pane defaults to `always`, which
|
|
182
|
+
draws both; `none` draws neither. The
|
|
182
183
|
line is an inset shadow inside the slot, so showing or hiding it never
|
|
183
184
|
moves the chrome or the content. */
|
|
184
185
|
.kui-pane > :is(.kui-pane__header, .kui-pane__toolbar, .kui-pane__footer) {
|
|
@@ -11,10 +11,9 @@
|
|
|
11
11
|
clip-path: inset(50%);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
/*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
(select.css reads the same values). */
|
|
14
|
+
/* PopupMenu shares the Select's caret motion, surface inset, row rhythm,
|
|
15
|
+
current-row fill, and group titles from the popup-choice contract in
|
|
16
|
+
foundation.css. Only checkbox items reserve a check column. */
|
|
18
17
|
|
|
19
18
|
/* The trigger caret turns to face the open menu, like the Select's. */
|
|
20
19
|
.kui-popup-menu > wa-button::part(caret) {
|
|
@@ -34,14 +33,20 @@
|
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
.kui-popup-menu wa-dropdown-item {
|
|
37
|
-
/*
|
|
38
|
-
|
|
36
|
+
/* A plain command starts at the checkbox glyph's leading edge. The glyph
|
|
37
|
+
sits half a smaller-font em beyond the row's base inset; its label starts
|
|
38
|
+
after the full check column below. */
|
|
39
39
|
padding: var(--_kui-popup-row-padding-block)
|
|
40
40
|
var(--_kui-popup-row-padding-inline-end) var(--_kui-popup-row-padding-block)
|
|
41
|
-
calc(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
calc(var(--_kui-popup-row-padding-inline-start) + 0.4375em);
|
|
42
|
+
}
|
|
43
|
+
.kui-popup-menu wa-dropdown-item[type="checkbox"] {
|
|
44
|
+
/* Web Awesome marks every sibling checkbox-adjacent; reserve this column
|
|
45
|
+
only on items whose checked state was explicitly supplied. */
|
|
46
|
+
padding-inline-start: calc(
|
|
47
|
+
var(--_kui-popup-row-padding-inline-start) +
|
|
48
|
+
var(--_kui-popup-row-check-width)
|
|
49
|
+
);
|
|
45
50
|
}
|
|
46
51
|
.kui-popup-menu wa-dropdown-item::part(label) {
|
|
47
52
|
padding-block: var(--_kui-popup-row-label-padding-block);
|
package/dist/styles/select.css
CHANGED
|
@@ -222,6 +222,17 @@
|
|
|
222
222
|
min-width: 0;
|
|
223
223
|
flex: 1 1 auto;
|
|
224
224
|
}
|
|
225
|
+
/* A label can use the free start-slot width to truncate, but a caret-free
|
|
226
|
+
icon must keep its intrinsic width so the combobox can center the glyph. */
|
|
227
|
+
.kui-select--custom-selected[data-selected-presentation="icon-only"][data-caret="false"]::part(
|
|
228
|
+
start
|
|
229
|
+
) {
|
|
230
|
+
flex: 0 0 auto;
|
|
231
|
+
}
|
|
232
|
+
.kui-select--custom-selected[data-selected-presentation="icon-only"][data-caret="false"]
|
|
233
|
+
.kui-select__custom-selected {
|
|
234
|
+
margin-inline-end: 0 !important;
|
|
235
|
+
}
|
|
225
236
|
.kui-select--custom-selected::part(display-input) {
|
|
226
237
|
position: absolute;
|
|
227
238
|
width: 1px;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
.kui-sunken-panel {
|
|
2
|
+
/* Reset the private value on each panel so nested panels do not inherit it. */
|
|
3
|
+
--_kui-sunken-panel-flex: 0 1 auto;
|
|
2
4
|
display: flex;
|
|
3
5
|
min-width: 0;
|
|
4
6
|
min-height: 0;
|
|
5
7
|
padding: var(--kui-sunken-panel-padding, 0.5rem);
|
|
6
8
|
box-sizing: border-box;
|
|
9
|
+
flex: var(--_kui-sunken-panel-flex, initial);
|
|
7
10
|
border-radius: var(
|
|
8
11
|
--kui-sunken-panel-radius,
|
|
9
12
|
var(--kui-layout-rounded-radius, calc(1px + 0.6875rem))
|
|
@@ -17,6 +20,10 @@
|
|
|
17
20
|
gap: var(--kui-sunken-panel-gap, 0.5rem);
|
|
18
21
|
}
|
|
19
22
|
|
|
23
|
+
.kui-sunken-panel[data-fill="true"] {
|
|
24
|
+
height: 100%;
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
.kui-sunken-panel[data-shape="square"] {
|
|
21
28
|
border-radius: 0;
|
|
22
29
|
}
|
package/dist/styles/text.css
CHANGED
|
@@ -3,6 +3,35 @@
|
|
|
3
3
|
box-sizing: border-box;
|
|
4
4
|
border: 1px solid transparent;
|
|
5
5
|
margin: 0;
|
|
6
|
+
white-space: normal;
|
|
7
|
+
overflow-wrap: normal;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.kui-text[data-wrap="anywhere"] {
|
|
11
|
+
overflow-wrap: anywhere;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.kui-text[data-wrap="nowrap"] {
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.kui-text[data-wrap="truncate"] {
|
|
19
|
+
min-width: 0;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
text-overflow: ellipsis;
|
|
22
|
+
white-space: nowrap;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
span.kui-text[data-wrap="truncate"] {
|
|
26
|
+
display: inline-block;
|
|
27
|
+
max-width: 100%;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.kui-text__clamp {
|
|
31
|
+
display: -webkit-box;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
-webkit-box-orient: vertical;
|
|
34
|
+
-webkit-line-clamp: var(--_kui-text-max-lines);
|
|
6
35
|
}
|
|
7
36
|
|
|
8
37
|
.kui-text[data-tone="quiet"] {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
--kui-token-search-line-size: 2.125rem;
|
|
7
7
|
|
|
8
8
|
display: grid;
|
|
9
|
+
position: relative;
|
|
9
10
|
width: 100%;
|
|
10
11
|
min-width: 0;
|
|
11
12
|
min-height: 2.75rem;
|
|
@@ -139,6 +140,7 @@
|
|
|
139
140
|
|
|
140
141
|
.kui-token-search__clear {
|
|
141
142
|
grid-column: 3;
|
|
143
|
+
border-radius: var(--kui-radius-pill);
|
|
142
144
|
}
|
|
143
145
|
|
|
144
146
|
.kui-token-search__trailing {
|
|
@@ -147,13 +149,24 @@
|
|
|
147
149
|
|
|
148
150
|
.kui-token-search__suggestions {
|
|
149
151
|
display: grid;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
position: absolute;
|
|
153
|
+
z-index: 20;
|
|
154
|
+
inset-block-start: calc(100% + 0.25rem);
|
|
155
|
+
inset-inline-start: 0;
|
|
156
|
+
width: min(max(100%, 15rem), calc(100vw - 1rem));
|
|
157
|
+
max-height: 15rem;
|
|
158
|
+
padding: var(--_kui-popup-inset);
|
|
159
|
+
box-sizing: border-box;
|
|
160
|
+
border: 1px solid var(--kui-color-neutral-border-normal);
|
|
154
161
|
border-radius: var(--kui-radius-pill);
|
|
155
|
-
background: var(--kui-
|
|
156
|
-
|
|
162
|
+
background: var(--kui-color-surface-raised);
|
|
163
|
+
box-shadow: var(--kui-shadow-m);
|
|
164
|
+
gap: var(--_kui-popup-row-gap);
|
|
165
|
+
overflow-y: auto;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.kui-token-search__suggestions:has(> :nth-child(2)) {
|
|
169
|
+
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
157
170
|
}
|
|
158
171
|
|
|
159
172
|
.kui-token-search__suggestion {
|
|
@@ -200,6 +213,12 @@
|
|
|
200
213
|
border-color 0.2s ease;
|
|
201
214
|
}
|
|
202
215
|
|
|
216
|
+
.kui-token-search[data-collapsible="true"][data-expanded="true"]:has(
|
|
217
|
+
.kui-token-search__suggestions
|
|
218
|
+
) {
|
|
219
|
+
overflow: visible;
|
|
220
|
+
}
|
|
221
|
+
|
|
203
222
|
.kui-token-search[data-collapsible="true"][data-expanded="false"] {
|
|
204
223
|
width: 2.75rem;
|
|
205
224
|
min-width: 2.75rem;
|
|
@@ -256,6 +275,10 @@
|
|
|
256
275
|
box-shadow: none;
|
|
257
276
|
}
|
|
258
277
|
|
|
278
|
+
.kui-token-search[data-presentation="toolbar-group"] .kui-token-search__clear {
|
|
279
|
+
border-radius: var(--kui-control-highlight-radius);
|
|
280
|
+
}
|
|
281
|
+
|
|
259
282
|
.kui-token-search[data-presentation="toolbar-group"][data-collapsible="true"]:focus-within {
|
|
260
283
|
border-color: var(--kui-color-focus);
|
|
261
284
|
background: var(--kui-token-search-background);
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
--_kui-toolbar-control-group-slot-overlap: 0px;
|
|
34
34
|
--_kui-toolbar-control-group-slot-radius: var(--kui-toolbar-item-radius);
|
|
35
35
|
display: inline-flex;
|
|
36
|
+
position: relative;
|
|
36
37
|
height: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
|
|
37
38
|
min-width: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
|
|
38
39
|
padding: 1px;
|
|
@@ -46,6 +47,34 @@
|
|
|
46
47
|
gap: 0;
|
|
47
48
|
}
|
|
48
49
|
|
|
50
|
+
.kui-toolbar-control-group[data-busy="true"] > svg,
|
|
51
|
+
.kui-toolbar-control-group[data-busy="true"]
|
|
52
|
+
> :not(.kui-toolbar-control-group__busy-spinner)
|
|
53
|
+
svg {
|
|
54
|
+
visibility: hidden;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.kui-toolbar-control-group__busy-spinner {
|
|
58
|
+
position: absolute;
|
|
59
|
+
inset-block-start: 50%;
|
|
60
|
+
inset-inline-start: 50%;
|
|
61
|
+
display: grid;
|
|
62
|
+
width: 1rem;
|
|
63
|
+
height: 1rem;
|
|
64
|
+
transform: translate(-50%, -50%);
|
|
65
|
+
place-items: center;
|
|
66
|
+
pointer-events: none;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.kui-toolbar-control-group__busy-status {
|
|
70
|
+
position: absolute;
|
|
71
|
+
width: 1px;
|
|
72
|
+
height: 1px;
|
|
73
|
+
overflow: hidden;
|
|
74
|
+
clip-path: inset(50%);
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
}
|
|
77
|
+
|
|
49
78
|
/* In a Toolbar zone, a group shorter than the toolbar's control band (the
|
|
50
79
|
`--_kui-toolbar-band` the Toolbar provides) takes half the difference as a
|
|
51
80
|
top margin, so it centers in the band by its own size. */
|
|
@@ -126,6 +155,12 @@
|
|
|
126
155
|
background-color 0.2s ease,
|
|
127
156
|
border-color 0.2s ease;
|
|
128
157
|
}
|
|
158
|
+
|
|
159
|
+
.kui-toolbar-control-group[data-content="search"]:has(
|
|
160
|
+
.kui-token-search__suggestions
|
|
161
|
+
) {
|
|
162
|
+
overflow: visible;
|
|
163
|
+
}
|
|
129
164
|
.kui-toolbar-control-group[data-content="search"][data-expanded="false"] {
|
|
130
165
|
width: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
|
|
131
166
|
flex: 0 0 auto;
|