@astryxdesign/core 0.2.0-canary.33d4e98 → 0.2.0-canary.3d3d463
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/Center/Center.d.ts +20 -3
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +10 -2
- package/dist/Chat/ChatLayout.d.ts +7 -0
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +14 -3
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +5 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +13 -5
- package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemHover.js +1 -0
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +6 -4
- package/dist/Field/FieldLabel.d.ts +2 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +7 -3
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +12 -2
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +3 -2
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +15 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +7 -3
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +6 -2
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +21 -3
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
- package/dist/Text/Text.d.ts +10 -1
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +25 -2
- package/dist/Text/index.d.ts +2 -2
- package/dist/Text/index.d.ts.map +1 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +106 -38
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +51 -45
- package/dist/Timestamp/Timestamp.js +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +9 -3
- package/dist/astryx.css +45 -5
- package/dist/astryx.umd.js +46 -46
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.pool.stylex.d.ts +281 -0
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.pool.stylex.js +281 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useContainerReveal.d.ts +83 -0
- package/dist/hooks/useContainerReveal.d.ts.map +1 -0
- package/dist/hooks/useContainerReveal.js +123 -0
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +11 -0
- package/dist/theme/defineTheme.d.ts +6 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/expandColorScale.d.ts +19 -2
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +38 -10
- package/dist/theme/index.d.ts +3 -3
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/types.d.ts +39 -2
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/utils/rtlStyles.d.ts +21 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -1
- package/dist/utils/rtlStyles.js +26 -1
- package/locales/en.json +16 -0
- package/locales/pseudo.json +12 -0
- package/package.json +3 -3
- package/src/Center/Center.doc.mjs +38 -0
- package/src/Center/Center.test.tsx +75 -0
- package/src/Center/Center.tsx +37 -2
- package/src/Chat/ChatLayout.test.tsx +57 -0
- package/src/Chat/ChatLayout.tsx +22 -1
- package/src/DropdownMenu/DropdownMenu.doc.mjs +5 -2
- package/src/DropdownMenu/DropdownMenu.test.tsx +35 -0
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +10 -1
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +64 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +23 -7
- package/src/DropdownMenu/menuItemHover.ts +1 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
- package/src/Field/Field.doc.mjs +4 -0
- package/src/Field/FieldLabel.test.tsx +25 -0
- package/src/Field/FieldLabel.tsx +11 -2
- package/src/FieldStatus/FieldStatus.doc.mjs +1 -0
- package/src/FieldStatus/FieldStatus.test.tsx +61 -0
- package/src/FieldStatus/FieldStatus.tsx +14 -3
- package/src/Heading/Heading.tsx +2 -1
- package/src/Lightbox/Lightbox.test.tsx +33 -0
- package/src/Lightbox/Lightbox.tsx +15 -3
- package/src/MultiSelector/MultiSelector.test.tsx +34 -0
- package/src/MultiSelector/MultiSelector.tsx +13 -8
- package/src/Selector/Selector.test.tsx +30 -0
- package/src/Selector/Selector.tsx +7 -3
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +21 -3
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
- package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
- package/src/Table/useTableRowExpansion.doc.mjs +55 -2
- package/src/Table/useTableTreeData.doc.mjs +9 -0
- package/src/Text/Heading.doc.mjs +3 -3
- package/src/Text/Text.doc.mjs +1 -1
- package/src/Text/Text.test.tsx +42 -0
- package/src/Text/Text.tsx +25 -1
- package/src/Text/index.ts +2 -6
- package/src/TextArea/TextArea.doc.mjs +2 -2
- package/src/TextArea/TextArea.test.tsx +112 -7
- package/src/TextArea/TextArea.tsx +142 -49
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +27 -34
- package/src/TopNav/TopNavMegaMenu.tsx +26 -2
- package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
- package/src/hooks/containerReveal.pool.stylex.ts +464 -0
- package/src/hooks/index.ts +7 -0
- package/src/hooks/useContainerReveal.test.tsx +116 -0
- package/src/hooks/useContainerReveal.ts +180 -0
- package/src/hooks/useInputStatusIcon.test.tsx +59 -0
- package/src/hooks/useInputStatusIcon.tsx +12 -1
- package/src/theme/defineTheme.ts +6 -0
- package/src/theme/expandColorScale.test.ts +144 -0
- package/src/theme/expandColorScale.ts +53 -15
- package/src/theme/index.ts +4 -8
- package/src/theme/types.ts +43 -13
- package/src/utils/rtlStyles.ts +22 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
- package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
- package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
package/dist/Center/Center.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Center.tsx
|
|
3
|
-
* @input Uses React, StyleX for centering styles
|
|
3
|
+
* @input Uses React, StyleX for centering styles, Layout padding.stylex for spacing-scale padding
|
|
4
4
|
* @output Exports Center component and CenterProps
|
|
5
5
|
* @position Center component for centering children horizontally/vertically
|
|
6
6
|
*
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { ReactNode } from 'react';
|
|
14
14
|
import type { BaseProps } from '../BaseProps';
|
|
15
|
-
import type { SizeValue } from '../utils/types';
|
|
15
|
+
import type { SizeValue, SpacingStep } from '../utils/types';
|
|
16
16
|
export type CenterAxis = 'both' | 'horizontal' | 'vertical';
|
|
17
17
|
export interface CenterProps extends BaseProps<HTMLDivElement> {
|
|
18
18
|
/** Ref forwarded to the root element */
|
|
@@ -45,6 +45,23 @@ export interface CenterProps extends BaseProps<HTMLDivElement> {
|
|
|
45
45
|
* Numbers are treated as pixels, strings are used as-is (e.g., '100%').
|
|
46
46
|
*/
|
|
47
47
|
minHeight?: SizeValue;
|
|
48
|
+
/**
|
|
49
|
+
* Inner padding on all sides, using the spacing scale.
|
|
50
|
+
* Accepts numeric spacing steps: 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10.
|
|
51
|
+
*
|
|
52
|
+
* Matches the `padding` prop on `Stack`, `Card`, `LayoutContent`, and `LayoutPanel`.
|
|
53
|
+
*/
|
|
54
|
+
padding?: SpacingStep;
|
|
55
|
+
/**
|
|
56
|
+
* Inline (horizontal) padding, using the spacing scale.
|
|
57
|
+
* Overrides `padding` on the inline axis when both are set.
|
|
58
|
+
*/
|
|
59
|
+
paddingInline?: SpacingStep;
|
|
60
|
+
/**
|
|
61
|
+
* Block (vertical) padding, using the spacing scale.
|
|
62
|
+
* Overrides `padding` on the block axis when both are set.
|
|
63
|
+
*/
|
|
64
|
+
paddingBlock?: SpacingStep;
|
|
48
65
|
/**
|
|
49
66
|
* Whether to make the container inline-flex (useful for text/icons).
|
|
50
67
|
* @default false
|
|
@@ -68,7 +85,7 @@ export interface CenterProps extends BaseProps<HTMLDivElement> {
|
|
|
68
85
|
* </Center>
|
|
69
86
|
* ```
|
|
70
87
|
*/
|
|
71
|
-
export declare function Center({ axis, width, height, maxWidth, minHeight, isInline, children, xstyle, className, style, ref, ...props }: CenterProps): import("react").JSX.Element;
|
|
88
|
+
export declare function Center({ axis, width, height, maxWidth, minHeight, padding, paddingInline, paddingBlock, isInline, children, xstyle, className, style, ref, ...props }: CenterProps): import("react").JSX.Element;
|
|
72
89
|
export declare namespace Center {
|
|
73
90
|
var displayName: string;
|
|
74
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Center.d.ts","sourceRoot":"","sources":["../../src/Center/Center.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Center.d.ts","sourceRoot":"","sources":["../../src/Center/Center.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAsC3D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,IAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,YAAY,EACZ,QAAgB,EAChB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BAgCb;yBAhDe,MAAM"}
|
package/dist/Center/Center.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Center.tsx
|
|
7
|
-
* @input Uses React, StyleX for centering styles
|
|
7
|
+
* @input Uses React, StyleX for centering styles, Layout padding.stylex for spacing-scale padding
|
|
8
8
|
* @output Exports Center component and CenterProps
|
|
9
9
|
* @position Center component for centering children horizontally/vertically
|
|
10
10
|
*
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* - /packages/cli/templates/blocks/components/Center/ (showcase blocks)
|
|
16
16
|
*/
|
|
17
17
|
import * as stylex from '@stylexjs/stylex';
|
|
18
|
+
import { paddingInlineStyles, paddingBlockStyles } from "../Layout/padding.stylex.js";
|
|
18
19
|
import { mergeProps } from "../utils/index.js";
|
|
19
20
|
import { themeProps } from "../utils/themeProps.js";
|
|
20
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -71,6 +72,9 @@ export function Center({
|
|
|
71
72
|
height,
|
|
72
73
|
maxWidth,
|
|
73
74
|
minHeight,
|
|
75
|
+
padding,
|
|
76
|
+
paddingInline,
|
|
77
|
+
paddingBlock,
|
|
74
78
|
isInline = false,
|
|
75
79
|
children,
|
|
76
80
|
xstyle,
|
|
@@ -79,9 +83,13 @@ export function Center({
|
|
|
79
83
|
ref,
|
|
80
84
|
...props
|
|
81
85
|
}) {
|
|
86
|
+
// Resolve padding to per-axis values: `padding` sets both axes; `paddingInline`
|
|
87
|
+
// / `paddingBlock` take precedence on their own axis when provided.
|
|
88
|
+
const resolvedPaddingInline = paddingInline ?? padding;
|
|
89
|
+
const resolvedPaddingBlock = paddingBlock ?? padding;
|
|
82
90
|
const stylexProps = mergeProps(themeProps('center', {
|
|
83
91
|
axis
|
|
84
|
-
}), stylex.props(isInline ? styles.inline : styles.base, (axis === 'both' || axis === 'vertical') && styles.alignItemsCenter, (axis === 'both' || axis === 'horizontal') && styles.justifyContentCenter, dynamicStyles.sizing(width ?? null, height ?? null, maxWidth ?? null, minHeight ?? null), xstyle), className, style);
|
|
92
|
+
}), stylex.props(isInline ? styles.inline : styles.base, (axis === 'both' || axis === 'vertical') && styles.alignItemsCenter, (axis === 'both' || axis === 'horizontal') && styles.justifyContentCenter, dynamicStyles.sizing(width ?? null, height ?? null, maxWidth ?? null, minHeight ?? null), resolvedPaddingInline != null && paddingInlineStyles[resolvedPaddingInline], resolvedPaddingBlock != null && paddingBlockStyles[resolvedPaddingBlock], xstyle), className, style);
|
|
85
93
|
return /*#__PURE__*/_jsx("div", {
|
|
86
94
|
ref: ref,
|
|
87
95
|
...stylexProps,
|
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
* Provides the scroll container ref and content ref, renders the
|
|
9
9
|
* scroll-to-bottom button, frosted glass dock, and message area.
|
|
10
10
|
*
|
|
11
|
+
* Layout contract: the root is a flex column. The message area flexes
|
|
12
|
+
* (grow 1, shrink 0) to fill the space the dock doesn't need; the sticky
|
|
13
|
+
* dock keeps its natural height in flow. Short content therefore fills
|
|
14
|
+
* exactly 100% with no overflow, and long content grows past the root so
|
|
15
|
+
* self-scroll mode scrolls (#2573). In external-scrollRef mode the dock
|
|
16
|
+
* is position: fixed (out of flow) and the message area fills the root.
|
|
17
|
+
*
|
|
11
18
|
* Density (compact/balanced/spacious) is controlled via a prop with
|
|
12
19
|
* 'balanced' as the default. No JS measurement or ResizeObserver needed.
|
|
13
20
|
* The container-type on root enables container queries in child components.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatLayout.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayout.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ChatLayout.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayout.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAa5C,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAEhC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4KD,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,OAAoB,EACpB,UAAU,EACV,YAAY,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,eAAe,+BA4GjB;yBAzHe,UAAU"}
|
package/dist/Chat/ChatLayout.js
CHANGED
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
* Provides the scroll container ref and content ref, renders the
|
|
13
13
|
* scroll-to-bottom button, frosted glass dock, and message area.
|
|
14
14
|
*
|
|
15
|
+
* Layout contract: the root is a flex column. The message area flexes
|
|
16
|
+
* (grow 1, shrink 0) to fill the space the dock doesn't need; the sticky
|
|
17
|
+
* dock keeps its natural height in flow. Short content therefore fills
|
|
18
|
+
* exactly 100% with no overflow, and long content grows past the root so
|
|
19
|
+
* self-scroll mode scrolls (#2573). In external-scrollRef mode the dock
|
|
20
|
+
* is position: fixed (out of flow) and the message area fills the root.
|
|
21
|
+
*
|
|
15
22
|
* Density (compact/balanced/spacious) is controlled via a prop with
|
|
16
23
|
* 'balanced' as the default. No JS measurement or ResizeObserver needed.
|
|
17
24
|
* The container-type on root enables container queries in child components.
|
|
@@ -47,6 +54,8 @@ const styles = {
|
|
|
47
54
|
k9g6sI: "x12h1iku",
|
|
48
55
|
kAzted: "x2lwn1j",
|
|
49
56
|
kUk6DE: "x98rzlu",
|
|
57
|
+
k1xSpc: "x78zum5",
|
|
58
|
+
kXwgrk: "xdt5ytf",
|
|
50
59
|
$$css: true
|
|
51
60
|
},
|
|
52
61
|
rootScrollable: {
|
|
@@ -59,7 +68,9 @@ const styles = {
|
|
|
59
68
|
k1xSpc: "x78zum5",
|
|
60
69
|
kXwgrk: "xdt5ytf",
|
|
61
70
|
kUOVxO: "xvueqy4",
|
|
62
|
-
|
|
71
|
+
kzQI83: "x1iyjqo2",
|
|
72
|
+
kmuXW: "x2lah0s",
|
|
73
|
+
kCS8Yb: "xdl72j9",
|
|
63
74
|
kGO01o: "xjpqqx5",
|
|
64
75
|
kzqmXN: "xh8yej3",
|
|
65
76
|
ks0D6T: "x193iq5w",
|
|
@@ -258,10 +269,10 @@ export function ChatLayout({
|
|
|
258
269
|
}), /*#__PURE__*/_jsxs("div", {
|
|
259
270
|
...{
|
|
260
271
|
0: {
|
|
261
|
-
className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl xixxii4"
|
|
272
|
+
className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s xixxii4"
|
|
262
273
|
},
|
|
263
274
|
1: {
|
|
264
|
-
className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x7wzq59"
|
|
275
|
+
className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s x7wzq59"
|
|
265
276
|
}
|
|
266
277
|
}[!!isSelfScrolling << 0],
|
|
267
278
|
children: [scrollButton === undefined ? defaultScrollButton : scrollButton, /*#__PURE__*/_jsx("div", {
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file DropdownMenuCheckboxItem.tsx
|
|
3
|
-
* @input React, stylex, Item +
|
|
3
|
+
* @input React, stylex, Item + CheckboxInput + DropdownMenu context + tokens from core
|
|
4
4
|
* @output DropdownMenuCheckboxItem — a standalone checkable menu item.
|
|
5
5
|
* @position Sub-component; used inside DropdownMenu.
|
|
6
6
|
*
|
|
7
7
|
* A menu item that toggles an independent boolean (role="menuitemcheckbox").
|
|
8
|
-
* Unlike CheckboxInput, there is no nested native <input
|
|
9
|
-
* the role and aria-checked, per the
|
|
10
|
-
* Keyboard navigation (arrows/typeahead) and
|
|
11
|
-
* the parent DropdownMenu's useListFocus +
|
|
12
|
-
* menuitemcheckbox alongside plain menuitem rows.
|
|
8
|
+
* Unlike CheckboxInput, there is no nested native <input> that participates in
|
|
9
|
+
* accessibility: the row itself owns the role and aria-checked, per the
|
|
10
|
+
* WAI-ARIA menuitemcheckbox pattern. Keyboard navigation (arrows/typeahead) and
|
|
11
|
+
* Enter/Space activation come from the parent DropdownMenu's useListFocus +
|
|
12
|
+
* activation path, which matches menuitemcheckbox alongside plain menuitem rows.
|
|
13
13
|
*
|
|
14
|
-
* The
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
14
|
+
* The checkbox visual composes the real CheckboxInput primitive so its checkmark
|
|
15
|
+
* matches CheckboxListItem and picks up the standard `checkbox` theming slots.
|
|
16
|
+
* It is purely decorative: the composed control is wrapped in an element that is
|
|
17
|
+
* both `aria-hidden` and `inert`, so it contributes nothing to the row's
|
|
18
|
+
* accessible name, and its native <input> and sr-only label stay out of the tab
|
|
19
|
+
* order and the accessibility tree while pointer clicks fall through to the row
|
|
20
|
+
* — the same shim MultiSelector uses. The row owns the checked state and
|
|
21
|
+
* accessible name. The control size is derived from the menu's item size (a
|
|
22
|
+
* `sm` menu gets the compact control; `md`/`lg` get the standard one) and it
|
|
23
|
+
* swaps to the inline-end of the row on coarse-pointer (touch) devices via CSS
|
|
24
|
+
* `order`, so it lands where selection toggles are conventionally placed on
|
|
25
|
+
* mobile.
|
|
20
26
|
*/
|
|
21
27
|
import { type ReactNode } from 'react';
|
|
22
28
|
import { type IconType } from '../Icon';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuCheckboxItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuCheckboxItem.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"DropdownMenuCheckboxItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuCheckboxItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAOtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsC5C,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CACzD,SAAS,EACT,UAAU,GAAG,MAAM,GAAG,cAAc,GAAG,UAAU,CAClD;IACC;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,WAAW,EACX,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,UAAkB,EAClB,gBAAwB,EACxB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,6BAA6B,+BA6D/B;yBA1Ee,wBAAwB"}
|
|
@@ -4,32 +4,39 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file DropdownMenuCheckboxItem.tsx
|
|
7
|
-
* @input React, stylex, Item +
|
|
7
|
+
* @input React, stylex, Item + CheckboxInput + DropdownMenu context + tokens from core
|
|
8
8
|
* @output DropdownMenuCheckboxItem — a standalone checkable menu item.
|
|
9
9
|
* @position Sub-component; used inside DropdownMenu.
|
|
10
10
|
*
|
|
11
11
|
* A menu item that toggles an independent boolean (role="menuitemcheckbox").
|
|
12
|
-
* Unlike CheckboxInput, there is no nested native <input
|
|
13
|
-
* the role and aria-checked, per the
|
|
14
|
-
* Keyboard navigation (arrows/typeahead) and
|
|
15
|
-
* the parent DropdownMenu's useListFocus +
|
|
16
|
-
* menuitemcheckbox alongside plain menuitem rows.
|
|
12
|
+
* Unlike CheckboxInput, there is no nested native <input> that participates in
|
|
13
|
+
* accessibility: the row itself owns the role and aria-checked, per the
|
|
14
|
+
* WAI-ARIA menuitemcheckbox pattern. Keyboard navigation (arrows/typeahead) and
|
|
15
|
+
* Enter/Space activation come from the parent DropdownMenu's useListFocus +
|
|
16
|
+
* activation path, which matches menuitemcheckbox alongside plain menuitem rows.
|
|
17
17
|
*
|
|
18
|
-
* The
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
18
|
+
* The checkbox visual composes the real CheckboxInput primitive so its checkmark
|
|
19
|
+
* matches CheckboxListItem and picks up the standard `checkbox` theming slots.
|
|
20
|
+
* It is purely decorative: the composed control is wrapped in an element that is
|
|
21
|
+
* both `aria-hidden` and `inert`, so it contributes nothing to the row's
|
|
22
|
+
* accessible name, and its native <input> and sr-only label stay out of the tab
|
|
23
|
+
* order and the accessibility tree while pointer clicks fall through to the row
|
|
24
|
+
* — the same shim MultiSelector uses. The row owns the checked state and
|
|
25
|
+
* accessible name. The control size is derived from the menu's item size (a
|
|
26
|
+
* `sm` menu gets the compact control; `md`/`lg` get the standard one) and it
|
|
27
|
+
* swaps to the inline-end of the row on coarse-pointer (touch) devices via CSS
|
|
28
|
+
* `order`, so it lands where selection toggles are conventionally placed on
|
|
29
|
+
* mobile.
|
|
24
30
|
*/
|
|
25
31
|
import { useCallback } from 'react';
|
|
26
32
|
import * as stylex from '@stylexjs/stylex';
|
|
27
|
-
import {
|
|
33
|
+
import { renderIconSlot } from "../Icon/index.js";
|
|
34
|
+
import { CheckboxInput } from "../CheckboxInput/CheckboxInput.js";
|
|
28
35
|
import { Item } from "../Item/index.js";
|
|
29
36
|
import { useDropdownMenuContext } from "./DropdownMenuContext.js";
|
|
30
37
|
import { focusMenuItemOnHover } from "./menuItemHover.js";
|
|
31
38
|
import "../theme/tokens.stylex.js";
|
|
32
|
-
import { colorVars, spacingVars
|
|
39
|
+
import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
33
40
|
import { mergeProps, themeProps } from "../utils/index.js";
|
|
34
41
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
35
42
|
const styles = {
|
|
@@ -46,45 +53,6 @@ const styles = {
|
|
|
46
53
|
kSiTet: "xbyyjgo",
|
|
47
54
|
kkrTdU: "x1h6gzvc",
|
|
48
55
|
$$css: true
|
|
49
|
-
},
|
|
50
|
-
box: {
|
|
51
|
-
k1xSpc: "x78zum5",
|
|
52
|
-
kGNEyG: "x6s0dn4",
|
|
53
|
-
kjj79g: "xl56j7k",
|
|
54
|
-
kmuXW: "x2lah0s",
|
|
55
|
-
kB7OPa: "x9f619",
|
|
56
|
-
kMzoRj: "x1litavf",
|
|
57
|
-
ksu8eU: "x1y0btm7",
|
|
58
|
-
kaIpWk: "xx3sua9",
|
|
59
|
-
kMwMTN: "x17wrial",
|
|
60
|
-
k1ekBW: "xts7igz",
|
|
61
|
-
kIyJzY: "xuedmi6 x12w9bfk",
|
|
62
|
-
kAMwcw: "xlr8y92",
|
|
63
|
-
kayTVb: "x1g77sc7 xozvky",
|
|
64
|
-
keTefX: "x1lziwak x1jymrmb",
|
|
65
|
-
$$css: true
|
|
66
|
-
},
|
|
67
|
-
unchecked: {
|
|
68
|
-
kVAM5u: "xvy26l8",
|
|
69
|
-
kWkggS: "x10xzikg",
|
|
70
|
-
$$css: true
|
|
71
|
-
},
|
|
72
|
-
checked: {
|
|
73
|
-
kVAM5u: "xad5do",
|
|
74
|
-
kWkggS: "x1ewilqj",
|
|
75
|
-
$$css: true
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
const boxSizeStyles = {
|
|
79
|
-
sm: {
|
|
80
|
-
kzqmXN: "x1xp8n7a",
|
|
81
|
-
kZKoxP: "xmix8c7",
|
|
82
|
-
$$css: true
|
|
83
|
-
},
|
|
84
|
-
md: {
|
|
85
|
-
kzqmXN: "x17z2i9w",
|
|
86
|
-
kZKoxP: "x17rw0jw",
|
|
87
|
-
$$css: true
|
|
88
56
|
}
|
|
89
57
|
};
|
|
90
58
|
/**
|
|
@@ -122,6 +90,12 @@ export function DropdownMenuCheckboxItem({
|
|
|
122
90
|
const ctx = useDropdownMenuContext();
|
|
123
91
|
const menuSize = ctx?.menuSize ?? 'md';
|
|
124
92
|
const controlSize = menuSize === 'sm' ? 'sm' : 'md';
|
|
93
|
+
|
|
94
|
+
// The composed checkbox is decorative and inert, so its label never reaches
|
|
95
|
+
// the accessibility tree — the row's `label` prop provides the announced
|
|
96
|
+
// name. CheckboxInput still requires a string label, so pass one through when
|
|
97
|
+
// the row label is a plain string.
|
|
98
|
+
const checkboxLabel = typeof label === 'string' ? label : '';
|
|
125
99
|
const handleClick = useCallback(() => {
|
|
126
100
|
if (isDisabled) {
|
|
127
101
|
return;
|
|
@@ -138,17 +112,18 @@ export function DropdownMenuCheckboxItem({
|
|
|
138
112
|
"aria-checked": value,
|
|
139
113
|
tabIndex: isDisabled ? undefined : -1,
|
|
140
114
|
onPointerMove: handlePointerMove,
|
|
141
|
-
marker: /*#__PURE__*/_jsx("
|
|
115
|
+
marker: /*#__PURE__*/_jsx("div", {
|
|
142
116
|
"aria-hidden": "true",
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
117
|
+
inert: true,
|
|
118
|
+
...{
|
|
119
|
+
className: "x78zum5 x2lah0s x47corl x1g77sc7 xozvky x1lziwak x1jymrmb"
|
|
120
|
+
},
|
|
121
|
+
children: /*#__PURE__*/_jsx(CheckboxInput, {
|
|
122
|
+
label: checkboxLabel,
|
|
123
|
+
isLabelHidden: true,
|
|
124
|
+
value: value,
|
|
125
|
+
isDisabled: isDisabled,
|
|
126
|
+
size: controlSize
|
|
152
127
|
})
|
|
153
128
|
}),
|
|
154
129
|
startContent: icon ? renderIconSlot(icon, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuRadioItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAYtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAqE5C,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,SAAS,EACT,MAAM,GAAG,cAAc,GAAG,UAAU,CACrC;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,0BAA0B,+
|
|
1
|
+
{"version":3,"file":"DropdownMenuRadioItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAYtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAqE5C,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,SAAS,EACT,MAAM,GAAG,cAAc,GAAG,UAAU,CACrC;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,0BAA0B,+BAgF5B;yBA3Fe,qBAAqB"}
|
|
@@ -157,7 +157,11 @@ export function DropdownMenuRadioItem({
|
|
|
157
157
|
disabled: isDisabled ? 'disabled' : null
|
|
158
158
|
}), stylex.props(styles.circle, circleSizeStyles[controlSize], isChecked ? styles.checked : styles.unchecked)),
|
|
159
159
|
children: isChecked && /*#__PURE__*/_jsx("span", {
|
|
160
|
-
...
|
|
160
|
+
...mergeProps(themeProps('dropdown-menu-radio-dot', {
|
|
161
|
+
size: controlSize,
|
|
162
|
+
checked: 'checked',
|
|
163
|
+
disabled: isDisabled ? 'disabled' : null
|
|
164
|
+
}), stylex.props(styles.dot, dotSizeStyles[controlSize]))
|
|
161
165
|
})
|
|
162
166
|
}),
|
|
163
167
|
startContent: icon ? renderIconSlot(icon, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuSubMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuSubMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAc,
|
|
1
|
+
{"version":3,"file":"DropdownMenuSubMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuSubMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAc,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAoB5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA0F5C,UAAU,4BAA6B,SAAQ,IAAI,CACjD,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B;IAC5E;;;;;;;;OAQG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,SAAS,CAmVX;yBArVe,mBAAmB"}
|
|
@@ -53,6 +53,7 @@ import { mergeProps } from "../utils/index.js";
|
|
|
53
53
|
import { themeProps } from "../utils/themeProps.js";
|
|
54
54
|
import { MENU_ITEM_ROLES, MENU_ITEM_SELECTOR, MENU_BOUNDARY_SELECTOR } from "./menuItemRoles.js";
|
|
55
55
|
import { DropdownMenuContext, useDropdownMenuContext } from "./DropdownMenuContext.js";
|
|
56
|
+
import { focusMenuItemOnHover } from "./menuItemHover.js";
|
|
56
57
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
57
58
|
const triggerStyles = {
|
|
58
59
|
root: {
|
|
@@ -65,7 +66,6 @@ const triggerStyles = {
|
|
|
65
66
|
kGuDYH: "xcr08ib",
|
|
66
67
|
kMwMTN: "x1tgivj0",
|
|
67
68
|
kWkggS: "xjbqb8w x1c52tdz",
|
|
68
|
-
kHE3J0: "xe9uy6x",
|
|
69
69
|
kkrTdU: "x1ypdohk",
|
|
70
70
|
k9WMMc: "x1yc453h",
|
|
71
71
|
kI3sdo: "x1a2a7pz",
|
|
@@ -281,6 +281,13 @@ export function DropdownMenuSubMenu(props) {
|
|
|
281
281
|
}
|
|
282
282
|
}, [isDisabled, open]);
|
|
283
283
|
|
|
284
|
+
// Move the single focus-driven highlight onto the trigger as the pointer
|
|
285
|
+
// enters it, so a sibling item that still holds focus doesn't stay
|
|
286
|
+
// highlighted alongside the hovered trigger. This is separate from the
|
|
287
|
+
// hover-open intent (onMouseEnter/onMouseLeave) — the flyout still opens on
|
|
288
|
+
// the hover delay; this only keeps the highlight single.
|
|
289
|
+
const handlePointerMove = useCallback(e => focusMenuItemOnHover(e, isDisabled), [isDisabled]);
|
|
290
|
+
|
|
284
291
|
// Enter/Space activate the focused row; typeahead jumps by first character;
|
|
285
292
|
// the close key (Left, or Right in RTL) returns focus to the trigger;
|
|
286
293
|
// arrows/Home/End defer to useListFocus (RTL-aware).
|
|
@@ -348,16 +355,16 @@ export function DropdownMenuSubMenu(props) {
|
|
|
348
355
|
}
|
|
349
356
|
}), [menuSize, close, menuCtx]);
|
|
350
357
|
const endAffordance = hasSpinner ? /*#__PURE__*/_jsx("span", {
|
|
351
|
-
...{
|
|
358
|
+
...mergeProps(themeProps('dropdown-menu-indicator-icon'), {
|
|
352
359
|
className: "x78zum5 x6s0dn4"
|
|
353
|
-
},
|
|
360
|
+
}),
|
|
354
361
|
children: /*#__PURE__*/_jsx(Spinner, {
|
|
355
362
|
size: "sm"
|
|
356
363
|
})
|
|
357
364
|
}) : /*#__PURE__*/_jsx("span", {
|
|
358
|
-
...{
|
|
365
|
+
...mergeProps(themeProps('dropdown-menu-indicator-icon'), {
|
|
359
366
|
className: "x78zum5 x6s0dn4"
|
|
360
|
-
},
|
|
367
|
+
}),
|
|
361
368
|
children: /*#__PURE__*/_jsx(Icon, {
|
|
362
369
|
icon: "chevronRight",
|
|
363
370
|
size: "sm",
|
|
@@ -378,6 +385,7 @@ export function DropdownMenuSubMenu(props) {
|
|
|
378
385
|
"data-testid": testId,
|
|
379
386
|
onMouseEnter: triggerProps.onMouseEnter,
|
|
380
387
|
onMouseLeave: triggerProps.onMouseLeave,
|
|
388
|
+
onPointerMove: handlePointerMove,
|
|
381
389
|
startContent: icon ? renderIconSlot(icon, {
|
|
382
390
|
size: 'sm',
|
|
383
391
|
color: 'secondary'
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* - /packages/core/src/DropdownMenu/DropdownMenuItem.tsx
|
|
13
13
|
* - /packages/core/src/DropdownMenu/DropdownMenuCheckboxItem.tsx
|
|
14
14
|
* - /packages/core/src/DropdownMenu/DropdownMenuRadioItem.tsx
|
|
15
|
+
* - /packages/core/src/DropdownMenu/DropdownMenuSubMenu.tsx
|
|
15
16
|
*/
|
|
16
17
|
import type { PointerEvent } from 'react';
|
|
17
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menuItemHover.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/menuItemHover.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"menuItemHover.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/menuItemHover.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,EAC5B,UAAU,CAAC,EAAE,OAAO,GACnB,IAAI,CAQN"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - /packages/core/src/DropdownMenu/DropdownMenuItem.tsx
|
|
17
17
|
* - /packages/core/src/DropdownMenu/DropdownMenuCheckboxItem.tsx
|
|
18
18
|
* - /packages/core/src/DropdownMenu/DropdownMenuRadioItem.tsx
|
|
19
|
+
* - /packages/core/src/DropdownMenu/DropdownMenuSubMenu.tsx
|
|
19
20
|
*/
|
|
20
21
|
/**
|
|
21
22
|
* Move focus to a menu item as the pointer moves over it, so hover and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderDropdownItems.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/renderDropdownItems.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"renderDropdownItems.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/renderDropdownItems.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAYrC,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AAyBxB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAwE1E"}
|
|
@@ -12,6 +12,7 @@ import { DropdownMenuItem } from "./DropdownMenuItem.js";
|
|
|
12
12
|
import { DropdownMenuSubMenu } from "./DropdownMenuSubMenu.js";
|
|
13
13
|
import "../theme/tokens.stylex.js";
|
|
14
14
|
import { spacingVars, typographyVars, typeScaleVars, colorVars } from "../theme/tokens.stylex.js";
|
|
15
|
+
import { mergeProps, themeProps } from "../utils/index.js";
|
|
15
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
17
|
const styles = {
|
|
17
18
|
divider: {
|
|
@@ -36,17 +37,18 @@ export function renderDropdownItems(items) {
|
|
|
36
37
|
const option = items[i];
|
|
37
38
|
if ('type' in option && option.type === 'divider') {
|
|
38
39
|
elements.push(/*#__PURE__*/_jsx(Divider, {
|
|
39
|
-
xstyle: styles.divider
|
|
40
|
+
xstyle: styles.divider,
|
|
41
|
+
...themeProps('dropdown-menu-divider')
|
|
40
42
|
}, `divider-${i}`));
|
|
41
43
|
} else if ('type' in option && option.type === 'section') {
|
|
42
44
|
elements.push(/*#__PURE__*/_jsxs("div", {
|
|
43
45
|
role: "group",
|
|
44
46
|
"aria-label": option.title,
|
|
45
47
|
children: [option.title && /*#__PURE__*/_jsx("div", {
|
|
46
|
-
...{
|
|
47
|
-
className: "xu0wf1k xf314gf x9ynric x141an7d x1ltkj2j xv1l7n4 x87ps6o"
|
|
48
|
-
},
|
|
49
48
|
"aria-hidden": "true",
|
|
49
|
+
...mergeProps(themeProps('dropdown-menu-section-heading'), {
|
|
50
|
+
className: "xu0wf1k xf314gf x9ynric x141an7d x1ltkj2j xv1l7n4 x87ps6o"
|
|
51
|
+
}),
|
|
50
52
|
children: option.title
|
|
51
53
|
}), option.items.map(item => /*#__PURE__*/_jsx(DropdownMenuItem, {
|
|
52
54
|
icon: item.icon,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file FieldLabel.tsx
|
|
3
|
-
* @input Uses React, Icon, IconType
|
|
3
|
+
* @input Uses React, Icon, IconType, useTranslator
|
|
4
4
|
* @output Exports FieldLabel component, FieldLabelProps
|
|
5
5
|
* @position Core label implementation; used by Field, CheckboxInput, Switch
|
|
6
6
|
*
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - /packages/core/src/Field/Field.doc.mjs (props table, features, implementation notes)
|
|
9
9
|
* - /packages/core/src/Field/index.ts (exports if types change)
|
|
10
10
|
* - /packages/cli/templates/blocks/components/Field/ (showcase blocks)
|
|
11
|
+
* - /packages/core/locales/en.json (@astryx.field.required / @astryx.field.optional)
|
|
11
12
|
*/
|
|
12
13
|
import type { ReactNode } from 'react';
|
|
13
14
|
import type { BaseProps } from '../BaseProps';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldLabel.d.ts","sourceRoot":"","sources":["../../src/Field/FieldLabel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FieldLabel.d.ts","sourceRoot":"","sources":["../../src/Field/FieldLabel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAU5C,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAmD5D,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IAClE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAoB,EACpB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACR,EAAE,eAAe,+BA+DjB;yBAjFe,UAAU"}
|
package/dist/Field/FieldLabel.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* @file FieldLabel.tsx
|
|
5
|
-
* @input Uses React, Icon, IconType
|
|
7
|
+
* @input Uses React, Icon, IconType, useTranslator
|
|
6
8
|
* @output Exports FieldLabel component, FieldLabelProps
|
|
7
9
|
* @position Core label implementation; used by Field, CheckboxInput, Switch
|
|
8
10
|
*
|
|
@@ -10,14 +12,15 @@
|
|
|
10
12
|
* - /packages/core/src/Field/Field.doc.mjs (props table, features, implementation notes)
|
|
11
13
|
* - /packages/core/src/Field/index.ts (exports if types change)
|
|
12
14
|
* - /packages/cli/templates/blocks/components/Field/ (showcase blocks)
|
|
15
|
+
* - /packages/core/locales/en.json (@astryx.field.required / @astryx.field.optional)
|
|
13
16
|
*/
|
|
14
|
-
|
|
15
17
|
import * as stylex from '@stylexjs/stylex';
|
|
16
18
|
import { mergeProps } from "../utils/index.js";
|
|
17
19
|
import "../theme/tokens.stylex.js";
|
|
18
20
|
import { colorVars, fontWeightVars, spacingVars, typographyVars, typeScaleVars } from "../theme/tokens.stylex.js";
|
|
19
21
|
import { Icon, renderIconSlot } from "../Icon/index.js";
|
|
20
22
|
import { Tooltip } from "../Tooltip/index.js";
|
|
23
|
+
import { useTranslator } from "../i18n/index.js";
|
|
21
24
|
import { themeProps } from "../utils/themeProps.js";
|
|
22
25
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
23
26
|
const styles = {
|
|
@@ -87,7 +90,8 @@ export function FieldLabel({
|
|
|
87
90
|
ref,
|
|
88
91
|
...rest
|
|
89
92
|
}) {
|
|
90
|
-
const
|
|
93
|
+
const t = useTranslator();
|
|
94
|
+
const statusText = isOptional ? t('@astryx.field.optional') : isRequired ? t('@astryx.field.required') : null;
|
|
91
95
|
|
|
92
96
|
// A group label (e.g. for a radiogroup) must not be a literal `<label>`
|
|
93
97
|
// element: a `<label>` semantically names a single form control and can't be
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldStatus.d.ts","sourceRoot":"","sources":["../../src/FieldStatus/FieldStatus.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAU5C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAoEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,eAAe,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,IAAI,EACJ,OAAO,EACP,EAAE,EACF,OAAoB,EACpB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"FieldStatus.d.ts","sourceRoot":"","sources":["../../src/FieldStatus/FieldStatus.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAU5C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAoEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,eAAe,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,IAAI,EACJ,OAAO,EACP,EAAE,EACF,OAAoB,EACpB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,gBAAgB,qBAsDlB;yBAhEe,WAAW"}
|
|
@@ -48,8 +48,8 @@ const styles = {
|
|
|
48
48
|
kLKAdn: "x1ak3mig",
|
|
49
49
|
kGO01o: "x1wesfrj",
|
|
50
50
|
kg3NbH: "xf314gf",
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
kVL7Gh: "xquck67",
|
|
52
|
+
kT0f0o: "x14i3lts",
|
|
53
53
|
$$css: true
|
|
54
54
|
},
|
|
55
55
|
detached: {
|
|
@@ -172,6 +172,16 @@ export function FieldStatus({
|
|
|
172
172
|
icon: statusIconMap[type],
|
|
173
173
|
size: "sm",
|
|
174
174
|
color: "inherit"
|
|
175
|
+
// Stable theme target on the detached message box's leading glyph
|
|
176
|
+
// itself, so a theme can restyle just this icon (color, size) —
|
|
177
|
+
// and each status — via `defineTheme`. Same-element rules in
|
|
178
|
+
// @layer astryx-theme win over the icon's own base
|
|
179
|
+
// width/height/fontSize, which a field-level target could not
|
|
180
|
+
// reach.
|
|
181
|
+
,
|
|
182
|
+
...themeProps('field-status-icon', {
|
|
183
|
+
type
|
|
184
|
+
})
|
|
175
185
|
})
|
|
176
186
|
}), /*#__PURE__*/_jsx("span", {
|
|
177
187
|
children: message
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/Heading/Heading.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/Heading/Heading.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAElE,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,CAAC,kBAAkB,CAAC,EAC7B,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpC;;;OAGG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,kBAAkB,EAClB,KAAiB,EACjB,OAAiB,EACjB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,YAAY,+BAmFd;yBAtGe,OAAO"}
|