@astryxdesign/core 0.6.2-canary.7ccd6c8 → 0.6.2-canary.7cce14f
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/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +12 -2
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +6 -1
- package/dist/Kbd/Kbd.d.ts +5 -3
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +36 -42
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +6 -2
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +13 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +5 -5
- package/dist/SideNav/SideNav.d.ts +2 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +9 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +14 -8
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +11 -0
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +20 -7
- package/dist/astryx.css +8 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +8 -0
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +9 -0
- package/package.json +3 -3
- package/src/Button/__tests__/Button.a11y.chromium.spec.ts +17 -1
- package/src/Button/__tests__/Button.a11y.known-failures.ts +0 -29
- package/src/Button/__tests__/Button.a11y.renders.tsx +9 -2
- package/src/Button/__tests__/Button.a11y.states.ts +9 -0
- package/src/CheckboxInput/CheckboxInput.doc.mjs +11 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +34 -0
- package/src/CheckboxInput/CheckboxInput.tsx +21 -1
- package/src/ClickableCard/ClickableCard.test.tsx +102 -5
- package/src/Collapsible/Collapsible.doc.mjs +11 -0
- package/src/Collapsible/Collapsible.test.tsx +21 -0
- package/src/Collapsible/Collapsible.tsx +5 -0
- package/src/Kbd/Kbd.doc.mjs +3 -3
- package/src/Kbd/Kbd.test.tsx +57 -1
- package/src/Kbd/Kbd.tsx +57 -37
- package/src/Link/Link.doc.mjs +11 -0
- package/src/Link/Link.test.tsx +24 -0
- package/src/Link/Link.tsx +5 -0
- package/src/RadioList/RadioList.doc.mjs +11 -0
- package/src/RadioList/RadioList.test.tsx +32 -0
- package/src/RadioList/RadioListItem.tsx +25 -1
- package/src/SegmentedControl/SegmentedControl.doc.mjs +2 -2
- package/src/SegmentedControl/SegmentedControl.test.tsx +31 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +6 -9
- package/src/SideNav/SideNav.doc.mjs +1 -1
- package/src/SideNav/SideNav.test.tsx +10 -0
- package/src/SideNav/SideNav.tsx +14 -2
- package/src/Slider/Slider.doc.mjs +11 -0
- package/src/Slider/Slider.test.tsx +128 -0
- package/src/Slider/Slider.tsx +25 -7
- package/src/Switch/Switch.doc.mjs +11 -0
- package/src/Switch/Switch.test.tsx +16 -0
- package/src/Switch/Switch.tsx +28 -0
- package/src/TabList/Tab.tsx +35 -7
- package/src/TabList/TabList.doc.mjs +11 -0
- package/src/TabList/TabList.test.tsx +66 -0
- package/src/TabList/__tests__/Tabs.a11y.known-failures.ts +1 -34
- package/src/Tokenizer/Tokenizer.spec.md +142 -75
- package/src/__tests__/PressedState.a11y.chromium.spec.ts +813 -0
- package/src/__tests__/pressState.ts +93 -0
- package/src/utils/interactionOverlay.stylex.ts +20 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAqFhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,QAAQ,EACR,eAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,kBAAkB,EAAE,mBAAmB,EACvC,GAAG,IAAI,EACR,EAAE,kBAAkB,+BAyNpB;yBAnPe,aAAa"}
|
|
@@ -18,12 +18,13 @@
|
|
|
18
18
|
import { useId, useCallback, use, useOptimistic, useRef, useTransition } from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
20
|
import "../theme/tokens.stylex.js";
|
|
21
|
-
import { colorVars, spacingVars, typographyVars, typeScaleVars, fontWeightVars } from "../theme/tokens.stylex.js";
|
|
21
|
+
import { colorVars, spacingVars, radiusVars, typographyVars, typeScaleVars, fontWeightVars } from "../theme/tokens.stylex.js";
|
|
22
22
|
import { FieldLabel } from "../Field/FieldLabel.js";
|
|
23
23
|
import { FieldStatus } from "../FieldStatus/FieldStatus.js";
|
|
24
24
|
import { Spinner } from "../Spinner/index.js";
|
|
25
25
|
import { useTooltip } from "../Tooltip/index.js";
|
|
26
26
|
import { mergeProps, rtlStyles } from "../utils/index.js";
|
|
27
|
+
import "../Indicator/indicator.markers.stylex.js";
|
|
27
28
|
import { indicatorScope } from "../Indicator/indicator.markers.stylex.js";
|
|
28
29
|
import { useIndicatorFocusRing } from "../hooks/useIndicatorFocusRing.js";
|
|
29
30
|
import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
|
|
@@ -52,6 +53,15 @@ const styles = {
|
|
|
52
53
|
kHBbk8: "xc8icb0",
|
|
53
54
|
$$css: true
|
|
54
55
|
},
|
|
56
|
+
indicatorPressOverlay: {
|
|
57
|
+
k5JduY: "x1s928wv",
|
|
58
|
+
kwXMNM: "x1j6awrg",
|
|
59
|
+
kv0HGH: "xarstr8",
|
|
60
|
+
kUfP38: "xtb6wbx",
|
|
61
|
+
kloYau: "x2q1x1w",
|
|
62
|
+
ks3ayO: "xyhc2n1 xzywxsk",
|
|
63
|
+
$$css: true
|
|
64
|
+
},
|
|
55
65
|
input: {
|
|
56
66
|
kVAEAm: "x10l6tqk",
|
|
57
67
|
k87sOh: "xwa60dl",
|
|
@@ -236,7 +246,7 @@ export function CheckboxInput({
|
|
|
236
246
|
// marker rather than props, so the whole row drives it.
|
|
237
247
|
!isDisabled && indicatorScope),
|
|
238
248
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
239
|
-
...stylex.props(styles.checkboxWrapper, wrapperSizeStyles[size]),
|
|
249
|
+
...stylex.props(styles.checkboxWrapper, wrapperSizeStyles[size], !isDisabled && styles.indicatorPressOverlay),
|
|
240
250
|
...focusProps,
|
|
241
251
|
children: [/*#__PURE__*/_jsx("input", {
|
|
242
252
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAejD,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AAG1E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAejD,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AAG1E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA2J5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAE7C;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,UAAkB,EAClB,YAAY,EACZ,eAAe,EACf,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA8HlB;yBA5Ie,WAAW"}
|
|
@@ -36,6 +36,7 @@ import { Icon } from "../Icon/index.js";
|
|
|
36
36
|
import { mergeProps } from "../utils/index.js";
|
|
37
37
|
import { themeProps } from "../utils/themeProps.js";
|
|
38
38
|
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
39
|
+
import { interactionOverlayStyles } from "../utils/interactionOverlay.stylex.js";
|
|
39
40
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
40
41
|
const styles = {
|
|
41
42
|
root: {
|
|
@@ -282,7 +283,11 @@ export function Collapsible({
|
|
|
282
283
|
tabIndex: isDisabled ? -1 : undefined,
|
|
283
284
|
...mergeProps(themeProps('collapsible-trigger', {
|
|
284
285
|
density: density ?? undefined
|
|
285
|
-
}), focusOutlineProps.focusVisible(styles.trigger, density != null && triggerDensity[density],
|
|
286
|
+
}), focusOutlineProps.focusVisible(styles.trigger, density != null && triggerDensity[density],
|
|
287
|
+
// The system's pressed overlay on the disclosure row. The trigger
|
|
288
|
+
// has no hover surface of its own, so this is the one background
|
|
289
|
+
// it paints, and only while it is pressed.
|
|
290
|
+
!isDisabled && interactionOverlayStyles.pressedBackgroundColor, isDisabled && styles.triggerDisabled)),
|
|
286
291
|
children: [isChevronAtStart && chevron, /*#__PURE__*/_jsx("span", {
|
|
287
292
|
...{
|
|
288
293
|
className: "x1b2iylo xwgcxoh x1iyjqo2"
|
package/dist/Kbd/Kbd.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Kbd.tsx
|
|
3
|
-
* @input Uses React, StyleX, theme tokens
|
|
4
|
-
* @output Exports Kbd component and KbdProps
|
|
3
|
+
* @input Uses React, StyleX, theme tokens, shortcut key names and aliases
|
|
4
|
+
* @output Exports Kbd component and KbdProps with canonical shortcut labels
|
|
5
5
|
* @position Core implementation; renders styled keyboard shortcut indicators
|
|
6
6
|
*
|
|
7
7
|
* SYNC: When modified, update:
|
|
@@ -14,7 +14,9 @@ export interface KbdProps extends BaseProps<HTMLSpanElement> {
|
|
|
14
14
|
ref?: React.Ref<HTMLSpanElement>;
|
|
15
15
|
/**
|
|
16
16
|
* Keyboard shortcut string. Use "+" to separate keys.
|
|
17
|
-
* Special keys: mod (Cmd on Mac), ctrl, alt, shift, enter, backspace, escape
|
|
17
|
+
* Special keys: mod (Cmd on Mac), ctrl, alt, shift, enter, backspace, escape,
|
|
18
|
+
* tab, up, down, left, and right.
|
|
19
|
+
* Aliases: "esc" for "escape" and "return" for "enter".
|
|
18
20
|
* Use "plus" to render a literal "+" key (e.g. "shift+plus").
|
|
19
21
|
*
|
|
20
22
|
* @example
|
package/dist/Kbd/Kbd.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kbd.d.ts","sourceRoot":"","sources":["../../src/Kbd/Kbd.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAA6B,MAAM,OAAO,CAAC;AAIlD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Kbd.d.ts","sourceRoot":"","sources":["../../src/Kbd/Kbd.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAA6B,MAAM,OAAO,CAAC;AAIlD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA+G5C,MAAM,WAAW,QAAS,SAAQ,SAAS,CAAC,eAAe,CAAC;IAC1D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC;;;;;;;;;;;;;;OAcG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAC,EAAE,QAAQ,qBA6C3E;yBA7Ce,GAAG"}
|
package/dist/Kbd/Kbd.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Kbd.tsx
|
|
7
|
-
* @input Uses React, StyleX, theme tokens
|
|
8
|
-
* @output Exports Kbd component and KbdProps
|
|
7
|
+
* @input Uses React, StyleX, theme tokens, shortcut key names and aliases
|
|
8
|
+
* @output Exports Kbd component and KbdProps with canonical shortcut labels
|
|
9
9
|
* @position Core implementation; renders styled keyboard shortcut indicators
|
|
10
10
|
*
|
|
11
11
|
* SYNC: When modified, update:
|
|
@@ -35,26 +35,20 @@ const styles = {
|
|
|
35
35
|
* Note: `mod` is not in this map — it resolves dynamically via platform
|
|
36
36
|
* detection inside the component.
|
|
37
37
|
*/
|
|
38
|
-
const KEY_DISPLAY =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
up: '\u2191',
|
|
53
|
-
down: '\u2193',
|
|
54
|
-
left: '\u2190',
|
|
55
|
-
right: '\u2192',
|
|
56
|
-
plus: '+'
|
|
57
|
-
};
|
|
38
|
+
const KEY_DISPLAY = new Map([['ctrl', '\u2303'],
|
|
39
|
+
// ⌃
|
|
40
|
+
['alt', '\u2325'],
|
|
41
|
+
// ⌥
|
|
42
|
+
['shift', '\u21E7'],
|
|
43
|
+
// ⇧
|
|
44
|
+
['enter', '\u21B5'],
|
|
45
|
+
// ↵
|
|
46
|
+
['backspace', '\u232B'],
|
|
47
|
+
// ⌫
|
|
48
|
+
['escape', 'Esc'], ['tab', '\u21E5'],
|
|
49
|
+
// ⇥
|
|
50
|
+
['up', '\u2191'], ['down', '\u2193'], ['left', '\u2190'], ['right', '\u2192'], ['plus', '+']]);
|
|
51
|
+
const KBD_KEY_ALIASES = new Map([['esc', 'escape'], ['return', 'enter']]);
|
|
58
52
|
|
|
59
53
|
/**
|
|
60
54
|
* Resolves a key name to its display string. Handles the platform-aware
|
|
@@ -65,7 +59,7 @@ function getKeyDisplay(key, isMac) {
|
|
|
65
59
|
if (key === 'mod') {
|
|
66
60
|
return isMac ? '\u2318' : 'Ctrl';
|
|
67
61
|
}
|
|
68
|
-
return KEY_DISPLAY
|
|
62
|
+
return KEY_DISPLAY.get(key) ?? key.toUpperCase();
|
|
69
63
|
}
|
|
70
64
|
|
|
71
65
|
/**
|
|
@@ -73,25 +67,12 @@ function getKeyDisplay(key, isMac) {
|
|
|
73
67
|
* (⌘, ⇧, ↵, …) that assistive tech cannot announce meaningfully, so the
|
|
74
68
|
* accessible name for the shortcut is built from these words instead.
|
|
75
69
|
*/
|
|
76
|
-
const KEY_LABEL =
|
|
77
|
-
ctrl: 'Control',
|
|
78
|
-
alt: 'Alt',
|
|
79
|
-
shift: 'Shift',
|
|
80
|
-
enter: 'Enter',
|
|
81
|
-
backspace: 'Backspace',
|
|
82
|
-
escape: 'Escape',
|
|
83
|
-
tab: 'Tab',
|
|
84
|
-
up: 'Up arrow',
|
|
85
|
-
down: 'Down arrow',
|
|
86
|
-
left: 'Left arrow',
|
|
87
|
-
right: 'Right arrow',
|
|
88
|
-
plus: 'Plus'
|
|
89
|
-
};
|
|
70
|
+
const KEY_LABEL = new Map([['ctrl', 'Control'], ['alt', 'Alt'], ['shift', 'Shift'], ['enter', 'Enter'], ['backspace', 'Backspace'], ['escape', 'Escape'], ['tab', 'Tab'], ['up', 'Up arrow'], ['down', 'Down arrow'], ['left', 'Left arrow'], ['right', 'Right arrow'], ['plus', 'Plus']]);
|
|
90
71
|
function getKeyLabel(key, isMac) {
|
|
91
72
|
if (key === 'mod') {
|
|
92
73
|
return isMac ? 'Command' : 'Control';
|
|
93
74
|
}
|
|
94
|
-
return KEY_LABEL
|
|
75
|
+
return KEY_LABEL.get(key) ?? key.toUpperCase();
|
|
95
76
|
}
|
|
96
77
|
function subscribeToPlatformChanges() {
|
|
97
78
|
return () => {};
|
|
@@ -123,24 +104,37 @@ export function Kbd({
|
|
|
123
104
|
...rest
|
|
124
105
|
}) {
|
|
125
106
|
const isMac = useSyncExternalStore(subscribeToPlatformChanges, isApplePlatform, getServerPlatformSnapshot);
|
|
126
|
-
const
|
|
107
|
+
const keyOccurrences = new Map();
|
|
108
|
+
const parts = keys.split('+').map(key => key.trim().toLowerCase()).map(sourceKey => {
|
|
109
|
+
const occurrence = keyOccurrences.get(sourceKey) ?? 0;
|
|
110
|
+
keyOccurrences.set(sourceKey, occurrence + 1);
|
|
111
|
+
return {
|
|
112
|
+
key: KBD_KEY_ALIASES.get(sourceKey) ?? sourceKey,
|
|
113
|
+
reactKey: `${sourceKey}:${occurrence}`
|
|
114
|
+
};
|
|
115
|
+
});
|
|
127
116
|
|
|
128
117
|
// Screen-reader name: the joined spoken labels (e.g. "Command + K"), since
|
|
129
118
|
// the visual glyphs below are announced meaninglessly by assistive tech.
|
|
130
|
-
const accessibleName = parts.map(
|
|
119
|
+
const accessibleName = parts.map(({
|
|
120
|
+
key
|
|
121
|
+
}) => getKeyLabel(key, isMac)).join(' + ');
|
|
131
122
|
return /*#__PURE__*/_jsx("span", {
|
|
132
123
|
...rest,
|
|
133
124
|
ref: ref,
|
|
134
125
|
role: "img",
|
|
135
126
|
"aria-label": accessibleName,
|
|
136
127
|
...mergeProps(themeProps('kbd'), stylex.props(styles.wrapper, xstyle), className, style),
|
|
137
|
-
children: parts.map(
|
|
128
|
+
children: parts.map(({
|
|
129
|
+
key,
|
|
130
|
+
reactKey
|
|
131
|
+
}) => /*#__PURE__*/_jsx("kbd", {
|
|
138
132
|
"aria-hidden": "true",
|
|
139
133
|
...{
|
|
140
134
|
className: "x3nfvp2 x6s0dn4 xl56j7k x16asifk x1grt7ep x7a5moj xx3sua9 x17x4s8c xlxy82 x1q0q8m5 xib2hle xv1l7n4 x9ynric x141an7d x1e4wzip x1ltkj2j x87ps6o"
|
|
141
135
|
},
|
|
142
136
|
children: getKeyDisplay(key, isMac)
|
|
143
|
-
},
|
|
137
|
+
}, reactKey))
|
|
144
138
|
});
|
|
145
139
|
}
|
|
146
140
|
Kbd.displayName = 'Kbd';
|
package/dist/Link/Link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link/Link.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link/Link.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAoG/C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAC1C,iBAAiB,GAAG,iBAAiB,CACtC;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACvD;;;;;OAKG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,2BAA2B,CAAC;IACnD;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACzE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EACF,KAAK,EACL,IAAI,EACJ,YAAoB,EACpB,UAAkB,EAClB,cAAsB,EACtB,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,eAAe,EACvB,OAAO,EACP,OAAO,EACP,YAAoB,EACpB,IAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAgB,EAChB,OAAkB,EAClB,QAAY,EACZ,QAAQ,EACR,GAAG,EAAE,YAAY,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BA6IX;yBAtKe,IAAI"}
|
package/dist/Link/Link.js
CHANGED
|
@@ -28,6 +28,7 @@ import { computeTargetAndRel } from "./computeTargetAndRel.js";
|
|
|
28
28
|
import { useInteractiveRole } from "../hooks/useInteractiveRole.js";
|
|
29
29
|
import { themeProps } from "../utils/themeProps.js";
|
|
30
30
|
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
31
|
+
import { interactionOverlayStyles } from "../utils/interactionOverlay.stylex.js";
|
|
31
32
|
import { useTranslator } from "../i18n/index.js";
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -206,7 +207,10 @@ export function Link({
|
|
|
206
207
|
disabled: isDisabled,
|
|
207
208
|
...mergeProps(themeProps('link', {
|
|
208
209
|
color
|
|
209
|
-
}), focusOutlineProps.focusVisible(styles.base, styles.buttonReset, linkColorStyles[color],
|
|
210
|
+
}), focusOutlineProps.focusVisible(styles.base, styles.buttonReset, linkColorStyles[color],
|
|
211
|
+
// The system's pressed overlay behind the text; the hover stays the
|
|
212
|
+
// colour change above, so a press is the one background it paints.
|
|
213
|
+
!isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
|
|
210
214
|
...props,
|
|
211
215
|
children: sharedContent
|
|
212
216
|
});
|
|
@@ -241,7 +245,7 @@ export function Link({
|
|
|
241
245
|
tabIndex: isDisabled ? -1 : undefined,
|
|
242
246
|
...mergeProps(themeProps('link', {
|
|
243
247
|
color
|
|
244
|
-
}), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
|
|
248
|
+
}), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], !isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
|
|
245
249
|
...props,
|
|
246
250
|
children: sharedContent
|
|
247
251
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioListItem.d.ts","sourceRoot":"","sources":["../../src/RadioList/RadioListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"RadioListItem.d.ts","sourceRoot":"","sources":["../../src/RadioList/RadioListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgG5C,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;;;;OAUG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EAAE,cAAsB,EAClC,YAAY,EACZ,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,GAAG,IAAI,EACR,EAAE,kBAAkB,qBA4JpB;yBA1Ke,aAAa"}
|
|
@@ -20,7 +20,10 @@
|
|
|
20
20
|
import React, { use, useId, useRef } from 'react';
|
|
21
21
|
import * as stylex from '@stylexjs/stylex';
|
|
22
22
|
import { RadioListContext } from "./RadioList.js";
|
|
23
|
+
import "../theme/tokens.stylex.js";
|
|
24
|
+
import { colorVars, radiusVars } from "../theme/tokens.stylex.js";
|
|
23
25
|
import { mergeProps, isRenderable, rtlStyles } from "../utils/index.js";
|
|
26
|
+
import "../Indicator/indicator.markers.stylex.js";
|
|
24
27
|
import { indicatorScope } from "../Indicator/indicator.markers.stylex.js";
|
|
25
28
|
import { useIndicatorFocusRing } from "../hooks/useIndicatorFocusRing.js";
|
|
26
29
|
import { useIndicator } from "../Indicator/index.js";
|
|
@@ -37,6 +40,15 @@ const styles = {
|
|
|
37
40
|
kHBbk8: "xc8icb0",
|
|
38
41
|
$$css: true
|
|
39
42
|
},
|
|
43
|
+
indicatorPressOverlay: {
|
|
44
|
+
k5JduY: "x1s928wv",
|
|
45
|
+
kwXMNM: "x1j6awrg",
|
|
46
|
+
kv0HGH: "xarstr8",
|
|
47
|
+
kUfP38: "xq94oqs",
|
|
48
|
+
kloYau: "x2q1x1w",
|
|
49
|
+
ks3ayO: "xyhc2n1 x2kv6q6",
|
|
50
|
+
$$css: true
|
|
51
|
+
},
|
|
40
52
|
input: {
|
|
41
53
|
kVAEAm: "x10l6tqk",
|
|
42
54
|
k87sOh: "xwa60dl",
|
|
@@ -146,7 +158,7 @@ export function RadioListItem({
|
|
|
146
158
|
// `<label htmlFor>` would double-fire under delegation.
|
|
147
159
|
const radioRef = useRef(null);
|
|
148
160
|
const radioCircle = /*#__PURE__*/_jsxs("div", {
|
|
149
|
-
...stylex.props(styles.radioWrapper, wrapperSizeStyles[size]),
|
|
161
|
+
...stylex.props(styles.radioWrapper, wrapperSizeStyles[size], !isDisabled && styles.indicatorPressOverlay),
|
|
150
162
|
...focusProps,
|
|
151
163
|
children: [/*#__PURE__*/_jsx("input", {
|
|
152
164
|
ref: radioRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControlItem.d.ts","sourceRoot":"","sources":["../../src/SegmentedControl/SegmentedControlItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAe5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SegmentedControlItem.d.ts","sourceRoot":"","sources":["../../src/SegmentedControl/SegmentedControlItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAe5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,yBAA0B,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC7E,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAyGD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,GAAG,EACH,KAAK,EACL,KAAK,EACL,aAAqB,EACrB,IAAI,EACJ,UAAkB,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EACN,GAAG,IAAI,EACR,EAAE,yBAAyB,qBAuE3B;yBAjFe,oBAAoB"}
|
|
@@ -22,6 +22,7 @@ import { useSegmentedControlContext } from "./SegmentedControlContext.js";
|
|
|
22
22
|
import { mergeProps, composeEventHandlers } from "../utils/index.js";
|
|
23
23
|
import { themeProps } from "../utils/themeProps.js";
|
|
24
24
|
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
25
|
+
import { interactionOverlayStyles } from "../utils/interactionOverlay.stylex.js";
|
|
25
26
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
27
|
// =============================================================================
|
|
27
28
|
// Styles
|
|
@@ -50,10 +51,6 @@ const styles = {
|
|
|
50
51
|
kAMwcw: "xlr8y92",
|
|
51
52
|
$$css: true
|
|
52
53
|
},
|
|
53
|
-
hover: {
|
|
54
|
-
kWkggS: "xoevpu5",
|
|
55
|
-
$$css: true
|
|
56
|
-
},
|
|
57
54
|
selected: {
|
|
58
55
|
kAXs8y: "x1kzknox",
|
|
59
56
|
kMwMTN: "x1tgivj0 x1k5gbb1",
|
|
@@ -184,7 +181,10 @@ export function SegmentedControlItem({
|
|
|
184
181
|
size,
|
|
185
182
|
selected: isSelected ? 'selected' : null,
|
|
186
183
|
disabled: isItemDisabled ? 'disabled' : null
|
|
187
|
-
}), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], isFill && styles.fill, isSelected && styles.selected,
|
|
184
|
+
}), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], isFill && styles.fill, isSelected && styles.selected,
|
|
185
|
+
// The shared hover and pressed overlay, on the segments a press can
|
|
186
|
+
// change: the selected segment keeps its raised surface as it is.
|
|
187
|
+
!isSelected && !isItemDisabled && interactionOverlayStyles.backgroundColor, isItemDisabled && styles.disabled, xstyle)),
|
|
188
188
|
children: [iconElement, !isLabelHidden && /*#__PURE__*/_jsx("span", {
|
|
189
189
|
...{
|
|
190
190
|
className: "xb3r6kr xlyipyv xeuugli"
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* Sidebar navigation container with five zones: header + topContent (sticky together),
|
|
8
8
|
* children (scrollable), footer, and footerIcons (sticky bottom).
|
|
9
9
|
*
|
|
10
|
-
* Supports optional resize via drag handle at the inline-end edge.
|
|
10
|
+
* Supports optional resize via a drag handle at the inline-end edge. The
|
|
11
|
+
* resizable wrapper clips handle overflow while keeping its focus ring inside.
|
|
11
12
|
*
|
|
12
13
|
* SYNC: When modified, update these files to stay in sync:
|
|
13
14
|
* - /packages/core/src/SideNav/SideNav.doc.mjs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.d.ts","sourceRoot":"","sources":["../../src/SideNav/SideNav.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"SideNav.d.ts","sourceRoot":"","sources":["../../src/SideNav/SideNav.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACrC,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAsP/D,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC1D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAEvD;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IAEtC;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAC;CAClD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,EACtB,MAAM,EACN,UAAU,EACV,QAAQ,EACR,MAAM,EACN,WAAW,EACX,WAAmB,EACnB,SAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,+BA2Qd;yBA1Re,OAAO"}
|
package/dist/SideNav/SideNav.js
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* Sidebar navigation container with five zones: header + topContent (sticky together),
|
|
12
12
|
* children (scrollable), footer, and footerIcons (sticky bottom).
|
|
13
13
|
*
|
|
14
|
-
* Supports optional resize via drag handle at the inline-end edge.
|
|
14
|
+
* Supports optional resize via a drag handle at the inline-end edge. The
|
|
15
|
+
* resizable wrapper clips handle overflow while keeping its focus ring inside.
|
|
15
16
|
*
|
|
16
17
|
* SYNC: When modified, update these files to stay in sync:
|
|
17
18
|
* - /packages/core/src/SideNav/SideNav.doc.mjs
|
|
@@ -23,7 +24,7 @@
|
|
|
23
24
|
import { useCallback, useImperativeHandle, useRef } from 'react';
|
|
24
25
|
import * as stylex from '@stylexjs/stylex';
|
|
25
26
|
import "../theme/tokens.stylex.js";
|
|
26
|
-
import { spacingVars } from "../theme/tokens.stylex.js";
|
|
27
|
+
import { focusVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
27
28
|
import { mergeProps } from "../utils/index.js";
|
|
28
29
|
import { SideNavCollapseContext } from "./SideNavCollapseContext.js";
|
|
29
30
|
import { SideNavCollapseButton } from "./SideNavCollapseButton.js";
|
|
@@ -100,6 +101,10 @@ const styles = {
|
|
|
100
101
|
kzqmXN: "xhgvbfk",
|
|
101
102
|
$$css: true
|
|
102
103
|
},
|
|
104
|
+
resizableHandle: {
|
|
105
|
+
kInvED: "x1wfwxd8 x1l5jwag",
|
|
106
|
+
$$css: true
|
|
107
|
+
},
|
|
103
108
|
topbar: {
|
|
104
109
|
k1xSpc: "x78zum5",
|
|
105
110
|
kXwgrk: "x1q0g3np",
|
|
@@ -400,7 +405,7 @@ export function SideNav({
|
|
|
400
405
|
// the panel's overflow: clip bounds.
|
|
401
406
|
const content = showResizeHandle ? /*#__PURE__*/_jsxs("div", {
|
|
402
407
|
...{
|
|
403
|
-
className: "x1n2onr6 x78zum5 x2lah0s x5yr21d"
|
|
408
|
+
className: "x1n2onr6 x78zum5 x2lah0s x5yr21d x7giv3"
|
|
404
409
|
},
|
|
405
410
|
children: [navElement, /*#__PURE__*/_jsx(ResizeHandle, {
|
|
406
411
|
"data-testid": "astryx-sidenav-resize-handle",
|
|
@@ -408,6 +413,7 @@ export function SideNav({
|
|
|
408
413
|
position: "overlay",
|
|
409
414
|
pillPlacement: "end",
|
|
410
415
|
isAlwaysVisible: false,
|
|
416
|
+
xstyle: styles.resizableHandle,
|
|
411
417
|
resizable: resizableHook.props,
|
|
412
418
|
label: t('@astryx.sideNav.resizeSidebar')
|
|
413
419
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../src/Slider/Slider.tsx"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAQhD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAQ9C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,uEAAuE;IACvE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,8DAA8D;IAC9D,KAAK,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,8CAA8C;IAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC7C,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAChD,8CAA8C;IAC9C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../src/Slider/Slider.tsx"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAQhD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAQ9C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,uEAAuE;IACvE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,8DAA8D;IAC9D,KAAK,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,8CAA8C;IAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC7C,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAChD,8CAA8C;IAC9C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AA6S/D;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,WAAW,+BAqrBlD;yBArrBe,MAAM"}
|
package/dist/Slider/Slider.js
CHANGED
|
@@ -105,6 +105,10 @@ const styles = {
|
|
|
105
105
|
kWkggS: "x1ewilqj xvxo0qp",
|
|
106
106
|
$$css: true
|
|
107
107
|
},
|
|
108
|
+
thumbPressed: {
|
|
109
|
+
kKwaWg: "xpl5ynk",
|
|
110
|
+
$$css: true
|
|
111
|
+
},
|
|
108
112
|
thumbDisabled: {
|
|
109
113
|
kWkggS: "xwmxj5m",
|
|
110
114
|
kkrTdU: "xt0e3qv",
|
|
@@ -393,17 +397,19 @@ export function Slider({
|
|
|
393
397
|
// clicking on wide labels like "100").
|
|
394
398
|
const markEl = e.target.closest('[data-mark-value]');
|
|
395
399
|
const newVal = markEl ? Number(markEl.dataset.markValue) : getValueFromPosition(e.clientX, e.clientY);
|
|
396
|
-
const
|
|
400
|
+
const track = trackRef.current;
|
|
401
|
+
const thumbs = track?.querySelectorAll('[role="slider"]');
|
|
402
|
+
const pressedThumb = e.target.closest('[role="slider"]');
|
|
403
|
+
const pressedThumbIndex = pressedThumb == null || thumbs == null ? -1 : Array.from(thumbs).indexOf(pressedThumb);
|
|
404
|
+
// A direct thumb press owns that thumb even when range values coincide.
|
|
405
|
+
// Track and mark presses still choose the nearest value.
|
|
406
|
+
const thumbIndex = pressedThumbIndex >= 0 ? pressedThumbIndex : getClosestThumb(newVal);
|
|
397
407
|
draggingThumbRef.current = thumbIndex;
|
|
398
408
|
setDraggingThumb(thumbIndex);
|
|
399
409
|
updateValue(thumbIndex, newVal);
|
|
400
410
|
|
|
401
|
-
// Focus the
|
|
402
|
-
|
|
403
|
-
if (track) {
|
|
404
|
-
const thumbs = track.querySelectorAll('[role="slider"]');
|
|
405
|
-
thumbs[thumbIndex]?.focus();
|
|
406
|
-
}
|
|
411
|
+
// Focus the thumb that owns this drag.
|
|
412
|
+
thumbs?.[thumbIndex]?.focus();
|
|
407
413
|
// Also clear it explicitly: focusing an already-focused thumb fires no
|
|
408
414
|
// focus event, so a thumb the user had tabbed to would keep its ring
|
|
409
415
|
// through the drag.
|
|
@@ -552,7 +558,7 @@ export function Slider({
|
|
|
552
558
|
...mergeProps(themeProps('slider-thumb', {
|
|
553
559
|
orientation,
|
|
554
560
|
disabled: isDisabled ? 'disabled' : null
|
|
555
|
-
}), stylex.props(styles.thumb, isHorizontal ? styles.thumbHorizontal : rtlStyles.centerInline('50%'), !isDisabled && styles.thumbHover, !isDisabled && keyboardFocusThumb === thumbIndex && focusOutlineStyles.focusVisible, isDisabled && styles.thumbDisabled), undefined, positionStyle)
|
|
561
|
+
}), stylex.props(styles.thumb, isHorizontal ? styles.thumbHorizontal : rtlStyles.centerInline('50%'), !isDisabled && styles.thumbHover, !isDisabled && draggingThumb === thumbIndex && styles.thumbPressed, !isDisabled && keyboardFocusThumb === thumbIndex && focusOutlineStyles.focusVisible, isDisabled && styles.thumbDisabled), undefined, positionStyle)
|
|
556
562
|
}, thumbIndex);
|
|
557
563
|
if (useValueTooltip) {
|
|
558
564
|
return /*#__PURE__*/_jsx(Tooltip, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/Switch/Switch.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAcf,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAKhD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/Switch/Switch.tsx"],"names":[],"mappings":"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"}
|
package/dist/Switch/Switch.js
CHANGED
|
@@ -97,6 +97,15 @@ const thumbOnSizeStyles = {
|
|
|
97
97
|
$$css: true
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
|
+
|
|
101
|
+
// The pressed overlay, painted as a gradient layer OVER the track's and
|
|
102
|
+
// thumb's own fills so it composes with the on/off colors and the hover tint
|
|
103
|
+
// instead of replacing them. Same token Button's overlay paints with. The
|
|
104
|
+
// switch is a two-part control whose focusable input sits beside the track,
|
|
105
|
+
// so the press is read off the shared scope marker (the row), the way the
|
|
106
|
+
// hover tint already is: pressing the input, the track or the label all
|
|
107
|
+
// activate the row.
|
|
108
|
+
const pressedImage = `linear-gradient(${colorVars['--color-overlay-pressed']}, ${colorVars['--color-overlay-pressed']})`;
|
|
100
109
|
const labelWrapperSizeStyles = {
|
|
101
110
|
sm: {
|
|
102
111
|
kAzted: "xisnujt",
|
|
@@ -169,6 +178,7 @@ const styles = {
|
|
|
169
178
|
kMzoRj: "xc342km x13rsnn2",
|
|
170
179
|
ksu8eU: "xng3xce xx61lck",
|
|
171
180
|
kVAM5u: "x1w1tqly",
|
|
181
|
+
kKwaWg: "x1xm682w",
|
|
172
182
|
$$css: true
|
|
173
183
|
},
|
|
174
184
|
trackFocus: {
|
|
@@ -201,6 +211,7 @@ const styles = {
|
|
|
201
211
|
k1ekBW: "xh3q6i0",
|
|
202
212
|
kIyJzY: "xuedmi6 x12w9bfk",
|
|
203
213
|
kAMwcw: "xlr8y92",
|
|
214
|
+
kKwaWg: "x1xm682w",
|
|
204
215
|
$$css: true
|
|
205
216
|
},
|
|
206
217
|
thumbOff: {
|
package/dist/TabList/Tab.d.ts
CHANGED
|
@@ -79,7 +79,7 @@ export interface TabProps extends BaseProps<HTMLButtonElement> {
|
|
|
79
79
|
* </TabList>
|
|
80
80
|
* ```
|
|
81
81
|
*/
|
|
82
|
-
export declare function Tab({ as, ref, value, label, isLabelHidden, href, panelId, icon, selectedIcon, endContent, xstyle, className, style, ...restProps }: TabProps): React.JSX.Element;
|
|
82
|
+
export declare function Tab({ as, ref, value, label, isLabelHidden, href, panelId, icon, selectedIcon, endContent, xstyle, className, style, onClick, ...restProps }: TabProps): React.JSX.Element;
|
|
83
83
|
export declare namespace Tab {
|
|
84
84
|
var displayName: string;
|
|
85
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../src/TabList/Tab.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAc,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAYzD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAOrD,MAAM,WAAW,QAAS,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5D;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../src/TabList/Tab.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAc,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAYzD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAOrD,MAAM,WAAW,QAAS,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5D;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AA4ID;;;;;;;;;;;GAWG;AACH,wBAAgB,GAAG,CAAC,EAClB,EAAE,EACF,GAAG,EACH,KAAK,EACL,KAAK,EACL,aAAqB,EACrB,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,GAAG,SAAS,EACb,EAAE,QAAQ,qBA8KV;yBA9Le,GAAG"}
|
package/dist/TabList/Tab.js
CHANGED
|
@@ -66,7 +66,7 @@ const styles = {
|
|
|
66
66
|
kzqmXN: "xh8yej3",
|
|
67
67
|
kaIpWk: "xh6dtrn",
|
|
68
68
|
kfzvcC: "x47corl",
|
|
69
|
-
kWkggS: "xjbqb8w x1a1zr74",
|
|
69
|
+
kWkggS: "xjbqb8w x1a1zr74 x6ipy2d x74x3iv",
|
|
70
70
|
k1ekBW: "x15406qy",
|
|
71
71
|
kIyJzY: "xuedmi6",
|
|
72
72
|
kAMwcw: "xlr8y92",
|
|
@@ -166,6 +166,7 @@ export function Tab({
|
|
|
166
166
|
xstyle,
|
|
167
167
|
className,
|
|
168
168
|
style,
|
|
169
|
+
onClick,
|
|
169
170
|
...restProps
|
|
170
171
|
}) {
|
|
171
172
|
const tabListCtx = useTabListContext();
|
|
@@ -178,9 +179,17 @@ export function Tab({
|
|
|
178
179
|
const isTabRole = isTabsPattern && !isLink;
|
|
179
180
|
const displayIcon = isSelected && selectedIcon ? selectedIcon : icon;
|
|
180
181
|
const hasVisibleLabel = !isLabelHidden && label !== '';
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
const isDisabled = restProps['aria-disabled'] === true || restProps['aria-disabled'] === 'true';
|
|
183
|
+
const handleSelect = useCallback(event => {
|
|
184
|
+
if (isDisabled) {
|
|
185
|
+
event.preventDefault();
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
onClick?.(event);
|
|
189
|
+
if (!event.defaultPrevented) {
|
|
190
|
+
tabListCtx.onChange(value);
|
|
191
|
+
}
|
|
192
|
+
}, [isDisabled, onClick, tabListCtx, value]);
|
|
184
193
|
useDevWarning('Tab', 'href is ignored in a role="tablist" TabList — a tab swaps a panel in ' + 'place rather than navigating. Drop the href, or drop the role for the ' + 'navigation pattern.', isTabRole && href != null);
|
|
185
194
|
|
|
186
195
|
// A consumer who wired aria-controls by hand already said which panel this
|
|
@@ -223,7 +232,7 @@ export function Tab({
|
|
|
223
232
|
tabIndex: isSelected ? 0 : -1,
|
|
224
233
|
...mergeProps(themeProps('tab', {
|
|
225
234
|
selected: isSelected ? 'selected' : null
|
|
226
|
-
}), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], isSelected && styles.selected, isFill && layoutStyles.fill, tabScope, xstyle), className, style)
|
|
235
|
+
}), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], isSelected && styles.selected, isFill && layoutStyles.fill, !isDisabled && tabScope, xstyle), className, style)
|
|
227
236
|
};
|
|
228
237
|
const hoverBgElement = /*#__PURE__*/_jsx("span", {
|
|
229
238
|
"aria-hidden": "true",
|
|
@@ -265,9 +274,13 @@ export function Tab({
|
|
|
265
274
|
children: endContent
|
|
266
275
|
}) : null;
|
|
267
276
|
if (isLink) {
|
|
268
|
-
|
|
277
|
+
// A disabled link tab must not reach a router component: some routers reject
|
|
278
|
+
// a missing destination, while others treat it as the current route. A
|
|
279
|
+
// plain anchor without href preserves the element shape but cannot navigate.
|
|
280
|
+
const LinkRoot = isDisabled ? 'a' : LinkComponent;
|
|
281
|
+
return /*#__PURE__*/_jsxs(LinkRoot, {
|
|
269
282
|
ref: ref,
|
|
270
|
-
href: href,
|
|
283
|
+
href: isDisabled ? undefined : href,
|
|
271
284
|
onClick: handleSelect,
|
|
272
285
|
...sharedProps,
|
|
273
286
|
children: [hoverBgElement, iconElement, labelElement, endContentElement, indicatorElement]
|