@womp/kookie-ui 0.35.0 → 0.35.2
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/components.css +35 -35
- package/dist/cjs/components/alert-dialog.js +1 -1
- package/dist/cjs/components/alert-dialog.js.map +3 -3
- package/dist/cjs/components/command.d.ts.map +1 -1
- package/dist/cjs/components/command.js +1 -1
- package/dist/cjs/components/command.js.map +3 -3
- package/dist/cjs/components/dialog.js +1 -1
- package/dist/cjs/components/dialog.js.map +3 -3
- package/dist/cjs/components/index.js +2 -2
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/components/navigator.d.ts +6 -1
- package/dist/cjs/components/navigator.d.ts.map +1 -1
- package/dist/cjs/components/navigator.js +1 -1
- package/dist/cjs/components/navigator.js.map +2 -2
- package/dist/cjs/components/sheet.js +1 -1
- package/dist/cjs/components/sheet.js.map +3 -3
- package/dist/cjs/hooks/index.js +2 -2
- package/dist/cjs/hooks/index.js.map +3 -3
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts +6 -0
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.js +1 -1
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.js.map +3 -3
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/index.js.map +3 -3
- package/dist/esm/chunk-3RJVW6RK.js +3 -0
- package/dist/esm/{chunk-7VJF6EXN.js.map → chunk-3RJVW6RK.js.map} +3 -3
- package/dist/esm/chunk-LR4X7SVV.js +3 -0
- package/dist/esm/chunk-LR4X7SVV.js.map +7 -0
- package/dist/esm/{chunk-J7MIXG6M.js → chunk-QV66TN2A.js} +2 -2
- package/dist/esm/chunk-SR42NATX.js +3 -0
- package/dist/esm/chunk-SR42NATX.js.map +7 -0
- package/dist/esm/chunk-UH6CJXHY.js +3 -0
- package/dist/esm/chunk-UH6CJXHY.js.map +7 -0
- package/dist/esm/chunk-XVN43IZL.js +3 -0
- package/dist/esm/chunk-XVN43IZL.js.map +7 -0
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/command.d.ts.map +1 -1
- package/dist/esm/components/command.js +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/navigator.d.ts +6 -1
- package/dist/esm/components/navigator.d.ts.map +1 -1
- package/dist/esm/components/navigator.js +1 -1
- package/dist/esm/components/sheet.js +1 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts +6 -0
- package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
- package/dist/esm/hooks/use-body-pointer-events-cleanup.js +1 -1
- package/dist/esm/index.js +1 -1
- package/package.json +1 -1
- package/src/components/_internal/base-card.css +3 -3
- package/src/components/_internal/base-menu.css +1 -1
- package/src/components/_internal/base-sidebar-menu.css +1 -1
- package/src/components/_internal/base-tab-list.css +1 -1
- package/src/components/accordion.css +2 -2
- package/src/components/alert-dialog.tsx +2 -2
- package/src/components/avatar.css +2 -2
- package/src/components/card.css +1 -1
- package/src/components/chatbar.css +2 -2
- package/src/components/combobox.css +1 -1
- package/src/components/command.css +1 -1
- package/src/components/command.tsx +16 -3
- package/src/components/dialog.tsx +2 -2
- package/src/components/kbd.css +2 -2
- package/src/components/message-scroller.css +1 -1
- package/src/components/navigator.css +1 -1
- package/src/components/navigator.tsx +14 -1
- package/src/components/scroll-area.css +1 -1
- package/src/components/select.css +6 -6
- package/src/components/sidebar.css +2 -2
- package/src/components/text-area.css +1 -1
- package/src/components/text-field.css +3 -3
- package/src/components/virtual-menu.css +1 -1
- package/src/hooks/use-body-pointer-events-cleanup.ts +12 -0
- package/src/styles/tokens/constants.css +3 -3
- package/styles.css +37 -37
- package/tokens.css +2 -2
- package/dist/esm/chunk-7VJF6EXN.js +0 -3
- package/dist/esm/chunk-CAM66IXC.js +0 -3
- package/dist/esm/chunk-CAM66IXC.js.map +0 -7
- package/dist/esm/chunk-GZPB6MRQ.js +0 -3
- package/dist/esm/chunk-GZPB6MRQ.js.map +0 -7
- package/dist/esm/chunk-I5TPDYJO.js +0 -3
- package/dist/esm/chunk-I5TPDYJO.js.map +0 -7
- package/dist/esm/chunk-NZJRXZYX.js +0 -3
- package/dist/esm/chunk-NZJRXZYX.js.map +0 -7
- /package/dist/esm/{chunk-J7MIXG6M.js.map → chunk-QV66TN2A.js.map} +0 -0
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
|
|
164
164
|
/* Focus */
|
|
165
165
|
&:where(:focus-visible) {
|
|
166
|
-
outline:
|
|
166
|
+
outline: var(--focus-ring-width) solid var(--v-focus-color);
|
|
167
167
|
outline-offset: var(--v-focus-offset);
|
|
168
168
|
|
|
169
169
|
&::after {
|
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
|
|
274
274
|
/* Focus */
|
|
275
275
|
&:where(:focus-visible) {
|
|
276
|
-
outline:
|
|
276
|
+
outline: var(--focus-ring-width) solid var(--v-focus-color);
|
|
277
277
|
outline-offset: var(--v-focus-offset);
|
|
278
278
|
}
|
|
279
279
|
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
}
|
|
339
339
|
|
|
340
340
|
&:where(:focus-visible) {
|
|
341
|
-
outline:
|
|
341
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
342
342
|
outline-offset: 2px;
|
|
343
343
|
}
|
|
344
344
|
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
|
|
191
191
|
/* Trigger focus states */
|
|
192
192
|
:where(.kui-AccordionTrigger:focus-visible) {
|
|
193
|
-
outline: var(--focus-
|
|
193
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
194
194
|
outline-offset: var(--focus-outline-offset-inset);
|
|
195
195
|
}
|
|
196
196
|
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
}
|
|
247
247
|
|
|
248
248
|
:where(.kui-AccordionTrigger:focus-visible) {
|
|
249
|
-
outline:
|
|
249
|
+
outline: var(--focus-ring-width) solid CanvasText;
|
|
250
250
|
outline-offset: 2px;
|
|
251
251
|
}
|
|
252
252
|
|
|
@@ -9,7 +9,7 @@ import { PortalTheme } from './_internal/portal-theme.js';
|
|
|
9
9
|
import { extractProps } from '../helpers/extract-props.js';
|
|
10
10
|
import { useThemeSizeProps } from '../hooks/theme-size.js';
|
|
11
11
|
import { requireReactElement } from '../helpers/require-react-element.js';
|
|
12
|
-
import { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';
|
|
12
|
+
import { releaseBodyPointerEvents, useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';
|
|
13
13
|
|
|
14
14
|
import type { AlertDialogContentOwnProps } from './alert-dialog.props.js';
|
|
15
15
|
import type { ComponentPropsWithout, RemovedProps, ComponentPropsAs } from '../helpers/component-props.js';
|
|
@@ -61,7 +61,7 @@ const AlertDialogContent = React.forwardRef<AlertDialogContentElement, AlertDial
|
|
|
61
61
|
// Radix returns focus to the trigger unless the caller prevents it.
|
|
62
62
|
onCloseAutoFocus?.(event);
|
|
63
63
|
// Restore pointer-events to body (Radix UI fix for issue #1241)
|
|
64
|
-
|
|
64
|
+
releaseBodyPointerEvents();
|
|
65
65
|
}}
|
|
66
66
|
/>
|
|
67
67
|
</div>
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
cursor: pointer;
|
|
39
39
|
|
|
40
40
|
&:where(:focus-visible) {
|
|
41
|
-
outline: var(--focus-
|
|
42
|
-
outline-offset: var(--focus-
|
|
41
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
42
|
+
outline-offset: var(--focus-ring-offset);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/* Disabled is a colour remap: the element still hit-tests, so the cursor stops promising a press. */
|
package/src/components/card.css
CHANGED
|
@@ -341,7 +341,7 @@
|
|
|
341
341
|
|
|
342
342
|
/* Focus state - outline ring (raised has its own box-shadow ring) */
|
|
343
343
|
&:where(:focus-within) {
|
|
344
|
-
outline:
|
|
344
|
+
outline: var(--focus-ring-width) solid var(--v-focus-color, var(--focus-8));
|
|
345
345
|
outline-offset: -1px;
|
|
346
346
|
}
|
|
347
347
|
}
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
border: 1px solid CanvasText;
|
|
418
418
|
}
|
|
419
419
|
.kui-ChatbarBox:where(.kui-variant-raised):where(:focus-within) {
|
|
420
|
-
outline:
|
|
420
|
+
outline: var(--focus-ring-width) solid Highlight;
|
|
421
421
|
outline-offset: -1px;
|
|
422
422
|
}
|
|
423
423
|
.kui-ChatbarRoot:where([data-disabled]) .kui-ChatbarBox {
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
/* Items never take DOM focus, so the base menu :focus-visible rule never matches. */
|
|
125
125
|
@media (forced-colors: active) {
|
|
126
126
|
.kui-ComboboxItem:where([data-selected='true']) {
|
|
127
|
-
outline:
|
|
127
|
+
outline: var(--focus-ring-width) solid Highlight;
|
|
128
128
|
outline-offset: -2px;
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -23,7 +23,7 @@ import { Command as CommandPrimitive } from 'cmdk';
|
|
|
23
23
|
import { Dialog as DialogPrimitive } from 'radix-ui';
|
|
24
24
|
|
|
25
25
|
import { PortalTheme } from './_internal/portal-theme.js';
|
|
26
|
-
import { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';
|
|
26
|
+
import { releaseBodyPointerEvents, useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';
|
|
27
27
|
import { useThemeSize } from '../hooks/theme-size.js';
|
|
28
28
|
|
|
29
29
|
type Size = '1' | '2' | '3' | '4';
|
|
@@ -194,7 +194,7 @@ function CommandContent({ 'aria-label': label, filter = defaultFilter, itemToStr
|
|
|
194
194
|
className={classNames('kui-CommandContent', `kui-r-size-${size}`, className)}
|
|
195
195
|
style={style}
|
|
196
196
|
onCloseAutoFocus={() => {
|
|
197
|
-
|
|
197
|
+
releaseBodyPointerEvents();
|
|
198
198
|
}}
|
|
199
199
|
>
|
|
200
200
|
<DialogPrimitive.Title className="kui-sr-only">{label}</DialogPrimitive.Title>
|
|
@@ -304,8 +304,21 @@ interface CommandGroupLabelProps {
|
|
|
304
304
|
|
|
305
305
|
/** The group's name, above its rows. */
|
|
306
306
|
function CommandGroupLabel({ children, className }: CommandGroupLabelProps) {
|
|
307
|
+
const id = React.useId();
|
|
308
|
+
const ref = React.useRef<HTMLDivElement>(null);
|
|
309
|
+
// cmdk renders the group's `role="group"` element itself and gives no way to name it from a
|
|
310
|
+
// child, so the label names it here, as Combobox.Label does. The label stays out of the
|
|
311
|
+
// reading order: a screen reader hears it as the group's name, not as a row.
|
|
312
|
+
React.useLayoutEffect(() => {
|
|
313
|
+
const group = ref.current?.closest('[cmdk-group-items]');
|
|
314
|
+
if (!group || group.hasAttribute('aria-labelledby')) return;
|
|
315
|
+
group.setAttribute('aria-labelledby', id);
|
|
316
|
+
return () => {
|
|
317
|
+
if (group.getAttribute('aria-labelledby') === id) group.removeAttribute('aria-labelledby');
|
|
318
|
+
};
|
|
319
|
+
}, [id]);
|
|
307
320
|
return (
|
|
308
|
-
<div className={classNames('kui-BaseMenuLabel', 'kui-CommandGroupLabel', className)} aria-hidden>
|
|
321
|
+
<div ref={ref} id={id} className={classNames('kui-BaseMenuLabel', 'kui-CommandGroupLabel', className)} aria-hidden>
|
|
309
322
|
{children}
|
|
310
323
|
</div>
|
|
311
324
|
);
|
|
@@ -10,7 +10,7 @@ import { NavigatorHostContext, type NavigatorHost } from './_internal/navigator-
|
|
|
10
10
|
import { extractProps } from '../helpers/extract-props.js';
|
|
11
11
|
import { useThemeSizeProps } from '../hooks/theme-size.js';
|
|
12
12
|
import { requireReactElement } from '../helpers/require-react-element.js';
|
|
13
|
-
import { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';
|
|
13
|
+
import { releaseBodyPointerEvents, useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';
|
|
14
14
|
|
|
15
15
|
import type { DialogContentOwnProps } from './dialog.props.js';
|
|
16
16
|
import type { ComponentPropsWithout, RemovedProps, ComponentPropsAs } from '../helpers/component-props.js';
|
|
@@ -69,7 +69,7 @@ const DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>
|
|
|
69
69
|
// Radix returns focus to the trigger unless the caller prevents it.
|
|
70
70
|
onCloseAutoFocus?.(event);
|
|
71
71
|
// Restore pointer-events to body (Radix UI fix for issue #1241)
|
|
72
|
-
|
|
72
|
+
releaseBodyPointerEvents();
|
|
73
73
|
}}
|
|
74
74
|
/>
|
|
75
75
|
</div>
|
package/src/components/kbd.css
CHANGED
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
box-shadow: inset 0 var(--raised-border-width) var(--black-a3), 0 0 0 var(--raised-border-width) var(--neutral-a7);
|
|
104
104
|
}
|
|
105
105
|
&:where(:focus-visible) {
|
|
106
|
-
outline:
|
|
106
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
background-color: var(--neutral-a5);
|
|
125
125
|
}
|
|
126
126
|
&:where(:focus-visible) {
|
|
127
|
-
outline:
|
|
127
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -85,7 +85,12 @@ function Level({ visible, children }: { visible: boolean; children: React.ReactN
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
interface NavigatorProps<T> {
|
|
88
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* The screens above the root, as values. Use it with `onPathChange` to control the path. Each
|
|
90
|
+
* value is a string or a number: a screen is told apart by its value, and every object reads the
|
|
91
|
+
* same, so an object here would hand one screen's state to the next. Keep an id in the path and
|
|
92
|
+
* look the record up in `screen`.
|
|
93
|
+
*/
|
|
89
94
|
path?: readonly T[];
|
|
90
95
|
/** The path to start with when the navigator controls its own path. */
|
|
91
96
|
defaultPath?: readonly T[];
|
|
@@ -125,6 +130,14 @@ function Navigator<T>({ path: pathProp, defaultPath, onPathChange, screen, root,
|
|
|
125
130
|
direction = path.length < before.length ? 'pop' : path.length > before.length || !Object.is(path[path.length - 1], before[before.length - 1]) ? 'push' : seen.direction;
|
|
126
131
|
setSeen({ path, direction });
|
|
127
132
|
}
|
|
133
|
+
// A screen's key is its depth and its value as text, and every object is the same text.
|
|
134
|
+
React.useEffect(() => {
|
|
135
|
+
if (process.env.NODE_ENV === 'production') return;
|
|
136
|
+
if (path.some((value) => value !== null && typeof value === 'object')) {
|
|
137
|
+
console.error('Navigator: a value in `path` is an object. Path values must be strings or numbers; keep an id in the path and look the record up in `screen`.');
|
|
138
|
+
}
|
|
139
|
+
}, [path]);
|
|
140
|
+
|
|
128
141
|
const titles = React.useRef<(string | undefined)[]>([]);
|
|
129
142
|
const openers = React.useRef<(HTMLElement | null)[]>([]);
|
|
130
143
|
const [version, setVersion] = React.useState(0);
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
&:where(:focus-visible) {
|
|
24
|
-
outline: var(--focus-
|
|
24
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
25
25
|
outline-offset: var(--focus-outline-offset-inset);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
box-shadow: var(--field-chrome);
|
|
204
204
|
|
|
205
205
|
&:where(:focus-visible) {
|
|
206
|
-
outline:
|
|
206
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
207
207
|
outline-offset: 2px;
|
|
208
208
|
}
|
|
209
209
|
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
color: var(--accent-ink);
|
|
241
241
|
|
|
242
242
|
&:where(:focus-visible) {
|
|
243
|
-
outline:
|
|
243
|
+
outline: var(--focus-ring-width) solid var(--accent-8);
|
|
244
244
|
outline-offset: -1px;
|
|
245
245
|
}
|
|
246
246
|
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
&:where(:focus-visible) {
|
|
296
|
-
outline:
|
|
296
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
297
297
|
outline-offset: -1px;
|
|
298
298
|
}
|
|
299
299
|
|
|
@@ -336,7 +336,7 @@
|
|
|
336
336
|
}
|
|
337
337
|
|
|
338
338
|
&:where(:focus-visible) {
|
|
339
|
-
outline:
|
|
339
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
340
340
|
outline-offset: -1px;
|
|
341
341
|
}
|
|
342
342
|
|
|
@@ -380,7 +380,7 @@
|
|
|
380
380
|
}
|
|
381
381
|
|
|
382
382
|
&:where(:focus-visible) {
|
|
383
|
-
outline:
|
|
383
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
384
384
|
outline-offset: -1px;
|
|
385
385
|
}
|
|
386
386
|
|
|
@@ -402,7 +402,7 @@
|
|
|
402
402
|
|
|
403
403
|
/* Focus state */
|
|
404
404
|
&:where(:focus-visible) {
|
|
405
|
-
outline:
|
|
405
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
406
406
|
outline-offset: 2px;
|
|
407
407
|
}
|
|
408
408
|
|
|
@@ -860,7 +860,7 @@
|
|
|
860
860
|
/* Popover menu button focus (arrow-key navigation) */
|
|
861
861
|
/* stylelint-disable-next-line selector-max-specificity */
|
|
862
862
|
.kui-SidebarSearchPopover .kui-SidebarMenuButton:where(:focus-visible) {
|
|
863
|
-
outline:
|
|
863
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
864
864
|
outline-offset: -2px;
|
|
865
865
|
}
|
|
866
866
|
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
|
|
13
13
|
@supports selector(:has(*)) {
|
|
14
14
|
&:where(:has(.kui-TextFieldInput:focus)) {
|
|
15
|
-
outline:
|
|
15
|
+
outline: var(--focus-ring-width) solid var(--text-field-focus-color);
|
|
16
16
|
outline-offset: -1px;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
@supports not selector(:has(*)) {
|
|
20
20
|
&:where(:focus-within) {
|
|
21
|
-
outline:
|
|
21
|
+
outline: var(--focus-ring-width) solid var(--text-field-focus-color);
|
|
22
22
|
outline-offset: -1px;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
&::-webkit-calendar-picker-indicator:where(:focus-visible) {
|
|
91
|
-
outline:
|
|
91
|
+
outline: var(--focus-ring-width) solid var(--text-field-focus-color);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/* Remove focus ring from date fields and use the selection color */
|
|
@@ -114,6 +114,18 @@ function install(): () => void {
|
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Clears a `pointer-events: none` that Radix left on `document.body`, for a dialog that has just
|
|
119
|
+
* closed. Leaves it alone while another modal is still open: that modal needs the page behind it
|
|
120
|
+
* to stay blocked, and it clears the value itself when it closes.
|
|
121
|
+
*/
|
|
122
|
+
export function releaseBodyPointerEvents() {
|
|
123
|
+
if (typeof document === 'undefined') return;
|
|
124
|
+
const stillOpen = document.querySelector('[role="dialog"][data-state="open"], [role="alertdialog"][data-state="open"]');
|
|
125
|
+
if (stillOpen) return;
|
|
126
|
+
document.body.style.pointerEvents = '';
|
|
127
|
+
}
|
|
128
|
+
|
|
117
129
|
/**
|
|
118
130
|
* Hook to cleanup stuck pointer-events: none on document.body
|
|
119
131
|
*
|
|
@@ -100,9 +100,9 @@
|
|
|
100
100
|
--component-gap-ghost-3: calc(var(--space-2) * 1.5);
|
|
101
101
|
--component-gap-ghost-4: var(--space-3);
|
|
102
102
|
|
|
103
|
-
/*
|
|
104
|
-
--focus-outline-width:
|
|
105
|
-
--focus-outline-offset:
|
|
103
|
+
/* Older names for the focus ring, kept for apps that read them */
|
|
104
|
+
--focus-outline-width: var(--focus-ring-width);
|
|
105
|
+
--focus-outline-offset: var(--focus-ring-offset);
|
|
106
106
|
--focus-outline-offset-inset: -1px;
|
|
107
107
|
|
|
108
108
|
/* Component padding relationships */
|