@astryxdesign/core 0.7.1-canary.4a14542 → 0.7.1-canary.4eaefd4
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/Divider/Divider.d.ts +1 -0
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +5 -4
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +7 -5
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +12 -5
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +6 -1
- package/dist/astryx.css +2 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +19 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +19 -0
- package/dist/reset.a11y.chromium.spec.js +6 -1
- package/locales/en.json +76 -0
- package/locales/pseudo.json +57 -0
- package/package.json +3 -3
- package/src/AlertDialog/AlertDialog.spec.md +1 -1
- package/src/Chat/ChatComposerInput.test.tsx +4 -0
- package/src/Chat/ChatSystemMessage.spec.md +36 -37
- package/src/Chat/ChatSystemMessage.test.tsx +4 -4
- package/src/Divider/Divider.doc.mjs +5 -3
- package/src/Divider/Divider.spec.md +140 -54
- package/src/Divider/Divider.test.tsx +15 -0
- package/src/Divider/Divider.tsx +6 -4
- package/src/DropdownMenu/DropdownMenu.spec.md +34 -17
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +38 -2
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +32 -18
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +146 -1
- package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +136 -0
- package/src/DropdownMenu/__tests__/MenuButton.a11y.known-failures.ts +12 -0
- package/src/DropdownMenu/__tests__/MenuButton.a11y.renders.tsx +67 -0
- package/src/DropdownMenu/__tests__/MenuButton.a11y.states.ts +141 -0
- package/src/DropdownMenu/__tests__/MenuButton.a11y.test.tsx +138 -0
- package/src/Markdown/Markdown.doc.mjs +1 -1
- package/src/Markdown/Markdown.spec.md +15 -7
- package/src/Markdown/Markdown.tsx +4 -0
- package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +5 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +8 -0
- package/src/i18n/InternationalizationProvider.spec.md +252 -0
- package/src/i18n/__tests__/InternationalizationProvider.test.tsx +128 -0
- package/src/i18n/generated-locales/en.generated.ts +21 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +21 -0
- package/src/i18n/useTranslator.test.tsx +37 -0
- package/src/reset.a11y.chromium.spec.ts +9 -1
- package/src/reset.css +4 -1
|
@@ -27,6 +27,7 @@ export interface DividerProps extends BaseProps<HTMLDivElement> {
|
|
|
27
27
|
orientation?: 'horizontal' | 'vertical';
|
|
28
28
|
/**
|
|
29
29
|
* Optional label to display centered on the divider.
|
|
30
|
+
* Numeric zero is preserved; null, booleans, and empty strings render no label.
|
|
30
31
|
* Rendered with small, secondary text styling.
|
|
31
32
|
*/
|
|
32
33
|
label?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../src/Divider/Divider.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAW5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC7D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC
|
|
1
|
+
{"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../src/Divider/Divider.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAW5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC7D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAiED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,EACtB,WAA0B,EAC1B,KAAK,EACL,OAAkB,EAClB,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,GAAG,KAAK,EACT,EAAE,YAAY,+BA2Dd;yBAvEe,OAAO"}
|
package/dist/Divider/Divider.js
CHANGED
|
@@ -18,7 +18,7 @@ import { useId } from 'react';
|
|
|
18
18
|
import * as stylex from '@stylexjs/stylex';
|
|
19
19
|
import "../theme/tokens.stylex.js";
|
|
20
20
|
import { colorVars, spacingVars, typeScaleVars, borderVars } from "../theme/tokens.stylex.js";
|
|
21
|
-
import { mergeProps } from "../utils/index.js";
|
|
21
|
+
import { isRenderable, mergeProps } from "../utils/index.js";
|
|
22
22
|
import { themeProps } from "../utils/themeProps.js";
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -102,13 +102,14 @@ export function Divider({
|
|
|
102
102
|
...props
|
|
103
103
|
}) {
|
|
104
104
|
const isHorizontal = orientation === 'horizontal';
|
|
105
|
+
const hasLabel = isRenderable(label);
|
|
105
106
|
const labelId = useId();
|
|
106
107
|
|
|
107
108
|
// A separator does not derive its accessible name from its content, so the
|
|
108
109
|
// rendered label must be referenced explicitly via aria-labelledby to be
|
|
109
110
|
// exposed as the separator's name (WCAG 1.3.1). An explicit aria-label or
|
|
110
111
|
// aria-labelledby from the consumer takes precedence.
|
|
111
|
-
const resolvedLabelledBy = ariaLabelledBy ?? (
|
|
112
|
+
const resolvedLabelledBy = ariaLabelledBy ?? (hasLabel && ariaLabel == null ? labelId : undefined);
|
|
112
113
|
return /*#__PURE__*/_jsxs("div", {
|
|
113
114
|
ref: ref,
|
|
114
115
|
...props,
|
|
@@ -122,7 +123,7 @@ export function Divider({
|
|
|
122
123
|
}), stylex.props(isHorizontal ? baseStyles.horizontal : baseStyles.vertical, isFullBleed && (isHorizontal ? fullBleedStyles.horizontal : fullBleedStyles.vertical), xstyle), className, style),
|
|
123
124
|
children: [/*#__PURE__*/_jsx("div", {
|
|
124
125
|
...stylex.props(isHorizontal ? lineStyles.horizontalLine : lineStyles.verticalLine, lineStyles[variant])
|
|
125
|
-
}),
|
|
126
|
+
}), hasLabel && /*#__PURE__*/_jsx("div", {
|
|
126
127
|
id: labelId,
|
|
127
128
|
...{
|
|
128
129
|
0: {
|
|
@@ -133,7 +134,7 @@ export function Divider({
|
|
|
133
134
|
}
|
|
134
135
|
}[!!!isHorizontal << 0],
|
|
135
136
|
children: label
|
|
136
|
-
}),
|
|
137
|
+
}), hasLabel && /*#__PURE__*/_jsx("div", {
|
|
137
138
|
...stylex.props(isHorizontal ? lineStyles.horizontalLine : lineStyles.verticalLine, lineStyles[variant])
|
|
138
139
|
})]
|
|
139
140
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file DropdownMenuCheckboxItem.tsx
|
|
3
|
-
* @input React, stylex, Item +
|
|
3
|
+
* @input React, stylex, Item + Indicator registry + DropdownMenu context + tokens from core
|
|
4
4
|
* @output DropdownMenuCheckboxItem — a standalone checkable menu item.
|
|
5
5
|
* @position Sub-component; used inside DropdownMenu.
|
|
6
6
|
*
|
|
@@ -47,9 +47,8 @@ export interface DropdownMenuCheckboxItemProps extends Omit<BaseProps, 'onChange
|
|
|
47
47
|
*/
|
|
48
48
|
onChange?: (checked: boolean) => void;
|
|
49
49
|
/**
|
|
50
|
-
* Whether the item is disabled. Disabled items
|
|
51
|
-
*
|
|
52
|
-
* technology, but activation is blocked.
|
|
50
|
+
* Whether the item is disabled. Disabled items expose `aria-disabled`, block
|
|
51
|
+
* activation, and are currently skipped by DropdownMenu arrow-key navigation.
|
|
53
52
|
* @default false
|
|
54
53
|
*/
|
|
55
54
|
isDisabled?: boolean;
|
|
@@ -73,6 +72,9 @@ export interface DropdownMenuCheckboxItemProps extends Omit<BaseProps, 'onChange
|
|
|
73
72
|
*
|
|
74
73
|
* Must be used inside a DropdownMenu. Toggles an independent boolean; for a
|
|
75
74
|
* one-of-N choice use DropdownMenuRadioGroup + DropdownMenuRadioItem instead.
|
|
75
|
+
* Consumer click and pointer-move handlers compose after the row's own
|
|
76
|
+
* activation and hover-focus behavior; disabled activation stops before the
|
|
77
|
+
* consumer click handler.
|
|
76
78
|
*
|
|
77
79
|
* @example
|
|
78
80
|
* ```
|
|
@@ -86,7 +88,7 @@ export interface DropdownMenuCheckboxItemProps extends Omit<BaseProps, 'onChange
|
|
|
86
88
|
* </DropdownMenu>
|
|
87
89
|
* ```
|
|
88
90
|
*/
|
|
89
|
-
export declare function DropdownMenuCheckboxItem({ label, description, icon, value, onChange, isDisabled, hasCloseOnSelect, endContent, xstyle, className, style, ...rest }: DropdownMenuCheckboxItemProps): import("react").JSX.Element;
|
|
91
|
+
export declare function DropdownMenuCheckboxItem({ label, description, icon, value, onChange, isDisabled, hasCloseOnSelect, endContent, xstyle, className, style, onClick, onPointerMove, ...rest }: DropdownMenuCheckboxItemProps): import("react").JSX.Element;
|
|
90
92
|
export declare namespace DropdownMenuCheckboxItem {
|
|
91
93
|
var displayName: string;
|
|
92
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuCheckboxItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuCheckboxItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"DropdownMenuCheckboxItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuCheckboxItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAOtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA4C5C,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CACzD,SAAS,EACT,UAAU,GAAG,MAAM,GAAG,cAAc,GAAG,UAAU,CAClD;IACC;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sFAAsF;IACtF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,WAAW,EACX,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,UAAkB,EAClB,gBAAwB,EACxB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,GAAG,IAAI,EACR,EAAE,6BAA6B,+BA+D/B;yBA9Ee,wBAAwB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file DropdownMenuCheckboxItem.tsx
|
|
7
|
-
* @input React, stylex, Item +
|
|
7
|
+
* @input React, stylex, Item + Indicator registry + DropdownMenu context + tokens from core
|
|
8
8
|
* @output DropdownMenuCheckboxItem — a standalone checkable menu item.
|
|
9
9
|
* @position Sub-component; used inside DropdownMenu.
|
|
10
10
|
*
|
|
@@ -34,7 +34,7 @@ import { useDropdownMenuContext } from "./DropdownMenuContext.js";
|
|
|
34
34
|
import { focusMenuItemOnHover } from "./menuItemHover.js";
|
|
35
35
|
import "../theme/tokens.stylex.js";
|
|
36
36
|
import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
37
|
-
import { mergeProps, themeProps } from "../utils/index.js";
|
|
37
|
+
import { composeEventHandlers, mergeProps, themeProps } from "../utils/index.js";
|
|
38
38
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
39
39
|
const styles = {
|
|
40
40
|
root: {
|
|
@@ -67,6 +67,9 @@ const styles = {
|
|
|
67
67
|
*
|
|
68
68
|
* Must be used inside a DropdownMenu. Toggles an independent boolean; for a
|
|
69
69
|
* one-of-N choice use DropdownMenuRadioGroup + DropdownMenuRadioItem instead.
|
|
70
|
+
* Consumer click and pointer-move handlers compose after the row's own
|
|
71
|
+
* activation and hover-focus behavior; disabled activation stops before the
|
|
72
|
+
* consumer click handler.
|
|
70
73
|
*
|
|
71
74
|
* @example
|
|
72
75
|
* ```
|
|
@@ -92,28 +95,32 @@ export function DropdownMenuCheckboxItem({
|
|
|
92
95
|
xstyle,
|
|
93
96
|
className,
|
|
94
97
|
style,
|
|
98
|
+
onClick,
|
|
99
|
+
onPointerMove,
|
|
95
100
|
...rest
|
|
96
101
|
}) {
|
|
97
102
|
const ctx = useDropdownMenuContext();
|
|
98
103
|
const menuSize = ctx?.menuSize ?? 'md';
|
|
99
104
|
const controlSize = menuSize === 'sm' ? 'sm' : 'md';
|
|
100
105
|
const CheckboxControl = useIndicator('checkbox');
|
|
101
|
-
const handleClick = useCallback(
|
|
106
|
+
const handleClick = useCallback(event => {
|
|
102
107
|
if (isDisabled) {
|
|
108
|
+
event.preventDefault();
|
|
103
109
|
return;
|
|
104
110
|
}
|
|
105
111
|
onChange?.(!value);
|
|
106
112
|
if (hasCloseOnSelect) {
|
|
107
113
|
ctx?.closeMenu();
|
|
108
114
|
}
|
|
109
|
-
|
|
115
|
+
onClick?.(event);
|
|
116
|
+
}, [isDisabled, onChange, value, hasCloseOnSelect, ctx, onClick]);
|
|
110
117
|
const handlePointerMove = useCallback(e => focusMenuItemOnHover(e, isDisabled), [isDisabled]);
|
|
111
118
|
return /*#__PURE__*/_jsx(Item, {
|
|
112
119
|
...rest,
|
|
113
120
|
role: "menuitemcheckbox",
|
|
114
121
|
"aria-checked": value,
|
|
115
122
|
tabIndex: isDisabled ? undefined : -1,
|
|
116
|
-
onPointerMove: handlePointerMove,
|
|
123
|
+
onPointerMove: composeEventHandlers(handlePointerMove, onPointerMove),
|
|
117
124
|
marker:
|
|
118
125
|
/*#__PURE__*/
|
|
119
126
|
// No wrapper, and no menu-specific theme target: the shared
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/Markdown/Markdown.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/Markdown/Markdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1043,7 +1043,12 @@ listDepth = 0) {
|
|
|
1043
1043
|
code: node.value,
|
|
1044
1044
|
language: language,
|
|
1045
1045
|
isDiff: isDiff,
|
|
1046
|
-
isCollapsible: true
|
|
1046
|
+
isCollapsible: true
|
|
1047
|
+
// Long lines wrap rather than scroll sideways, as they do in
|
|
1048
|
+
// RichText, so a reader sees whole lines and the read/edit switch
|
|
1049
|
+
// moves no block (spec:AST-061 FR5, DEC-9).
|
|
1050
|
+
,
|
|
1051
|
+
isWrapped: true,
|
|
1047
1052
|
xstyle: [contentWidthValue != null ? dynamicStyles.blockWidth(contentWidthValue) : undefined, blockAlignStyle]
|
|
1048
1053
|
})
|
|
1049
1054
|
}, index);
|
package/dist/astryx.css
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* Astryx Pre-compiled StyleX CSS — all components */
|
|
2
2
|
/* Auto-generated. Do not edit manually. */
|
|
3
3
|
|
|
4
|
+
@layer reset, astryx-base, astryx-theme;
|
|
5
|
+
|
|
4
6
|
@layer astryx-base {
|
|
5
7
|
@property --x---_avatar-group-overlap { syntax: "*"; inherits: false;}
|
|
6
8
|
@property --x---_codeblock-gutter-width { syntax: "*"; inherits: false;}
|
|
@@ -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,CA0dpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -139,6 +139,25 @@ const runtimeCatalog = {
|
|
|
139
139
|
'@astryx.listInput.announceReturnedToPosition': '{itemName} returned to position {position, number}.',
|
|
140
140
|
'@astryx.listInput.announceDropped': '{itemName} dropped at position {position, number} of {total, number}.',
|
|
141
141
|
'@astryx.listInput.announceAlreadyAtBoundary': 'This {itemName} is already {boundary, select, first {first} last {last} other {}}.',
|
|
142
|
+
'@astryx.diffViewer.label': 'Diff',
|
|
143
|
+
'@astryx.diffViewer.renamedPath': '{oldPath} → {newPath}',
|
|
144
|
+
'@astryx.diffViewer.statusAdded': 'Added',
|
|
145
|
+
'@astryx.diffViewer.statusDeleted': 'Deleted',
|
|
146
|
+
'@astryx.diffViewer.statusRenamed': 'Renamed',
|
|
147
|
+
'@astryx.diffViewer.addedCount': '+{count, number}',
|
|
148
|
+
'@astryx.diffViewer.removedCount': '−{count, number}',
|
|
149
|
+
'@astryx.diffViewer.stats': '{added, plural, one {# line added} other {# lines added}}, {removed, plural, one {# line removed} other {# lines removed}}',
|
|
150
|
+
'@astryx.diffViewer.added': 'Added',
|
|
151
|
+
'@astryx.diffViewer.removed': 'Removed',
|
|
152
|
+
'@astryx.diffViewer.lineNumberButton': '{side, select, old {Original line {line, number}} other {Changed line {line, number}}}',
|
|
153
|
+
'@astryx.diffViewer.columnOldLine': 'Original line number',
|
|
154
|
+
'@astryx.diffViewer.columnNewLine': 'Changed line number',
|
|
155
|
+
'@astryx.diffViewer.columnChange': 'Change',
|
|
156
|
+
'@astryx.diffViewer.columnCode': 'Code',
|
|
157
|
+
'@astryx.diffViewer.columnOldCode': 'Original code',
|
|
158
|
+
'@astryx.diffViewer.columnNewCode': 'Changed code',
|
|
159
|
+
'@astryx.diffViewer.binary': 'Binary file not shown',
|
|
160
|
+
'@astryx.diffViewer.noChanges': 'No content changes',
|
|
142
161
|
'@astryx.markdownHeadingLinks.copied': 'Link copied',
|
|
143
162
|
'@astryx.markdownHeadingLinks.copy': 'Copy link to {heading}',
|
|
144
163
|
'@astryx.richTextEditor.tabEscapeHint': 'Press Escape then Tab to move focus out of the editor.',
|
|
@@ -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,CAmepD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -139,6 +139,25 @@ const runtimeCatalog = {
|
|
|
139
139
|
'@astryx.listInput.announceReturnedToPosition': '⟦{itemName} řéţúřñéð ţó þóšíţíóñ {position, number}.⟧',
|
|
140
140
|
'@astryx.listInput.announceDropped': '⟦{itemName} ðřóþþéð àţ þóšíţíóñ {position, number} óƒ {total, number}.⟧',
|
|
141
141
|
'@astryx.listInput.announceAlreadyAtBoundary': '⟦Ţĥíš {itemName} íš àłřéàðý {boundary, select, first {first} last {last} other {}}.⟧',
|
|
142
|
+
'@astryx.diffViewer.label': '⟦Ð탃⟧',
|
|
143
|
+
'@astryx.diffViewer.renamedPath': '⟦{oldPath} → {newPath}⟧',
|
|
144
|
+
'@astryx.diffViewer.statusAdded': '⟦Àððéð⟧',
|
|
145
|
+
'@astryx.diffViewer.statusDeleted': '⟦Ðéłéţéð⟧',
|
|
146
|
+
'@astryx.diffViewer.statusRenamed': '⟦Řéñàɱéð⟧',
|
|
147
|
+
'@astryx.diffViewer.addedCount': '⟦+{count, number}⟧',
|
|
148
|
+
'@astryx.diffViewer.removedCount': '⟦−{count, number}⟧',
|
|
149
|
+
'@astryx.diffViewer.stats': '⟦{added, plural, one {# line added} other {# lines added}}, {removed, plural, one {# line removed} other {# lines removed}}⟧',
|
|
150
|
+
'@astryx.diffViewer.added': '⟦Àððéð⟧',
|
|
151
|
+
'@astryx.diffViewer.removed': '⟦Řéɱóṽéð⟧',
|
|
152
|
+
'@astryx.diffViewer.lineNumberButton': '⟦{side, select, old {Original line {line, number}} other {Changed line {line, number}}}⟧',
|
|
153
|
+
'@astryx.diffViewer.columnOldLine': '⟦Óříĝíñàł łíñé ñúɱƀéř⟧',
|
|
154
|
+
'@astryx.diffViewer.columnNewLine': '⟦Çĥàñĝéð łíñé ñúɱƀéř⟧',
|
|
155
|
+
'@astryx.diffViewer.columnChange': '⟦Çĥàñĝé⟧',
|
|
156
|
+
'@astryx.diffViewer.columnCode': '⟦Çóðé⟧',
|
|
157
|
+
'@astryx.diffViewer.columnOldCode': '⟦Óříĝíñàł çóðé⟧',
|
|
158
|
+
'@astryx.diffViewer.columnNewCode': '⟦Çĥàñĝéð çóðé⟧',
|
|
159
|
+
'@astryx.diffViewer.binary': '⟦Ɓíñàřý ƒíłé ñóţ šĥóŵñ⟧',
|
|
160
|
+
'@astryx.diffViewer.noChanges': '⟦Ñó çóñţéñţ çĥàñĝéš⟧',
|
|
142
161
|
'@astryx.markdownHeadingLinks.copied': '⟦Łíñķ çóþíéð⟧',
|
|
143
162
|
'@astryx.markdownHeadingLinks.copy': '⟦Çóþý łíñķ ţó {heading}⟧',
|
|
144
163
|
'@astryx.richTextEditor.tabEscapeHint': '⟦Þřéšš Éšçàþé ţĥéñ Ţàƀ ţó ɱóṽé ƒóçúš óúţ óƒ ţĥé éðíţóř.⟧',
|
|
@@ -69,7 +69,12 @@ test('Chromium keeps every selector the reset writes', async ({
|
|
|
69
69
|
// A forgiving list drops an invalid entry instead of the whole rule, so a
|
|
70
70
|
// dropped pseudo-element shows up as a shorter serialized selector.
|
|
71
71
|
const parsed = await page.evaluate(() => {
|
|
72
|
-
|
|
72
|
+
// The sheet opens with the `@layer` order statement; the rules live in
|
|
73
|
+
// the `reset` layer block after it.
|
|
74
|
+
const layer = [...document.styleSheets[0].cssRules].find(rule => rule instanceof CSSLayerBlockRule && rule.name === 'reset');
|
|
75
|
+
if (layer == null) {
|
|
76
|
+
throw new Error('reset.css has no @layer reset block');
|
|
77
|
+
}
|
|
73
78
|
return [...layer.cssRules].map(rule => rule.selectorText);
|
|
74
79
|
});
|
|
75
80
|
expect(parsed.map(normalize)).toEqual(sourceSelectors(RESET_CSS).map(normalize));
|
package/locales/en.json
CHANGED
|
@@ -527,6 +527,82 @@
|
|
|
527
527
|
"defaultMessage": "This {itemName} is already {boundary, select, first {first} last {last} other {}}.",
|
|
528
528
|
"description": "Screen-reader-only live announcement when an arrow-key reorder attempt has no effect because the record is already at that end of the list. `{itemName}` is the consumer's singular noun for one record; `{boundary}` is always exactly \"first\" or \"last\"."
|
|
529
529
|
},
|
|
530
|
+
"@astryx.diffViewer.label": {
|
|
531
|
+
"defaultMessage": "Diff",
|
|
532
|
+
"description": "Accessible name of a lab DiffViewer's scrollable code area when the file has no path to name it."
|
|
533
|
+
},
|
|
534
|
+
"@astryx.diffViewer.renamedPath": {
|
|
535
|
+
"defaultMessage": "{oldPath} → {newPath}",
|
|
536
|
+
"description": "File path shown in a lab DiffViewer header when the file was renamed. `{oldPath}` and `{newPath}` are file paths and must stay untranslated; keep the arrow pointing from the old path to the new one."
|
|
537
|
+
},
|
|
538
|
+
"@astryx.diffViewer.statusAdded": {
|
|
539
|
+
"defaultMessage": "Added",
|
|
540
|
+
"description": "Badge in a lab DiffViewer file header marking a file that the change creates."
|
|
541
|
+
},
|
|
542
|
+
"@astryx.diffViewer.statusDeleted": {
|
|
543
|
+
"defaultMessage": "Deleted",
|
|
544
|
+
"description": "Badge in a lab DiffViewer file header marking a file that the change removes."
|
|
545
|
+
},
|
|
546
|
+
"@astryx.diffViewer.statusRenamed": {
|
|
547
|
+
"defaultMessage": "Renamed",
|
|
548
|
+
"description": "Badge in a lab DiffViewer file header marking a file that the change moves to a new path."
|
|
549
|
+
},
|
|
550
|
+
"@astryx.diffViewer.addedCount": {
|
|
551
|
+
"defaultMessage": "+{count, number}",
|
|
552
|
+
"description": "Compact count of added lines shown in a lab DiffViewer file header, e.g. \"+12\". Hidden from screen readers, which hear `@astryx.diffViewer.stats` instead."
|
|
553
|
+
},
|
|
554
|
+
"@astryx.diffViewer.removedCount": {
|
|
555
|
+
"defaultMessage": "−{count, number}",
|
|
556
|
+
"description": "Compact count of removed lines shown in a lab DiffViewer file header, e.g. \"−3\" (a minus sign). Hidden from screen readers, which hear `@astryx.diffViewer.stats` instead."
|
|
557
|
+
},
|
|
558
|
+
"@astryx.diffViewer.stats": {
|
|
559
|
+
"defaultMessage": "{added, plural, one {# line added} other {# lines added}}, {removed, plural, one {# line removed} other {# lines removed}}",
|
|
560
|
+
"description": "Screen-reader text for the line counts in a lab DiffViewer file header, e.g. \"12 lines added, 3 lines removed\"."
|
|
561
|
+
},
|
|
562
|
+
"@astryx.diffViewer.added": {
|
|
563
|
+
"defaultMessage": "Added",
|
|
564
|
+
"description": "Screen-reader text marking one line of a lab DiffViewer as added by the change; sighted readers see a + sign and a tinted row."
|
|
565
|
+
},
|
|
566
|
+
"@astryx.diffViewer.removed": {
|
|
567
|
+
"defaultMessage": "Removed",
|
|
568
|
+
"description": "Screen-reader text marking one line of a lab DiffViewer as removed by the change; sighted readers see a - sign and a tinted row."
|
|
569
|
+
},
|
|
570
|
+
"@astryx.diffViewer.lineNumberButton": {
|
|
571
|
+
"defaultMessage": "{side, select, old {Original line {line, number}} other {Changed line {line, number}}}",
|
|
572
|
+
"description": "Accessible label of a clickable line number in a lab DiffViewer (callers use it, for example, to start a comment on that line). `side` is `old` for the file before the change and `new` for the file after it; `line` is the line number in that version."
|
|
573
|
+
},
|
|
574
|
+
"@astryx.diffViewer.columnOldLine": {
|
|
575
|
+
"defaultMessage": "Original line number",
|
|
576
|
+
"description": "Screen-reader-only header of a lab DiffViewer column holding line numbers in the file before the change. Pairs with `@astryx.diffViewer.lineNumberButton` (\"Original line …\")."
|
|
577
|
+
},
|
|
578
|
+
"@astryx.diffViewer.columnNewLine": {
|
|
579
|
+
"defaultMessage": "Changed line number",
|
|
580
|
+
"description": "Screen-reader-only header of a lab DiffViewer column holding line numbers in the file after the change. Pairs with `@astryx.diffViewer.lineNumberButton` (\"Changed line …\")."
|
|
581
|
+
},
|
|
582
|
+
"@astryx.diffViewer.columnChange": {
|
|
583
|
+
"defaultMessage": "Change",
|
|
584
|
+
"description": "Screen-reader-only header of a lab DiffViewer column that marks each line as added or removed (noun: the kind of change)."
|
|
585
|
+
},
|
|
586
|
+
"@astryx.diffViewer.columnCode": {
|
|
587
|
+
"defaultMessage": "Code",
|
|
588
|
+
"description": "Screen-reader-only header of the source-code column in a lab DiffViewer's single-column (unified) view."
|
|
589
|
+
},
|
|
590
|
+
"@astryx.diffViewer.columnOldCode": {
|
|
591
|
+
"defaultMessage": "Original code",
|
|
592
|
+
"description": "Screen-reader-only header of the source-code column for the file before the change, in a lab DiffViewer's side-by-side (split) view."
|
|
593
|
+
},
|
|
594
|
+
"@astryx.diffViewer.columnNewCode": {
|
|
595
|
+
"defaultMessage": "Changed code",
|
|
596
|
+
"description": "Screen-reader-only header of the source-code column for the file after the change, in a lab DiffViewer's side-by-side (split) view."
|
|
597
|
+
},
|
|
598
|
+
"@astryx.diffViewer.binary": {
|
|
599
|
+
"defaultMessage": "Binary file not shown",
|
|
600
|
+
"description": "Message in place of line changes in a lab DiffViewer when the file is binary and has no text diff."
|
|
601
|
+
},
|
|
602
|
+
"@astryx.diffViewer.noChanges": {
|
|
603
|
+
"defaultMessage": "No content changes",
|
|
604
|
+
"description": "Message in a lab DiffViewer when a file changed only its path or mode, so there are no line changes to show."
|
|
605
|
+
},
|
|
530
606
|
"@astryx.markdownHeadingLinks.copied": {
|
|
531
607
|
"defaultMessage": "Link copied",
|
|
532
608
|
"description": "Accessible name on the Markdown heading copy button and text announced to a polite live region for ~1.5s after a successful copy. Sentence meaning \"Link copied\"; pairs with `markdownHeadingLinks.copy`."
|
package/locales/pseudo.json
CHANGED
|
@@ -395,6 +395,63 @@
|
|
|
395
395
|
"@astryx.listInput.announceAlreadyAtBoundary": {
|
|
396
396
|
"defaultMessage": "⟦Ţĥíš {itemName} íš àłřéàðý {boundary, select, first {first} last {last} other {}}.⟧"
|
|
397
397
|
},
|
|
398
|
+
"@astryx.diffViewer.label": {
|
|
399
|
+
"defaultMessage": "⟦Ð탃⟧"
|
|
400
|
+
},
|
|
401
|
+
"@astryx.diffViewer.renamedPath": {
|
|
402
|
+
"defaultMessage": "⟦{oldPath} → {newPath}⟧"
|
|
403
|
+
},
|
|
404
|
+
"@astryx.diffViewer.statusAdded": {
|
|
405
|
+
"defaultMessage": "⟦Àððéð⟧"
|
|
406
|
+
},
|
|
407
|
+
"@astryx.diffViewer.statusDeleted": {
|
|
408
|
+
"defaultMessage": "⟦Ðéłéţéð⟧"
|
|
409
|
+
},
|
|
410
|
+
"@astryx.diffViewer.statusRenamed": {
|
|
411
|
+
"defaultMessage": "⟦Řéñàɱéð⟧"
|
|
412
|
+
},
|
|
413
|
+
"@astryx.diffViewer.addedCount": {
|
|
414
|
+
"defaultMessage": "⟦+{count, number}⟧"
|
|
415
|
+
},
|
|
416
|
+
"@astryx.diffViewer.removedCount": {
|
|
417
|
+
"defaultMessage": "⟦−{count, number}⟧"
|
|
418
|
+
},
|
|
419
|
+
"@astryx.diffViewer.stats": {
|
|
420
|
+
"defaultMessage": "⟦{added, plural, one {# line added} other {# lines added}}, {removed, plural, one {# line removed} other {# lines removed}}⟧"
|
|
421
|
+
},
|
|
422
|
+
"@astryx.diffViewer.added": {
|
|
423
|
+
"defaultMessage": "⟦Àððéð⟧"
|
|
424
|
+
},
|
|
425
|
+
"@astryx.diffViewer.removed": {
|
|
426
|
+
"defaultMessage": "⟦Řéɱóṽéð⟧"
|
|
427
|
+
},
|
|
428
|
+
"@astryx.diffViewer.lineNumberButton": {
|
|
429
|
+
"defaultMessage": "⟦{side, select, old {Original line {line, number}} other {Changed line {line, number}}}⟧"
|
|
430
|
+
},
|
|
431
|
+
"@astryx.diffViewer.columnOldLine": {
|
|
432
|
+
"defaultMessage": "⟦Óříĝíñàł łíñé ñúɱƀéř⟧"
|
|
433
|
+
},
|
|
434
|
+
"@astryx.diffViewer.columnNewLine": {
|
|
435
|
+
"defaultMessage": "⟦Çĥàñĝéð łíñé ñúɱƀéř⟧"
|
|
436
|
+
},
|
|
437
|
+
"@astryx.diffViewer.columnChange": {
|
|
438
|
+
"defaultMessage": "⟦Çĥàñĝé⟧"
|
|
439
|
+
},
|
|
440
|
+
"@astryx.diffViewer.columnCode": {
|
|
441
|
+
"defaultMessage": "⟦Çóðé⟧"
|
|
442
|
+
},
|
|
443
|
+
"@astryx.diffViewer.columnOldCode": {
|
|
444
|
+
"defaultMessage": "⟦Óříĝíñàł çóðé⟧"
|
|
445
|
+
},
|
|
446
|
+
"@astryx.diffViewer.columnNewCode": {
|
|
447
|
+
"defaultMessage": "⟦Çĥàñĝéð çóðé⟧"
|
|
448
|
+
},
|
|
449
|
+
"@astryx.diffViewer.binary": {
|
|
450
|
+
"defaultMessage": "⟦Ɓíñàřý ƒíłé ñóţ šĥóŵñ⟧"
|
|
451
|
+
},
|
|
452
|
+
"@astryx.diffViewer.noChanges": {
|
|
453
|
+
"defaultMessage": "⟦Ñó çóñţéñţ çĥàñĝéš⟧"
|
|
454
|
+
},
|
|
398
455
|
"@astryx.markdownHeadingLinks.copied": {
|
|
399
456
|
"defaultMessage": "⟦Łíñķ çóþíéð⟧"
|
|
400
457
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/core",
|
|
3
|
-
"version": "0.7.1-canary.
|
|
3
|
+
"version": "0.7.1-canary.4eaefd4",
|
|
4
4
|
"displayName": "Astryx Core",
|
|
5
5
|
"description": "The component library. Accessible, themeable React components with built-in spacing, dark mode, and StyleX styling.",
|
|
6
6
|
"author": "Meta Open Source",
|
|
@@ -787,8 +787,8 @@
|
|
|
787
787
|
"react-dom": ">=19.0.0"
|
|
788
788
|
},
|
|
789
789
|
"devDependencies": {
|
|
790
|
-
"@astryxdesign/a11y-spec": "0.7.1-canary.
|
|
791
|
-
"@astryxdesign/cli": "0.7.1-canary.
|
|
790
|
+
"@astryxdesign/a11y-spec": "0.7.1-canary.4eaefd4",
|
|
791
|
+
"@astryxdesign/cli": "0.7.1-canary.4eaefd4",
|
|
792
792
|
"@babel/cli": "^7.29.7",
|
|
793
793
|
"@babel/core": "^7.29.7",
|
|
794
794
|
"@babel/preset-react": "^7.29.7",
|
|
@@ -186,7 +186,7 @@ The dialog surface (the Dialog element AlertDialog renders) carries `alert-dialo
|
|
|
186
186
|
|
|
187
187
|
| Contract | Verification | Representative states | Mutation or failure expectation | Audit section |
|
|
188
188
|
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------- |
|
|
189
|
-
| FR1–FR5 | `AlertDialog.test.tsx` ("calls onOpenChange(false) on Escape", "does not call onOpenChange when action is clicked", "does not call onAction on Escape", "does not disable the cancel button while the action is loading", "exposes a named group instead, with no aria-modal") and `useImperativeAlertDialog.test.tsx` ("opens on show()", "closes on hide()")
|
|
189
|
+
| FR1–FR5 | `AlertDialog.test.tsx` ("calls onOpenChange(false) on Escape", "does not call onOpenChange when action is clicked", "does not call onAction on Escape", "does not disable the cancel button while the action is loading", "exposes a named group instead, with no aria-modal") and `useImperativeAlertDialog.test.tsx` ("opens on show()", "closes on hide()") | open, loading, inline, imperative | Escape not cancelling, the action closing by itself, or the inline path claiming the role fails. | `audit:AlertDialog/behavior` |
|
|
190
190
|
| AR1 | `AlertDialog.test.tsx` ("renders with alertdialog role", "links title via aria-labelledby", "links description via aria-describedby", "marks cancel as the initial focus target", "keeps the initial focus target on the least destructive action", "calls onOpenChange(false) on Escape", "stacks long destructive action labels above cancel on a narrow fine-pointer screen", "reaches both buttons by Tab, cancel first", "is a modal alertdialog", "does not claim the alertdialog role") and `useImperativeAlertDialog.test.tsx`; the no-backdrop-dismiss outcome and focus delegation under the Alert Dialog accessibility contract (`internal/a11y-spec`, pending) | open modal; after Escape; after Cancel | The role, name link, description link, or Cancel initial focus is lost, or a click outside dismisses the dialog. | `audit:AlertDialog/accessibility` |
|
|
191
191
|
|
|
192
192
|
## Decision log
|
|
@@ -1556,6 +1556,10 @@ describe('ChatComposerInput', () => {
|
|
|
1556
1556
|
await waitFor(() => {
|
|
1557
1557
|
expect(editable).toHaveAttribute('aria-expanded', 'false');
|
|
1558
1558
|
});
|
|
1559
|
+
// The hidden menu's results commit outside act, so the popover's Escape
|
|
1560
|
+
// registration is released by a passive effect that can still be pending
|
|
1561
|
+
// when the attribute changes. Flush it before pressing Escape.
|
|
1562
|
+
await act(async () => {});
|
|
1559
1563
|
|
|
1560
1564
|
// Nothing cancels the key: the closed menu holds no Escape handling,
|
|
1561
1565
|
// so a surrounding dialog or drawer still receives it.
|