@astryxdesign/core 0.7.9-canary.dd5ca29 → 0.7.9-canary.ddb8b34

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.
Files changed (72) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +3 -2
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +11 -14
  4. package/dist/Button/Button.d.ts.map +1 -1
  5. package/dist/Button/Button.js +11 -2
  6. package/dist/ButtonGroup/ButtonGroup.d.ts +2 -1
  7. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  8. package/dist/ButtonGroup/ButtonGroup.js +28 -5
  9. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  10. package/dist/DropdownMenu/DropdownMenu.js +17 -7
  11. package/dist/Icon/index.d.ts +4 -0
  12. package/dist/Icon/index.d.ts.map +1 -1
  13. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  14. package/dist/MultiSelector/hooks.js +28 -28
  15. package/dist/TabList/TabList.d.ts.map +1 -1
  16. package/dist/TabList/TabList.js +1 -0
  17. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +2 -1
  18. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  19. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +27 -5
  20. package/dist/Toast/Toast.js +4 -4
  21. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  22. package/dist/Toast/ToastViewport.js +61 -3
  23. package/dist/astryx.css +8 -1
  24. package/dist/hooks/actionGroupTracker.d.ts +9 -0
  25. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  26. package/dist/hooks/actionGroupTracker.js +38 -24
  27. package/dist/hooks/pressGroupContext.d.ts +5 -3
  28. package/dist/hooks/pressGroupContext.d.ts.map +1 -1
  29. package/dist/hooks/pressGroupContext.js +17 -9
  30. package/dist/hooks/useActionGroupTracking.d.ts +29 -4
  31. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -1
  32. package/dist/hooks/useActionGroupTracking.js +92 -14
  33. package/dist/hooks/useGroupPressTracking.d.ts +34 -0
  34. package/dist/hooks/useGroupPressTracking.d.ts.map +1 -0
  35. package/dist/hooks/useGroupPressTracking.js +122 -0
  36. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +8 -5
  37. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -1
  38. package/dist/privateAttributes/pressGroupItem.stylex.js +11 -5
  39. package/dist/utils/hitArea.d.ts +28 -2
  40. package/dist/utils/hitArea.d.ts.map +1 -1
  41. package/dist/utils/hitArea.js +49 -11
  42. package/dist/utils/touchHitArea.d.ts +25 -6
  43. package/dist/utils/touchHitArea.d.ts.map +1 -1
  44. package/dist/utils/touchHitArea.js +22 -12
  45. package/dist/utils/touchHitArea.stylex.d.ts +29 -5
  46. package/dist/utils/touchHitArea.stylex.d.ts.map +1 -1
  47. package/dist/utils/touchHitArea.stylex.js +37 -6
  48. package/package.json +4 -4
  49. package/src/AlertDialog/AlertDialog.tsx +9 -13
  50. package/src/Button/Button.tsx +17 -2
  51. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -2
  52. package/src/ButtonGroup/ButtonGroup.tsx +28 -4
  53. package/src/Calendar/useCalendarDays.doc.mjs +158 -0
  54. package/src/DropdownMenu/DropdownMenu.tsx +16 -9
  55. package/src/Icon/index.ts +2 -0
  56. package/src/MultiSelector/hooks.ts +28 -35
  57. package/src/MultiSelector/useMultiCombobox.doc.mjs +2 -2
  58. package/src/TabList/TabList.tsx +1 -0
  59. package/src/Table/Table.doc.mjs +15 -0
  60. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +32 -7
  61. package/src/Table/plugins/sortable/useTableSortableState.doc.mjs +173 -0
  62. package/src/Toast/Toast.doc.mjs +14 -0
  63. package/src/Toast/Toast.tsx +2 -2
  64. package/src/Toast/ToastViewport.tsx +40 -0
  65. package/src/hooks/actionGroupTracker.ts +33 -24
  66. package/src/hooks/pressGroupContext.ts +18 -9
  67. package/src/hooks/useActionGroupTracking.ts +139 -19
  68. package/src/hooks/useGroupPressTracking.ts +154 -0
  69. package/src/privateAttributes/pressGroupItem.stylex.ts +11 -5
  70. package/src/utils/hitArea.ts +88 -8
  71. package/src/utils/touchHitArea.stylex.ts +29 -19
  72. package/src/utils/touchHitArea.ts +60 -12
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * @file AlertDialog.tsx
3
3
  * @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button, the
4
- * action-group tracking (hooks/useActionGroupTracking) and the press-group
5
- * marker (privateAttributes/pressGroupItem.stylex)
4
+ * action-group tracking (hooks/useActionGroupTracking), the press-group
5
+ * context (hooks/pressGroupContext) and the group pointers
6
+ * (hooks/useGroupPressTracking)
6
7
  * @output Exports AlertDialog component, AlertDialogProps type
7
8
  * @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
