@kerfjs/ui 5.0.0-beta.62 → 5.0.0-beta.64
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 +13 -2
- package/ai/component-composition.json +15 -2
- package/ai/components/list-item.md +1 -1
- package/ai/components/workbench.md +4 -2
- package/ai/public-api-signatures-v1.md +151 -44
- 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 +2 -2
- 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-UCKKT6KO.js → chunk-2EKHENQK.js} +7 -1
- package/dist/chunk-2EKHENQK.js.map +1 -0
- 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-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-VCBTX62E.js → chunk-J3KGJ6P6.js} +2 -2
- package/dist/chunk-J3KGJ6P6.js.map +1 -0
- package/dist/{chunk-X6ADHJNI.js → chunk-KFYANKJI.js} +25 -6
- package/dist/chunk-KFYANKJI.js.map +1 -0
- package/dist/{chunk-A3CKOW2R.js → chunk-M5H2RMCH.js} +165 -26
- package/dist/chunk-M5H2RMCH.js.map +1 -0
- package/dist/chunk-MOSIE4Z2.js +51 -0
- package/dist/chunk-MOSIE4Z2.js.map +1 -0
- package/dist/{chunk-RRB26JRJ.js → chunk-NSVLUDUW.js} +19 -4
- package/dist/chunk-NSVLUDUW.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-RGS4WX2M.js +44 -0
- package/dist/chunk-RGS4WX2M.js.map +1 -0
- package/dist/chunk-SH6F3CCG.js +80 -0
- package/dist/chunk-SH6F3CCG.js.map +1 -0
- package/dist/{chunk-EAC4CDY7.js → chunk-SMZGAPCU.js} +15 -2
- package/dist/chunk-SMZGAPCU.js.map +1 -0
- package/dist/{chunk-NNMLEDMD.js → chunk-TJK44RQC.js} +64 -11
- package/dist/chunk-TJK44RQC.js.map +1 -0
- package/dist/{chunk-6ZXOQEAN.js → chunk-WF75U3V4.js} +7 -1
- package/dist/chunk-WF75U3V4.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 +40 -5
- package/dist/content-item.js +1 -1
- package/dist/disclosure-arrow.js +2 -1
- package/dist/grid.d.ts +5 -1
- package/dist/grid.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +20 -20
- 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 +216 -3
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.d.ts +4 -3
- 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/catalog/components/catalog-example.css +4 -0
- package/dist/styles/chip.css +14 -0
- package/dist/styles/content-item.css +45 -0
- package/dist/styles/grid.css +7 -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 +24 -10
- package/dist/styles/segmented-control.css +3 -0
- 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 +51 -11
- package/dist/styles/toolbar-control-group.css +49 -0
- package/dist/styles/workbench.css +130 -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-DvgFLhLL.d.ts → token-search-field-Xk8jiw8Y.d.ts} +18 -4
- package/dist/token-search-field.d.ts +1 -1
- package/dist/token-search-field.js +2 -1
- package/dist/token-search-model.d.ts +1 -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 +66 -0
- package/dist/wire-content-items.js.map +1 -0
- package/dist/wire-token-search-fields.d.ts +1 -1
- 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 +30 -6
- package/docs/catalog.md +42 -2
- package/docs/collapsible-panel.md +8 -1
- package/docs/component-contract.md +43 -5
- package/docs/component-selection.md +46 -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 +56 -9
- package/docs/sunken-panel.md +22 -0
- package/docs/surface-scaffold.md +6 -3
- package/docs/ui-analyzer.md +4 -0
- package/docs/ux-demo.md +1 -0
- package/docs/workbench.md +42 -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-RRB26JRJ.js.map +0 -1
- package/dist/chunk-UCKKT6KO.js.map +0 -1
- package/dist/chunk-VCBTX62E.js.map +0 -1
- package/dist/chunk-X6ADHJNI.js.map +0 -1
|
@@ -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,29 @@
|
|
|
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
|
+
);
|
|
50
|
+
}
|
|
51
|
+
/* Web Awesome's nested submenu owns its item host padding. Move its exposed
|
|
52
|
+
checkmark inside the panel and leave room for the label beside it. */
|
|
53
|
+
.kui-popup-menu
|
|
54
|
+
wa-dropdown-item[slot="submenu"][type="checkbox"]::part(checkmark) {
|
|
55
|
+
margin-inline-start: 0;
|
|
56
|
+
}
|
|
57
|
+
.kui-popup-menu wa-dropdown-item[slot="submenu"][type="checkbox"]::part(label) {
|
|
58
|
+
padding-inline-start: 1em;
|
|
45
59
|
}
|
|
46
60
|
.kui-popup-menu wa-dropdown-item::part(label) {
|
|
47
61
|
padding-block: var(--_kui-popup-row-label-padding-block);
|
|
@@ -119,6 +119,9 @@
|
|
|
119
119
|
line-height: 1;
|
|
120
120
|
white-space: nowrap;
|
|
121
121
|
cursor: pointer;
|
|
122
|
+
/* Web Awesome's native button transition includes color. During a theme
|
|
123
|
+
switch that briefly puts the old text tone on the new filled track. */
|
|
124
|
+
transition-property: background, border, box-shadow;
|
|
122
125
|
}
|
|
123
126
|
|
|
124
127
|
.kui-segmented-control[data-size="small"] .kui-segmented-control__item {
|
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;
|
|
@@ -84,7 +85,8 @@
|
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
.kui-token-search__token button,
|
|
87
|
-
.kui-token-search__clear
|
|
88
|
+
.kui-token-search__clear,
|
|
89
|
+
.kui-token-search__trailing-action {
|
|
88
90
|
appearance: none;
|
|
89
91
|
display: inline-grid;
|
|
90
92
|
padding: 0;
|
|
@@ -109,12 +111,15 @@
|
|
|
109
111
|
.kui-token-search__token-remove:hover,
|
|
110
112
|
.kui-token-search__token-remove:focus-visible,
|
|
111
113
|
.kui-token-search__clear:hover,
|
|
112
|
-
.kui-token-search__clear:focus-visible
|
|
114
|
+
.kui-token-search__clear:focus-visible,
|
|
115
|
+
.kui-token-search__trailing-action:hover,
|
|
116
|
+
.kui-token-search__trailing-action:focus-visible {
|
|
113
117
|
background: color-mix(in srgb, currentColor 12%, transparent);
|
|
114
118
|
}
|
|
115
119
|
|
|
116
120
|
.kui-token-search__token button:focus-visible,
|
|
117
|
-
.kui-token-search__clear:focus-visible
|
|
121
|
+
.kui-token-search__clear:focus-visible,
|
|
122
|
+
.kui-token-search__trailing-action:focus-visible {
|
|
118
123
|
outline: var(--kui-focus-ring);
|
|
119
124
|
outline-offset: 1px;
|
|
120
125
|
}
|
|
@@ -129,7 +134,8 @@
|
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
.kui-token-search__clear,
|
|
132
|
-
.kui-token-search__trailing
|
|
137
|
+
.kui-token-search__trailing,
|
|
138
|
+
.kui-token-search__trailing-action {
|
|
133
139
|
display: inline-grid;
|
|
134
140
|
width: 1.5rem;
|
|
135
141
|
height: var(--kui-token-search-line-size);
|
|
@@ -139,21 +145,38 @@
|
|
|
139
145
|
|
|
140
146
|
.kui-token-search__clear {
|
|
141
147
|
grid-column: 3;
|
|
148
|
+
border-radius: var(--kui-radius-pill);
|
|
142
149
|
}
|
|
143
150
|
|
|
144
151
|
.kui-token-search__trailing {
|
|
145
152
|
grid-column: 4;
|
|
146
153
|
}
|
|
147
154
|
|
|
155
|
+
.kui-token-search__trailing-action {
|
|
156
|
+
grid-column: 4;
|
|
157
|
+
border-radius: var(--kui-radius-pill);
|
|
158
|
+
}
|
|
159
|
+
|
|
148
160
|
.kui-token-search__suggestions {
|
|
149
161
|
display: grid;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
162
|
+
position: absolute;
|
|
163
|
+
z-index: 20;
|
|
164
|
+
inset-block-start: calc(100% + 0.25rem);
|
|
165
|
+
inset-inline-start: 0;
|
|
166
|
+
width: min(max(100%, 15rem), calc(100vw - 1rem));
|
|
167
|
+
max-height: 15rem;
|
|
168
|
+
padding: var(--_kui-popup-inset);
|
|
169
|
+
box-sizing: border-box;
|
|
170
|
+
border: 1px solid var(--kui-color-neutral-border-normal);
|
|
154
171
|
border-radius: var(--kui-radius-pill);
|
|
155
|
-
background: var(--kui-
|
|
156
|
-
|
|
172
|
+
background: var(--kui-color-surface-raised);
|
|
173
|
+
box-shadow: var(--kui-shadow-m);
|
|
174
|
+
gap: var(--_kui-popup-row-gap);
|
|
175
|
+
overflow-y: auto;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.kui-token-search__suggestions:has(> :nth-child(2)) {
|
|
179
|
+
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
157
180
|
}
|
|
158
181
|
|
|
159
182
|
.kui-token-search__suggestion {
|
|
@@ -165,6 +188,7 @@
|
|
|
165
188
|
background: transparent;
|
|
166
189
|
font: inherit;
|
|
167
190
|
text-align: start;
|
|
191
|
+
justify-content: flex-start;
|
|
168
192
|
cursor: pointer;
|
|
169
193
|
}
|
|
170
194
|
|
|
@@ -179,7 +203,8 @@
|
|
|
179
203
|
}
|
|
180
204
|
|
|
181
205
|
.kui-token-search__clear svg,
|
|
182
|
-
.kui-token-search__trailing svg
|
|
206
|
+
.kui-token-search__trailing svg,
|
|
207
|
+
.kui-token-search__trailing-action svg {
|
|
183
208
|
width: 0.85rem;
|
|
184
209
|
height: 0.85rem;
|
|
185
210
|
}
|
|
@@ -200,6 +225,17 @@
|
|
|
200
225
|
border-color 0.2s ease;
|
|
201
226
|
}
|
|
202
227
|
|
|
228
|
+
.kui-token-search[data-collapsible="true"][data-expanded="true"][data-fill="true"] {
|
|
229
|
+
width: 100%;
|
|
230
|
+
flex: 1 1 auto;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.kui-token-search[data-collapsible="true"][data-expanded="true"]:has(
|
|
234
|
+
.kui-token-search__suggestions
|
|
235
|
+
) {
|
|
236
|
+
overflow: visible;
|
|
237
|
+
}
|
|
238
|
+
|
|
203
239
|
.kui-token-search[data-collapsible="true"][data-expanded="false"] {
|
|
204
240
|
width: 2.75rem;
|
|
205
241
|
min-width: 2.75rem;
|
|
@@ -256,6 +292,10 @@
|
|
|
256
292
|
box-shadow: none;
|
|
257
293
|
}
|
|
258
294
|
|
|
295
|
+
.kui-token-search[data-presentation="toolbar-group"] .kui-token-search__clear {
|
|
296
|
+
border-radius: var(--kui-control-highlight-radius);
|
|
297
|
+
}
|
|
298
|
+
|
|
259
299
|
.kui-token-search[data-presentation="toolbar-group"][data-collapsible="true"]:focus-within {
|
|
260
300
|
border-color: var(--kui-color-focus);
|
|
261
301
|
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,10 +155,30 @@
|
|
|
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[data-expanded="true"][data-fill="true"]
|
|
161
|
+
) {
|
|
162
|
+
width: 100%;
|
|
163
|
+
flex: 1 1 auto;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.kui-toolbar-control-group[data-content="search"]:has(
|
|
167
|
+
.kui-token-search__suggestions
|
|
168
|
+
) {
|
|
169
|
+
overflow: visible;
|
|
170
|
+
}
|
|
129
171
|
.kui-toolbar-control-group[data-content="search"][data-expanded="false"] {
|
|
130
172
|
width: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
|
|
131
173
|
flex: 0 0 auto;
|
|
132
174
|
}
|
|
175
|
+
|
|
176
|
+
.kui-toolbar-control-group[data-content="search"]:has(
|
|
177
|
+
> .kui-token-search[data-expanded="false"][data-fill="true"]
|
|
178
|
+
) {
|
|
179
|
+
width: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
|
|
180
|
+
flex: 0 0 auto;
|
|
181
|
+
}
|
|
133
182
|
.kui-toolbar-control-group[data-content="text"]
|
|
134
183
|
> :is(button, wa-button, .kui-toolbar-action-link),
|
|
135
184
|
.kui-toolbar-control-group[data-content="mixed"]
|
|
@@ -568,6 +568,25 @@
|
|
|
568
568
|
inset-block-end: 0;
|
|
569
569
|
}
|
|
570
570
|
|
|
571
|
+
/* Optional shared backdrop sits over work-area controls and restores, below
|
|
572
|
+
the overlay drawer and rails. It is last in document order so an equal-z
|
|
573
|
+
restore control cannot receive the outside press. */
|
|
574
|
+
.kui-workbench__backdrop {
|
|
575
|
+
position: absolute;
|
|
576
|
+
z-index: calc(var(--kui-workbench-overlay-z, 41) - 2);
|
|
577
|
+
display: none;
|
|
578
|
+
inset: 0;
|
|
579
|
+
background: var(--kui-color-scrim, rgb(0 0 0 / 32%));
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
.kui-workbench[data-overlay-backdrop="true"]:is(
|
|
583
|
+
[data-rail-overlay-expanded="true"],
|
|
584
|
+
[data-drawer-overlay-expanded="true"]
|
|
585
|
+
)
|
|
586
|
+
> .kui-workbench__backdrop {
|
|
587
|
+
display: block;
|
|
588
|
+
}
|
|
589
|
+
|
|
571
590
|
/* A collapsed overlay keeps its box for the slide-out, so it drops its surface
|
|
572
591
|
and shadow; the sliding content carries the surface instead. */
|
|
573
592
|
.kui-workbench__rail[data-presentation="overlay"][data-collapsed="true"],
|
|
@@ -609,7 +628,94 @@
|
|
|
609
628
|
container: kui-workbench / inline-size;
|
|
610
629
|
}
|
|
611
630
|
|
|
631
|
+
/* A numeric pixel threshold is measured by wireWorkbench and marked on the
|
|
632
|
+
panel. Keep its overlay geometry and covered work area in step with that
|
|
633
|
+
single mark, including when the app changes the threshold at render time. */
|
|
634
|
+
.kui-workbench__rail[data-responsive-overlay-active="true"] {
|
|
635
|
+
position: absolute;
|
|
636
|
+
z-index: var(--kui-workbench-overlay-z, 41);
|
|
637
|
+
width: var(--_kui-workbench-rail-extent);
|
|
638
|
+
max-width: var(--kui-workbench-overlay-max-width, 85vw);
|
|
639
|
+
inset-block: 0;
|
|
640
|
+
box-shadow: var(--kui-shadow-l);
|
|
641
|
+
clip-path: none;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
.kui-workbench__rail--left[data-responsive-overlay-active="true"] {
|
|
645
|
+
inset-inline-start: 0;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
.kui-workbench__rail--right[data-responsive-overlay-active="true"] {
|
|
649
|
+
inset-inline-end: 0;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
.kui-workbench__rail[data-responsive-overlay-active="true"][data-collapsed="true"],
|
|
653
|
+
.kui-workbench__drawer[data-responsive-overlay-active="true"][data-collapsed="true"] {
|
|
654
|
+
background: transparent;
|
|
655
|
+
box-shadow: none;
|
|
656
|
+
pointer-events: none;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.kui-workbench__rail[data-responsive-overlay-active="true"]
|
|
660
|
+
> .kui-workbench__panel-content {
|
|
661
|
+
width: 100%;
|
|
662
|
+
background: var(--kui-color-surface);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.kui-workbench__rail[data-responsive-overlay-active="true"]
|
|
666
|
+
> .kui-workbench__handle,
|
|
667
|
+
.kui-workbench__drawer[data-responsive-overlay-active="true"]
|
|
668
|
+
> .kui-workbench__handle {
|
|
669
|
+
display: none;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
.kui-workbench[data-numeric-overlays~="left"] > .kui-workbench__center {
|
|
673
|
+
--kui-edge-inset-inline-start: var(--_kui-workbench-safe-inline-start);
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.kui-workbench[data-numeric-overlays~="right"] > .kui-workbench__center {
|
|
677
|
+
--kui-edge-inset-inline-end: var(--_kui-workbench-safe-inline-end);
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
.kui-workbench__drawer[data-responsive-overlay-active="true"] {
|
|
681
|
+
position: absolute;
|
|
682
|
+
anchor-name: none;
|
|
683
|
+
z-index: calc(var(--kui-workbench-overlay-z, 41) - 1);
|
|
684
|
+
height: var(--_kui-workbench-drawer-extent);
|
|
685
|
+
max-height: var(--kui-workbench-overlay-max-height, 85vh);
|
|
686
|
+
inset-inline: 0;
|
|
687
|
+
inset-block-end: 0;
|
|
688
|
+
box-shadow: var(--kui-shadow-l);
|
|
689
|
+
clip-path: none;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
.kui-workbench__drawer[data-responsive-overlay-active="true"]
|
|
693
|
+
> .kui-workbench__panel-content {
|
|
694
|
+
height: 100%;
|
|
695
|
+
background: var(--kui-color-surface);
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
.kui-workbench[data-numeric-overlays~="drawer"]
|
|
699
|
+
> .kui-workbench__center
|
|
700
|
+
> .kui-workbench__main {
|
|
701
|
+
--_kui-workbench-content-edge-block-end: var(--_kui-workbench-safe-block-end);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
.kui-workbench[data-overlay-backdrop="true"][data-numeric-overlays~="open"]
|
|
705
|
+
> .kui-workbench__backdrop {
|
|
706
|
+
display: block;
|
|
707
|
+
}
|
|
708
|
+
|
|
612
709
|
@container kui-workbench (max-width: 44rem) {
|
|
710
|
+
.kui-workbench[data-overlay-backdrop="true"]:is(
|
|
711
|
+
[data-left-responsive-expanded="narrow"],
|
|
712
|
+
[data-right-responsive-expanded="narrow"],
|
|
713
|
+
[data-drawer-responsive-expanded="narrow"]
|
|
714
|
+
)
|
|
715
|
+
> .kui-workbench__backdrop {
|
|
716
|
+
display: block;
|
|
717
|
+
}
|
|
718
|
+
|
|
613
719
|
.kui-workbench__rail[data-responsive-overlay-at="narrow"] {
|
|
614
720
|
position: absolute;
|
|
615
721
|
z-index: var(--kui-workbench-overlay-z, 41);
|
|
@@ -692,6 +798,15 @@
|
|
|
692
798
|
}
|
|
693
799
|
|
|
694
800
|
@container kui-workbench (max-width: 28rem) {
|
|
801
|
+
.kui-workbench[data-overlay-backdrop="true"]:is(
|
|
802
|
+
[data-left-responsive-expanded="compact"],
|
|
803
|
+
[data-right-responsive-expanded="compact"],
|
|
804
|
+
[data-drawer-responsive-expanded="compact"]
|
|
805
|
+
)
|
|
806
|
+
> .kui-workbench__backdrop {
|
|
807
|
+
display: block;
|
|
808
|
+
}
|
|
809
|
+
|
|
695
810
|
.kui-workbench__rail[data-responsive-overlay-at="compact"] {
|
|
696
811
|
position: absolute;
|
|
697
812
|
z-index: var(--kui-workbench-overlay-z, 41);
|
|
@@ -895,6 +1010,11 @@
|
|
|
895
1010
|
--_kui-workbench-covered: hidden;
|
|
896
1011
|
}
|
|
897
1012
|
|
|
1013
|
+
.kui-workbench[data-numeric-overlays~="rail-open"]
|
|
1014
|
+
> :is(.kui-workbench__center, .kui-workbench__restore) {
|
|
1015
|
+
--_kui-workbench-covered: hidden;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
898
1018
|
@container kui-workbench (max-width: 44rem) {
|
|
899
1019
|
.kui-workbench:is(
|
|
900
1020
|
[data-left-responsive-expanded="narrow"],
|
|
@@ -926,14 +1046,22 @@
|
|
|
926
1046
|
closes it (the wiring's outside press); `compactOverlay: "full"` fills the
|
|
927
1047
|
Workbench. The rail's resize and configured size stop applying there. */
|
|
928
1048
|
@container kui-workbench (max-width: 28rem) {
|
|
929
|
-
.kui-workbench__rail
|
|
1049
|
+
.kui-workbench__rail:is(
|
|
1050
|
+
[data-responsive-overlay-at="narrow"],
|
|
1051
|
+
[data-responsive-overlay-at="compact"],
|
|
1052
|
+
[data-responsive-overlay-active="true"]
|
|
1053
|
+
) {
|
|
930
1054
|
width: calc(
|
|
931
1055
|
100% - var(--kui-workbench-overlay-dismiss-margin, 2.75rem)
|
|
932
1056
|
);
|
|
933
1057
|
max-width: none;
|
|
934
1058
|
}
|
|
935
1059
|
|
|
936
|
-
.kui-workbench__rail
|
|
1060
|
+
.kui-workbench__rail:is(
|
|
1061
|
+
[data-responsive-overlay-at="narrow"],
|
|
1062
|
+
[data-responsive-overlay-at="compact"],
|
|
1063
|
+
[data-responsive-overlay-active="true"]
|
|
1064
|
+
)[data-compact-overlay="full"] {
|
|
937
1065
|
width: 100%;
|
|
938
1066
|
}
|
|
939
1067
|
}
|
package/dist/sunken-panel.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { CssFlexKeyword, CssFlex } from './css-values.js';
|
|
2
3
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
4
|
|
|
4
5
|
type SunkenPanelShape = 'rounded' | 'square';
|
|
@@ -8,6 +9,10 @@ interface SunkenPanelProps {
|
|
|
8
9
|
ariaLabel?: string;
|
|
9
10
|
/** Corner shape: a rounded rectangle (default) or square corners. */
|
|
10
11
|
shape?: SunkenPanelShape;
|
|
12
|
+
/** Grow or shrink within a flex parent, using Grid's typed flex contract. */
|
|
13
|
+
flex?: boolean | CssFlexKeyword | CssFlex;
|
|
14
|
+
/** Fill a parent with a definite height; use flex inside a flex layout. */
|
|
15
|
+
fill?: boolean;
|
|
11
16
|
className?: string;
|
|
12
17
|
/** Native named-slot assignment when composed inside a web component. */
|
|
13
18
|
slot?: string;
|
|
@@ -17,6 +22,6 @@ interface SunkenPanelProps {
|
|
|
17
22
|
* stack. The panel owns its background and padding; children own their own
|
|
18
23
|
* borders and internal geometry.
|
|
19
24
|
*/
|
|
20
|
-
declare function SunkenPanel({ children, ariaLabel, shape, className, slot, }: SunkenPanelProps): kerfjs.SafeHtml;
|
|
25
|
+
declare function SunkenPanel({ children, ariaLabel, shape, flex, fill, className, slot, }: SunkenPanelProps): kerfjs.SafeHtml;
|
|
21
26
|
|
|
22
27
|
export { SunkenPanel, type SunkenPanelProps, type SunkenPanelShape };
|
package/dist/sunken-panel.js
CHANGED
package/dist/text.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ type TextSize = 'compact' | 'default' | 'large' | 'xlarge';
|
|
|
8
8
|
type TextFont = 'default' | 'monospace';
|
|
9
9
|
type TextBorder = 'transparent' | 'none';
|
|
10
10
|
type TextLineHeight = 'default' | 'tight';
|
|
11
|
+
type TextWrap = 'normal' | 'anywhere' | 'nowrap' | 'truncate';
|
|
11
12
|
type TextContent = KerfUiContent | string | number | readonly TextContent[];
|
|
12
|
-
type
|
|
13
|
+
type TextCommonProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
13
14
|
/** Native heading, paragraph, or inline span element to render. Defaults to `p`. */
|
|
14
15
|
variant?: TextVariant;
|
|
15
16
|
/** Semantic foreground treatment. Defaults to the inherited foreground. */
|
|
@@ -28,11 +29,21 @@ type TextProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
|
28
29
|
class?: string;
|
|
29
30
|
className?: string;
|
|
30
31
|
};
|
|
32
|
+
type TextProps = TextCommonProps & ({
|
|
33
|
+
/** Wrap normally or break long unbroken strings. Defaults to normal. */
|
|
34
|
+
wrap?: 'normal' | 'anywhere';
|
|
35
|
+
/** Cap wrapped text to this positive number of lines. */
|
|
36
|
+
maxLines?: number;
|
|
37
|
+
} | {
|
|
38
|
+
/** Keep one line, with or without an ellipsis. */
|
|
39
|
+
wrap: 'nowrap' | 'truncate';
|
|
40
|
+
maxLines?: never;
|
|
41
|
+
});
|
|
31
42
|
/**
|
|
32
43
|
* Semantic heading, paragraph, or inline text. Block variants use the standard
|
|
33
44
|
* content-item padding; `span` adds no box geometry.
|
|
34
45
|
* All ordinary native heading/paragraph attributes pass through to the element.
|
|
35
46
|
*/
|
|
36
|
-
declare function Text({ variant: Variant, tone, size, font, border, flush, lineHeight, children, class: classValue, className, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
47
|
+
declare function Text({ variant: Variant, tone, size, font, border, flush, lineHeight, wrap, maxLines, children, class: classValue, className, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
37
48
|
|
|
38
|
-
export { Text, type TextBorder, type TextContent, type TextFont, type TextLineHeight, type TextProps, type TextSize, type TextTone, type TextVariant };
|
|
49
|
+
export { Text, type TextBorder, type TextContent, type TextFont, type TextLineHeight, type TextProps, type TextSize, type TextTone, type TextVariant, type TextWrap };
|