@kerfjs/ui 5.0.0-beta.106 → 5.0.0-beta.108
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 +2 -1
- package/ai/application-ui-diagnostic-ids-v1.json +1 -0
- package/ai/application-ui-profile.defaults.json +6 -1
- package/ai/component-catalog.json +184 -39
- package/ai/component-composition-rules.json +20 -2
- package/ai/component-composition.d.ts +11 -0
- package/ai/component-composition.json +126 -21
- package/ai/component-composition.schema.json +32 -0
- package/ai/components/README.md +3 -2
- package/ai/components/button.md +9 -6
- package/ai/components/checkbox-group.md +89 -0
- package/ai/components/checkbox.md +3 -2
- package/ai/components/chip.md +1 -0
- package/ai/components/color-picker.md +10 -7
- package/ai/components/disclosure.md +6 -1
- package/ai/components/foundation.md +1 -1
- package/ai/components/list-detail-dialog.md +1 -1
- package/ai/components/list.md +1 -1
- package/ai/components/message-composer.md +2 -1
- package/ai/components/radio-group.md +4 -3
- package/ai/components/segmented-control.md +1 -0
- package/ai/components/split-button.md +5 -2
- package/ai/components/surface-scaffold.md +3 -1
- package/ai/components/switch.md +1 -1
- package/ai/components/text-field.md +3 -1
- package/ai/components/text.md +2 -0
- package/ai/components/toolbar-control-group.md +1 -0
- package/ai/components/toolbar.md +1 -1
- package/ai/components/wa-checkbox-group.md +5 -5
- package/ai/components/workbench-dialog.md +1 -1
- package/ai/public-api-signatures-v1.md +258 -35
- package/ai/skill.md +82 -65
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/browser/checkbox-group.js +5 -0
- package/dist/button.d.ts +18 -5
- package/dist/button.js +1 -1
- package/dist/catalog.js +11 -10
- package/dist/catalog.js.map +1 -1
- package/dist/checkbox-group.d.ts +70 -0
- package/dist/checkbox-group.js +7 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/chip.d.ts +20 -2
- package/dist/chip.js +2 -1
- package/dist/{chunk-SQ2Q3OQI.js → chunk-2LM3PYHA.js} +2 -2
- package/dist/{chunk-SQ2Q3OQI.js.map → chunk-2LM3PYHA.js.map} +1 -1
- package/dist/{chunk-HYORKKYP.js → chunk-3VZ6SFD4.js} +1 -1
- package/dist/chunk-3VZ6SFD4.js.map +1 -0
- package/dist/{chunk-EKBMUXFV.js → chunk-3Z7N2NAZ.js} +141 -54
- package/dist/chunk-3Z7N2NAZ.js.map +1 -0
- package/dist/{chunk-23PPPNH6.js → chunk-4OV272LF.js} +2 -2
- package/dist/{chunk-23PPPNH6.js.map → chunk-4OV272LF.js.map} +1 -1
- package/dist/{chunk-2PXZBFEC.js → chunk-5J6Z4BWY.js} +1 -1
- package/dist/{chunk-2PXZBFEC.js.map → chunk-5J6Z4BWY.js.map} +1 -1
- package/dist/{chunk-TAHR457X.js → chunk-6CDILXF4.js} +5 -1
- package/dist/chunk-6CDILXF4.js.map +1 -0
- package/dist/{chunk-DDSCVEO5.js → chunk-CPSGUGAY.js} +6 -6
- package/dist/{chunk-DDSCVEO5.js.map → chunk-CPSGUGAY.js.map} +1 -1
- package/dist/{chunk-C3RLKKFQ.js → chunk-EYDXFOSH.js} +13 -8
- package/dist/chunk-EYDXFOSH.js.map +1 -0
- package/dist/{chunk-PE2KPZDW.js → chunk-HDXUHLTQ.js} +7 -2
- package/dist/chunk-HDXUHLTQ.js.map +1 -0
- package/dist/chunk-HU5IHXCI.js +73 -0
- package/dist/chunk-HU5IHXCI.js.map +1 -0
- package/dist/{chunk-DF2YKGIX.js → chunk-JCCN3U6X.js} +2 -2
- package/dist/{chunk-DF2YKGIX.js.map → chunk-JCCN3U6X.js.map} +1 -1
- package/dist/{chunk-UTCAOOXU.js → chunk-KPINJHIC.js} +8 -2
- package/dist/chunk-KPINJHIC.js.map +1 -0
- package/dist/{chunk-N7MBGONH.js → chunk-LMHN2TJL.js} +22 -2
- package/dist/chunk-LMHN2TJL.js.map +1 -0
- package/dist/{chunk-NS2TBYM4.js → chunk-LZUUUHNH.js} +7 -3
- package/dist/chunk-LZUUUHNH.js.map +1 -0
- package/dist/{chunk-GCAK23PU.js → chunk-MVKHSAKE.js} +2 -2
- package/dist/{chunk-GCAK23PU.js.map → chunk-MVKHSAKE.js.map} +1 -1
- package/dist/{chunk-OY2MXIBB.js → chunk-NB6POCFH.js} +3 -1
- package/dist/chunk-NB6POCFH.js.map +1 -0
- package/dist/{chunk-ECFCAKWE.js → chunk-NR6O74ST.js} +5 -1
- package/dist/chunk-NR6O74ST.js.map +1 -0
- package/dist/{chunk-7W3GKMN4.js → chunk-OQP3PFKQ.js} +7 -4
- package/dist/chunk-OQP3PFKQ.js.map +1 -0
- package/dist/{chunk-FKKJHGN5.js → chunk-P7EJ4CAD.js} +2 -2
- package/dist/{chunk-FKKJHGN5.js.map → chunk-P7EJ4CAD.js.map} +1 -1
- package/dist/{chunk-ZXZAECHZ.js → chunk-SOFPUW3O.js} +4 -4
- package/dist/{chunk-ZXZAECHZ.js.map → chunk-SOFPUW3O.js.map} +1 -1
- package/dist/{chunk-WJKHLOP5.js → chunk-TI2GV36S.js} +8 -2
- package/dist/chunk-TI2GV36S.js.map +1 -0
- package/dist/{chunk-QLA25V2K.js → chunk-WPNIKZMJ.js} +15 -1
- package/dist/chunk-WPNIKZMJ.js.map +1 -0
- package/dist/{chunk-FG6U7KQQ.js → chunk-WSEJ2FDE.js} +4 -4
- package/dist/{chunk-FG6U7KQQ.js.map → chunk-WSEJ2FDE.js.map} +1 -1
- package/dist/{chunk-ACUKTVS3.js → chunk-XWNXGFX3.js} +52 -42
- package/dist/chunk-XWNXGFX3.js.map +1 -0
- package/dist/{chunk-WU57BYYM.js → chunk-YVZCKXR3.js} +8 -2
- package/dist/chunk-YVZCKXR3.js.map +1 -0
- package/dist/{chunk-CMLPFIC5.js → chunk-ZN7KUMPY.js} +3 -1
- package/dist/chunk-ZN7KUMPY.js.map +1 -0
- package/dist/collapsible-panel.js +2 -2
- package/dist/color-picker.d.ts +30 -5
- package/dist/color-picker.js +1 -1
- package/dist/disclosure.d.ts +13 -4
- package/dist/disclosure.js.map +1 -1
- package/dist/help-tags-register.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +24 -23
- package/dist/list-action-row.js +1 -1
- package/dist/list-detail-dialog.d.ts +7 -1
- package/dist/list-detail-dialog.js +7 -5
- package/dist/list-detail-dialog.js.map +1 -1
- package/dist/list-header.d.ts +8 -1
- package/dist/list-header.js +1 -1
- package/dist/list.d.ts +7 -1
- package/dist/list.js +1 -1
- package/dist/message-composer.js +1 -1
- package/dist/nav-stack.js +1 -1
- package/dist/popup-menu-register.js +2 -2
- package/dist/popup-menu.d.ts +15 -5
- package/dist/popup-menu.js +1 -1
- package/dist/segmented-control.d.ts +3 -1
- package/dist/segmented-control.js +1 -1
- package/dist/select-register.js +3 -3
- package/dist/split-button.d.ts +14 -2
- package/dist/split-button.js +1 -1
- package/dist/split-view.js +1 -1
- package/dist/styles/anchored-surface.css +3 -0
- package/dist/styles/button.css +57 -2
- package/dist/styles/catalog/components/catalog-example.css +55 -18
- package/dist/styles/checkbox-group.css +63 -0
- package/dist/styles/checkbox.css +7 -6
- package/dist/styles/color-picker.css +69 -34
- package/dist/styles/components/actions/button/button.css +57 -2
- package/dist/styles/components/actions/split-button/split-button.css +51 -5
- package/dist/styles/components/actions/toolbar/toolbar.css +9 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +29 -1
- package/dist/styles/components/collections/framed-list/framed-list.css +6 -0
- package/dist/styles/components/collections/list/list.css +6 -0
- package/dist/styles/components/collections/list-header/list-header.css +7 -0
- package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +3 -0
- package/dist/styles/components/forms/checkbox/checkbox.css +7 -6
- package/dist/styles/components/forms/checkbox-group/checkbox-group.css +63 -0
- package/dist/styles/components/forms/color-picker/color-picker.css +69 -34
- package/dist/styles/components/forms/radio-group/radio-group.css +7 -5
- package/dist/styles/components/forms/select/select.css +6 -2
- package/dist/styles/components/forms/switch/switch.css +3 -3
- package/dist/styles/components/layout/pane/pane.css +24 -0
- package/dist/styles/components/layout/workbench/workbench.css +4 -0
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +77 -1
- package/dist/styles/components/navigation/tab-bar/tab-bar.css +6 -0
- package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +17 -0
- package/dist/styles/components/surfaces/content-item/content-item.css +30 -0
- package/dist/styles/components/surfaces/disclosure/disclosure.css +38 -0
- package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +3 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +8 -0
- package/dist/styles/components/typography/text/text.css +10 -0
- package/dist/styles/content-item.css +30 -0
- package/dist/styles/disclosure.css +38 -0
- package/dist/styles/foundation.css +78 -13
- package/dist/styles/framed-list.css +6 -0
- package/dist/styles/list-header.css +7 -0
- package/dist/styles/list.css +6 -0
- package/dist/styles/nav-stack.css +77 -1
- package/dist/styles/pane.css +24 -0
- package/dist/styles/radio-group.css +7 -5
- package/dist/styles/select.css +6 -2
- package/dist/styles/split-button.css +51 -5
- package/dist/styles/styles.css +1 -0
- package/dist/styles/sunken-panel.css +3 -0
- package/dist/styles/surface-scaffold.css +8 -0
- package/dist/styles/switch.css +3 -3
- package/dist/styles/tab-bar.css +6 -0
- package/dist/styles/tab-navigator.css +17 -0
- package/dist/styles/text.css +10 -0
- package/dist/styles/toolbar-control-group.css +29 -1
- package/dist/styles/toolbar.css +9 -0
- package/dist/styles/webawesome.css +56 -12
- package/dist/styles/workbench.css +4 -0
- package/dist/surface-scaffold.d.ts +15 -1
- package/dist/surface-scaffold.js +1 -1
- package/dist/text-field.d.ts +7 -1
- package/dist/text-field.js +1 -1
- package/dist/toolbar-control-group.d.ts +8 -2
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar.d.ts +6 -1
- package/dist/toolbar.js +1 -1
- package/dist/wire-catalog.js +1 -1
- package/dist/wire-color-fields.js +2 -2
- package/dist/wire-color-pickers.d.ts +4 -3
- package/dist/wire-color-pickers.js +1 -1
- package/dist/wire-comboboxes.js +1 -1
- package/dist/wire-workbench.js +1 -1
- package/dist/workbench-dialog.d.ts +11 -2
- package/dist/workbench-dialog.js +6 -3
- package/dist/workbench-dialog.js.map +1 -1
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +58 -3
- package/docs/anchored-surface.md +6 -1
- package/docs/catalog.md +26 -1
- package/docs/color-picker.md +39 -8
- package/docs/component-contract.md +47 -3
- package/docs/component-selection.md +58 -21
- package/docs/design/templates/button/full-width-dark.svg +1 -0
- package/docs/design/templates/button/full-width.svg +1 -0
- package/docs/design/templates/button/tones-dark.svg +1 -1
- package/docs/design/templates/button/tones.svg +1 -1
- package/docs/design/templates/button-dark.svg +1 -1
- package/docs/design/templates/button.svg +1 -1
- package/docs/design/templates/checkbox/error-dark.svg +1 -1
- package/docs/design/templates/checkbox/error.svg +1 -1
- package/docs/design/templates/checkbox/states-dark.svg +1 -1
- package/docs/design/templates/checkbox/states.svg +1 -1
- package/docs/design/templates/checkbox-dark.svg +1 -1
- package/docs/design/templates/checkbox-group/horizontal-dark.svg +1 -0
- package/docs/design/templates/checkbox-group/horizontal.svg +1 -0
- package/docs/design/templates/checkbox-group/vertical-dark.svg +1 -0
- package/docs/design/templates/checkbox-group/vertical.svg +1 -0
- package/docs/design/templates/checkbox-group-dark.svg +1 -0
- package/docs/design/templates/checkbox-group.svg +1 -0
- package/docs/design/templates/checkbox.svg +1 -1
- package/docs/design/templates/color-picker/gray-dark.svg +1 -1
- package/docs/design/templates/color-picker/gray.svg +1 -1
- package/docs/design/templates/color-picker/hsb-dark.svg +1 -0
- package/docs/design/templates/color-picker/hsb.svg +1 -0
- package/docs/design/templates/color-picker/rgb-dark.svg +1 -1
- package/docs/design/templates/color-picker/rgb.svg +1 -1
- package/docs/design/templates/color-picker-dark.svg +1 -1
- package/docs/design/templates/color-picker.svg +1 -1
- package/docs/design/templates/disclosure/embedded-dark.svg +1 -0
- package/docs/design/templates/disclosure/embedded.svg +1 -0
- package/docs/design/templates/disclosure-dark.svg +1 -1
- package/docs/design/templates/disclosure.svg +1 -1
- package/docs/design/templates/radio-group/horizontal-dark.svg +1 -1
- package/docs/design/templates/radio-group/horizontal.svg +1 -1
- package/docs/design/templates/radio-group/vertical-dark.svg +1 -1
- package/docs/design/templates/radio-group/vertical.svg +1 -1
- package/docs/design/templates/radio-group-dark.svg +1 -1
- package/docs/design/templates/radio-group.svg +1 -1
- package/docs/design/templates/split-button/full-width-dark.svg +1 -0
- package/docs/design/templates/split-button/full-width.svg +1 -0
- package/docs/design/templates/split-button/pill-dark.svg +1 -0
- package/docs/design/templates/split-button/pill.svg +1 -0
- package/docs/design/templates/split-button/states-dark.svg +1 -0
- package/docs/design/templates/split-button/states.svg +1 -0
- package/docs/design/templates/split-button/tones-dark.svg +1 -0
- package/docs/design/templates/split-button/tones.svg +1 -0
- package/docs/design/templates/split-button-dark.svg +1 -0
- package/docs/design/templates/split-button.svg +1 -0
- package/docs/design/templates/switch/states-dark.svg +1 -1
- package/docs/design/templates/switch/states.svg +1 -1
- package/docs/design/templates/switch-dark.svg +1 -1
- package/docs/design/templates/switch.svg +1 -1
- package/docs/design/templates/text-field/number-dark.svg +1 -0
- package/docs/design/templates/text-field/number.svg +1 -0
- package/docs/design/templates/text-field-dark.svg +1 -1
- package/docs/design/templates/text-field.svg +1 -1
- package/docs/design/templates.md +10 -3
- package/docs/disclosure.md +34 -0
- package/docs/layout.md +16 -5
- package/docs/list-detail-dialog.md +4 -0
- package/docs/nav-stack.md +6 -2
- package/docs/surface-scaffold.md +6 -2
- package/docs/ui-doctor.md +16 -4
- package/docs/webawesome-migration.md +3 -1
- package/docs/webawesome-theme.md +56 -18
- package/docs/workbench-dialog.md +4 -1
- package/docs/workbench.md +7 -1
- package/docs/writing.md +3 -3
- package/doctor/copy-capitalization-checks.mjs +10 -7
- package/llms.txt +65 -23
- package/package.json +7 -1
- package/dist/chunk-7W3GKMN4.js.map +0 -1
- package/dist/chunk-ACUKTVS3.js.map +0 -1
- package/dist/chunk-C3RLKKFQ.js.map +0 -1
- package/dist/chunk-CMLPFIC5.js.map +0 -1
- package/dist/chunk-ECFCAKWE.js.map +0 -1
- package/dist/chunk-EKBMUXFV.js.map +0 -1
- package/dist/chunk-HYORKKYP.js.map +0 -1
- package/dist/chunk-N7MBGONH.js.map +0 -1
- package/dist/chunk-NS2TBYM4.js.map +0 -1
- package/dist/chunk-OY2MXIBB.js.map +0 -1
- package/dist/chunk-PE2KPZDW.js.map +0 -1
- package/dist/chunk-QLA25V2K.js.map +0 -1
- package/dist/chunk-TAHR457X.js.map +0 -1
- package/dist/chunk-UTCAOOXU.js.map +0 -1
- package/dist/chunk-WJKHLOP5.js.map +0 -1
- package/dist/chunk-WU57BYYM.js.map +0 -1
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
/* One loud semantic fill split into a primary half and a narrow options
|
|
2
2
|
trigger, with a hairline divider in the foreground color. Both halves are
|
|
3
|
-
native buttons on the shared fill; each brightens on its own hover.
|
|
3
|
+
native buttons on the shared fill; each brightens on its own hover. The
|
|
4
|
+
outer corners take the shared control radius, or full round ends as a
|
|
5
|
+
pill; the divider seam between the halves stays square. */
|
|
4
6
|
.kui-split-button {
|
|
5
7
|
--_kui-split-button-fill: var(--kui-color-brand-fill-loud);
|
|
6
8
|
--_kui-split-button-on: var(--kui-color-brand-on-loud);
|
|
9
|
+
--_kui-split-button-radius: var(
|
|
10
|
+
--kui-layout-rounded-radius,
|
|
11
|
+
calc(1px + 0.6875rem)
|
|
12
|
+
);
|
|
7
13
|
display: inline-grid;
|
|
8
14
|
min-width: 0;
|
|
9
15
|
min-height: 2.75rem;
|
|
10
|
-
|
|
11
|
-
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
16
|
+
border-radius: var(--_kui-split-button-radius);
|
|
12
17
|
color: var(--_kui-split-button-on);
|
|
13
18
|
background: var(--_kui-split-button-fill);
|
|
14
19
|
grid-template-columns: minmax(0, auto) 2.5rem;
|
|
15
20
|
font-weight: var(--kui-font-weight-semibold);
|
|
16
21
|
}
|
|
17
22
|
|
|
23
|
+
.kui-split-button[data-shape="pill"] {
|
|
24
|
+
--_kui-split-button-radius: var(
|
|
25
|
+
--kui-layout-pill-radius,
|
|
26
|
+
calc(1px + 1.3125rem)
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
18
30
|
.kui-split-button[data-tone="neutral"] {
|
|
19
31
|
--_kui-split-button-fill: var(--kui-color-neutral-fill-loud);
|
|
20
32
|
--_kui-split-button-on: var(--kui-color-neutral-on-loud);
|
|
@@ -50,6 +62,7 @@
|
|
|
50
62
|
padding-inline: var(--kui-space-s);
|
|
51
63
|
border: 0;
|
|
52
64
|
border-radius: 0;
|
|
65
|
+
appearance: none;
|
|
53
66
|
color: inherit;
|
|
54
67
|
background: transparent;
|
|
55
68
|
cursor: pointer;
|
|
@@ -69,11 +82,44 @@
|
|
|
69
82
|
background: color-mix(in srgb, currentColor 12%, transparent);
|
|
70
83
|
}
|
|
71
84
|
|
|
72
|
-
/*
|
|
73
|
-
|
|
85
|
+
/* Each half rounds its outer corners with the group, so its hover fill and
|
|
86
|
+
focus ring follow the rounded or pill end. The group does not clip, so
|
|
87
|
+
these radii are what keep a half's fill inside the group's corners. */
|
|
88
|
+
.kui-split-button > .kui-split-button__primary {
|
|
89
|
+
border-start-start-radius: var(--_kui-split-button-radius);
|
|
90
|
+
border-end-start-radius: var(--_kui-split-button-radius);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.kui-split-button > .kui-split-button__options {
|
|
94
|
+
border-start-end-radius: var(--_kui-split-button-radius);
|
|
95
|
+
border-end-end-radius: var(--_kui-split-button-radius);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* The ring sits outside the focused half, offset like Button's, so it is
|
|
99
|
+
drawn against the surrounding surface rather than the loud fill, whose
|
|
100
|
+
brand color can match the ring's own (an inset ring vanished there). The
|
|
101
|
+
segment along the divider overlaps the neighboring half, painted above it. */
|
|
102
|
+
.kui-split-button > button:focus {
|
|
103
|
+
outline: none;
|
|
104
|
+
}
|
|
105
|
+
|
|
74
106
|
.kui-split-button > button:focus-visible {
|
|
75
107
|
outline: var(--kui-focus-ring);
|
|
108
|
+
outline-offset: 1px;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* focusRingInset: inside an ancestor that clips overflow, each half's ring
|
|
112
|
+
moves inside its box. The loud fill can share the ring's hue (brand), so a
|
|
113
|
+
surface-colored line runs inside the ring: the ring then meets the surface
|
|
114
|
+
on both edges, as the outside ring does, on every tone. The line runs 3px
|
|
115
|
+
past the ring, wide enough to stay solid at a fractional position. It
|
|
116
|
+
paints the surface context, as Button's does (foundation.css). */
|
|
117
|
+
.kui-split-button[data-focus-ring-inset="true"] > button:focus-visible {
|
|
76
118
|
outline-offset: -3px;
|
|
119
|
+
box-shadow:
|
|
120
|
+
inset 0 0 0 6px var(--kui-color-surface-current-tint, transparent),
|
|
121
|
+
inset 0 0 0 6px var(--kui-color-surface-current-region, transparent),
|
|
122
|
+
inset 0 0 0 6px var(--kui-color-surface-current, var(--kui-color-surface));
|
|
77
123
|
}
|
|
78
124
|
|
|
79
125
|
.kui-split-button > button:disabled {
|
|
@@ -16,6 +16,15 @@
|
|
|
16
16
|
font-family: var(--kui-font-sans);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/* In a List, a vertical stack, the toolbar is chrome and keeps its whole
|
|
20
|
+
natural height. Its explicit one-band min-height (below) replaces the flex
|
|
21
|
+
item's automatic content minimum, so a column shrinking toward a long
|
|
22
|
+
flex scroller beside it would otherwise squeeze a wrapped or stacked
|
|
23
|
+
toolbar onto its first row and clip the rest. */
|
|
24
|
+
.kui-list > .kui-toolbar {
|
|
25
|
+
flex-shrink: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
19
28
|
/* Safe areas: a toolbar compensates only for the inline edges its owner hands
|
|
20
29
|
it through `--kui-edge-inset-inline-*` (a Pane header or footer does), so its
|
|
21
30
|
box and dividers keep reaching the edge while its zones clear the unsafe
|
|
@@ -132,6 +132,31 @@
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
/* A sibling of an expanded trailing control yields to the trailing-priority
|
|
136
|
+
row the Toolbar moves that control onto: the same container queries and
|
|
137
|
+
responsiveAt keys as the Toolbar's own row (toolbar.css), so the group
|
|
138
|
+
hides exactly while the row is active and never wraps onto a third row at
|
|
139
|
+
a threshold restated with hideBelow. */
|
|
140
|
+
@container kui-toolbar (max-width: 52rem) {
|
|
141
|
+
.kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="narrow"]
|
|
142
|
+
> .kui-toolbar__trailing:has(> [data-expanded="true"])
|
|
143
|
+
> .kui-toolbar-control-group[data-visibility="yield-to-priority-row"]:not(
|
|
144
|
+
[data-expanded="true"]
|
|
145
|
+
) {
|
|
146
|
+
display: none;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@container kui-toolbar (max-width: 44rem) {
|
|
151
|
+
.kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="compact"]
|
|
152
|
+
> .kui-toolbar__trailing:has(> [data-expanded="true"])
|
|
153
|
+
> .kui-toolbar-control-group[data-visibility="yield-to-priority-row"]:not(
|
|
154
|
+
[data-expanded="true"]
|
|
155
|
+
) {
|
|
156
|
+
display: none;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
135
160
|
/* `shape="rounded"` swaps the default pill radius for the design system's softer
|
|
136
161
|
rounded rectangle. The shared highlight contract derives every inner hover or
|
|
137
162
|
selected surface from this outer radius and the group's full inset. */
|
|
@@ -206,7 +231,10 @@
|
|
|
206
231
|
border-color 0.2s ease;
|
|
207
232
|
}
|
|
208
233
|
|
|
209
|
-
|
|
234
|
+
/* A fill search spans a content-sized group's line. A `sizing="grow"` group
|
|
235
|
+
keeps its own grow basis instead (below): taking the whole line would make
|
|
236
|
+
it the line's hypothetical size and wrap every sibling group. */
|
|
237
|
+
.kui-toolbar-control-group[data-content="search"]:not([data-sizing="grow"]):has(
|
|
210
238
|
> .kui-search-field[data-expanded="true"][data-fill="true"]
|
|
211
239
|
) {
|
|
212
240
|
width: 100%;
|
|
@@ -11,10 +11,14 @@
|
|
|
11
11
|
border: 1px solid var(--kui-framed-list-border);
|
|
12
12
|
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
13
13
|
background: var(--kui-color-surface-lowered);
|
|
14
|
+
--kui-color-surface-current-tint: var(--kui-color-surface-lowered);
|
|
14
15
|
list-style: none;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
.kui-framed-list[data-surface="base"] {
|
|
19
|
+
--kui-color-surface-current: var(--kui-color-surface);
|
|
20
|
+
--kui-color-surface-current-region: transparent;
|
|
21
|
+
--kui-color-surface-current-tint: transparent;
|
|
18
22
|
background: var(--kui-color-surface);
|
|
19
23
|
}
|
|
20
24
|
|
|
@@ -44,4 +48,6 @@
|
|
|
44
48
|
|
|
45
49
|
.kui-framed-list__row[data-highlighted="true"] {
|
|
46
50
|
background: var(--kui-color-brand-fill-quiet);
|
|
51
|
+
/* The row's controls sit on the tint, not the list's lowered fill. */
|
|
52
|
+
--kui-color-surface-current-tint: var(--kui-color-brand-fill-quiet);
|
|
47
53
|
}
|
|
@@ -273,10 +273,16 @@
|
|
|
273
273
|
|
|
274
274
|
/* `surface`: a solid background behind the stack and its insets. */
|
|
275
275
|
.kui-list[data-surface="base"] {
|
|
276
|
+
--kui-color-surface-current: var(--kui-color-surface);
|
|
277
|
+
--kui-color-surface-current-region: transparent;
|
|
278
|
+
--kui-color-surface-current-tint: transparent;
|
|
276
279
|
background: var(--kui-color-surface);
|
|
277
280
|
}
|
|
278
281
|
|
|
279
282
|
.kui-list[data-surface="raised"] {
|
|
283
|
+
--kui-color-surface-current: var(--kui-color-surface-raised);
|
|
284
|
+
--kui-color-surface-current-region: transparent;
|
|
285
|
+
--kui-color-surface-current-tint: transparent;
|
|
280
286
|
background: var(--kui-color-surface-raised);
|
|
281
287
|
}
|
|
282
288
|
|
|
@@ -29,6 +29,13 @@
|
|
|
29
29
|
padding-block: var(--kui-list-header-title-padding-block, 0.25rem);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
/* Wrapped label lines keep the compact header's 4px block inset off the
|
|
33
|
+
header edges; a one-line label still centers in the unchanged minimum
|
|
34
|
+
height. */
|
|
35
|
+
.kui-list-header[data-wrap="true"] .kui-list-header__title {
|
|
36
|
+
padding-block: var(--kui-list-header-title-padding-block, 0.25rem);
|
|
37
|
+
}
|
|
38
|
+
|
|
32
39
|
.kui-list-header[data-divider="before"],
|
|
33
40
|
.kui-list-header[data-divider="both"] {
|
|
34
41
|
border-block-start: 1px solid
|
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
border: 1px solid var(--kui-color-neutral-border-normal);
|
|
21
21
|
border-radius: var(--kui-anchored-surface-radius, var(--kui-radius-m));
|
|
22
22
|
color: var(--kui-color-text, inherit);
|
|
23
|
+
--kui-color-surface-current: var(--kui-color-surface-raised);
|
|
24
|
+
--kui-color-surface-current-region: transparent;
|
|
25
|
+
--kui-color-surface-current-tint: transparent;
|
|
23
26
|
background: var(--kui-color-surface-raised);
|
|
24
27
|
box-shadow: var(--kui-shadow-l);
|
|
25
28
|
font: inherit;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
/* Checkbox: a drawn box beside its label, with hint and error text
|
|
2
|
-
label
|
|
3
|
-
|
|
1
|
+
/* Checkbox: a drawn box beside its label, with hint and error text directly
|
|
2
|
+
under the label on its column, as a grouped choice hint sits. The native
|
|
3
|
+
input sits invisibly over the box, so pointer, keyboard, touch
|
|
4
|
+
exploration, and forms all reach the real control. */
|
|
4
5
|
.kui-checkbox {
|
|
5
6
|
--_kui-checkbox-box: 1.25rem;
|
|
6
7
|
--_kui-checkbox-gap: 0.5rem;
|
|
@@ -91,7 +92,6 @@
|
|
|
91
92
|
.kui-checkbox__hint,
|
|
92
93
|
.kui-checkbox__error {
|
|
93
94
|
display: block;
|
|
94
|
-
margin-block-start: 0.4375rem;
|
|
95
95
|
padding-inline-start: calc(
|
|
96
96
|
var(--_kui-checkbox-box) + var(--_kui-checkbox-gap)
|
|
97
97
|
);
|
|
@@ -106,8 +106,9 @@
|
|
|
106
106
|
.kui-checkbox__error {
|
|
107
107
|
color: var(--kui-color-danger-on-quiet);
|
|
108
108
|
}
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
/* Inside a CheckboxGroup an invalid group marks every box. */
|
|
110
|
+
.kui-checkbox-group[data-invalid] .kui-checkbox__box {
|
|
111
|
+
border-color: var(--kui-color-danger-border-loud);
|
|
111
112
|
}
|
|
112
113
|
@media (forced-colors: active) {
|
|
113
114
|
.kui-checkbox__box {
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* CheckboxGroup: the group label, the choices (each a Kerf Checkbox, which
|
|
2
|
+
draws its own box, label, and hint), and hint and error text below. It is
|
|
3
|
+
laid out exactly like a RadioGroup: each box sits on the group's
|
|
4
|
+
inline-start edge and stacked choices sit 8px apart, the 28px pitch
|
|
5
|
+
checkboxes and radios share. */
|
|
6
|
+
.kui-checkbox-group {
|
|
7
|
+
display: flex;
|
|
8
|
+
min-width: 0;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
border: none;
|
|
13
|
+
font-size: var(--kui-font-m, 1rem);
|
|
14
|
+
font-weight: 400;
|
|
15
|
+
line-height: 1.2;
|
|
16
|
+
}
|
|
17
|
+
.kui-checkbox-group[data-size="compact"] {
|
|
18
|
+
font-size: var(--kui-font-s, 0.875rem);
|
|
19
|
+
}
|
|
20
|
+
/* The label matches every Kerf form control's label (RadioGroup's too). */
|
|
21
|
+
.kui-checkbox-group__label {
|
|
22
|
+
display: block;
|
|
23
|
+
float: none;
|
|
24
|
+
margin-block-end: 0.375rem;
|
|
25
|
+
padding: 0;
|
|
26
|
+
padding-inline: calc(1px + var(--kui-layout-item-padding, 0.5rem));
|
|
27
|
+
color: var(--kui-color-neutral-on-quiet);
|
|
28
|
+
font-size: var(--kui-font-xs);
|
|
29
|
+
font-weight: 650;
|
|
30
|
+
letter-spacing: 0.04em;
|
|
31
|
+
line-height: 1.2;
|
|
32
|
+
text-transform: uppercase;
|
|
33
|
+
}
|
|
34
|
+
.kui-checkbox-group__choices {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
gap: var(--kui-space-xs);
|
|
38
|
+
}
|
|
39
|
+
.kui-checkbox-group[data-orientation="horizontal"]
|
|
40
|
+
.kui-checkbox-group__choices {
|
|
41
|
+
flex-direction: row;
|
|
42
|
+
flex-wrap: wrap;
|
|
43
|
+
column-gap: 1.5rem;
|
|
44
|
+
}
|
|
45
|
+
.kui-checkbox-group__hint,
|
|
46
|
+
.kui-checkbox-group__error {
|
|
47
|
+
display: block;
|
|
48
|
+
margin-block-start: 0.4375rem;
|
|
49
|
+
padding-inline: calc(1px + var(--kui-layout-item-padding, 0.5rem));
|
|
50
|
+
color: var(--kui-color-text-quiet);
|
|
51
|
+
font-size: var(--kui-font-s, 0.875rem);
|
|
52
|
+
line-height: 1.6;
|
|
53
|
+
}
|
|
54
|
+
.kui-checkbox-group[data-size="compact"]
|
|
55
|
+
:is(.kui-checkbox-group__hint, .kui-checkbox-group__error) {
|
|
56
|
+
font-size: var(--kui-font-xs, 0.75rem);
|
|
57
|
+
}
|
|
58
|
+
.kui-checkbox-group__error {
|
|
59
|
+
color: var(--kui-color-danger-on-quiet);
|
|
60
|
+
}
|
|
61
|
+
.kui-checkbox-group__hint + .kui-checkbox-group__error {
|
|
62
|
+
margin-block-start: 0;
|
|
63
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
/* ColorPicker: a saturation and brightness area,
|
|
2
|
-
color
|
|
3
|
-
then preset and sample swatches.
|
|
4
|
-
(--_kui-color-picker-h/s/v/a and the
|
|
5
|
-
|
|
1
|
+
/* ColorPicker: a saturation and brightness area, a slider per channel of the
|
|
2
|
+
color model plus an opacity slider, a color-model menu with its tools,
|
|
3
|
+
channel fields, a hex and opacity row, then preset and sample swatches.
|
|
4
|
+
The surface's custom properties (--_kui-color-picker-h/s/v/a and the
|
|
5
|
+
opaque color) place the area thumb and paint the opacity slider; each
|
|
6
|
+
channel slider carries its own track gradient and thumb color inline. The
|
|
7
|
+
wiring updates both while a person drags. */
|
|
6
8
|
.kui-color-picker {
|
|
7
9
|
display: grid;
|
|
8
10
|
width: 100%;
|
|
@@ -18,7 +20,18 @@
|
|
|
18
20
|
font-size: var(--kui-font-m, 1rem);
|
|
19
21
|
}
|
|
20
22
|
|
|
23
|
+
/* The area and every slider track carry an inner edge halfway to the text
|
|
24
|
+
color, so an area or track as dark (or as light) as the surface behind it
|
|
25
|
+
keeps a visible boundary in either scheme. Every thumb draws a two-tone
|
|
26
|
+
ring, white inside a dark outline, so it keeps a 3:1 boundary over light
|
|
27
|
+
and dark colors alike. */
|
|
21
28
|
.kui-color-picker__surface {
|
|
29
|
+
--_kui-color-picker-track-edge: color-mix(
|
|
30
|
+
in srgb,
|
|
31
|
+
var(--kui-color-text) 50%,
|
|
32
|
+
transparent
|
|
33
|
+
);
|
|
34
|
+
--_kui-color-picker-thumb-outline: rgb(0 0 0 / 0.6);
|
|
22
35
|
--_kui-color-picker-checker: repeating-conic-gradient(
|
|
23
36
|
var(--kui-color-neutral-fill-normal) 0% 25%,
|
|
24
37
|
var(--kui-color-surface) 0% 50%
|
|
@@ -38,6 +51,7 @@
|
|
|
38
51
|
background:
|
|
39
52
|
linear-gradient(to top, #000, transparent),
|
|
40
53
|
linear-gradient(to right, #fff, hsl(var(--_kui-color-picker-h) 100% 50%));
|
|
54
|
+
box-shadow: inset 0 0 0 1px var(--_kui-color-picker-track-edge);
|
|
41
55
|
cursor: crosshair;
|
|
42
56
|
touch-action: none;
|
|
43
57
|
}
|
|
@@ -58,17 +72,28 @@
|
|
|
58
72
|
border-radius: 50%;
|
|
59
73
|
background: var(--_kui-color-picker-color);
|
|
60
74
|
box-shadow:
|
|
61
|
-
0 0 0 1px
|
|
75
|
+
0 0 0 1px var(--_kui-color-picker-thumb-outline),
|
|
62
76
|
var(--kui-shadow-s);
|
|
63
77
|
pointer-events: none;
|
|
64
78
|
translate: -50% -50%;
|
|
65
79
|
}
|
|
66
80
|
|
|
67
|
-
/* The
|
|
68
|
-
round thumb that shows the color at that point.
|
|
69
|
-
|
|
81
|
+
/* The channel and opacity sliders, one group: native ranges drawn as 12px
|
|
82
|
+
tracks with a round thumb that shows the color at that point. A channel
|
|
83
|
+
slider's inline style carries its track (the colors its channel produces
|
|
84
|
+
while the others hold, or the full rainbow for hue) and its thumb color.
|
|
85
|
+
Every track runs in the writing direction, as the native range does, and
|
|
86
|
+
carries the surface's inner edge. */
|
|
87
|
+
.kui-color-picker__sliders {
|
|
88
|
+
display: grid;
|
|
89
|
+
min-width: 0;
|
|
90
|
+
gap: var(--kui-space-xs, 0.5rem);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.kui-color-picker__slider,
|
|
70
94
|
.kui-color-picker__opacity {
|
|
71
95
|
--_kui-color-picker-thumb: 1.25rem;
|
|
96
|
+
--_kui-color-picker-track-direction: to right;
|
|
72
97
|
|
|
73
98
|
display: block;
|
|
74
99
|
width: 100%;
|
|
@@ -81,23 +106,22 @@
|
|
|
81
106
|
appearance: none;
|
|
82
107
|
}
|
|
83
108
|
|
|
84
|
-
.kui-color-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
#00f,
|
|
92
|
-
#f0f,
|
|
93
|
-
#f00
|
|
94
|
-
);
|
|
95
|
-
--_kui-color-picker-thumb-color: hsl(var(--_kui-color-picker-h) 100% 50%);
|
|
109
|
+
.kui-color-picker__slider[hidden] {
|
|
110
|
+
display: none;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.kui-color-picker__slider:dir(rtl),
|
|
114
|
+
.kui-color-picker__opacity:dir(rtl) {
|
|
115
|
+
--_kui-color-picker-track-direction: to left;
|
|
96
116
|
}
|
|
97
117
|
|
|
98
118
|
.kui-color-picker__opacity {
|
|
99
119
|
--_kui-color-picker-track:
|
|
100
|
-
linear-gradient(
|
|
120
|
+
linear-gradient(
|
|
121
|
+
var(--_kui-color-picker-track-direction),
|
|
122
|
+
transparent,
|
|
123
|
+
var(--_kui-color-picker-color)
|
|
124
|
+
),
|
|
101
125
|
var(--_kui-color-picker-checker);
|
|
102
126
|
--_kui-color-picker-thumb-color: color-mix(
|
|
103
127
|
in srgb,
|
|
@@ -106,23 +130,23 @@
|
|
|
106
130
|
);
|
|
107
131
|
}
|
|
108
132
|
|
|
109
|
-
.kui-color-
|
|
133
|
+
.kui-color-picker__slider::-webkit-slider-runnable-track,
|
|
110
134
|
.kui-color-picker__opacity::-webkit-slider-runnable-track {
|
|
111
135
|
height: 0.75rem;
|
|
112
136
|
border-radius: var(--kui-radius-pill);
|
|
113
137
|
background: var(--_kui-color-picker-track);
|
|
114
|
-
box-shadow: inset 0 0 0 1px
|
|
138
|
+
box-shadow: inset 0 0 0 1px var(--_kui-color-picker-track-edge);
|
|
115
139
|
}
|
|
116
140
|
|
|
117
|
-
.kui-color-
|
|
141
|
+
.kui-color-picker__slider::-moz-range-track,
|
|
118
142
|
.kui-color-picker__opacity::-moz-range-track {
|
|
119
143
|
height: 0.75rem;
|
|
120
144
|
border-radius: var(--kui-radius-pill);
|
|
121
145
|
background: var(--_kui-color-picker-track);
|
|
122
|
-
box-shadow: inset 0 0 0 1px
|
|
146
|
+
box-shadow: inset 0 0 0 1px var(--_kui-color-picker-track-edge);
|
|
123
147
|
}
|
|
124
148
|
|
|
125
|
-
.kui-color-
|
|
149
|
+
.kui-color-picker__slider::-webkit-slider-thumb,
|
|
126
150
|
.kui-color-picker__opacity::-webkit-slider-thumb {
|
|
127
151
|
width: var(--_kui-color-picker-thumb);
|
|
128
152
|
height: var(--_kui-color-picker-thumb);
|
|
@@ -132,12 +156,12 @@
|
|
|
132
156
|
border-radius: 50%;
|
|
133
157
|
background: var(--_kui-color-picker-thumb-color);
|
|
134
158
|
box-shadow:
|
|
135
|
-
0 0 0 1px
|
|
159
|
+
0 0 0 1px var(--_kui-color-picker-thumb-outline),
|
|
136
160
|
var(--kui-shadow-s);
|
|
137
161
|
appearance: none;
|
|
138
162
|
}
|
|
139
163
|
|
|
140
|
-
.kui-color-
|
|
164
|
+
.kui-color-picker__slider::-moz-range-thumb,
|
|
141
165
|
.kui-color-picker__opacity::-moz-range-thumb {
|
|
142
166
|
width: var(--_kui-color-picker-thumb);
|
|
143
167
|
height: var(--_kui-color-picker-thumb);
|
|
@@ -146,22 +170,22 @@
|
|
|
146
170
|
border-radius: 50%;
|
|
147
171
|
background: var(--_kui-color-picker-thumb-color);
|
|
148
172
|
box-shadow:
|
|
149
|
-
0 0 0 1px
|
|
173
|
+
0 0 0 1px var(--_kui-color-picker-thumb-outline),
|
|
150
174
|
var(--kui-shadow-s);
|
|
151
175
|
}
|
|
152
176
|
|
|
153
|
-
.kui-color-
|
|
177
|
+
.kui-color-picker__slider:focus-visible,
|
|
154
178
|
.kui-color-picker__opacity:focus-visible {
|
|
155
179
|
outline: none;
|
|
156
180
|
}
|
|
157
181
|
|
|
158
|
-
.kui-color-
|
|
182
|
+
.kui-color-picker__slider:focus-visible::-webkit-slider-thumb,
|
|
159
183
|
.kui-color-picker__opacity:focus-visible::-webkit-slider-thumb {
|
|
160
184
|
outline: var(--kui-focus-ring);
|
|
161
185
|
outline-offset: 1px;
|
|
162
186
|
}
|
|
163
187
|
|
|
164
|
-
.kui-color-
|
|
188
|
+
.kui-color-picker__slider:focus-visible::-moz-range-thumb,
|
|
165
189
|
.kui-color-picker__opacity:focus-visible::-moz-range-thumb {
|
|
166
190
|
outline: var(--kui-focus-ring);
|
|
167
191
|
outline-offset: 1px;
|
|
@@ -317,10 +341,21 @@
|
|
|
317
341
|
cursor: not-allowed;
|
|
318
342
|
}
|
|
319
343
|
|
|
344
|
+
/* Increased contrast draws the area and track edge in the full text color. */
|
|
345
|
+
@media (prefers-contrast: more) {
|
|
346
|
+
.kui-color-picker__surface {
|
|
347
|
+
--_kui-color-picker-track-edge: var(--kui-color-text);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
320
351
|
@media (forced-colors: active) {
|
|
352
|
+
.kui-color-picker__surface {
|
|
353
|
+
--_kui-color-picker-track-edge: CanvasText;
|
|
354
|
+
}
|
|
355
|
+
|
|
321
356
|
.kui-color-picker__area,
|
|
322
357
|
.kui-color-picker__area-thumb,
|
|
323
|
-
.kui-color-
|
|
358
|
+
.kui-color-picker__slider,
|
|
324
359
|
.kui-color-picker__opacity {
|
|
325
360
|
forced-color-adjust: none;
|
|
326
361
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
/* RadioGroup: the group label, the choices
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/* RadioGroup: the group label, the choices (each a drawn circle beside its
|
|
2
|
+
label, the native radio invisibly over the circle), and hint and error text
|
|
3
|
+
below. Each circle sits on the group's inline-start edge, where a
|
|
4
|
+
Checkbox draws its box, so stacked checkboxes and radios share one control
|
|
5
|
+
column, and stacked choices sit 8px apart: the same 28px pitch as Checkboxes
|
|
6
|
+
in a List gap="xs". */
|
|
4
7
|
.kui-radio-group {
|
|
5
8
|
--_kui-radio-group-size: 1.25rem;
|
|
6
9
|
--_kui-radio-group-gap: 0.5rem;
|
|
@@ -36,8 +39,7 @@
|
|
|
36
39
|
.kui-radio-group__choices {
|
|
37
40
|
display: flex;
|
|
38
41
|
flex-direction: column;
|
|
39
|
-
gap:
|
|
40
|
-
padding-inline: var(--kui-layout-item-padding, 0.5rem);
|
|
42
|
+
gap: var(--kui-space-xs);
|
|
41
43
|
}
|
|
42
44
|
.kui-radio-group[data-orientation="horizontal"] .kui-radio-group__choices {
|
|
43
45
|
flex-direction: row;
|
|
@@ -67,8 +67,12 @@
|
|
|
67
67
|
outline-color: transparent;
|
|
68
68
|
}
|
|
69
69
|
/* Focus shows on the control (pointer or keyboard), but not while its
|
|
70
|
-
listbox is open: the listbox shows where focus is then.
|
|
71
|
-
|
|
70
|
+
listbox is open: the listbox shows where focus is then. A Select whose
|
|
71
|
+
enclosing group owns the ring (`focusRingOwner="group"`) never paints its
|
|
72
|
+
own here: the exclusion lives in this selector, not in a later override,
|
|
73
|
+
because the focus state outranks any plain owner rule. */
|
|
74
|
+
.kui-select:not([data-focus-ring-owner="group"]):not([open]):focus-within
|
|
75
|
+
> .kui-select__trigger {
|
|
72
76
|
outline: var(--kui-focus-ring);
|
|
73
77
|
outline-offset: 1px;
|
|
74
78
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/* Switch: a track and thumb beside its label, with a hint
|
|
2
|
-
column. The native input sits
|
|
1
|
+
/* Switch: a track and thumb beside its label, with a hint directly under
|
|
2
|
+
the label on its column, as a Checkbox hint sits. The native input sits
|
|
3
|
+
invisibly over the track. */
|
|
3
4
|
.kui-switch {
|
|
4
5
|
--_kui-switch-height: 1.25rem;
|
|
5
6
|
--_kui-switch-gap: 0.5rem;
|
|
@@ -99,7 +100,6 @@
|
|
|
99
100
|
}
|
|
100
101
|
.kui-switch__hint {
|
|
101
102
|
display: block;
|
|
102
|
-
margin-block-start: 0.4375rem;
|
|
103
103
|
padding-inline-start: calc(
|
|
104
104
|
var(--_kui-switch-height) * 1.75 + var(--_kui-switch-gap)
|
|
105
105
|
);
|
|
@@ -45,10 +45,12 @@
|
|
|
45
45
|
root scroll in its short mode, while its content remains transparent. */
|
|
46
46
|
.kui-pane[data-appearance="sunken"] > .kui-pane__content {
|
|
47
47
|
background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
|
|
48
|
+
--kui-color-surface-current-region: var(--kui-color-surface-lowered);
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
.kui-pane[data-appearance="sunken"][data-chrome-placement="auto"] {
|
|
51
52
|
background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
|
|
53
|
+
--kui-color-surface-current-region: var(--kui-color-surface-lowered);
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
.kui-pane[data-appearance="sunken"][data-chrome-placement="auto"]
|
|
@@ -56,8 +58,15 @@
|
|
|
56
58
|
background: transparent;
|
|
57
59
|
}
|
|
58
60
|
|
|
61
|
+
/* The surface context follows the paint: the auto chrome is opaque again. */
|
|
59
62
|
.kui-pane[data-appearance="sunken"][data-chrome-placement="auto"]
|
|
60
63
|
> :is(.kui-pane__header, .kui-pane__footer) {
|
|
64
|
+
--kui-color-surface-current: var(
|
|
65
|
+
--kui-pane-chrome-background,
|
|
66
|
+
var(--kui-color-surface)
|
|
67
|
+
);
|
|
68
|
+
--kui-color-surface-current-region: transparent;
|
|
69
|
+
--kui-color-surface-current-tint: transparent;
|
|
61
70
|
background: var(--kui-pane-chrome-background, var(--kui-color-surface));
|
|
62
71
|
}
|
|
63
72
|
|
|
@@ -67,11 +76,16 @@
|
|
|
67
76
|
surface instead. */
|
|
68
77
|
.kui-pane[data-background] {
|
|
69
78
|
background: var(--_kui-pane-background);
|
|
79
|
+
--kui-color-surface-current-region: var(--_kui-pane-background);
|
|
70
80
|
}
|
|
71
81
|
|
|
82
|
+
/* The transparent slots keep the root's surface context. */
|
|
72
83
|
.kui-pane[data-background][data-appearance="sunken"] > .kui-pane__content,
|
|
73
84
|
.kui-pane[data-background][data-appearance="sunken"][data-chrome-placement="auto"]
|
|
74
85
|
> :is(.kui-pane__header, .kui-pane__footer) {
|
|
86
|
+
--kui-color-surface-current: inherit;
|
|
87
|
+
--kui-color-surface-current-region: inherit;
|
|
88
|
+
--kui-color-surface-current-tint: inherit;
|
|
75
89
|
background: transparent;
|
|
76
90
|
}
|
|
77
91
|
|
|
@@ -257,6 +271,16 @@
|
|
|
257
271
|
background: var(--kui-chrome-material);
|
|
258
272
|
}
|
|
259
273
|
|
|
274
|
+
/* The material has no single color over scrolling content; the surface
|
|
275
|
+
context takes it at rest, as a tint over the region it covers. A clear
|
|
276
|
+
header paints nothing and keeps the inherited context. */
|
|
277
|
+
.kui-pane[data-header-presentation="overlay"]:not(
|
|
278
|
+
[data-header-material="clear"]
|
|
279
|
+
)
|
|
280
|
+
> .kui-pane__header {
|
|
281
|
+
--kui-color-surface-current-tint: var(--kui-chrome-material);
|
|
282
|
+
}
|
|
283
|
+
|
|
260
284
|
.kui-pane[data-header-presentation="overlay"][data-header-overlay="measured"]:not(
|
|
261
285
|
[data-chrome-placement="auto"]
|
|
262
286
|
)
|
|
@@ -136,6 +136,7 @@
|
|
|
136
136
|
.kui-workbench__main[data-appearance="sunken"],
|
|
137
137
|
:is(.kui-workbench__rail, .kui-workbench__drawer)[data-appearance="sunken"] {
|
|
138
138
|
background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
|
|
139
|
+
--kui-color-surface-current-region: var(--kui-color-surface-lowered);
|
|
139
140
|
}
|
|
140
141
|
|
|
141
142
|
:is(
|
|
@@ -143,6 +144,8 @@
|
|
|
143
144
|
.kui-workbench__drawer
|
|
144
145
|
)[data-appearance="sunken"][data-resizable="true"][data-content-overflow="auto"] {
|
|
145
146
|
background: transparent;
|
|
147
|
+
/* Only the content paints; the root keeps the inherited context. */
|
|
148
|
+
--kui-color-surface-current-region: inherit;
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
:is(
|
|
@@ -151,6 +154,7 @@
|
|
|
151
154
|
)[data-appearance="sunken"][data-resizable="true"][data-content-overflow="auto"]
|
|
152
155
|
> .kui-workbench__panel-content {
|
|
153
156
|
background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
|
|
157
|
+
--kui-color-surface-current-region: var(--kui-color-surface-lowered);
|
|
154
158
|
}
|
|
155
159
|
|
|
156
160
|
.kui-workbench__main[data-drawer-inline-expanded="true"] {
|