8
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAmC,MAAM,OAAO,CAAC;AAUxD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsC5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,WAAW,EACX,WAAW,EAAE,oBAAoB,EACjC,WAAW,EACX,aAA6B,EAC7B,eAAe,EACf,QAAQ,EACR,KAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,gBAAgB,qBAsHlB;yBAxIe,WAAW"}
1
+ {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAmC,MAAM,OAAO,CAAC;AAUxD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAmC5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,WAAW,EACX,WAAW,EAAE,oBAAoB,EACjC,WAAW,EACX,aAA6B,EAC7B,eAAe,EACf,QAAQ,EACR,KAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,gBAAgB,qBAoHlB;yBAtIe,WAAW"}
@@ -5,8 +5,9 @@
5
5
  /**
6
6
  * @file AlertDialog.tsx
7
7
  * @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button, the
8
- * action-group tracking (hooks/useActionGroupTracking) and the press-group
9
- * marker (privateAttributes/pressGroupItem.stylex)
8
+ * action-group tracking (hooks/useActionGroupTracking), the press-group
9
+ * context (hooks/pressGroupContext) and the group pointers
10
+ * (hooks/useGroupPressTracking)
10
11
  * @output Exports AlertDialog component, AlertDialogProps type
11
12
  * @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
12
13
  *
@@ -36,12 +37,10 @@ import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComp
36
37
  import english from "../i18n/generated-english/AlertDialog/AlertDialog.generated.js";
37
38
  import { useActionGroupTracking } from "../hooks/useActionGroupTracking.js";
38
39
  import { PressGroupContext } from "../hooks/pressGroupContext.js";
40
+ import { GROUP_PRESS_POINTERS } from "../hooks/useGroupPressTracking.js";
39
41
  import { alertController } from "../motion/uikit/alert.js";
40
- import { pressGroupItemProps } from "../privateAttributes/pressGroupItem.stylex.js";
41
42
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
42
43
  registerEnglishFallback(english);
43
- const SLIDING_POINTERS = ['touch', 'pen'];
44
- const ACTION_TRACKING_PROPS = pressGroupItemProps(SLIDING_POINTERS);
45
44
  const SMALL_SCREEN_QUERY = '(max-width: 640px)';
46
45
  const styles = {
47
46
  trackingRow: {
@@ -115,8 +114,8 @@ export function AlertDialog({
115
114
  onOpenChange(false);
116
115
  }, [onOpenChange]);
117
116
 
118
- // Each action carries the press-group marker from its first render, so the
119
- // tracker is its only painter.
117
+ // Through the group's context, each action's Button writes the press-group
118
+ // marker from its first render. So the tracker is its only painter.
120
119
  const actionsRef = useRef(null);
121
120
  // Only under the touch presentation does a press slide across the
122
121
  // actions. A desktop press stays the native button's.
@@ -130,21 +129,20 @@ export function AlertDialog({
130
129
  highlightOnsetMs: alertController.actions.highlightOnsetMs,
131
130
  highlightExpansion: alertController.actions.highlightExpansion,
132
131
  // A mouse press acts as a native button's under any presentation.
133
- pointerTypes: SLIDING_POINTERS,
132
+ pointerTypes: GROUP_PRESS_POINTERS,
134
133
  isEnabled: isTracking
135
134
  });
136
- const actionTrackingProps = isTracking ? ACTION_TRACKING_PROPS : undefined;
137
135
  const buttonActionStyle = [styles.action, isSmallScreen && styles.stackedAction];
138
136
  const cancelButton = /*#__PURE__*/_jsx(Button, {
139
137
  variant: "ghost",
140
138
  label: cancelLabel,
141
139
  onClick: handleCancel,
142
- xstyle: buttonActionStyle,
143
- ...actionTrackingProps,
140
+ xstyle: buttonActionStyle
144
141
  // Dialog focuses [data-autofocus] itself after showModal(), because
145
142
  // React's autoFocus runs during commit while the dialog is invisible.
146
143
  // Cancel is least destructive, so it remains the autofocus target even
147
144
  // when small-screen visual order places the destructive action above it.
145
+ ,
148
146
  "data-autofocus": true
149
147
  }, "cancel");
150
148
  const actionButton = /*#__PURE__*/_jsx(Button, {
@@ -152,8 +150,7 @@ export function AlertDialog({
152
150
  label: actionLabel,
153
151
  onClick: onAction,
154
152
  isLoading: isActionLoading,
155
- xstyle: buttonActionStyle,
156
- ...actionTrackingProps
153
+ xstyle: buttonActionStyle
157
154
  }, "action");
158
155
  return /*#__PURE__*/_jsx(Dialog, {
159
156
  ...rest,
@@ -200,7 +197,7 @@ export function AlertDialog({
200
197
  hAlign: isSmallScreen ? 'stretch' : 'end',
201
198
  wrap: isSmallScreen ? 'nowrap' : 'wrap',
202
199
  children: /*#__PURE__*/_jsx(PressGroupContext, {
203
- value: isTracking,
200
+ value: isTracking ? GROUP_PRESS_POINTERS : null,
204
201
  children: isSmallScreen ? [actionButton, cancelButton] : [cancelButton, actionButton]
205
202
  })
206
203
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ import { iconBoxSizeStyles } from "../Icon/IconSize.stylex.js";
30
30
  import { EDGE_COMP_ATTR } from "../Layout/edgeCompensation.stylex.js";
31
31
  import { useSize } from "../SizeContext/SizeContext.js";
32
32
  import { useButtonGroup } from "../ButtonGroup/ButtonGroupContext.js";
33
- import { PressGroupContext } from "../hooks/pressGroupContext.js";
33
+ import { PressGroupContext, pressGroupItemProps } from "../hooks/pressGroupContext.js";
34
34
  import { useInputGroup } from "../InputGroup/InputGroupContext.js";
35
35
  import { InputGroupInternalContext } from "../InputGroup/InputGroupInternalContext.js";
36
36
  import { groupStyles as inputGroupStyles, inputGroupItemProps } from "../InputGroup/groupStyles.js";
@@ -53,6 +53,9 @@ registerEnglishFallback(english);
53
53
  */
54
54
  const PRESSED_ON = '[data-astryx-press="on"]';
55
55
 
56
+ /** `aria-haspopup` values of a trigger that keeps its own press and opening. */
57
+ const MENU_POPUPS = new Set(['true', 'menu', 'listbox']);
58
+
56
59
  /**
57
60
  * Base button styles
58
61
  * Pseudo-classes are nested within properties per StyleX recommendation:
@@ -396,7 +399,11 @@ export function Button({
396
399
  const t = useComponentTranslator();
397
400
  const size = useSize(sizeProp, 'md');
398
401
  const buttonGroup = useButtonGroup();
399
- const isGroupTracked = use(PressGroupContext);
402
+ // A tracking group's tracker paints this button's pointer press. A menu
403
+ // trigger is not tracked: it keeps its own press and opening.
404
+ const groupPointers = use(PressGroupContext);
405
+ const groupItemProps = groupPointers != null && !MENU_POPUPS.has(String(props['aria-haspopup'])) ? pressGroupItemProps(groupPointers) : undefined;
406
+ const isGroupTracked = groupItemProps != null;
400
407
  const inputGroup = useInputGroup();
401
408
  const [isPending, startTransition] = useTransition();
402
409
  // clickAction is normally fire-once (submit/save/pay), so a same-tick
@@ -611,6 +618,7 @@ export function Button({
611
618
  ...(inputGroup != null && buttonGroup == null ? inputGroupItemProps : undefined),
612
619
  ...sharedMergedProps,
613
620
  ...pressFeedback,
621
+ ...groupItemProps,
614
622
  ...props,
615
623
  ...ariaLabelProp,
616
624
  ...describedByProp,
@@ -633,6 +641,7 @@ export function Button({
633
641
  ...(inputGroup != null && buttonGroup == null ? inputGroupItemProps : undefined),
634
642
  ...sharedMergedProps,
635
643
  ...pressFeedback,
644
+ ...groupItemProps,
636
645
  ...props,
637
646
  ...ariaLabelProp,
638
647
  ...describedByProp,
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @file ButtonGroup.tsx
3
- * @input Uses React, StyleX, Button/IconButton children
3
+ * @input Uses React, StyleX, Button/IconButton children, and the shared group
4
+ * press tracking (hooks/useGroupPressTracking)
4
5
  * @output Exports ButtonGroup component, context, and types
5
6
  * @position Groups buttons with connected styling; consumed by index.ts
6
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAI9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAQjE,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAErC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAwCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAA0B,EAC1B,IAAI,EAAE,QAAQ,EACd,UAAkB,EAClB,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,SAAS,CAoD9B;yBAnEe,WAAW"}
1
+ {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAkB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAW9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAQjE,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAErC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAA0B,EAC1B,IAAI,EAAE,QAAQ,EACd,UAAkB,EAClB,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,SAAS,CA+D9B;yBA9Ee,WAAW"}
@@ -4,7 +4,8 @@
4
4
 
5
5
  /**
6
6
  * @file ButtonGroup.tsx
7
- * @input Uses React, StyleX, Button/IconButton children
7
+ * @input Uses React, StyleX, Button/IconButton children, and the shared group
8
+ * press tracking (hooks/useGroupPressTracking)
8
9
  * @output Exports ButtonGroup component, context, and types
9
10
  * @position Groups buttons with connected styling; consumed by index.ts
10
11
  *
@@ -20,12 +21,16 @@
20
21
  * - /apps/storybook/stories/ButtonGroup.stories.tsx (storybook stories)
21
22
  * - /packages/cli/assets/templates/blocks/components/ButtonGroup/ (showcase blocks)
22
23
  */
23
- import { useMemo } from 'react';
24
+ import { useMemo, useRef } from 'react';
24
25
  import * as stylex from '@stylexjs/stylex';
25
26
  import "../theme/tokens.stylex.js";
26
27
  import { radiusVars, shadowVars } from "../theme/tokens.stylex.js";
27
28
  import { SizeProvider, useSize } from "../SizeContext/SizeContext.js";
28
29
  import { useListFocus } from "../hooks/useListFocus.js";
30
+ import { PressGroupContext } from "../hooks/pressGroupContext.js";
31
+ import { GROUP_PRESS_POINTERS, useGroupPressTracking } from "../hooks/useGroupPressTracking.js";
32
+ import { useTouchPresentation } from "../utils/touchPresentation.js";
33
+ import { touchHitAreaStyles } from "../utils/touchHitArea.stylex.js";
29
34
  import { mergeProps, composeEventHandlers } from "../utils/index.js";
30
35
  import { ButtonGroupContext } from "./ButtonGroupContext.js";
31
36
  import { themeProps } from "../utils/themeProps.js";
@@ -47,6 +52,10 @@ const styles = {
47
52
  vertical: {
48
53
  kXwgrk: "xdt5ytf",
49
54
  $$css: true
55
+ },
56
+ tracking: {
57
+ kVAEAm: "x1n2onr6",
58
+ $$css: true
50
59
  }
51
60
  };
52
61
 
@@ -154,25 +163,39 @@ export function ButtonGroup({
154
163
  orientation,
155
164
  isDisabled
156
165
  }), [orientation, isDisabled]);
166
+
167
+ // Only under the touch presentation does a press slide across the buttons.
168
+ // A desktop press stays the native button's.
169
+ const {
170
+ isTouch
171
+ } = useTouchPresentation();
172
+ const tracksPress = !isDisabled && isTouch;
173
+ const groupRef = useRef(null);
174
+ const {
175
+ hitAreaRef
176
+ } = useGroupPressTracking(groupRef, tracksPress);
157
177
  return /*#__PURE__*/_jsx(ButtonGroupContext, {
158
178
  value: contextValue,
159
179
  children: /*#__PURE__*/_jsx(SizeProvider, {
160
180
  value: size,
161
181
  children: /*#__PURE__*/_jsx("div", {
162
- ref: useMergedRefs(ref, listRef),
182
+ ref: useMergedRefs(ref, listRef, groupRef, hitAreaRef),
163
183
  ...props,
164
184
  ...mergeProps(themeProps('button-group', {
165
185
  size,
166
186
  orientation,
167
187
  elevation
168
- }), stylex.props(styles.group, orientation === 'vertical' && styles.vertical, elevationStyles[elevation], xstyle), className, style),
188
+ }), stylex.props(styles.group, tracksPress && styles.tracking, tracksPress && touchHitAreaStyles.layerBelowChildren, orientation === 'vertical' && styles.vertical, elevationStyles[elevation], xstyle), className, style),
169
189
  role: "group",
170
190
  "aria-label": label,
171
191
  onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),
172
192
  onFocus: composeEventHandlers(onFocus, handleFocus),
173
193
  "aria-disabled": isDisabled || undefined,
174
194
  "data-testid": testId,
175
- children: children
195
+ children: /*#__PURE__*/_jsx(PressGroupContext, {
196
+ value: tracksPress ? GROUP_PRESS_POINTERS : null,
197
+ children: children
198
+ })
176
199
  })
177
200
  })
178
201
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
@@ -53,6 +53,7 @@ import { useDropdownMenuPress } from "../hooks/useMenuPress.js";
53
53
  import { useTypeahead } from "../hooks/useTypeahead.js";
54
54
  import { useFocusReturnVisibility } from "../hooks/useFocusReturnVisibility.js";
55
55
  import { returnFocusForLastInput } from "../utils/focusReturn.js";
56
+ import { PressGroupContext } from "../hooks/pressGroupContext.js";
56
57
  import { useMenuOverflow } from "./useMenuOverflow.js";
57
58
  import { MenuRegionsContext } from "./menuRegionsContext.js";
58
59
  import { moveRegionsTab } from "./menuRegionStops.js";
@@ -1324,15 +1325,24 @@ export function DropdownMenu(props) {
1324
1325
  onOpenChange: handleOpenChange
1325
1326
  };
1326
1327
  if (resolvedPresentation === 'bottom-sheet' && 'items' in props && props.items !== undefined) {
1327
- return /*#__PURE__*/_jsx(DropdownMenuBottomSheet, {
1328
- ...sharedProps,
1329
- presentation: "bottom-sheet"
1328
+ return /*#__PURE__*/_jsx(PressGroupContext, {
1329
+ value: null,
1330
+ children: /*#__PURE__*/_jsx(DropdownMenuBottomSheet, {
1331
+ ...sharedProps,
1332
+ presentation: "bottom-sheet"
1333
+ })
1330
1334
  });
1331
1335
  }
1332
- return /*#__PURE__*/_jsx(DropdownMenuPopover, {
1333
- ...sharedProps,
1334
- presentation: "popover",
1335
- pressTouchModel: props.presentation === 'popover' ? 'pointer' : 'uikit'
1336
+
1337
+ // In a group that tracks presses, the trigger keeps its own press and
1338
+ // opening, whatever its `aria-haspopup`.
1339
+ return /*#__PURE__*/_jsx(PressGroupContext, {
1340
+ value: null,
1341
+ children: /*#__PURE__*/_jsx(DropdownMenuPopover, {
1342
+ ...sharedProps,
1343
+ presentation: "popover",
1344
+ pressTouchModel: props.presentation === 'popover' ? 'pointer' : 'uikit'
1345
+ })
1336
1346
  });
1337
1347
  }
1338
1348
  DropdownMenu.displayName = 'DropdownMenu';
@@ -66,6 +66,10 @@ export interface ComponentIconSlotMap {
66
66
  'table-sort-indicator': {
67
67
  readonly direction: 'ascending' | 'descending' | 'none';
68
68
  };
69
+ /** A Table row's expansion toggle (`useTableRowExpansion`), by whether the row is expanded. */
70
+ 'table-row-expand': {
71
+ readonly expanded: boolean;
72
+ };
69
73
  }
70
74
  /** A slot name from the augmentable {@link ComponentIconSlotMap}. */
71
75
  export type ComponentIconSlotName = keyof ComponentIconSlotMap & string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Icon/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,cAAc;CAAG;AAElC,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,cAAc,GAAG,MAAM,CAAC;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,iBAAiB,EAAE;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAC,CAAC;IAC9C,kGAAkG;IAClG,gBAAgB,EAAE;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAC,CAAC;IAC7C,gFAAgF;IAChF,sBAAsB,EAAE;QACtB,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;KACzD,CAAC;CACH;AAED,qEAAqE;AACrE,MAAM,MAAM,qBAAqB,GAAG,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAExE;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,GAAG,WAAW,IACnE,QAAQ,CAAC;IACP,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC,CAAC;AAEL;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,GAAG,WAAW,IACtE,QAAQ,GACR,IAAI,GACJ,oBAAoB,CAAC,OAAO,CAAC,GAC7B,CAAC,CACC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KACnB,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE3D,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,WAAW,IAAI;KAClE,IAAI,IAAI,qBAAqB,CAAC,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,IAAI,GACrE,QAAQ,GAAG,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAC/C,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CAC5D,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAC1C,MAAM,CAAC,qBAAqB,EAAE,QAAQ,GAAG,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAC9E,CAAC;AAEF,OAAO,EAAC,IAAI,EAAE,cAAc,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,YAAY,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAGrE,OAAO,EACL,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EACf,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,WAAW,GACZ,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Icon/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,cAAc;CAAG;AAElC,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,cAAc,GAAG,MAAM,CAAC;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,iBAAiB,EAAE;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAC,CAAC;IAC9C,kGAAkG;IAClG,gBAAgB,EAAE;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAC,CAAC;IAC7C,gFAAgF;IAChF,sBAAsB,EAAE;QACtB,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;KACzD,CAAC;IACF,+FAA+F;IAC/F,kBAAkB,EAAE;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAAC,CAAC;CAClD;AAED,qEAAqE;AACrE,MAAM,MAAM,qBAAqB,GAAG,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAExE;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,GAAG,WAAW,IACnE,QAAQ,CAAC;IACP,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC,CAAC;AAEL;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,GAAG,WAAW,IACtE,QAAQ,GACR,IAAI,GACJ,oBAAoB,CAAC,OAAO,CAAC,GAC7B,CAAC,CACC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KACnB,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE3D,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,WAAW,IAAI;KAClE,IAAI,IAAI,qBAAqB,CAAC,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,IAAI,GACrE,QAAQ,GAAG,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAC/C,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CAC5D,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAC1C,MAAM,CAAC,qBAAqB,EAAE,QAAQ,GAAG,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAC9E,CAAC;AAEF,OAAO,EAAC,IAAI,EAAE,cAAc,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,YAAY,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAGrE,OAAO,EACL,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EACf,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,WAAW,GACZ,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/hooks.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAGrD,UAAU,uBAAuB;IAC/B,eAAe,EAAE,uBAAuB,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,UAAU,sBAAsB;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,4EAA4E;IAC5E,eAAe,EAAE,iBAAiB,CAAC;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,iFAAiF;IACjF,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAChB,IAAI,EAAE,uBAAuB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,KACrB,IAAI,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,UAAkB,EAClB,MAAM,EACN,SAAiB,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,MAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,EAAE,uBAAuB,GAAG,sBAAsB,CAuSlD"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/hooks.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAGrD,UAAU,uBAAuB;IAC/B,eAAe,EAAE,uBAAuB,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,UAAU,sBAAsB;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,4EAA4E;IAC5E,eAAe,EAAE,iBAAiB,CAAC;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,iFAAiF;IACjF,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAChB,IAAI,EAAE,uBAAuB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,KACrB,IAAI,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,UAAkB,EAClB,MAAM,EACN,SAAiB,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,MAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,EAAE,uBAAuB,GAAG,sBAAsB,CAgSlD"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file hooks.ts
7
- * @input Uses React hooks, MultiSelectorOptionData type
7
+ * @input Uses React hooks, the shared useTypeahead hook, MultiSelectorOptionData type
8
8
  * @output Exports useMultiCombobox hook
9
9
  * @position Public hook, exported from the MultiSelector entry point; used by
10
10
  * MultiSelector.tsx
@@ -13,10 +13,10 @@
13
13
  * - /packages/core/src/MultiSelector/index.ts
14
14
  * - /packages/core/src/MultiSelector/useMultiCombobox.doc.mjs
15
15
  */
16
- import { useCallback, useRef, useState } from 'react';
16
+ import { useCallback, useState } from 'react';
17
17
  import { isRtlElement } from "../hooks/isRtlElement.js";
18
18
  import { useHighlightedOptionScroll } from "../hooks/useHighlightedOptionScroll.js";
19
- import { findTypeaheadMatch } from "../utils/typeaheadMatch.js";
19
+ import { useTypeahead } from "../hooks/useTypeahead.js";
20
20
 
21
21
  /** Which cell of the highlighted row the highlight is on. */
22
22
 
@@ -48,8 +48,19 @@ export function useMultiCombobox({
48
48
  setHighlightedIndexState(index);
49
49
  setHighlightedCell('option');
50
50
  }, []);
51
- const [typeahead, setTypeahead] = useState('');
52
- const typeaheadTimeoutRef = useRef(undefined);
51
+
52
+ // A match on the closed control opens the list on that option.
53
+ const typeahead = useTypeahead({
54
+ getItemLabels: () => selectableItems.map(item => item.label),
55
+ isDisabled: index => selectableItems[index]?.disabled === true,
56
+ getCurrentIndex: () => isOpen ? highlightedIndex : -1,
57
+ onMatch: index => {
58
+ if (isOpen || onOpen() !== false) {
59
+ setHighlightedIndex(index);
60
+ }
61
+ }
62
+ });
63
+ const resetTypeahead = typeahead.reset;
53
64
  const getItemId = useCallback(index => `${listboxId}-item-${index}`, [listboxId]);
54
65
  const getActionCellId = useCallback(index => `${listboxId}-item-${index}-action`, [listboxId]);
55
66
  const activeDescendantId = isOpen && highlightedIndex >= 0 ? isGrid && highlightedCell === 'action' ? getActionCellId(highlightedIndex) : getItemId(highlightedIndex) : undefined;
@@ -57,9 +68,11 @@ export function useMultiCombobox({
57
68
  return selectableItems.map((item, i) => !item.disabled ? i : -1).filter(i => i >= 0);
58
69
  }, [selectableItems]);
59
70
  const closeAndReset = useCallback(() => {
71
+ // Clear the typed prefix on close. Otherwise the next key extends it.
72
+ resetTypeahead();
60
73
  setHighlightedIndex(-1);
61
74
  onClose();
62
- }, [onClose, setHighlightedIndex]);
75
+ }, [onClose, resetTypeahead, setHighlightedIndex]);
63
76
  const onTriggerClick = useCallback(() => {
64
77
  if (isDisabled) {
65
78
  return;
@@ -97,6 +110,14 @@ export function useMultiCombobox({
97
110
  if (isDisabled) {
98
111
  return;
99
112
  }
113
+
114
+ // With hasSearch the query input owns typing, so type-to-select is off.
115
+ // Space stays the toggle: after a letter jumps to an option, Space picks
116
+ // it, so Space never extends the typed prefix here.
117
+ if (!hasSearch && e.key !== ' ' && typeahead.onKeyDown(e)) {
118
+ e.preventDefault();
119
+ return;
120
+ }
100
121
  const enabledIndices = getEnabledIndices();
101
122
 
102
123
  // In a grid the horizontal arrows move between the row's two cells,
@@ -222,29 +243,8 @@ export function useMultiCombobox({
222
243
  onClear();
223
244
  }
224
245
  break;
225
- default:
226
- // Typeahead only when search is not present
227
- if (!hasSearch && e.key.length === 1 && !e.ctrlKey && !e.metaKey) {
228
- const newTypeahead = typeahead + e.key;
229
- // INV17: the shared type-to-select fold, as Selector uses.
230
- const matchIndex = findTypeaheadMatch(selectableItems.flatMap((item, i) => item.disabled ? [] : [i]), i => selectableItems[i].label, newTypeahead);
231
- const didOpen = isOpen || matchIndex < 0 || onOpen() !== false;
232
- if (didOpen) {
233
- setTypeahead(newTypeahead);
234
- if (typeaheadTimeoutRef.current) {
235
- clearTimeout(typeaheadTimeoutRef.current);
236
- }
237
- typeaheadTimeoutRef.current = setTimeout(() => {
238
- setTypeahead('');
239
- }, 500);
240
- if (matchIndex >= 0) {
241
- setHighlightedIndex(matchIndex);
242
- }
243
- }
244
- }
245
- break;
246
246
  }
247
- }, [isDisabled, isOpen, onOpen, closeAndReset, selectableItems, highlightedIndex, highlightedCell, isGrid, rowHasAction, onActivateAction, setHighlightedIndex, onToggle, getEnabledIndices, typeahead, hasSearch, onClear, hasValue]);
247
+ }, [isDisabled, isOpen, onOpen, closeAndReset, selectableItems, highlightedIndex, highlightedCell, isGrid, rowHasAction, onActivateAction, setHighlightedIndex, onToggle, getEnabledIndices, hasSearch, typeahead, onClear, hasValue]);
248
248
  return {
249
249
  highlightedIndex,
250
250
  setHighlightedIndex,
@@ -1 +1 @@
1
- {"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../src/TabList/TabList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAQlD,OAAO,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AA4BjE;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAC5E,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAuND;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,GAAG,EACH,KAAK,EACL,QAAQ,EACR,IAAI,EAAE,QAAQ,EACd,MAAc,EACd,UAAkB,EAClB,WAAmB,EACnB,IAAI,EACJ,QAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,kBAAkB,EAChC,iBAAiB,EAAE,cAAc,EACjC,kBAAkB,EAAE,gBAAgB,EACpC,CAAC,cAAc,CAAC,EAAE,aAAa,EAC/B,GAAG,SAAS,EACb,EAAE,YAAY,qBA+Vd;yBArXe,OAAO"}
1
+ {"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../src/TabList/TabList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAQlD,OAAO,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AA4BjE;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAC5E,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAuND;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,GAAG,EACH,KAAK,EACL,QAAQ,EACR,IAAI,EAAE,QAAQ,EACd,MAAc,EACd,UAAkB,EAClB,WAAmB,EACnB,IAAI,EACJ,QAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,kBAAkB,EAChC,iBAAiB,EAAE,cAAc,EACjC,kBAAkB,EAAE,gBAAgB,EACpC,CAAC,cAAc,CAAC,EAAE,aAAa,EAC/B,GAAG,SAAS,EACb,EAAE,YAAY,qBAgWd;yBAtXe,OAAO"}
@@ -313,6 +313,7 @@ export function TabList({
313
313
  handleFocus
314
314
  } = useListFocus({
315
315
  itemSelector: TAB_STOP_SELECTOR,
316
+ boundarySelector: '.astryx-tab-list, [popover]',
316
317
  orientation: isTabList ? 'horizontal' : 'both',
317
318
  hasRovingTabIndex: true
318
319
  });
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @file useTableRowExpansion.tsx
3
- * @input React, StyleX, Icon, Table types, table context (density), i18n
3
+ * @input React, StyleX, Icon, the theme's `table-row-expand` icon slot, Table
4
+ * types, table context (density), i18n
4
5
  * (useComponentTranslator)
5
6
  * @output Exports useTableRowExpansion hook + config type
6
7
  * @position Row-expansion plugin (detail panel); consumed by Table via plugins prop
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRowExpansion.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/rowExpansion/useTableRowExpansion.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAKL,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EACV,WAAW,EAMZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,gCAAgC,CAAC;AAoBxC;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3E,0CAA0C;IAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B;;;OAGG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IACvC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IACvC;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAqaD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACpC,WAAW,CAAC,CAAC,CAAC,CAyfhB"}
1
+ {"version":3,"file":"useTableRowExpansion.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/rowExpansion/useTableRowExpansion.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAKL,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAwBf,OAAO,KAAK,EACV,WAAW,EAMZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,gCAAgC,CAAC;AAoBxC;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3E,0CAA0C;IAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B;;;OAGG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IACvC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IACvC;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AA2bD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACpC,WAAW,CAAC,CAAC,CAAC,CAyfhB"}
@@ -4,7 +4,8 @@
4
4
 
5
5
  /**
6
6
  * @file useTableRowExpansion.tsx
7
- * @input React, StyleX, Icon, Table types, table context (density), i18n
7
+ * @input React, StyleX, Icon, the theme's `table-row-expand` icon slot, Table
8
+ * types, table context (density), i18n
8
9
  * (useComponentTranslator)
9
10
  * @output Exports useTableRowExpansion hook + config type
10
11
  * @position Row-expansion plugin (detail panel); consumed by Table via plugins prop
@@ -26,6 +27,8 @@ import { tableRowMarker } from "../../table.stylex.js";
26
27
  import { panelDividerFor } from "../../rowDivider.js";
27
28
  import { useTheme, useThemeName } from "../../../theme/useTheme.js";
28
29
  import { Icon } from "../../../Icon/index.js";
30
+ import { ComponentIcon } from "../../../Icon/ComponentIcon.js";
31
+ import { iconBoxSizeStyles } from "../../../Icon/IconSize.stylex.js";
29
32
  import { VisuallyHidden } from "../../../VisuallyHidden/index.js";
30
33
  import { resolveContextActions } from "../../tableContextMenu.js";
31
34
  import { useTableContext } from "../../useTableCellStyles.js";
@@ -94,6 +97,12 @@ const expansionStyles = {
94
97
  kTIkBA: "xy5bzlh",
95
98
  $$css: true
96
99
  },
100
+ glyphBox: {
101
+ k1xSpc: "x1rg5ohu",
102
+ kVAEAm: "x1n2onr6",
103
+ kmuXW: "x2lah0s",
104
+ $$css: true
105
+ },
97
106
  chevron: {
98
107
  k1ekBW: "x11xpdln",
99
108
  kIyJzY: "xuedmi6",
@@ -243,10 +252,23 @@ function ExpansionChevron({
243
252
  },
244
253
  "aria-label": ariaLabel,
245
254
  "aria-expanded": isExpanded,
246
- children: /*#__PURE__*/_jsx(Icon, {
247
- icon: "chevronRight",
248
- size: "xsm",
249
- xstyle: [expansionStyles.chevron, isExpanded ? expansionStyles.chevronExpanded : expansionStyles.chevronCollapsed]
255
+ children: /*#__PURE__*/_jsx("span", {
256
+ ...stylex.props(expansionStyles.glyphBox, iconBoxSizeStyles.xsm, expansionStyles.chevron, isExpanded ? expansionStyles.chevronExpanded : expansionStyles.chevronCollapsed),
257
+ children: /*#__PURE__*/_jsx("span", {
258
+ ...{
259
+ className: "x10l6tqk x10a8y8t x78zum5 x6s0dn4 xl56j7k"
260
+ },
261
+ children: /*#__PURE__*/_jsx(ComponentIcon, {
262
+ slot: "table-row-expand",
263
+ state: {
264
+ expanded: isExpanded
265
+ },
266
+ fallback: {
267
+ icon: 'chevronRight',
268
+ size: 'xsm'
269
+ }
270
+ })
271
+ })
250
272
  })
251
273
  });
252
274
  }
@@ -251,16 +251,16 @@ export function ToastSurface({
251
251
  type
252
252
  }), {
253
253
  0: {
254
- className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x1i7u4iq x9ynric xjm74w1 xw6l6zx x1qk3xlt x6o7n8i xuedmi6 xsagj69 xlr8y92 x4itv7f x6s140c xenstv7"
254
+ className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x1i7u4iq x9ynric xjm74w1 xw6l6zx x1qk3xlt x6o7n8i xuedmi6 xsagj69 xlr8y92 xtx6xzi xy87v36 xenstv7"
255
255
  },
256
256
  2: {
257
- className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x1i7u4iq x9ynric xjm74w1 xw6l6zx x1qk3xlt x6o7n8i xuedmi6 xsagj69 xlr8y92 x4itv7f x6s140c x1l5t2a3"
257
+ className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x1i7u4iq x9ynric xjm74w1 xw6l6zx x1qk3xlt x6o7n8i xuedmi6 xsagj69 xlr8y92 xtx6xzi xy87v36 x1l5t2a3"
258
258
  },
259
259
  1: {
260
- className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x9ynric xjm74w1 xw6l6zx x6o7n8i xuedmi6 xsagj69 xlr8y92 x4itv7f x6s140c xenstv7 xg01cxk x149p1fo"
260
+ className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x9ynric xjm74w1 xw6l6zx x6o7n8i xuedmi6 xsagj69 xlr8y92 xtx6xzi xy87v36 xenstv7 xg01cxk x149p1fo"
261
261
  },
262
262
  3: {
263
- className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x9ynric xjm74w1 xw6l6zx x6o7n8i xuedmi6 xsagj69 xlr8y92 x4itv7f x6s140c x1l5t2a3 xg01cxk x149p1fo"
263
+ className: "x1na6nto x1pzlopt x1hviunn x9f619 x1l2rt3b x193iq5w x14hfi27 x9ynric xjm74w1 xw6l6zx x6o7n8i xuedmi6 xsagj69 xlr8y92 xtx6xzi xy87v36 x1l5t2a3 xg01cxk x149p1fo"
264
264
  }
265
265
  }[!!isError << 1 | !!isExiting << 0]),
266
266
  children: /*#__PURE__*/_jsx(MediaTheme, {
@@ -1 +1 @@
1
- {"version":3,"file":"ToastViewport.d.ts","sourceRoot":"","sources":["../../src/Toast/ToastViewport.tsx"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAAa,aAAa,EAAqB,MAAM,SAAS,CAAC;AAG3E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAwItD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACtE;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAiHD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAsB,EACtB,UAAc,EACd,KAAK,EACL,UAAU,EACV,UAAiB,EACjB,QAAQ,GACT,EAAE,kBAAkB,+BA6lBpB;yBApmBe,aAAa"}
1
+ {"version":3,"file":"ToastViewport.d.ts","sourceRoot":"","sources":["../../src/Toast/ToastViewport.tsx"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAAa,aAAa,EAAqB,MAAM,SAAS,CAAC;AAG3E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAkJtD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACtE;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AA+ID;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAsB,EACtB,UAAc,EACd,KAAK,EACL,UAAU,EACV,UAAiB,EACjB,QAAQ,GACT,EAAE,kBAAkB,+BA6lBpB;yBApmBe,aAAa"}