@astryxdesign/core 0.1.8-canary.0c4d8d7 → 0.1.8-canary.0db5dfd
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/Avatar/AvatarStatusDot.d.ts +33 -5
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Avatar/AvatarStatusDot.js +144 -19
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +30 -2
- package/dist/Chat/useChatStreamScroll.d.ts +2 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +22 -8
- package/dist/Chat/useSpeechRecognition.d.ts +0 -1
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts +20 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +18 -2
- package/dist/Dialog/Dialog.d.ts +3 -0
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +54 -5
- package/dist/Dialog/DialogContext.d.ts +7 -0
- package/dist/Dialog/DialogContext.d.ts.map +1 -1
- package/dist/Dialog/DialogContext.js +2 -2
- package/dist/Dialog/DialogHeader.d.ts +5 -2
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +6 -1
- package/dist/Icon/Icon.d.ts +7 -2
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Item/Item.d.ts +6 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +22 -1
- package/dist/Stack/stack.stylex.d.ts +9 -9
- package/dist/Table/plugins/selection/useTableSelection.d.ts +2 -1
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.d.ts +8 -1
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +27 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts +0 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +9 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +8 -1
- package/dist/TreeList/TreeListBranches.d.ts +5 -0
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +10 -4
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +25 -6
- package/dist/astryx.css +0 -1
- package/dist/astryx.umd.js +43 -43
- package/dist/astryx.umd.js.map +3 -3
- package/dist/docs-types.d.ts +8 -0
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/theme/hct.d.ts +0 -1
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +1 -1
- package/locales/en.json +4 -0
- package/locales/fr-FR.json +4 -0
- package/locales/pseudo.json +3 -0
- package/package.json +1 -1
- package/src/Avatar/Avatar.doc.mjs +5 -3
- package/src/Avatar/AvatarStatusDot.doc.mjs +23 -12
- package/src/Avatar/AvatarStatusDot.test.tsx +284 -0
- package/src/Avatar/AvatarStatusDot.tsx +178 -21
- package/src/Calendar/Calendar.doc.mjs +12 -1
- package/src/Calendar/Calendar.test.tsx +193 -0
- package/src/Calendar/Calendar.tsx +38 -16
- package/src/Carousel/Carousel.doc.mjs +1 -0
- package/src/Chat/useChatStreamScroll.test.tsx +49 -0
- package/src/Chat/useChatStreamScroll.ts +27 -10
- package/src/Chat/useSpeechRecognition.ts +1 -1
- package/src/CheckboxList/CheckboxList.test.tsx +72 -2
- package/src/CheckboxList/CheckboxListItem.doc.mjs +33 -5
- package/src/CheckboxList/CheckboxListItem.tsx +50 -6
- package/src/ContextMenu/ContextMenu.test.tsx +193 -0
- package/src/Dialog/Dialog.doc.mjs +2 -2
- package/src/Dialog/Dialog.test.tsx +77 -4
- package/src/Dialog/Dialog.tsx +75 -3
- package/src/Dialog/DialogContext.ts +9 -2
- package/src/Dialog/DialogHeader.doc.mjs +2 -2
- package/src/Dialog/DialogHeader.tsx +9 -2
- package/src/DropdownMenu/DropdownMenu.test.tsx +169 -0
- package/src/Icon/Icon.doc.mjs +3 -2
- package/src/Icon/Icon.tsx +7 -2
- package/src/Item/Item.test.tsx +40 -18
- package/src/Item/Item.tsx +38 -2
- package/src/List/List.test.tsx +9 -8
- package/src/PowerSearch/PowerSearch.doc.mjs +14 -0
- package/src/PowerSearch/PowerSearch.test.tsx +20 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +2 -1
- package/src/Thumbnail/Thumbnail.doc.mjs +3 -3
- package/src/Thumbnail/Thumbnail.test.tsx +35 -0
- package/src/Thumbnail/Thumbnail.tsx +52 -3
- package/src/ToggleButton/ToggleButtonGroup.tsx +1 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +14 -0
- package/src/Tokenizer/Tokenizer.test.tsx +46 -0
- package/src/TopNav/TopNav.test.tsx +45 -0
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +3 -3
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +19 -2
- package/src/TreeList/TreeList.doc.mjs +6 -0
- package/src/TreeList/TreeList.test.tsx +169 -0
- package/src/TreeList/TreeListBranches.tsx +16 -2
- package/src/TreeList/TreeListItem.tsx +34 -3
- package/src/docs-types.ts +5 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +77 -2
- package/src/theme/hct.ts +1 -1
package/dist/Dialog/Dialog.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - /apps/storybook/stories/Dialog.stories.tsx (storybook stories)
|
|
16
16
|
* - /packages/cli/templates/blocks/components/Dialog/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
|
-
import { useEffect, useMemo, useRef } from 'react';
|
|
18
|
+
import { useCallback, useEffect, useId, useMemo, useRef } from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
20
|
import { useScrollLock } from "../hooks/useScrollLock.js";
|
|
21
21
|
import { hasActiveFocusTrapEscape, isImeKeyEvent } from "../hooks/useFocusTrap.js";
|
|
@@ -194,6 +194,9 @@ function formatPosition(value) {
|
|
|
194
194
|
*
|
|
195
195
|
* Designed to be used with Layout as its child for structured content.
|
|
196
196
|
* Uses the browser's built-in modal behavior for optimal accessibility.
|
|
197
|
+
* When a DialogHeader is rendered inside, its title automatically names the
|
|
198
|
+
* dialog via aria-labelledby; pass `aria-label` or `aria-labelledby` to
|
|
199
|
+
* override.
|
|
197
200
|
*
|
|
198
201
|
* @example
|
|
199
202
|
* ```
|
|
@@ -229,11 +232,41 @@ export function Dialog({
|
|
|
229
232
|
const effectivePadding = padding ?? 4;
|
|
230
233
|
const paddingToken = spacingStepToToken[effectivePadding];
|
|
231
234
|
const isFullscreen = variant === 'fullscreen';
|
|
235
|
+
|
|
236
|
+
// Default accessible name: publish a title id through DialogContext so a
|
|
237
|
+
// DialogHeader applies it to its heading (mirrors AlertDialog's explicit
|
|
238
|
+
// useId wiring). Whether to emit the default aria-labelledby is decided
|
|
239
|
+
// imperatively in the callback ref below by checking whether the title
|
|
240
|
+
// element actually rendered — so a dialog with no header never points at a
|
|
241
|
+
// missing id, and we avoid the extra render a registration-via-state effect
|
|
242
|
+
// would cost at the dialog level.
|
|
243
|
+
const titleId = useId();
|
|
232
244
|
const dialogContextValue = useMemo(() => ({
|
|
233
|
-
isInline
|
|
234
|
-
|
|
245
|
+
isInline,
|
|
246
|
+
titleId
|
|
247
|
+
}), [isInline, titleId]);
|
|
248
|
+
|
|
249
|
+
// Consumer-provided labels always win over the DialogHeader default.
|
|
250
|
+
const hasConsumerName = props['aria-label'] != null || props['aria-labelledby'] != null;
|
|
235
251
|
const dialogRef = useRef(null);
|
|
236
252
|
|
|
253
|
+
// Callback ref on the <dialog>: sync the default aria-labelledby from the
|
|
254
|
+
// DialogHeader title (if one rendered) in the same commit, with no second
|
|
255
|
+
// render. Consumer aria-label/aria-labelledby win — when present we leave
|
|
256
|
+
// the attribute to the {...safeProps} spread and never touch it here.
|
|
257
|
+
const attachDialog = useCallback(node => {
|
|
258
|
+
dialogRef.current = node;
|
|
259
|
+
if (!node || hasConsumerName) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const hasTitle = node.querySelector(`#${CSS.escape(titleId)}`) != null;
|
|
263
|
+
if (hasTitle) {
|
|
264
|
+
node.setAttribute('aria-labelledby', titleId);
|
|
265
|
+
} else {
|
|
266
|
+
node.removeAttribute('aria-labelledby');
|
|
267
|
+
}
|
|
268
|
+
}, [titleId, hasConsumerName]);
|
|
269
|
+
|
|
237
270
|
// Capture the element that was focused when the dialog opened,
|
|
238
271
|
// for directional animation origin and focus restoration on close.
|
|
239
272
|
const triggerElementRef = useRef(null);
|
|
@@ -317,6 +350,18 @@ export function Dialog({
|
|
|
317
350
|
return () => dialog.removeEventListener('keydown', handleKeyDown);
|
|
318
351
|
}, [isOpen, isInline, allowEscape, onOpenChange]);
|
|
319
352
|
|
|
353
|
+
// Dev-time guardrail: an open modal should always have an accessible name.
|
|
354
|
+
// Warn once per component instance (in an effect) rather than on every
|
|
355
|
+
// render — mirrors the unnamed-dialog warning in usePopover.
|
|
356
|
+
const warnedUnnamedDialogRef = useRef(false);
|
|
357
|
+
useEffect(() => {
|
|
358
|
+
const hasHeaderTitle = dialogRef.current?.querySelector(`#${CSS.escape(titleId)}`) != null;
|
|
359
|
+
if (isOpen && !isInline && !hasConsumerName && !hasHeaderTitle && !warnedUnnamedDialogRef.current) {
|
|
360
|
+
warnedUnnamedDialogRef.current = true;
|
|
361
|
+
console.warn('Dialog: open dialog has no accessible name. Add a DialogHeader ' + 'with a `title`, or pass `aria-label`/`aria-labelledby`.');
|
|
362
|
+
}
|
|
363
|
+
}, [isOpen, isInline, hasConsumerName, titleId]);
|
|
364
|
+
|
|
320
365
|
// Handle backdrop click — when the user clicks the ::backdrop pseudo-element,
|
|
321
366
|
// the event target is the <dialog> element itself; clicks on child content
|
|
322
367
|
// always target the child. This avoids false positives from native browser
|
|
@@ -384,14 +429,18 @@ export function Dialog({
|
|
|
384
429
|
// --- Standard modal rendering path ---
|
|
385
430
|
|
|
386
431
|
return /*#__PURE__*/_jsx("dialog", {
|
|
387
|
-
ref: mergeRefs(ref,
|
|
432
|
+
ref: mergeRefs(ref, attachDialog),
|
|
388
433
|
...safeProps,
|
|
389
434
|
...mergeProps(themeProps('dialog', {
|
|
390
435
|
variant
|
|
391
436
|
}), stylex.props(styles.dialog, isOpen && styles.open, styles.backdrop, !isFullscreen && dynamicStyles.sizing(width, maxHeight), hasPosition && dynamicStyles.position(position?.top, position?.right, position?.bottom, position?.left), isFullscreen && styles.fullscreen, xstyle), className, style),
|
|
392
437
|
onClick: handleClick,
|
|
393
438
|
onCancel: handleCancel,
|
|
394
|
-
"aria-modal": "true"
|
|
439
|
+
"aria-modal": "true"
|
|
440
|
+
// The default aria-labelledby (from a DialogHeader title) is set
|
|
441
|
+
// imperatively in `attachDialog`; a consumer-provided aria-labelledby
|
|
442
|
+
// flows through {...safeProps} above and wins.
|
|
443
|
+
,
|
|
395
444
|
...(purpose === 'required' ? {
|
|
396
445
|
role: 'alertdialog'
|
|
397
446
|
} : undefined),
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
export interface DialogContextValue {
|
|
2
2
|
/** Whether the dialog is rendered inline for docs/showcases. */
|
|
3
3
|
isInline: boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Id the DialogHeader title should render with so the dialog can name
|
|
6
|
+
* itself via aria-labelledby. The dialog detects the title element's
|
|
7
|
+
* presence directly (via a callback ref), so it only emits aria-labelledby
|
|
8
|
+
* when the title actually rendered — never pointing at a nonexistent id.
|
|
9
|
+
*/
|
|
10
|
+
titleId?: string;
|
|
4
11
|
}
|
|
5
12
|
export declare const DialogContext: import("react").Context<DialogContextValue | null>;
|
|
6
13
|
export declare function useDialogContext(): DialogContextValue | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogContext.d.ts","sourceRoot":"","sources":["../../src/Dialog/DialogContext.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DialogContext.d.ts","sourceRoot":"","sources":["../../src/Dialog/DialogContext.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAG5E,wBAAgB,gBAAgB,IAAI,kBAAkB,GAAG,IAAI,CAE5D"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @file DialogContext.ts
|
|
7
7
|
* @input React context
|
|
8
|
-
* @output Internal dialog context for child focus behavior
|
|
9
|
-
* @position Dialog internals; consumed by focus-managing children
|
|
8
|
+
* @output Internal dialog context for child focus behavior and default labelling
|
|
9
|
+
* @position Dialog internals; consumed by focus-managing children and DialogHeader
|
|
10
10
|
*/
|
|
11
11
|
import { createContext, use } from 'react';
|
|
12
12
|
export const DialogContext = /*#__PURE__*/createContext(null);
|
|
@@ -18,7 +18,9 @@ export interface DialogHeaderProps extends BaseProps<HTMLDivElement> {
|
|
|
18
18
|
ref?: React.Ref<HTMLDivElement>;
|
|
19
19
|
/**
|
|
20
20
|
* The title of the dialog.
|
|
21
|
-
* This title receives focus when the dialog opens for screen reader
|
|
21
|
+
* This title receives focus when the dialog opens for screen reader
|
|
22
|
+
* accessibility, and names the parent Dialog via aria-labelledby unless the
|
|
23
|
+
* consumer passes an explicit aria-label/aria-labelledby to the Dialog.
|
|
22
24
|
*/
|
|
23
25
|
title: string;
|
|
24
26
|
/**
|
|
@@ -52,7 +54,8 @@ export interface DialogHeaderProps extends BaseProps<HTMLDivElement> {
|
|
|
52
54
|
* Renders a title that receives focus when a modal dialog opens (for screen reader accessibility)
|
|
53
55
|
* and an optional close button. Inline documentation previews suppress this autofocus.
|
|
54
56
|
* The title is an h2 element with tabIndex={-1} so it can be programmatically focused but
|
|
55
|
-
* doesn't appear in the tab order.
|
|
57
|
+
* doesn't appear in the tab order. The title also names the parent Dialog via
|
|
58
|
+
* aria-labelledby (unless the Dialog receives an explicit aria-label/aria-labelledby).
|
|
56
59
|
*
|
|
57
60
|
* Uses LayoutHeader internally for consistent styling with other layout headers.
|
|
58
61
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogHeader.d.ts","sourceRoot":"","sources":["../../src/Dialog/DialogHeader.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoC5C,MAAM,WAAW,iBAAkB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAClE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC
|
|
1
|
+
{"version":3,"file":"DialogHeader.d.ts","sourceRoot":"","sources":["../../src/Dialog/DialogHeader.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoC5C,MAAM,WAAW,iBAAkB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAClE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE5C;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,iBAAiB,+BAqEnB;yBAjFe,YAAY"}
|
|
@@ -39,7 +39,8 @@ const styles = {
|
|
|
39
39
|
* Renders a title that receives focus when a modal dialog opens (for screen reader accessibility)
|
|
40
40
|
* and an optional close button. Inline documentation previews suppress this autofocus.
|
|
41
41
|
* The title is an h2 element with tabIndex={-1} so it can be programmatically focused but
|
|
42
|
-
* doesn't appear in the tab order.
|
|
42
|
+
* doesn't appear in the tab order. The title also names the parent Dialog via
|
|
43
|
+
* aria-labelledby (unless the Dialog receives an explicit aria-label/aria-labelledby).
|
|
43
44
|
*
|
|
44
45
|
* Uses LayoutHeader internally for consistent styling with other layout headers.
|
|
45
46
|
*
|
|
@@ -71,10 +72,13 @@ export function DialogHeader({
|
|
|
71
72
|
const titleRef = useRef(null);
|
|
72
73
|
const dialogContext = useDialogContext();
|
|
73
74
|
const shouldAutoFocus = dialogContext?.isInline !== true;
|
|
75
|
+
const titleId = dialogContext?.titleId;
|
|
74
76
|
|
|
75
77
|
// Auto-focus the title when mounted for screen reader accessibility.
|
|
76
78
|
// Inline dialogs are documentation/showcase previews, so suppress focus to
|
|
77
79
|
// avoid stealing scroll position from the surrounding page.
|
|
80
|
+
// The parent Dialog detects this title (by `titleId`) via a callback ref to
|
|
81
|
+
// set its default aria-labelledby — no registration handshake needed here.
|
|
78
82
|
useEffect(() => {
|
|
79
83
|
if (shouldAutoFocus && titleRef.current) {
|
|
80
84
|
titleRef.current.focus();
|
|
@@ -102,6 +106,7 @@ export function DialogHeader({
|
|
|
102
106
|
},
|
|
103
107
|
children: [/*#__PURE__*/_jsx(Heading, {
|
|
104
108
|
ref: titleRef,
|
|
109
|
+
id: titleId,
|
|
105
110
|
level: 2,
|
|
106
111
|
tabIndex: -1,
|
|
107
112
|
xstyle: styles.titleFocusable,
|
package/dist/Icon/Icon.d.ts
CHANGED
|
@@ -155,12 +155,17 @@ export interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'ref' | 'color'
|
|
|
155
155
|
* Don't set `label` when an interactive parent (Button, IconButton, link)
|
|
156
156
|
* already names the control — that produces a duplicate announcement.
|
|
157
157
|
*
|
|
158
|
+
* Meaningful, standalone icon: give it a label.
|
|
159
|
+
*
|
|
158
160
|
* @example
|
|
159
161
|
* ```
|
|
160
|
-
* // Meaningful, standalone icon
|
|
161
162
|
* <Icon icon="success" label="Completed" />
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
165
|
+
* Decorative icon (the default): omit label.
|
|
162
166
|
*
|
|
163
|
-
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```
|
|
164
169
|
* <Icon icon="search" />
|
|
165
170
|
* ```
|
|
166
171
|
*/
|
package/dist/Icon/Icon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/Icon/Icon.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAG3C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAqBnD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2Df,CAAC;AAEH;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;EAiBd,CAAC;AAyCH,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,QAAQ,CAAC,aAAa,CAAC,EACvB,KAAK,GAAG,OAAO,CAChB;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/Icon/Icon.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAG3C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAqBnD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2Df,CAAC;AAEH;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;EAiBd,CAAC;AAyCH,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,QAAQ,CAAC,aAAa,CAAC,EACvB,KAAK,GAAG,OAAO,CAChB;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,KAAiB,EACjB,IAAW,EACX,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,qBAkCX;yBAzCe,IAAI;;;AA4FpB;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,QAAQ,EAChC,KAAK,CAAC,EAAE;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAC,GAC3C,KAAK,CAAC,SAAS,CAYjB"}
|
package/dist/Item/Item.d.ts
CHANGED
|
@@ -91,7 +91,12 @@ export interface ItemProps extends BaseProps<HTMLElement> {
|
|
|
91
91
|
*/
|
|
92
92
|
isHighlighted?: boolean;
|
|
93
93
|
/**
|
|
94
|
-
* Selected state.
|
|
94
|
+
* Selected state. Always applies the selected visual styling. When `role`
|
|
95
|
+
* permits it (option, tab, row, gridcell, columnheader, rowheader, treeitem)
|
|
96
|
+
* the state is exposed as `aria-selected`; otherwise (e.g. a listitem or a
|
|
97
|
+
* bare div, where `aria-selected` is invalid ARIA) it falls back to
|
|
98
|
+
* `aria-current="true"` so assistive tech is still told which item is
|
|
99
|
+
* selected. A consumer-provided `aria-current` always wins.
|
|
95
100
|
* @default false
|
|
96
101
|
*/
|
|
97
102
|
isSelected?: boolean;
|
package/dist/Item/Item.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAUrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAU5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;OAGG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB
|
|
1
|
+
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAUrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAU5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;OAGG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0KD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EAAE,SAAiB,EACrB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAgB,EAChB,OAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,YAAY,EACjB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,SAAS,EACb,EAAE,SAAS,+BA+KX;yBAvMe,IAAI"}
|
package/dist/Item/Item.js
CHANGED
|
@@ -27,6 +27,16 @@ import { themeProps } from "../utils/themeProps.js";
|
|
|
27
27
|
// Types
|
|
28
28
|
// =============================================================================
|
|
29
29
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// Constants
|
|
32
|
+
// =============================================================================
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Roles on which WAI-ARIA permits the aria-selected attribute.
|
|
36
|
+
* https://www.w3.org/TR/wai-aria-1.2/#aria-selected
|
|
37
|
+
*/
|
|
38
|
+
const ARIA_SELECTED_ROLES = new Set(['option', 'tab', 'row', 'gridcell', 'columnheader', 'rowheader', 'treeitem']);
|
|
39
|
+
|
|
30
40
|
// =============================================================================
|
|
31
41
|
// Styles
|
|
32
42
|
// =============================================================================
|
|
@@ -189,6 +199,11 @@ export function Item({
|
|
|
189
199
|
// handles keyboard access. Skip the invisible button/anchor and put
|
|
190
200
|
// onClick directly on the root element instead.
|
|
191
201
|
const hasParentRole = role != null;
|
|
202
|
+
// aria-selected is only valid on selectable roles (option, tab, treeitem,
|
|
203
|
+
// grid cells). On the default div/li root the attribute is invalid ARIA
|
|
204
|
+
// (axe: aria-allowed-attr), so selection stays visual-only there — callers
|
|
205
|
+
// that need selection semantics pass a permitted role.
|
|
206
|
+
const allowsAriaSelected = role != null && ARIA_SELECTED_ROLES.has(role);
|
|
192
207
|
const isStringLabel = typeof label === 'string';
|
|
193
208
|
const isStringDescription = typeof description === 'string';
|
|
194
209
|
const labelTruncateStyle = labelLines != null ? labelLines === 1 ? styles.labelSingleTruncate : styles.labelMultiTruncate : isStringLabel ? styles.labelSingleTruncate : null;
|
|
@@ -281,7 +296,13 @@ export function Item({
|
|
|
281
296
|
return /*#__PURE__*/_jsx(Component, {
|
|
282
297
|
ref: ref,
|
|
283
298
|
...restProps,
|
|
284
|
-
"aria-selected": isSelected || undefined
|
|
299
|
+
"aria-selected": allowsAriaSelected && isSelected || undefined
|
|
300
|
+
// aria-selected is invalid on roles that don't permit it (listitem, a
|
|
301
|
+
// bare div, etc.). For those, convey selection via aria-current — valid
|
|
302
|
+
// on any element — so the state still reaches AT. Written after
|
|
303
|
+
// {...restProps} so it must defer to a consumer-provided aria-current.
|
|
304
|
+
,
|
|
305
|
+
"aria-current": restProps['aria-current'] ?? (isSelected && !allowsAriaSelected ? true : undefined),
|
|
285
306
|
"aria-disabled": isDisabled || undefined,
|
|
286
307
|
...mergeProps(themeProps('item', {
|
|
287
308
|
density,
|
|
@@ -158,15 +158,6 @@ export declare function stack({ crossAlign, direction, gap, mainAlign, wrap, }:
|
|
|
158
158
|
}> | Readonly<{
|
|
159
159
|
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "8px">;
|
|
160
160
|
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "8px">;
|
|
161
|
-
}> | Readonly<{
|
|
162
|
-
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "2px">;
|
|
163
|
-
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "2px">;
|
|
164
|
-
}> | Readonly<{
|
|
165
|
-
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "4px">;
|
|
166
|
-
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "4px">;
|
|
167
|
-
}> | Readonly<{
|
|
168
|
-
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "6px">;
|
|
169
|
-
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "6px">;
|
|
170
161
|
}> | Readonly<{
|
|
171
162
|
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "12px">;
|
|
172
163
|
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "12px">;
|
|
@@ -179,6 +170,15 @@ export declare function stack({ crossAlign, direction, gap, mainAlign, wrap, }:
|
|
|
179
170
|
}> | Readonly<{
|
|
180
171
|
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "24px">;
|
|
181
172
|
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "24px">;
|
|
173
|
+
}> | Readonly<{
|
|
174
|
+
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "2px">;
|
|
175
|
+
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "2px">;
|
|
176
|
+
}> | Readonly<{
|
|
177
|
+
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "4px">;
|
|
178
|
+
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "4px">;
|
|
179
|
+
}> | Readonly<{
|
|
180
|
+
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "6px">;
|
|
181
|
+
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "6px">;
|
|
182
182
|
}> | Readonly<{
|
|
183
183
|
readonly columnGap: stylex.StyleXClassNameFor<"columnGap", "32px">;
|
|
184
184
|
readonly rowGap: stylex.StyleXClassNameFor<"rowGap", "32px">;
|
|
@@ -23,11 +23,12 @@ export interface UseTableSelectionConfig<T extends Record<string, unknown>> {
|
|
|
23
23
|
* Derive a human-readable identity for a row, used in the row checkbox's
|
|
24
24
|
* hidden label as `Select ${getRowLabel(item)}`. Without it, every row
|
|
25
25
|
* checkbox announces an undifferentiated "Select row" to screen readers.
|
|
26
|
+
* With `getRowLabel: item => item.name`, checkbox accessible names become
|
|
27
|
+
* "Select Alice", "Select Bob", and so on.
|
|
26
28
|
*
|
|
27
29
|
* @example
|
|
28
30
|
* ```
|
|
29
31
|
* getRowLabel: item => item.name
|
|
30
|
-
* // Checkbox accessible names: "Select Alice", "Select Bob", ...
|
|
31
32
|
* ```
|
|
32
33
|
*/
|
|
33
34
|
getRowLabel?: (item: T) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableSelection.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/selection/useTableSelection.tsx"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAC,WAAW,EAAkC,MAAM,aAAa,CAAC;AAQ9E,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxE,uCAAuC;IACvC,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC,6EAA6E;IAC7E,YAAY,EAAE,CAAC,KAAK,EAAE;QAAC,IAAI,EAAE,CAAC,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IAC9D,kDAAkD;IAClD,WAAW,EAAE,CAAC,KAAK,EAAE;QAAC,aAAa,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IACvD,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,+FAA+F;IAC/F,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C,oGAAoG;IACpG,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC
|
|
1
|
+
{"version":3,"file":"useTableSelection.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/selection/useTableSelection.tsx"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAC,WAAW,EAAkC,MAAM,aAAa,CAAC;AAQ9E,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxE,uCAAuC;IACvC,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC,6EAA6E;IAC7E,YAAY,EAAE,CAAC,KAAK,EAAE;QAAC,IAAI,EAAE,CAAC,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IAC9D,kDAAkD;IAClD,WAAW,EAAE,CAAC,KAAK,EAAE;QAAC,aAAa,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IACvD,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,+FAA+F;IAC/F,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C,oGAAoG;IACpG,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;CACnC;AAuND,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACjC,WAAW,CAAC,CAAC,CAAC,CAmFhB"}
|
|
@@ -9,7 +9,14 @@ export interface ThumbnailProps extends BaseProps<HTMLDivElement> {
|
|
|
9
9
|
*/
|
|
10
10
|
src?: string;
|
|
11
11
|
/**
|
|
12
|
-
* Alt text for the image.
|
|
12
|
+
* Alt text for the image.
|
|
13
|
+
*
|
|
14
|
+
* When omitted, the image is explicitly decorative (`alt=""` +
|
|
15
|
+
* `role="presentation"` + `aria-hidden`, matching Avatar) and hidden from
|
|
16
|
+
* assistive technology. Provide `alt` whenever the image conveys content;
|
|
17
|
+
* without it, screen reader users only hear the `label` (file name), or a
|
|
18
|
+
* generic "thumbnail" if `label` is also missing — which triggers a
|
|
19
|
+
* dev-time warning.
|
|
13
20
|
*/
|
|
14
21
|
alt?: string;
|
|
15
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thumbnail.d.ts","sourceRoot":"","sources":["../../src/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Thumbnail.d.ts","sourceRoot":"","sources":["../../src/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAQ9C,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAkJD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,GAAG,EACH,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAiB,EACjB,UAAkB,EAClB,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,+BAkIhB;yBAjJe,SAAS"}
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
* Uses useImageMode (APCA) to detect image luminance so the overlaid
|
|
14
14
|
* remove button always has sufficient contrast.
|
|
15
15
|
*
|
|
16
|
+
* Images without `alt` are explicitly decorative (alt="" +
|
|
17
|
+
* role="presentation" + aria-hidden, matching Avatar). A dev-time warning
|
|
18
|
+
* fires once when `src` is set with no `alt` and no other name source.
|
|
19
|
+
*
|
|
16
20
|
* SYNC: When modified, update these files to stay in sync:
|
|
17
21
|
* - /packages/core/src/Thumbnail/Thumbnail.doc.mjs
|
|
18
22
|
* - /packages/core/src/Thumbnail/Thumbnail.test.tsx
|
|
@@ -20,6 +24,7 @@
|
|
|
20
24
|
* - /apps/storybook/stories/Thumbnail.stories.tsx
|
|
21
25
|
* - /packages/cli/templates/blocks/components/Thumbnail/ (showcase blocks)
|
|
22
26
|
*/
|
|
27
|
+
import { useEffect, useRef } from 'react';
|
|
23
28
|
import * as stylex from '@stylexjs/stylex';
|
|
24
29
|
import "../theme/tokens.stylex.js";
|
|
25
30
|
import { colorVars, radiusVars, spacingVars, shadowVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
@@ -181,11 +186,32 @@ export function Thumbnail({
|
|
|
181
186
|
const showUploadOverlay = isLoading && hasSrc;
|
|
182
187
|
const showPlaceholder = !isLoading && !hasSrc;
|
|
183
188
|
const isInteractive = onClick != null && !isDisabled && !isLoading;
|
|
184
|
-
const accessibleName = label && alt ? `${label} — ${alt}` : label ?? alt ?? 'thumbnail';
|
|
189
|
+
const accessibleName = label && alt ? `${label} — ${alt}` : label ?? alt ?? t('@astryx.thumbnail.fallbackName');
|
|
190
|
+
|
|
191
|
+
// Without `alt`, the image is explicitly decorative rather than silently
|
|
192
|
+
// empty-alt, matching Avatar's handling of unnamed images.
|
|
193
|
+
const isImageDecorative = !alt;
|
|
194
|
+
|
|
195
|
+
// Dev-time guardrail: `src` with no `alt` hides the image from assistive
|
|
196
|
+
// technology. That is fine when the thumbnail is otherwise named — `label`
|
|
197
|
+
// (or a consumer-provided aria name) becomes the group's accessible name —
|
|
198
|
+
// but with no name source at all the group falls back to a generic
|
|
199
|
+
// "thumbnail". Warn once per component instance (in an effect) rather than
|
|
200
|
+
// on every render.
|
|
201
|
+
const hasNameSource = alt != null || label != null || props['aria-label'] != null || props['aria-labelledby'] != null;
|
|
202
|
+
const warnedUnnamedImageRef = useRef(false);
|
|
203
|
+
useEffect(() => {
|
|
204
|
+
if (hasSrc && !hasNameSource && !warnedUnnamedImageRef.current) {
|
|
205
|
+
warnedUnnamedImageRef.current = true;
|
|
206
|
+
console.warn('Thumbnail: `src` is set without `alt` or `label`. The image is ' + 'treated as decorative and hidden from assistive technology, and ' + 'the thumbnail falls back to a generic "thumbnail" name. Pass ' + '`alt` to describe the image content, or `label` (file name) to ' + 'name the thumbnail.');
|
|
207
|
+
}
|
|
208
|
+
}, [hasSrc, hasNameSource]);
|
|
185
209
|
const imageContent = /*#__PURE__*/_jsxs(_Fragment, {
|
|
186
210
|
children: [showImage && /*#__PURE__*/_jsx("img", {
|
|
187
211
|
src: src,
|
|
188
212
|
alt: alt ?? '',
|
|
213
|
+
role: isImageDecorative ? 'presentation' : undefined,
|
|
214
|
+
"aria-hidden": isImageDecorative || undefined,
|
|
189
215
|
...{
|
|
190
216
|
className: "xh8yej3 x5yr21d xl1xv1r x1lliihq"
|
|
191
217
|
}
|
|
@@ -26,7 +26,6 @@ interface ToggleButtonGroupContextValue {
|
|
|
26
26
|
/** Group disabled state. */
|
|
27
27
|
isDisabled?: boolean;
|
|
28
28
|
}
|
|
29
|
-
export declare const ToggleButtonGroupContext: import("react").Context<ToggleButtonGroupContextValue | null>;
|
|
30
29
|
/**
|
|
31
30
|
* Hook for ToggleButton to read group context.
|
|
32
31
|
* Returns null when used outside a group.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ToggleButton/ToggleButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAOnD,UAAU,6BAA6B;IACrC,mCAAmC;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"ToggleButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ToggleButton/ToggleButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAOnD,UAAU,6BAA6B;IACrC,mCAAmC;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,6BAA6B,GAAG,IAAI,CAE3E;AAsBD,UAAU,0BAA0B;IAClC,8BAA8B;IAC9B,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,+BAA+B;IAC/B,IAAI,EAAE,UAAU,CAAC;IAEjB,iCAAiC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,8BAA8B,CAAC;AAMnC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,SAAS,CAgEX;yBAlEe,iBAAiB"}
|
|
@@ -28,7 +28,7 @@ import { themeProps } from "../utils/themeProps.js";
|
|
|
28
28
|
// Context
|
|
29
29
|
// =============================================================================
|
|
30
30
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
31
|
-
|
|
31
|
+
const ToggleButtonGroupContext = /*#__PURE__*/createContext(null);
|
|
32
32
|
ToggleButtonGroupContext.displayName = 'ToggleButtonGroupContext';
|
|
33
33
|
|
|
34
34
|
/**
|
|
@@ -23,7 +23,15 @@ export interface TopNavMegaMenuFeaturedCardProps extends BaseProps<HTMLDivElemen
|
|
|
23
23
|
description?: string;
|
|
24
24
|
/** Optional image URL displayed above the body. */
|
|
25
25
|
image?: string;
|
|
26
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Alt text for the image.
|
|
28
|
+
*
|
|
29
|
+
* When omitted, the image is explicitly decorative (`alt=""` +
|
|
30
|
+
* `role="presentation"` + `aria-hidden`, matching Avatar) and hidden from
|
|
31
|
+
* assistive technology. Since the card already has a visible `title`, a
|
|
32
|
+
* decorative image is usually correct; pass `imageAlt` only when the image
|
|
33
|
+
* conveys information beyond the title and description.
|
|
34
|
+
*/
|
|
27
35
|
imageAlt?: string;
|
|
28
36
|
/** CTA link text. */
|
|
29
37
|
linkLabel?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopNavMegaMenuFeaturedCard.d.ts","sourceRoot":"","sources":["../../src/TopNav/TopNavMegaMenuFeaturedCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAS5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiD5C,MAAM,WAAW,+BAAgC,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"TopNavMegaMenuFeaturedCard.d.ts","sourceRoot":"","sources":["../../src/TopNav/TopNavMegaMenuFeaturedCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAS5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiD5C,MAAM,WAAW,+BAAgC,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,+BAA+B,qBAsCjC;yBAnDe,0BAA0B"}
|
|
@@ -89,9 +89,16 @@ export function TopNavMegaMenuFeaturedCard({
|
|
|
89
89
|
ref: ref,
|
|
90
90
|
...mergeProps(themeProps('top-nav-mega-menu-featured-card'), stylex.props(styles.root, xstyle), className, style),
|
|
91
91
|
...rest,
|
|
92
|
-
children: [image &&
|
|
92
|
+
children: [image &&
|
|
93
|
+
/*#__PURE__*/
|
|
94
|
+
// Without `imageAlt`, the image is explicitly decorative rather than
|
|
95
|
+
// silently empty-alt, matching Avatar's handling of unnamed images.
|
|
96
|
+
// Usually correct here: the card already has a visible title.
|
|
97
|
+
_jsx("img", {
|
|
93
98
|
src: image,
|
|
94
99
|
alt: imageAlt ?? '',
|
|
100
|
+
role: imageAlt ? undefined : 'presentation',
|
|
101
|
+
"aria-hidden": imageAlt ? undefined : true,
|
|
95
102
|
...{
|
|
96
103
|
className: "xh8yej3 xhjk10j xl1xv1r x1lliihq"
|
|
97
104
|
}
|
|
@@ -6,6 +6,11 @@ interface TreeListBranchesProps {
|
|
|
6
6
|
/**
|
|
7
7
|
* Renders vertical lines showing parent-child relationships in the tree.
|
|
8
8
|
* Positioned in a full-height container to span the entire item including children.
|
|
9
|
+
*
|
|
10
|
+
* The line element carries the stable `astryx-tree-list-guide` theme target so a
|
|
11
|
+
* theme can recolor or hide the connectors via `defineTheme` (e.g.
|
|
12
|
+
* `backgroundColor` or `display: 'none'`) instead of hiding the built-in guides
|
|
13
|
+
* and reimplementing them.
|
|
9
14
|
*/
|
|
10
15
|
export declare function TreeListBranches({ ancestorsIsLast, isLast: _isLast, nestedLevel, }: TreeListBranchesProps): import("react").JSX.Element;
|
|
11
16
|
export declare namespace TreeListBranches {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeListBranches.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeListBranches.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TreeListBranches.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeListBranches.tsx"],"names":[],"mappings":"AAuDA,UAAU,qBAAqB;IAC7B,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,MAAM,EAAE,OAAO,EACf,WAAW,GACZ,EAAE,qBAAqB,+BA8CvB;yBAlDe,gBAAgB"}
|
|
@@ -16,6 +16,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
16
16
|
import "../theme/tokens.stylex.js";
|
|
17
17
|
import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
18
18
|
import { mergeProps } from "../utils/index.js";
|
|
19
|
+
import { themeProps } from "../utils/themeProps.js";
|
|
19
20
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
21
|
const LINE_WIDTH = 1;
|
|
21
22
|
|
|
@@ -38,6 +39,11 @@ const LEVEL_INDENT = spacingVars['--spacing-4'];
|
|
|
38
39
|
/**
|
|
39
40
|
* Renders vertical lines showing parent-child relationships in the tree.
|
|
40
41
|
* Positioned in a full-height container to span the entire item including children.
|
|
42
|
+
*
|
|
43
|
+
* The line element carries the stable `astryx-tree-list-guide` theme target so a
|
|
44
|
+
* theme can recolor or hide the connectors via `defineTheme` (e.g.
|
|
45
|
+
* `backgroundColor` or `display: 'none'`) instead of hiding the built-in guides
|
|
46
|
+
* and reimplementing them.
|
|
41
47
|
*/
|
|
42
48
|
export function TreeListBranches({
|
|
43
49
|
ancestorsIsLast,
|
|
@@ -60,9 +66,9 @@ export function TreeListBranches({
|
|
|
60
66
|
}
|
|
61
67
|
}),
|
|
62
68
|
children: /*#__PURE__*/_jsx("div", {
|
|
63
|
-
...{
|
|
69
|
+
...mergeProps(themeProps('tree-list-guide'), {
|
|
64
70
|
className: "x1nj7uno xu96u03 x1bpp3o7 x10l6tqk x3m8u43 x1i1rx1s x7njt3n xs02d24"
|
|
65
|
-
}
|
|
71
|
+
})
|
|
66
72
|
})
|
|
67
73
|
}, level)
|
|
68
74
|
);
|
|
@@ -75,9 +81,9 @@ export function TreeListBranches({
|
|
|
75
81
|
}
|
|
76
82
|
}),
|
|
77
83
|
children: /*#__PURE__*/_jsx("div", {
|
|
78
|
-
...{
|
|
84
|
+
...mergeProps(themeProps('tree-list-guide'), {
|
|
79
85
|
className: "x1nj7uno xu96u03 x1bpp3o7 x10l6tqk x3m8u43 x1i1rx1s x7njt3n xs02d24"
|
|
80
|
-
}
|
|
86
|
+
})
|
|
81
87
|
})
|
|
82
88
|
})]
|
|
83
89
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeListItem.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAiB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAcrD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AA8NrD,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAMD,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EACF,KAAK,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,OAAO,EACP,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,UAAkB,EAClB,WAAW,EACX,WAAW,EACX,MAAM,EACN,eAAe,EACf,UAAU,EACV,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,UAAU,GACX,EAAE,yBAAyB,+
|
|
1
|
+
{"version":3,"file":"TreeListItem.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAiB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAcrD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AA8NrD,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAMD,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EACF,KAAK,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,OAAO,EACP,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,UAAkB,EAClB,WAAW,EACX,WAAW,EACX,MAAM,EACN,eAAe,EACf,UAAU,EACV,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,UAAU,GACX,EAAE,yBAAyB,+BA8N3B;yBApPe,YAAY"}
|