@astryxdesign/core 0.7.2-canary.374b53a → 0.7.2-canary.3aca324
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/dist/Markdown/plugins/frontmatter.d.ts.map +1 -1
- package/dist/Markdown/plugins/frontmatter.js +7 -3
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +22 -8
- package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +100 -2
- package/dist/astryx.css +4 -4
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +93 -1
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +93 -1
- package/dist/utils/focusOutline.stylex.d.ts +4 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.js +4 -0
- package/locales/en.json +368 -0
- package/locales/pseudo.json +276 -0
- package/package.json +3 -3
- package/src/Markdown/plugins/frontmatter.test.tsx +25 -0
- package/src/Markdown/plugins/frontmatter.ts +7 -3
- package/src/MultiSelector/MultiSelector.test.tsx +159 -0
- package/src/MultiSelector/MultiSelector.tsx +40 -7
- package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +112 -2
- package/src/i18n/generated-locales/en.generated.ts +100 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +100 -0
- package/src/utils/focusOutline.stylex.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../../src/Markdown/plugins/frontmatter.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAMpB,KAAK,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAO1D,MAAM,WAAW,0BAA0B,CACzC,QAAQ,SAAS,kBAAkB;IAEnC,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,QAAQ,CAAC;CACzD;AAED,MAAM,MAAM,8BAA8B,CACxC,QAAQ,SAAS,kBAAkB,IAEjC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAC,GACzB;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAC,GAC1B;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,kBAAkB;IACtE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CACH,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAC5C,WAAW,CACT,QAAQ,EAAE,eAAe,CAAC,qBAAqB,CAAC,GAC/C,QAAQ,GAAG,SAAS,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../../src/Markdown/plugins/frontmatter.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAMpB,KAAK,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAO1D,MAAM,WAAW,0BAA0B,CACzC,QAAQ,SAAS,kBAAkB;IAEnC,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,QAAQ,CAAC;CACzD;AAED,MAAM,MAAM,8BAA8B,CACxC,QAAQ,SAAS,kBAAkB,IAEjC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAC,GACzB;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAC,GAC1B;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,kBAAkB;IACtE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CACH,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAC5C,WAAW,CACT,QAAQ,EAAE,eAAe,CAAC,qBAAqB,CAAC,GAC/C,QAAQ,GAAG,SAAS,CAAC;CACzB;AAsED,wBAAgB,yBAAyB,CAAC,QAAQ,SAAS,kBAAkB,EAC3E,OAAO,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAC5C,mBAAmB,CAAC,QAAQ,CAAC,CAoE/B"}
|
|
@@ -35,20 +35,24 @@ function readFrontmatter(source) {
|
|
|
35
35
|
status: 'defer'
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
const
|
|
38
|
+
const entries = new Map();
|
|
39
39
|
for (const line of body.slice(0, close.index).split(/\r?\n/)) {
|
|
40
40
|
if (line.trim() === '') {
|
|
41
41
|
continue;
|
|
42
42
|
}
|
|
43
43
|
const separator = line.indexOf(':');
|
|
44
44
|
const key = line.slice(0, separator).trim();
|
|
45
|
-
if (separator <= 0 || key === '' ||
|
|
45
|
+
if (separator <= 0 || key === '' || entries.has(key)) {
|
|
46
46
|
return {
|
|
47
47
|
status: 'none'
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
entries.set(key, line.slice(separator + 1).trim());
|
|
51
51
|
}
|
|
52
|
+
// A plain object, so a parser that returns the record unchanged passes the
|
|
53
|
+
// JSON-like metadata check. `fromEntries` defines every key as an own data
|
|
54
|
+
// property, so a field named `__proto__` stays a field.
|
|
55
|
+
const fields = Object.fromEntries(entries);
|
|
52
56
|
let end = openingLength + close.index + close[0].length;
|
|
53
57
|
if (source.startsWith('\r\n', end)) {
|
|
54
58
|
end += 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAUZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAE5D,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -29,13 +29,12 @@ import { PanelSearchInput } from "../Field/PanelSearchInput.js";
|
|
|
29
29
|
import { CheckboxInput } from "../CheckboxInput/index.js";
|
|
30
30
|
import { Badge } from "../Badge/index.js";
|
|
31
31
|
import "../theme/tokens.stylex.js";
|
|
32
|
-
import { colorVars, sizeVars, spacingVars, radiusVars, durationVars, easeVars, typographyVars, fontWeightVars, typeScaleVars } from "../theme/tokens.stylex.js";
|
|
32
|
+
import { colorVars, focusVars, sizeVars, spacingVars, radiusVars, durationVars, easeVars, typographyVars, fontWeightVars, typeScaleVars } from "../theme/tokens.stylex.js";
|
|
33
33
|
import { isOptionData, isDivider, isSection, normalizeOption, getSelectableOptions } from "../Selector/utils.js";
|
|
34
34
|
import { useMultiCombobox } from "./hooks.js";
|
|
35
35
|
import { getInputARIA, isImeKeyEvent, mergeProps } from "../utils/index.js";
|
|
36
36
|
import { devWarn, warnOnce } from "../utils/devWarning.js";
|
|
37
|
-
import "../utils/
|
|
38
|
-
import { FOCUS_OUTLINE_PARTS } from "../utils/focusOutline.stylex.js";
|
|
37
|
+
import { getInteractionModality, useInteractionModalityTracking } from "../utils/interactionModality.js";
|
|
39
38
|
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
40
39
|
import { FOCUSABLE_SELECTOR } from "../hooks/focusableSelector.js";
|
|
41
40
|
import { useAnnounceRenderedText } from "../hooks/useAnnounceRenderedText.js";
|
|
@@ -894,8 +893,8 @@ export function MultiSelector({
|
|
|
894
893
|
getActionCellId,
|
|
895
894
|
activeDescendantId,
|
|
896
895
|
onTriggerClick,
|
|
897
|
-
onKeyDown,
|
|
898
|
-
onItemMouseEnter
|
|
896
|
+
onKeyDown: onComboboxKeyDown,
|
|
897
|
+
onItemMouseEnter: onComboboxItemMouseEnter
|
|
899
898
|
} = useMultiCombobox({
|
|
900
899
|
selectableItems: sortedItems,
|
|
901
900
|
isDisabled: isDisabled || isEffectivelyReadOnly,
|
|
@@ -918,6 +917,21 @@ export function MultiSelector({
|
|
|
918
917
|
}, [getActionCellIdForActivate])
|
|
919
918
|
});
|
|
920
919
|
|
|
920
|
+
// A hover moves the highlight too, but the focus ring follows the shared
|
|
921
|
+
// interaction modality (architecture:interaction-modality INV1): it is read
|
|
922
|
+
// whenever a key or the pointer moves the highlight, so an action cell
|
|
923
|
+
// highlighted after pointer input keeps the hover treatment and no ring.
|
|
924
|
+
useInteractionModalityTracking();
|
|
925
|
+
const [isKeyboardHighlight, setIsKeyboardHighlight] = useState(() => getInteractionModality() === 'keyboard');
|
|
926
|
+
const onKeyDown = useCallback(event => {
|
|
927
|
+
onComboboxKeyDown(event);
|
|
928
|
+
setIsKeyboardHighlight(getInteractionModality() === 'keyboard');
|
|
929
|
+
}, [onComboboxKeyDown]);
|
|
930
|
+
const onItemMouseEnter = useCallback((...args) => {
|
|
931
|
+
onComboboxItemMouseEnter(...args);
|
|
932
|
+
setIsKeyboardHighlight(getInteractionModality() === 'keyboard');
|
|
933
|
+
}, [onComboboxItemMouseEnter]);
|
|
934
|
+
|
|
921
935
|
// The trigger button owns its click so a consumer `onClick`, which lands on
|
|
922
936
|
// the button, composes after the built-in toggle. A press elsewhere in the
|
|
923
937
|
// control box (padding, start icon, chevron) still opens the panel.
|
|
@@ -1179,14 +1193,14 @@ export function MultiSelector({
|
|
|
1179
1193
|
className: "x78zum5 x6s0dn4 x2lah0s xh6dtrn"
|
|
1180
1194
|
},
|
|
1181
1195
|
1: {
|
|
1182
|
-
className: "x78zum5 x6s0dn4 x2lah0s xh6dtrn
|
|
1196
|
+
className: "x78zum5 x6s0dn4 x2lah0s xh6dtrn xak0ai5 x9ssot5 x19bwoy8 x1eqjuhu"
|
|
1183
1197
|
}
|
|
1184
|
-
}[!!(isHighlighted && highlightedCell === 'action') << 0],
|
|
1198
|
+
}[!!(isHighlighted && highlightedCell === 'action' && isKeyboardHighlight) << 0],
|
|
1185
1199
|
children: isSelectAll || isCreate ? null : item.action
|
|
1186
1200
|
})]
|
|
1187
1201
|
}) : content
|
|
1188
1202
|
}, item.value);
|
|
1189
|
-
}, [isGrid, highlightedCell, getActionCellId, renderOption, indicatorPosition, highlightedIndex, optimisticValue, allEnabledSelected, selectAllState, selectAllLabel, getItemId, handleNavigableToggle, onItemMouseEnter, size, t]);
|
|
1203
|
+
}, [isGrid, highlightedCell, isKeyboardHighlight, getActionCellId, renderOption, indicatorPosition, highlightedIndex, optimisticValue, allEnabledSelected, selectAllState, selectAllLabel, getItemId, handleNavigableToggle, onItemMouseEnter, size, t]);
|
|
1190
1204
|
|
|
1191
1205
|
// Render all options. Uses sortedItems as the single source of truth for
|
|
1192
1206
|
// item order — no independent sorting here. Structural elements (dividers,
|
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
* built Storybook.
|
|
7
7
|
* @output Real-engine proof for option actions: the action is visible at rest
|
|
8
8
|
* beside its row (`spec:AST-058` FR8), the keyboard reaches it through the
|
|
9
|
-
* inline-end arrow in both directions and fires it with Enter,
|
|
10
|
-
*
|
|
9
|
+
* inline-end arrow in both directions and fires it with Enter, the active
|
|
10
|
+
* action cell draws the standard focus ring when the shared input modality
|
|
11
|
+
* is keyboard and not after pointer input, and the highlight follows a real
|
|
12
|
+
* mouse across rows and actions.
|
|
11
13
|
* @position Run with `pnpm test:a11y-contract`; paint, pointer paths and the
|
|
12
14
|
* active descendant as an engine exposes them are not jsdom claims.
|
|
13
15
|
*/
|
|
@@ -105,6 +107,102 @@ test('the keyboard reaches an action through the inline-end arrow and fires it w
|
|
|
105
107
|
await search.press('ArrowLeft');
|
|
106
108
|
await expect.poll(async () => activeDescendant(page)).toBe('row:Bug');
|
|
107
109
|
});
|
|
110
|
+
test('the active action cell draws the standard focus ring', async ({
|
|
111
|
+
page
|
|
112
|
+
}) => {
|
|
113
|
+
await page.goto(`${storybook.origin}/iframe.html?id=core-multiselector--row-actions&viewMode=story`);
|
|
114
|
+
const search = page.getByRole('combobox');
|
|
115
|
+
await expect(search).toBeFocused();
|
|
116
|
+
await search.press('ArrowDown'); // select-all
|
|
117
|
+
await search.press('ArrowDown'); // Feature (no action)
|
|
118
|
+
await search.press('ArrowDown'); // Bug
|
|
119
|
+
await search.press('ArrowRight');
|
|
120
|
+
await expect.poll(async () => activeDescendant(page)).toBe('gridcell:Edit Bug');
|
|
121
|
+
const ring = await page.evaluate(() => {
|
|
122
|
+
const id = document.activeElement?.getAttribute('aria-activedescendant');
|
|
123
|
+
const cell = id ? document.getElementById(id) : null;
|
|
124
|
+
if (!cell) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
const cs = getComputedStyle(cell);
|
|
128
|
+
// The ring the focus tokens describe, resolved by the browser on a probe.
|
|
129
|
+
const probe = document.createElement('div');
|
|
130
|
+
probe.style.cssText = 'outline-width:var(--focus-outline-width);outline-style:var(--focus-outline-style);outline-color:var(--focus-outline-color);outline-offset:var(--focus-outline-offset)';
|
|
131
|
+
document.body.appendChild(probe);
|
|
132
|
+
const want = getComputedStyle(probe);
|
|
133
|
+
const result = {
|
|
134
|
+
style: cs.outlineStyle,
|
|
135
|
+
width: cs.outlineWidth,
|
|
136
|
+
color: cs.outlineColor,
|
|
137
|
+
offset: cs.outlineOffset,
|
|
138
|
+
wantStyle: want.outlineStyle,
|
|
139
|
+
wantWidth: want.outlineWidth,
|
|
140
|
+
wantColor: want.outlineColor,
|
|
141
|
+
wantOffset: want.outlineOffset
|
|
142
|
+
};
|
|
143
|
+
probe.remove();
|
|
144
|
+
return result;
|
|
145
|
+
});
|
|
146
|
+
expect(ring).not.toBeNull();
|
|
147
|
+
expect(ring.style).not.toBe('none');
|
|
148
|
+
expect(ring.width).not.toBe('0px');
|
|
149
|
+
expect(ring.style).toBe(ring.wantStyle);
|
|
150
|
+
expect(ring.width).toBe(ring.wantWidth);
|
|
151
|
+
expect(ring.color).toBe(ring.wantColor);
|
|
152
|
+
expect(ring.offset).toBe(ring.wantOffset);
|
|
153
|
+
// Back on the option cell, the action cell drops the ring.
|
|
154
|
+
await search.press('ArrowLeft');
|
|
155
|
+
await expect.poll(async () => activeDescendant(page)).toBe('row:Bug');
|
|
156
|
+
const after = await page.getByRole('row', {
|
|
157
|
+
name: 'Bug'
|
|
158
|
+
}).locator('[data-multi-selector-action-cell]').evaluate(cell => getComputedStyle(cell).outlineStyle);
|
|
159
|
+
expect(after).toBe('none');
|
|
160
|
+
});
|
|
161
|
+
test('the action-cell ring follows the shared input modality', async ({
|
|
162
|
+
page
|
|
163
|
+
}) => {
|
|
164
|
+
await page.goto(`${storybook.origin}/iframe.html?id=core-multiselector--row-actions&viewMode=story`);
|
|
165
|
+
const search = page.getByRole('combobox');
|
|
166
|
+
await expect(search).toBeFocused();
|
|
167
|
+
const actionCell = name => page.getByRole('row', {
|
|
168
|
+
name
|
|
169
|
+
}).locator('[data-multi-selector-action-cell]');
|
|
170
|
+
const outlineStyle = async name => actionCell(name).evaluate(cell => getComputedStyle(cell).outlineStyle);
|
|
171
|
+
const hover = async name => {
|
|
172
|
+
const cell = await box(actionCell(name));
|
|
173
|
+
await page.mouse.move(cell.x + cell.width / 2, cell.y + cell.height / 2, {
|
|
174
|
+
steps: 6
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// Pointer input: a click into the search field, then a hover onto an
|
|
179
|
+
// action, moves the highlight without the ring, and leaves none behind.
|
|
180
|
+
await search.click();
|
|
181
|
+
await hover('Bug');
|
|
182
|
+
await expect.poll(async () => activeDescendant(page)).toBe('gridcell:Edit Bug');
|
|
183
|
+
expect(await outlineStyle('Bug')).toBe('none');
|
|
184
|
+
// A modifier chord is not keyboard navigation for the shared tracker.
|
|
185
|
+
await search.press('Control+ArrowRight');
|
|
186
|
+
expect(await outlineStyle('Bug')).toBe('none');
|
|
187
|
+
await page.mouse.move(1, 1, {
|
|
188
|
+
steps: 6
|
|
189
|
+
});
|
|
190
|
+
expect(await outlineStyle('Bug')).toBe('none');
|
|
191
|
+
|
|
192
|
+
// Keyboard input: back onto the same cell, the ring is drawn.
|
|
193
|
+
await search.press('ArrowLeft');
|
|
194
|
+
await expect.poll(async () => activeDescendant(page)).toBe('row:Bug');
|
|
195
|
+
await search.press('ArrowRight');
|
|
196
|
+
await expect.poll(async () => activeDescendant(page)).toBe('gridcell:Edit Bug');
|
|
197
|
+
expect(await outlineStyle('Bug')).not.toBe('none');
|
|
198
|
+
|
|
199
|
+
// Still keyboard-driven, a hover that moves the highlight to another
|
|
200
|
+
// row's action carries the ring with it.
|
|
201
|
+
await hover('P0');
|
|
202
|
+
await expect.poll(async () => activeDescendant(page)).toBe('gridcell:Edit P0');
|
|
203
|
+
expect(await outlineStyle('P0')).not.toBe('none');
|
|
204
|
+
expect(await outlineStyle('Bug')).toBe('none');
|
|
205
|
+
});
|
|
108
206
|
test('under RTL the inline-end arrow is ArrowLeft', async ({
|
|
109
207
|
page
|
|
110
208
|
}) => {
|
package/dist/astryx.css
CHANGED
|
@@ -1170,14 +1170,14 @@
|
|
|
1170
1170
|
.x1i7u4iq:not(#\#):not(#\#):not(#\#){opacity:var(--_toast-swipe-opacity,1)}
|
|
1171
1171
|
.x1clqncf:not(#\#):not(#\#):not(#\#){order:-1}
|
|
1172
1172
|
.x1g77sc7:not(#\#):not(#\#):not(#\#){order:0}
|
|
1173
|
-
.
|
|
1173
|
+
.x19bwoy8:not(#\#):not(#\#):not(#\#){outline-color:var(--focus-outline-color)}
|
|
1174
1174
|
.x1wfwxd8:not(#\#):not(#\#):not(#\#){outline-offset:0}
|
|
1175
1175
|
.x1kvmbwa:not(#\#):not(#\#):not(#\#){outline-offset:var(--_focus-outline-offset,0)}
|
|
1176
|
-
.
|
|
1176
|
+
.x1eqjuhu:not(#\#):not(#\#):not(#\#){outline-offset:var(--focus-outline-offset)}
|
|
1177
1177
|
.x1t137rt:not(#\#):not(#\#):not(#\#){outline-style:none}
|
|
1178
|
-
.
|
|
1178
|
+
.x9ssot5:not(#\#):not(#\#):not(#\#){outline-style:var(--focus-outline-style)}
|
|
1179
1179
|
.x1k57tk5:not(#\#):not(#\#):not(#\#){outline-width:0}
|
|
1180
|
-
.
|
|
1180
|
+
.xak0ai5:not(#\#):not(#\#):not(#\#){outline-width:var(--focus-outline-width)}
|
|
1181
1181
|
.x9y5y3v:not(#\#):not(#\#):not(#\#){overflow-clip-margin:1px}
|
|
1182
1182
|
.xj0a0fe:not(#\#):not(#\#):not(#\#){overflow-wrap:anywhere}
|
|
1183
1183
|
.x1mzt3pk:not(#\#):not(#\#):not(#\#){overflow-wrap:break-word}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/en.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"en.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/en.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8jBpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -436,6 +436,98 @@ const runtimeCatalog = {
|
|
|
436
436
|
'@astryx.transferList.announceSearchResults': '{count, number} {count, plural, one {item} other {items}} found.',
|
|
437
437
|
'@astryx.transferListSelector.apply': 'Apply',
|
|
438
438
|
'@astryx.transferListSelector.cancel': 'Cancel',
|
|
439
|
-
'@astryx.transferListSelector.triggerLabel': '{count, number} selected'
|
|
439
|
+
'@astryx.transferListSelector.triggerLabel': '{count, number} selected',
|
|
440
|
+
'@astryx.emojiPicker.label': 'Emoji',
|
|
441
|
+
'@astryx.emojiPicker.searchLabel': 'Search emoji',
|
|
442
|
+
'@astryx.emojiPicker.frequentlyUsed': 'Frequently used',
|
|
443
|
+
'@astryx.emojiPicker.searchResults': 'Search results',
|
|
444
|
+
'@astryx.emojiPicker.noResults': 'No emoji match “{query}”',
|
|
445
|
+
'@astryx.emojiPicker.loading': 'Loading emoji',
|
|
446
|
+
'@astryx.emojiPicker.loadFailed': "More emoji couldn't be loaded.",
|
|
447
|
+
'@astryx.emojiPicker.groupSmileysEmotion': 'Smileys & emotion',
|
|
448
|
+
'@astryx.emojiPicker.groupPeopleBody': 'People & body',
|
|
449
|
+
'@astryx.emojiPicker.groupAnimalsNature': 'Animals & nature',
|
|
450
|
+
'@astryx.emojiPicker.groupFoodDrink': 'Food & drink',
|
|
451
|
+
'@astryx.emojiPicker.groupTravelPlaces': 'Travel & places',
|
|
452
|
+
'@astryx.emojiPicker.groupActivities': 'Activities',
|
|
453
|
+
'@astryx.emojiPicker.groupObjects': 'Objects',
|
|
454
|
+
'@astryx.emojiPicker.groupSymbols': 'Symbols',
|
|
455
|
+
'@astryx.emojiPicker.groupFlags': 'Flags',
|
|
456
|
+
'@astryx.comments.retry': 'Retry',
|
|
457
|
+
'@astryx.commentComposer.placeholder': 'Write a comment…',
|
|
458
|
+
'@astryx.commentComposer.noAgents': 'No agents',
|
|
459
|
+
'@astryx.commentComposer.agents': 'Agents',
|
|
460
|
+
'@astryx.commentComposer.uploadFailed': "Images couldn't be added",
|
|
461
|
+
'@astryx.commentComposer.imagesOnly': 'Only image files can be added',
|
|
462
|
+
'@astryx.commentComposer.chooseImages': 'Choose images',
|
|
463
|
+
'@astryx.commentComposer.imageAlt': 'Image attachment',
|
|
464
|
+
'@astryx.commentComposer.removeQuote': 'Remove quoted text',
|
|
465
|
+
'@astryx.commentComposer.attachImages': 'Attach images',
|
|
466
|
+
'@astryx.commentComposer.addEmoji': 'Add emoji',
|
|
467
|
+
'@astryx.commentComposer.cancel': 'Cancel',
|
|
468
|
+
'@astryx.comments.actionsLabel': "Actions for {name}'s comment",
|
|
469
|
+
'@astryx.comments.addReaction': 'Add reaction',
|
|
470
|
+
'@astryx.comments.agentBadge': 'Agent',
|
|
471
|
+
'@astryx.comments.agentLogo': '{name} logo',
|
|
472
|
+
'@astryx.comments.chooseReaction': 'Choose a reaction',
|
|
473
|
+
'@astryx.comments.copyLink': 'Copy comment link',
|
|
474
|
+
'@astryx.comments.currentVersion': 'Current version',
|
|
475
|
+
'@astryx.comments.delete': 'Delete',
|
|
476
|
+
'@astryx.comments.deleteDescription': "Delete {name}'s comment? This action cannot be undone.",
|
|
477
|
+
'@astryx.comments.deleteFailed': "This comment couldn't be deleted.",
|
|
478
|
+
'@astryx.comments.deleteFailedRetry': "This comment couldn't be deleted. Try again.",
|
|
479
|
+
'@astryx.comments.deleteTitle': 'Delete comment?',
|
|
480
|
+
'@astryx.comments.edit': 'Edit',
|
|
481
|
+
'@astryx.comments.editFailed': "Your edit couldn't be saved.",
|
|
482
|
+
'@astryx.comments.editPlaceholder': 'Edit comment',
|
|
483
|
+
'@astryx.comments.edited': 'Edited',
|
|
484
|
+
'@astryx.comments.editingContext': 'Editing comment',
|
|
485
|
+
'@astryx.comments.hideReplies': 'Hide replies',
|
|
486
|
+
'@astryx.comments.historyEmptyDescription': 'This comment has no earlier versions.',
|
|
487
|
+
'@astryx.comments.historyEmptyTitle': 'No edit history',
|
|
488
|
+
'@astryx.comments.historyFailed': "Edit history couldn't load",
|
|
489
|
+
'@astryx.comments.historyLoadFailed': "The comment's edit history couldn't be loaded. Try again.",
|
|
490
|
+
'@astryx.comments.historyLoading': 'Loading edit history',
|
|
491
|
+
'@astryx.comments.historySubtitle': 'Comment by {name}',
|
|
492
|
+
'@astryx.comments.historyTitle': 'Edit history',
|
|
493
|
+
'@astryx.comments.linkCopied': 'Comment link copied',
|
|
494
|
+
'@astryx.comments.otherReactors': '{count, plural, one {# other} other {# others}}',
|
|
495
|
+
'@astryx.comments.outdated': 'Outdated',
|
|
496
|
+
'@astryx.comments.reactionCelebrate': 'Celebrate',
|
|
497
|
+
'@astryx.comments.reactionCount': '{reaction}: {count, number}',
|
|
498
|
+
'@astryx.comments.reactionFailed': "Your reaction couldn't be saved.",
|
|
499
|
+
'@astryx.comments.reactionLaugh': 'Haha',
|
|
500
|
+
'@astryx.comments.reactionLike': 'Like',
|
|
501
|
+
'@astryx.comments.reactionLove': 'Love',
|
|
502
|
+
'@astryx.comments.reactionSad': 'Sad',
|
|
503
|
+
'@astryx.comments.reactionWow': 'Wow',
|
|
504
|
+
'@astryx.comments.reopen': 'Reopen',
|
|
505
|
+
'@astryx.comments.reopenFailed': "This thread couldn't be reopened.",
|
|
506
|
+
'@astryx.comments.reply': 'Reply',
|
|
507
|
+
'@astryx.comments.replyFailed': "Your reply couldn't be posted.",
|
|
508
|
+
'@astryx.comments.replyPlaceholder': 'Reply to {name}…',
|
|
509
|
+
'@astryx.comments.replyingContext': 'Replying to {name}',
|
|
510
|
+
'@astryx.comments.resolve': 'Mark as resolved',
|
|
511
|
+
'@astryx.comments.resolveFailed': "This thread couldn't be resolved.",
|
|
512
|
+
'@astryx.comments.resolved': 'Resolved',
|
|
513
|
+
'@astryx.comments.resolvedBy': 'Resolved by {name}',
|
|
514
|
+
'@astryx.comments.retryFailed': "Retrying didn't work.",
|
|
515
|
+
'@astryx.comments.sendFailed': "Couldn't send this comment.",
|
|
516
|
+
'@astryx.comments.threadLabel': 'Thread by {name}',
|
|
517
|
+
'@astryx.comments.unread': 'New',
|
|
518
|
+
'@astryx.comments.unsavedDraft': 'Unsaved draft. Dismiss again to discard it.',
|
|
519
|
+
'@astryx.comments.versionAuthor': 'by {name}',
|
|
520
|
+
'@astryx.comments.viewHistory': 'View edit history',
|
|
521
|
+
'@astryx.comments.viewReplies': 'View {count, plural, one {# reply} other {# replies}}',
|
|
522
|
+
'@astryx.comments.commentsLabel': 'Threads in {label}',
|
|
523
|
+
'@astryx.comments.emptyDescription': 'Start the discussion with a comment.',
|
|
524
|
+
'@astryx.comments.emptyReadOnlyDescription': 'There is no discussion on this item.',
|
|
525
|
+
'@astryx.comments.emptyTitle': 'No comments yet',
|
|
526
|
+
'@astryx.comments.label': 'Comments',
|
|
527
|
+
'@astryx.comments.loadFailed': "Comments couldn't load",
|
|
528
|
+
'@astryx.comments.loadOlder': 'Load earlier comments',
|
|
529
|
+
'@astryx.comments.loading': 'Loading comments',
|
|
530
|
+
'@astryx.comments.olderFailed': "Earlier comments couldn't load",
|
|
531
|
+
'@astryx.comments.postFailed': "Your comment couldn't be posted."
|
|
440
532
|
};
|
|
441
533
|
export default runtimeCatalog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pseudo.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/pseudo.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"pseudo.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/pseudo.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAukBpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -436,6 +436,98 @@ const runtimeCatalog = {
|
|
|
436
436
|
'@astryx.transferList.announceSearchResults': '⟦{count, number} {count, plural, one {item} other {items}} ƒóúñð.⟧',
|
|
437
437
|
'@astryx.transferListSelector.apply': '⟦Àþþłý⟧',
|
|
438
438
|
'@astryx.transferListSelector.cancel': '⟦Çàñçéł⟧',
|
|
439
|
-
'@astryx.transferListSelector.triggerLabel': '⟦{count, number} šéłéçţéð⟧'
|
|
439
|
+
'@astryx.transferListSelector.triggerLabel': '⟦{count, number} šéłéçţéð⟧',
|
|
440
|
+
'@astryx.emojiPicker.label': '⟦Éɱóĵí⟧',
|
|
441
|
+
'@astryx.emojiPicker.searchLabel': '⟦Šéàřçĥ éɱóĵí⟧',
|
|
442
|
+
'@astryx.emojiPicker.frequentlyUsed': '⟦Ƒřéɋúéñţłý úšéð⟧',
|
|
443
|
+
'@astryx.emojiPicker.searchResults': '⟦Šéàřçĥ řéšúłţš⟧',
|
|
444
|
+
'@astryx.emojiPicker.noResults': '⟦Ñó éɱóĵí ɱàţçĥ “{query}”⟧',
|
|
445
|
+
'@astryx.emojiPicker.loading': '⟦Łóàðíñĝ éɱóĵí⟧',
|
|
446
|
+
'@astryx.emojiPicker.loadFailed': "⟦Ṁóřé éɱóĵí çóúłðñ'ţ ƀé łóàðéð.⟧",
|
|
447
|
+
'@astryx.emojiPicker.groupSmileysEmotion': '⟦Šɱíłéýš & éɱóţíóñ⟧',
|
|
448
|
+
'@astryx.emojiPicker.groupPeopleBody': '⟦Þéóþłé & ƀóðý⟧',
|
|
449
|
+
'@astryx.emojiPicker.groupAnimalsNature': '⟦Àñíɱàłš & ñàţúřé⟧',
|
|
450
|
+
'@astryx.emojiPicker.groupFoodDrink': '⟦Ƒóóð & ðříñķ⟧',
|
|
451
|
+
'@astryx.emojiPicker.groupTravelPlaces': '⟦Ţřàṽéł & þłàçéš⟧',
|
|
452
|
+
'@astryx.emojiPicker.groupActivities': '⟦Àçţíṽíţíéš⟧',
|
|
453
|
+
'@astryx.emojiPicker.groupObjects': '⟦Óƀĵéçţš⟧',
|
|
454
|
+
'@astryx.emojiPicker.groupSymbols': '⟦Šýɱƀółš⟧',
|
|
455
|
+
'@astryx.emojiPicker.groupFlags': '⟦Ƒłàĝš⟧',
|
|
456
|
+
'@astryx.comments.retry': '⟦Řéţřý⟧',
|
|
457
|
+
'@astryx.commentComposer.placeholder': '⟦Ŵříţé à çóɱɱéñţ…⟧',
|
|
458
|
+
'@astryx.commentComposer.noAgents': '⟦Ñó àĝéñţš⟧',
|
|
459
|
+
'@astryx.commentComposer.agents': '⟦Àĝéñţš⟧',
|
|
460
|
+
'@astryx.commentComposer.uploadFailed': "⟦Íɱàĝéš çóúłðñ'ţ ƀé àððéð⟧",
|
|
461
|
+
'@astryx.commentComposer.imagesOnly': '⟦Óñłý íɱàĝé ƒíłéš çàñ ƀé àððéð⟧',
|
|
462
|
+
'@astryx.commentComposer.chooseImages': '⟦Çĥóóšé íɱàĝéš⟧',
|
|
463
|
+
'@astryx.commentComposer.imageAlt': '⟦Íɱàĝé àţţàçĥɱéñţ⟧',
|
|
464
|
+
'@astryx.commentComposer.removeQuote': '⟦Řéɱóṽé ɋúóţéð ţéẋţ⟧',
|
|
465
|
+
'@astryx.commentComposer.attachImages': '⟦Àţţàçĥ íɱàĝéš⟧',
|
|
466
|
+
'@astryx.commentComposer.addEmoji': '⟦Àðð éɱóĵí⟧',
|
|
467
|
+
'@astryx.commentComposer.cancel': '⟦Çàñçéł⟧',
|
|
468
|
+
'@astryx.comments.actionsLabel': "⟦Àçţíóñš ƒóř {name}'š çóɱɱéñţ⟧",
|
|
469
|
+
'@astryx.comments.addReaction': '⟦Àðð řéàçţíóñ⟧',
|
|
470
|
+
'@astryx.comments.agentBadge': '⟦Àĝéñţ⟧',
|
|
471
|
+
'@astryx.comments.agentLogo': '⟦{name} łóĝó⟧',
|
|
472
|
+
'@astryx.comments.chooseReaction': '⟦Çĥóóšé à řéàçţíóñ⟧',
|
|
473
|
+
'@astryx.comments.copyLink': '⟦Çóþý çóɱɱéñţ łíñķ⟧',
|
|
474
|
+
'@astryx.comments.currentVersion': '⟦Çúřřéñţ ṽéřšíóñ⟧',
|
|
475
|
+
'@astryx.comments.delete': '⟦Ðéłéţé⟧',
|
|
476
|
+
'@astryx.comments.deleteDescription': "⟦Ðéłéţé {name}'š çóɱɱéñţ? Ţĥíš àçţíóñ çàññóţ ƀé úñðóñé.⟧",
|
|
477
|
+
'@astryx.comments.deleteFailed': "⟦Ţĥíš çóɱɱéñţ çóúłðñ'ţ ƀé ðéłéţéð.⟧",
|
|
478
|
+
'@astryx.comments.deleteFailedRetry': "⟦Ţĥíš çóɱɱéñţ çóúłðñ'ţ ƀé ðéłéţéð. Ţřý àĝàíñ.⟧",
|
|
479
|
+
'@astryx.comments.deleteTitle': '⟦Ðéłéţé çóɱɱéñţ?⟧',
|
|
480
|
+
'@astryx.comments.edit': '⟦Éðíţ⟧',
|
|
481
|
+
'@astryx.comments.editFailed': "⟦Ýóúř éðíţ çóúłðñ'ţ ƀé šàṽéð.⟧",
|
|
482
|
+
'@astryx.comments.editPlaceholder': '⟦Éðíţ çóɱɱéñţ⟧',
|
|
483
|
+
'@astryx.comments.edited': '⟦Éðíţéð⟧',
|
|
484
|
+
'@astryx.comments.editingContext': '⟦Éðíţíñĝ çóɱɱéñţ⟧',
|
|
485
|
+
'@astryx.comments.hideReplies': '⟦Ĥíðé řéþłíéš⟧',
|
|
486
|
+
'@astryx.comments.historyEmptyDescription': '⟦Ţĥíš çóɱɱéñţ ĥàš ñó éàřłíéř ṽéřšíóñš.⟧',
|
|
487
|
+
'@astryx.comments.historyEmptyTitle': '⟦Ñó éðíţ ĥíšţóřý⟧',
|
|
488
|
+
'@astryx.comments.historyFailed': "⟦Éðíţ ĥíšţóřý çóúłðñ'ţ łóàð⟧",
|
|
489
|
+
'@astryx.comments.historyLoadFailed': "⟦Ţĥé çóɱɱéñţ'š éðíţ ĥíšţóřý çóúłðñ'ţ ƀé łóàðéð. Ţřý àĝàíñ.⟧",
|
|
490
|
+
'@astryx.comments.historyLoading': '⟦Łóàðíñĝ éðíţ ĥíšţóřý⟧',
|
|
491
|
+
'@astryx.comments.historySubtitle': '⟦Çóɱɱéñţ ƀý {name}⟧',
|
|
492
|
+
'@astryx.comments.historyTitle': '⟦Éðíţ ĥíšţóřý⟧',
|
|
493
|
+
'@astryx.comments.linkCopied': '⟦Çóɱɱéñţ łíñķ çóþíéð⟧',
|
|
494
|
+
'@astryx.comments.otherReactors': '⟦{count, plural, one {# other} other {# others}}⟧',
|
|
495
|
+
'@astryx.comments.outdated': '⟦Óúţðàţéð⟧',
|
|
496
|
+
'@astryx.comments.reactionCelebrate': '⟦Çéłéƀřàţé⟧',
|
|
497
|
+
'@astryx.comments.reactionCount': '⟦{reaction}: {count, number}⟧',
|
|
498
|
+
'@astryx.comments.reactionFailed': "⟦Ýóúř řéàçţíóñ çóúłðñ'ţ ƀé šàṽéð.⟧",
|
|
499
|
+
'@astryx.comments.reactionLaugh': '⟦Ĥàĥà⟧',
|
|
500
|
+
'@astryx.comments.reactionLike': '⟦Łíķé⟧',
|
|
501
|
+
'@astryx.comments.reactionLove': '⟦Łóṽé⟧',
|
|
502
|
+
'@astryx.comments.reactionSad': '⟦Šàð⟧',
|
|
503
|
+
'@astryx.comments.reactionWow': '⟦Ŵóŵ⟧',
|
|
504
|
+
'@astryx.comments.reopen': '⟦Řéóþéñ⟧',
|
|
505
|
+
'@astryx.comments.reopenFailed': "⟦Ţĥíš ţĥřéàð çóúłðñ'ţ ƀé řéóþéñéð.⟧",
|
|
506
|
+
'@astryx.comments.reply': '⟦Řéþłý⟧',
|
|
507
|
+
'@astryx.comments.replyFailed': "⟦Ýóúř řéþłý çóúłðñ'ţ ƀé þóšţéð.⟧",
|
|
508
|
+
'@astryx.comments.replyPlaceholder': '⟦Řéþłý ţó {name}…⟧',
|
|
509
|
+
'@astryx.comments.replyingContext': '⟦Řéþłýíñĝ ţó {name}⟧',
|
|
510
|
+
'@astryx.comments.resolve': '⟦Ṁàřķ àš řéšółṽéð⟧',
|
|
511
|
+
'@astryx.comments.resolveFailed': "⟦Ţĥíš ţĥřéàð çóúłðñ'ţ ƀé řéšółṽéð.⟧",
|
|
512
|
+
'@astryx.comments.resolved': '⟦Řéšółṽéð⟧',
|
|
513
|
+
'@astryx.comments.resolvedBy': '⟦Řéšółṽéð ƀý {name}⟧',
|
|
514
|
+
'@astryx.comments.retryFailed': "⟦Řéţřýíñĝ ðíðñ'ţ ŵóřķ.⟧",
|
|
515
|
+
'@astryx.comments.sendFailed': "⟦Çóúłðñ'ţ šéñð ţĥíš çóɱɱéñţ.⟧",
|
|
516
|
+
'@astryx.comments.threadLabel': '⟦Ţĥřéàð ƀý {name}⟧',
|
|
517
|
+
'@astryx.comments.unread': '⟦Ñéŵ⟧',
|
|
518
|
+
'@astryx.comments.unsavedDraft': '⟦Úñšàṽéð ðřàƒţ. Ðíšɱíšš àĝàíñ ţó ðíšçàřð íţ.⟧',
|
|
519
|
+
'@astryx.comments.versionAuthor': '⟦ƀý {name}⟧',
|
|
520
|
+
'@astryx.comments.viewHistory': '⟦Ṽíéŵ éðíţ ĥíšţóřý⟧',
|
|
521
|
+
'@astryx.comments.viewReplies': '⟦Ṽíéŵ {count, plural, one {# reply} other {# replies}}⟧',
|
|
522
|
+
'@astryx.comments.commentsLabel': '⟦Ţĥřéàðš íñ {label}⟧',
|
|
523
|
+
'@astryx.comments.emptyDescription': '⟦Šţàřţ ţĥé ðíšçúššíóñ ŵíţĥ à çóɱɱéñţ.⟧',
|
|
524
|
+
'@astryx.comments.emptyReadOnlyDescription': '⟦Ţĥéřé íš ñó ðíšçúššíóñ óñ ţĥíš íţéɱ.⟧',
|
|
525
|
+
'@astryx.comments.emptyTitle': '⟦Ñó çóɱɱéñţš ýéţ⟧',
|
|
526
|
+
'@astryx.comments.label': '⟦Çóɱɱéñţš⟧',
|
|
527
|
+
'@astryx.comments.loadFailed': "⟦Çóɱɱéñţš çóúłðñ'ţ łóàð⟧",
|
|
528
|
+
'@astryx.comments.loadOlder': '⟦Łóàð éàřłíéř çóɱɱéñţš⟧',
|
|
529
|
+
'@astryx.comments.loading': '⟦Łóàðíñĝ çóɱɱéñţš⟧',
|
|
530
|
+
'@astryx.comments.olderFailed': "⟦Éàřłíéř çóɱɱéñţš çóúłðñ'ţ łóàð⟧",
|
|
531
|
+
'@astryx.comments.postFailed': "⟦Ýóúř çóɱɱéñţ çóúłðñ'ţ ƀé þóšţéð.⟧"
|
|
440
532
|
};
|
|
441
533
|
export default runtimeCatalog;
|
|
@@ -44,6 +44,10 @@ export declare const FOCUS_OUTLINE: string;
|
|
|
44
44
|
* independently overridable — and every part stays a var, so a theme's
|
|
45
45
|
* `--focus-outline-*` overrides still flow through.
|
|
46
46
|
*
|
|
47
|
+
* NOT usable inside another file's `stylex.create`, for the same reason as
|
|
48
|
+
* {@link FOCUS_OUTLINE}: StyleX compiles each member there to a CSS variable
|
|
49
|
+
* nothing defines. Compose the `focusVars` tokens instead.
|
|
50
|
+
*
|
|
47
51
|
* Keys are camelCase to match `HTMLElement.style`, so this spreads straight
|
|
48
52
|
* onto an element:
|
|
49
53
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusOutline.stylex.d.ts","sourceRoot":"","sources":["../../src/utils/focusOutline.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAyE,CAAC;AAgBpG
|
|
1
|
+
{"version":3,"file":"focusOutline.stylex.d.ts","sourceRoot":"","sources":["../../src/utils/focusOutline.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAyE,CAAC;AAgBpG;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAEX,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB;;;;;CAK3B,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiG7B,CAAC;AAIH,KAAK,cAAc,GAAG,OAAO,CAAC;AAiB9B,eAAO,MAAM,iBAAiB;uCAdT,cAAc,EAAE;;;;;;;sCAAhB,cAAc,EAAE;;;;;;;gDAAhB,cAAc,EAAE;;;;;;;qCAAhB,cAAc,EAAE;;;;;;;kDAAhB,cAAc,EAAE;;;;;;;iDAAhB,cAAc,EAAE;;;;;;;CA2B3B,CAAC"}
|
|
@@ -69,6 +69,10 @@ const focusOutlineLonghands = {
|
|
|
69
69
|
* independently overridable — and every part stays a var, so a theme's
|
|
70
70
|
* `--focus-outline-*` overrides still flow through.
|
|
71
71
|
*
|
|
72
|
+
* NOT usable inside another file's `stylex.create`, for the same reason as
|
|
73
|
+
* {@link FOCUS_OUTLINE}: StyleX compiles each member there to a CSS variable
|
|
74
|
+
* nothing defines. Compose the `focusVars` tokens instead.
|
|
75
|
+
*
|
|
72
76
|
* Keys are camelCase to match `HTMLElement.style`, so this spreads straight
|
|
73
77
|
* onto an element:
|
|
74
78
|
*
|