@astryxdesign/core 0.7.9-canary.bb7702c → 0.7.9-canary.ca2b80b

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 (116) hide show
  1. package/dist/BottomSheet/BottomSheet.js +2 -2
  2. package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
  3. package/dist/BottomSheet/bottomSheetStack.js +4 -3
  4. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  5. package/dist/CheckboxInput/CheckboxInput.js +4 -9
  6. package/dist/Dialog/Dialog.d.ts.map +1 -1
  7. package/dist/Dialog/Dialog.js +2 -2
  8. package/dist/DropdownMenu/DropdownMenu.js +2 -4
  9. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  10. package/dist/InfoTip/InfoTip.js +5 -18
  11. package/dist/Item/Item.d.ts +18 -0
  12. package/dist/Item/Item.d.ts.map +1 -1
  13. package/dist/Item/Item.js +70 -25
  14. package/dist/Item/ItemListRowContext.d.ts +2 -0
  15. package/dist/Item/ItemListRowContext.d.ts.map +1 -0
  16. package/dist/Item/ItemListRowContext.js +16 -0
  17. package/dist/Layout/LayoutPanel.d.ts +10 -10
  18. package/dist/Layout/LayoutPanel.d.ts.map +1 -1
  19. package/dist/Layout/LayoutPanel.js +59 -7
  20. package/dist/List/List.d.ts.map +1 -1
  21. package/dist/List/List.js +1 -0
  22. package/dist/List/ListItem.d.ts +5 -4
  23. package/dist/List/ListItem.d.ts.map +1 -1
  24. package/dist/List/ListItem.js +45 -9
  25. package/dist/Markdown/parser.d.ts.map +1 -1
  26. package/dist/Markdown/parser.js +56 -39
  27. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  28. package/dist/MultiSelector/MultiSelector.js +6 -9
  29. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  30. package/dist/RadioList/RadioListItem.js +5 -10
  31. package/dist/Resizable/ResizeHandle.d.ts +5 -5
  32. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  33. package/dist/Resizable/ResizeHandle.js +44 -5
  34. package/dist/Resizable/resizablePane.d.ts +60 -0
  35. package/dist/Resizable/resizablePane.d.ts.map +1 -0
  36. package/dist/Resizable/resizablePane.js +142 -0
  37. package/dist/Resizable/useResizable.d.ts +7 -0
  38. package/dist/Resizable/useResizable.d.ts.map +1 -1
  39. package/dist/Resizable/useResizable.js +13 -0
  40. package/dist/Selector/Selector.d.ts.map +1 -1
  41. package/dist/Selector/Selector.js +32 -8
  42. package/dist/SideNav/SideNav.d.ts +9 -3
  43. package/dist/SideNav/SideNav.d.ts.map +1 -1
  44. package/dist/SideNav/SideNav.js +47 -10
  45. package/dist/astryx.css +337 -334
  46. package/dist/hooks/useClickableContainer.d.ts +10 -3
  47. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  48. package/dist/hooks/useClickableContainer.js +23 -10
  49. package/dist/hooks/useKeyboardHighlight.d.ts +17 -0
  50. package/dist/hooks/useKeyboardHighlight.d.ts.map +1 -0
  51. package/dist/hooks/useKeyboardHighlight.js +38 -0
  52. package/dist/i18n/InternationalizationProvider.d.ts +9 -8
  53. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  54. package/dist/internal/calendar-system.d.ts +18 -0
  55. package/dist/internal/calendar-system.d.ts.map +1 -0
  56. package/dist/internal/calendar-system.js +19 -0
  57. package/dist/privateAttributes/press.stylex.d.ts.map +1 -1
  58. package/dist/utils/calendarDateParser.d.ts +110 -0
  59. package/dist/utils/calendarDateParser.d.ts.map +1 -0
  60. package/dist/utils/calendarDateParser.js +1225 -0
  61. package/dist/utils/calendarSystem.d.ts +22 -6
  62. package/dist/utils/calendarSystem.d.ts.map +1 -1
  63. package/dist/utils/calendarSystem.js +68 -9
  64. package/dist/utils/focusReturn.d.ts +10 -2
  65. package/dist/utils/focusReturn.d.ts.map +1 -1
  66. package/dist/utils/focusReturn.js +16 -3
  67. package/dist/utils/hitArea.d.ts +8 -1
  68. package/dist/utils/hitArea.d.ts.map +1 -1
  69. package/dist/utils/hitArea.js +17 -4
  70. package/dist/utils/plainDate.d.ts +15 -0
  71. package/dist/utils/plainDate.d.ts.map +1 -1
  72. package/dist/utils/plainDate.js +35 -0
  73. package/dist/utils/touchHitArea.d.ts +30 -0
  74. package/dist/utils/touchHitArea.d.ts.map +1 -0
  75. package/dist/utils/touchHitArea.js +167 -0
  76. package/dist/utils/touchHitArea.stylex.d.ts +6 -3
  77. package/dist/utils/touchHitArea.stylex.d.ts.map +1 -1
  78. package/dist/utils/touchHitArea.stylex.js +19 -3
  79. package/package.json +9 -4
  80. package/src/BottomSheet/BottomSheet.tsx +2 -2
  81. package/src/BottomSheet/bottomSheetStack.ts +4 -3
  82. package/src/Calendar/Calendar.doc.mjs +2 -2
  83. package/src/CheckboxInput/CheckboxInput.tsx +4 -12
  84. package/src/Dialog/Dialog.tsx +2 -1
  85. package/src/DropdownMenu/DropdownMenu.tsx +2 -2
  86. package/src/InfoTip/InfoTip.tsx +5 -27
  87. package/src/Item/Item.tsx +92 -30
  88. package/src/Item/ItemListRowContext.tsx +18 -0
  89. package/src/Layout/LayoutPanel.doc.mjs +8 -8
  90. package/src/Layout/LayoutPanel.tsx +89 -13
  91. package/src/List/List.doc.mjs +10 -1
  92. package/src/List/List.tsx +5 -0
  93. package/src/List/ListItem.tsx +63 -8
  94. package/src/Markdown/parser.ts +65 -42
  95. package/src/MultiSelector/MultiSelector.tsx +7 -17
  96. package/src/RadioList/RadioListItem.tsx +5 -13
  97. package/src/Resizable/Resizable.doc.mjs +40 -12
  98. package/src/Resizable/ResizeHandle.tsx +68 -6
  99. package/src/Resizable/resizablePane.ts +188 -0
  100. package/src/Resizable/useResizable.ts +15 -0
  101. package/src/Selector/Selector.tsx +49 -5
  102. package/src/SideNav/SideNav.doc.mjs +2 -2
  103. package/src/SideNav/SideNav.tsx +88 -12
  104. package/src/hooks/useClickableContainer.ts +22 -10
  105. package/src/hooks/useKeyboardHighlight.ts +71 -0
  106. package/src/i18n/InternationalizationProvider.doc.mjs +3 -3
  107. package/src/i18n/InternationalizationProvider.tsx +9 -8
  108. package/src/internal/calendar-system.ts +26 -0
  109. package/src/privateAttributes/press.stylex.ts +2 -0
  110. package/src/utils/calendarDateParser.ts +1385 -0
  111. package/src/utils/calendarSystem.ts +82 -7
  112. package/src/utils/focusReturn.ts +17 -3
  113. package/src/utils/hitArea.ts +31 -4
  114. package/src/utils/plainDate.ts +46 -0
  115. package/src/utils/touchHitArea.stylex.ts +18 -3
  116. package/src/utils/touchHitArea.ts +177 -0
@@ -65,7 +65,7 @@ import { ModalAnnounceProvider } from "../hooks/ModalAnnounceProvider.js";
65
65
  import { useModalOutlet } from "../Layer/modalOutlet.js";
66
66
  import { useLayerDismissal } from "../Layer/useLayerDismissal.js";
67
67
  import { useFocusRegionContainment } from "../hooks/useFocusTrap.js";
68
- import { focusForLastInput } from "../utils/focusReturn.js";
68
+ import { returnFocusForLastInput } from "../utils/focusReturn.js";
69
69
  import { useInteractionModalityTracking } from "../utils/interactionModality.js";
70
70
  import { BottomSheetPanel } from "./BottomSheetPanel.js";
71
71
  import { BottomSheetEdgeTint } from "./BottomSheetEdgeTint.js";
@@ -533,7 +533,7 @@ function StandaloneBottomSheet({
533
533
  if (revealed != null && (returnTarget == null || !revealed.element.contains(returnTarget))) {
534
534
  revealed.focus();
535
535
  } else if (returnTarget != null) {
536
- focusForLastInput(returnTarget);
536
+ returnFocusForLastInput(returnTarget);
537
537
  }
538
538
  triggerRef.current = null;
539
539
  }, [finalFocusRef, hasScrim, isOpen]);
@@ -1 +1 @@
1
- {"version":3,"file":"bottomSheetStack.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/bottomSheetStack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bottomSheetStack.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/bottomSheetStack.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
 
5
5
  /**
6
6
  * @file bottomSheetStack.ts
7
- * @input The DOM (dialog elements, document order) and focusForLastInput
7
+ * @input The DOM (dialog elements, document order) and the focus-return
8
+ * utilities
8
9
  * @output The private bottom-sheet stack registry: host registration,
9
10
  * open-order ranking, top-layer reconciliation, one view per host, the
10
11
  * replace handoff, and the shared native show/hide and focus helpers
@@ -49,7 +50,7 @@
49
50
  // two copies of this module on one page share one stack. A copy on another
50
51
  // version keeps its own stack. Each document is its own stack.
51
52
  import { notifyTopLayerEntry } from "../Layer/modalOutlet.js";
52
- import { focusForLastInput } from "../utils/focusReturn.js";
53
+ import { focusForLastInput, returnFocusForLastInput } from "../utils/focusReturn.js";
53
54
 
54
55
  /** The motions a host's panel reports to the registry during a replace. */
55
56
 
@@ -240,7 +241,7 @@ function completeClosingGroup(group) {
240
241
  group.reported = true;
241
242
  const target = group.returnTarget;
242
243
  if (target != null && target.isConnected) {
243
- focusForLastInput(target);
244
+ returnFocusForLastInput(target);
244
245
  }
245
246
  }
246
247
 
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ import { usePressFeedback } from "../hooks/usePressFeedback.js";
36
36
  import { useIndicator } from "../Indicator/useIndicator.js";
37
37
  import { themeProps } from "../utils/themeProps.js";
38
38
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
39
- import { watchHitArea, writeHitInsets } from "../utils/hitArea.js";
39
+ import { useTouchHitArea } from "../utils/touchHitArea.js";
40
40
  import { touchHitAreaStyles } from "../utils/touchHitArea.stylex.js";
41
41
  import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComponentTranslator.js";
42
42
  import english from "../i18n/generated-english/CheckboxInput/CheckboxInput.generated.js";
@@ -222,14 +222,9 @@ export function CheckboxInput({
222
222
  // checkbox is a marker in another component's row, which keeps its target.
223
223
  const hasHitArea = !isLabelHidden && !isDisabled && !isReadOnly;
224
224
  const inputRef = useRef(null);
225
- // The watch lives as long as the row is attached: the ref's cleanup stops
226
- // it, and a replaced row starts its own.
227
- const watchRowHitArea = useCallback(row => {
228
- if (row == null || !hasHitArea) {
229
- return;
230
- }
231
- return watchHitArea(row, insets => writeHitInsets(row, insets));
232
- }, [hasHitArea]);
225
+ // The band's insets stay live while the row takes taps, and clear when it
226
+ // stops.
227
+ const watchRowHitArea = useTouchHitArea(hasHitArea);
233
228
  // The disabled-message tooltip listens for hover and focus on the whole
234
229
  // row, a larger trigger. It anchors on the checkbox itself (below), so it
235
230
  // shows next to the control. Its handlers check isEnabled, so the row
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA+B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAMhD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAkC9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,4EAA4E;AAC5E,UAAU,mBAAmB;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAuBD,2FAA2F;AAC3F,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAW1C,CAAC;AAwLX;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc;;;;;EAUpE;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EAAE,UAAU,EAClB,QAAgB,EAChB,YAAY,EACZ,KAAW,EACX,SAAmB,EACnB,QAAQ,EACR,OAAoB,EACpB,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,sCAiab;yBAjbe,MAAM"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA+B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAMhD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAmC9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,4EAA4E;AAC5E,UAAU,mBAAmB;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAuBD,2FAA2F;AAC3F,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAW1C,CAAC;AAwLX;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc;;;;;EAUpE;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EAAE,UAAU,EAClB,QAAgB,EAChB,YAAY,EACZ,KAAW,EACX,SAAmB,EACnB,QAAQ,EACR,OAAoB,EACpB,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,sCAiab;yBAjbe,MAAM"}
@@ -58,7 +58,7 @@ import { DialogContext } from "./DialogContext.js";
58
58
  import { themeProps } from "../utils/themeProps.js";
59
59
  import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
60
60
  import { useInteractionModalityTracking } from "../utils/interactionModality.js";
61
- import { focusForLastInput, prepareFocusReturnOnRemoval } from "../utils/focusReturn.js";
61
+ import { focusForLastInput, prepareFocusReturnOnRemoval, returnFocusForLastInput } from "../utils/focusReturn.js";
62
62
  import { ModalAnnounceProvider } from "../hooks/ModalAnnounceProvider.js";
63
63
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
64
64
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -466,7 +466,7 @@ export function Dialog({
466
466
  // the last input in that element's own document calls for.
467
467
  const trigger = triggerElementRef.current;
468
468
  if (trigger) {
469
- focusForLastInput(trigger);
469
+ returnFocusForLastInput(trigger);
470
470
  }
471
471
  triggerElementRef.current = null;
472
472
  }
@@ -50,7 +50,7 @@ import { useListFocus } from "../hooks/useListFocus.js";
50
50
  import { useDropdownMenuPress } from "../hooks/useMenuPress.js";
51
51
  import { useTypeahead } from "../hooks/useTypeahead.js";
52
52
  import { useFocusReturnVisibility } from "../hooks/useFocusReturnVisibility.js";
53
- import { focusForLastInput } from "../utils/focusReturn.js";
53
+ import { returnFocusForLastInput } from "../utils/focusReturn.js";
54
54
  import { useMenuOverflow } from "./useMenuOverflow.js";
55
55
  import { MenuRegionsContext } from "./menuRegionsContext.js";
56
56
  import { moveRegionsTab } from "./menuRegionStops.js";
@@ -704,9 +704,7 @@ function DropdownMenuPopover({
704
704
  // reaches only the design system's own Button; the browser's focus option
705
705
  // also reaches a control the caller renders, which the browser would
706
706
  // otherwise ring (Chromium after a mouse pick, WebKit after a touch).
707
- focusForLastInput(trigger, {
708
- preventScroll: true
709
- });
707
+ returnFocusForLastInput(trigger);
710
708
  }, [hideOpenFlyouts, isControlled, onOpenChange, prepareFocusReturn]);
711
709
 
712
710
  // Defer item focus until the layer has committed open, so focus restore
@@ -1 +1 @@
1
- {"version":3,"file":"InfoTip.d.ts","sourceRoot":"","sources":["../../src/InfoTip/InfoTip.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,cAAc,CAAC;AAqBjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEnC,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC7B;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AA8CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,KAAK,EACL,IAAW,EACX,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,YAAY,GAAG,SAAS,CAyF1B;yBAjGe,OAAO"}
1
+ {"version":3,"file":"InfoTip.d.ts","sourceRoot":"","sources":["../../src/InfoTip/InfoTip.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,cAAc,CAAC;AAsBjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEnC,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC7B;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AA+BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,KAAK,EACL,IAAW,EACX,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,YAAY,GAAG,SAAS,CAiF1B;yBAzFe,OAAO"}
@@ -29,7 +29,8 @@ import "../theme/tokens.stylex.js";
29
29
  import { colorVars, durationVars, easeVars, radiusVars, spacingVars } from "../theme/tokens.stylex.js";
30
30
  import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
31
31
  import { mergeProps } from "../utils/mergeProps.js";
32
- import { watchHitArea, writeHitInsets } from "../utils/hitArea.js";
32
+ import { useTouchHitArea } from "../utils/touchHitArea.js";
33
+ import { touchHitAreaStyles } from "../utils/touchHitArea.stylex.js";
33
34
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
34
35
  registerEnglishFallback(english);
35
36
 
@@ -56,12 +57,6 @@ const styles = {
56
57
  kIyJzY: "xuedmi6",
57
58
  kAMwcw: "xlr8y92",
58
59
  $$css: true
59
- },
60
- hitArea: {
61
- k5JduY: "x1s928wv",
62
- kwXMNM: "x1j6awrg",
63
- kv0HGH: "xzdy5ak",
64
- $$css: true
65
60
  }
66
61
  };
67
62
 
@@ -92,15 +87,7 @@ export function InfoTip({
92
87
  style
93
88
  }) {
94
89
  const t = useComponentTranslator();
95
- // Under a coarse pointer the button takes taps out toward 44 px. The watch
96
- // lives as long as the button is attached: the ref's cleanup stops it, and a
97
- // replaced button starts its own.
98
- const watchButtonHitArea = useCallback(button => {
99
- if (button == null) {
100
- return;
101
- }
102
- return watchHitArea(button, insets => writeHitInsets(button, insets));
103
- }, []);
90
+ const hitAreaRef = useTouchHitArea(true);
104
91
  // Whether a press pinned the help. A hover or focus preview is not pinned.
105
92
  const [isPinned, setIsPinned] = useState(false);
106
93
  // Whether the help shows, pinned or previewed: the button names it in
@@ -117,7 +104,7 @@ export function InfoTip({
117
104
  onShow: handleShow,
118
105
  onHide: handleHide
119
106
  });
120
- const mergedRef = useMergedRefs(ref, watchButtonHitArea, tooltip.ref);
107
+ const mergedRef = useMergedRefs(ref, hitAreaRef, tooltip.ref);
121
108
 
122
109
  // A primary mouse or pen press on a preview calls show() first. The hook's
123
110
  // press-to-close then leaves it open. The click pins it.
@@ -155,7 +142,7 @@ export function InfoTip({
155
142
  "aria-controls": isShown ? tooltip.describedBy : undefined,
156
143
  onPointerDownCapture: handlePointerDownCapture,
157
144
  onClick: handleClick,
158
- ...mergeProps(stylex.props(focusOutlineStyles.focusVisible, styles.trigger, styles.hitArea, xstyle), className, style),
145
+ ...mergeProps(stylex.props(focusOutlineStyles.focusVisible, styles.trigger, touchHitAreaStyles.layer, xstyle), className, style),
159
146
  children: /*#__PURE__*/_jsx(Icon, {
160
147
  icon: "info",
161
148
  size: size
@@ -233,6 +233,24 @@ export interface ItemProps extends BaseProps<HTMLElement> {
233
233
  */
234
234
  'data-testid'?: string;
235
235
  }
236
+ /**
237
+ * Whether a row serves swipe actions, and so is a stacking context at rest:
238
+ * its root translates (`styles.swipeRoot`). Swipe actions need a
239
+ * role that permits interactive descendants, since a swipe panel holds
240
+ * buttons. That is a `listitem`, or no role at all. A root that is itself a
241
+ * link is not served, nor is a role that forbids interactive descendants. A
242
+ * disabled row, a row with no entry on either side, and the enlarged target of
243
+ * a nested control are not served either. Internal: under a finger,
244
+ * List/ListItem.tsx raises such a row, so its touch band stays above the rows
245
+ * after it.
246
+ */
247
+ export declare function servesSwipeActions({ swipeActions, isDisabled, isDelegate, isLinkRoot, role, }: {
248
+ readonly swipeActions: ItemSwipeActions | undefined;
249
+ readonly isDisabled: boolean;
250
+ readonly isDelegate: boolean;
251
+ readonly isLinkRoot: boolean;
252
+ readonly role: string | null | undefined;
253
+ }): boolean;
236
254
  /**
237
255
  * A universal item primitive that unifies the "start content + label +
238
256
  * description + end content" layout pattern. Use as a building block for list items,
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiC5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1E,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;IAE/C;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE9B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EAAE,SAAiB,EACrB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAgB,EAChB,OAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,MAAkB,EAClB,OAAO,EACP,cAAc,EACd,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,YAAY,EACjB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,YAAY,EACZ,aAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,SAAS,EACb,EAAE,SAAS,+BAoYX;yBAhae,IAAI"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoC5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1E,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;IAE/C;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE9B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA2BD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC1C,GAAG,OAAO,CAUV;AAuOD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EAAE,SAAiB,EACrB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAgB,EAChB,OAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,MAAkB,EAClB,OAAO,EACP,cAAc,EACd,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,YAAY,EACjB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,YAAY,EACZ,aAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,SAAS,EACb,EAAE,SAAS,+BA4ZX;yBAxbe,IAAI"}
package/dist/Item/Item.js CHANGED
@@ -38,16 +38,18 @@ import { mergeProps } from "../utils/mergeProps.js";
38
38
  import { chainEventHandlers } from "../utils/chainEventHandlers.js";
39
39
  import { useFocusAcrossSwap } from "../utils/useFocusAcrossSwap.js";
40
40
  import { ItemDescriptionContext } from "./ItemDescriptionContext.js";
41
+ import { ItemListRowContext } from "./ItemListRowContext.js";
41
42
  import { ItemMarkerColumnsContext } from "./ItemMarkerColumnsContext.js";
42
43
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
43
44
  import { computeTargetAndRel } from "../Link/computeTargetAndRel.js";
44
45
  import { useLinkComponent } from "../Link/useLinkComponent.js";
45
- import { cancelNestedTouchPress, useClickableContainer } from "../hooks/useClickableContainer.js";
46
+ import { cancelNestedTouchPress, PRESSABLE_CONTAINER_ATTRIBUTE, useClickableContainerProxy } from "../hooks/useClickableContainer.js";
46
47
  import { useDevWarning } from "../hooks/useDevWarning.js";
47
48
  import { themeProps } from "../utils/themeProps.js";
48
49
  import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
49
50
  import { interactionOverlayStyles } from "../utils/interactionOverlay.stylex.js";
50
51
  import { rowPressLayerStyles } from "../privateAttributes/press.stylex.js";
52
+ import { isCoarsePointer } from "../utils/coarsePointer.js";
51
53
  import { usePressFeedback } from "../hooks/usePressFeedback.js";
52
54
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
53
55
  // The gesture and the panels, loaded only by a row that has swipe actions: a
@@ -92,6 +94,27 @@ const ARIA_SELECTED_ROLES = new Set(['option', 'tab', 'row', 'gridcell', 'column
92
94
  */
93
95
  const SWIPE_ROLES = new Set(['listitem']);
94
96
 
97
+ /**
98
+ * Whether a row serves swipe actions, and so is a stacking context at rest:
99
+ * its root translates (`styles.swipeRoot`). Swipe actions need a
100
+ * role that permits interactive descendants, since a swipe panel holds
101
+ * buttons. That is a `listitem`, or no role at all. A root that is itself a
102
+ * link is not served, nor is a role that forbids interactive descendants. A
103
+ * disabled row, a row with no entry on either side, and the enlarged target of
104
+ * a nested control are not served either. Internal: under a finger,
105
+ * List/ListItem.tsx raises such a row, so its touch band stays above the rows
106
+ * after it.
107
+ */
108
+ export function servesSwipeActions({
109
+ swipeActions,
110
+ isDisabled,
111
+ isDelegate,
112
+ isLinkRoot,
113
+ role
114
+ }) {
115
+ return swipeActions != null && ((swipeActions.leading?.length ?? 0) > 0 || (swipeActions.trailing?.length ?? 0) > 0) && !isDisabled && !isDelegate && !isLinkRoot && (role == null || SWIPE_ROLES.has(role));
116
+ }
117
+
95
118
  /** The travel a drag writes on the row root, in physical px (see useSwipeAction). */
96
119
  const SWIPE_TRAVEL = 'var(--_item-swipe-travel, 0px)';
97
120
  /** The settle clock, `0s` while the finger drives the row. */
@@ -276,6 +299,7 @@ export function Item({
276
299
  }) {
277
300
  const pressable = usePressFeedback();
278
301
  const columnMarker = use(ItemMarkerColumnsContext);
302
+ const isListRow = use(ItemListRowContext);
279
303
  const LinkComponent = useLinkComponent();
280
304
  // A disabled row's anchor has no destination, so no activation path (a
281
305
  // screen reader's click, Enter, a link context menu) can navigate
@@ -295,13 +319,14 @@ export function Item({
295
319
  const isDelegate = interactiveRef != null;
296
320
  const containerRef = useRef(null);
297
321
  // Only onClick is needed: onMouseUp handles middle-click href navigation,
298
- // which delegation mode never has (href is ignored here).
322
+ // which delegation mode never has (href is ignored here). A List link row's
323
+ // surface click goes to its anchor through the same hook and its guards.
299
324
  const {
300
- onClick: delegatedOnClick,
325
+ onClick: containerOnClick,
301
326
  onPointerDown: delegatedOnPointerDown
302
- } = useClickableContainer({
327
+ } = useClickableContainerProxy({
303
328
  containerRef,
304
- interactiveRef: interactiveRef ?? undefined,
329
+ interactiveRef: interactiveRef ?? actionLinkRef,
305
330
  disabled: isDisabled
306
331
  });
307
332
  useDevWarning('Item', '`interactiveRef` is mutually exclusive with `onClick`/`href`. In ' + 'delegation mode the row only forwards clicks to the referenced control, ' + 'so `onClick`/`href` are ignored. Drop one of them.', isDelegate && (onClick != null || href != null));
@@ -324,14 +349,15 @@ export function Item({
324
349
  // card still treats it as part of its own surface.
325
350
  const hasOwnAction = (onClick != null || href != null) && !hasParentRole && !isLinkRoot;
326
351
  const pressOnRow = event => cancelNestedTouchPress(event, event.currentTarget, href != null ? actionLinkRef.current : actionButtonRef.current);
327
-
328
- // Swipe actions exist where the row's role permits interactive descendants
329
- // (a swipe panel's buttons are such descendants): a `listitem`, or no role
330
- // at all. A root that is itself a link, a row whose role forbids them, and
331
- // a row that is the enlarged target of a nested control are not served.
332
352
  const leadingSwipe = swipeActions?.leading ?? [];
333
353
  const trailingSwipe = swipeActions?.trailing ?? [];
334
- const hasSwipe = swipeActions != null && (leadingSwipe.length > 0 || trailingSwipe.length > 0) && !isDisabled && !isDelegate && !isLinkRoot && (role == null || SWIPE_ROLES.has(role));
354
+ const hasSwipe = servesSwipeActions({
355
+ swipeActions,
356
+ isDisabled,
357
+ isDelegate,
358
+ isLinkRoot,
359
+ role
360
+ });
335
361
  useDevWarning('Item', '`swipeBehavior="commit"` fires only the outermost entry of a side; the ' + 'other entries have no touch path. Give a committing side one entry, ' + 'or use `swipeBehavior="reveal"`.', hasSwipe && swipeBehavior === 'commit' && (leadingSwipe.length > 1 || trailingSwipe.length > 1));
336
362
  const swipeRootRef = useRef(null);
337
363
  // Filled by the swipe layer once it has mounted; empty until then and on a
@@ -378,6 +404,7 @@ export function Item({
378
404
  children: description
379
405
  })]
380
406
  });
407
+ const isLinkRow = isListRow && onClick == null && href != null && !isLinkRoot;
381
408
  const handleContainerClick = e => {
382
409
  if (isDisabled) {
383
410
  return;
@@ -386,6 +413,18 @@ export function Item({
386
413
  if (target.closest('button, a, input, select, textarea')) {
387
414
  return;
388
415
  }
416
+ if (isLinkRow) {
417
+ // Under a coarse primary pointer, a tap in the row's padding or band
418
+ // follows its link, with the click's modifier keys. The primary pointer
419
+ // decides, as it decides the band, not the pointer that made the click.
420
+ const row = e.currentTarget;
421
+ const box = row.getBoundingClientRect();
422
+ const isInBand = e.clientX < box.left || e.clientX > box.right || e.clientY < box.top || e.clientY > box.bottom;
423
+ if (e.detail > 0 && (isInBand || isCoarsePointer(row.ownerDocument.defaultView))) {
424
+ containerOnClick(e);
425
+ }
426
+ return;
427
+ }
389
428
  onClick?.(e);
390
429
  };
391
430
  const content = /*#__PURE__*/_jsxs(_Fragment, {
@@ -501,11 +540,11 @@ export function Item({
501
540
  })]
502
541
  });
503
542
  const mergedRef = useMergedRefs(ref, containerRef);
504
- const rootRef = useMergedRefs(isDelegate ? mergedRef : ref, hasSwipe ? swipeRootRef : undefined);
543
+ const rootRef = useMergedRefs(isDelegate || isLinkRow ? mergedRef : ref, hasSwipe ? swipeRootRef : undefined);
505
544
 
506
545
  // The row's own primary, which the click the browser synthesizes after a
507
546
  // drag must not fire.
508
- const primaryOnClick = isDelegate ? delegatedOnClick : hasParentRole ? onClick : isInteractive ? handleContainerClick : undefined;
547
+ const primaryOnClick = isDelegate ? containerOnClick : hasParentRole ? onClick : isInteractive ? handleContainerClick : undefined;
509
548
  const rootOnClick = hasSwipe && primaryOnClick != null ? event => {
510
549
  if (swipeBridgeRef.current?.shouldSuppressClick() === true) {
511
550
  return;
@@ -536,6 +575,9 @@ export function Item({
536
575
  } : hasOwnAction && !isDisabled ? {
537
576
  onPointerDown: chainEventHandlers(swipeHandlers?.onPointerDown ?? restProps.onPointerDown, pressOnRow)
538
577
  } : null),
578
+ ...(isDelegate ? {
579
+ [PRESSABLE_CONTAINER_ATTRIBUTE]: 'true'
580
+ } : undefined),
539
581
  "aria-selected": allowsAriaSelected && isSelected || undefined
540
582
  // aria-selected is invalid on roles that don't permit it (listitem, a
541
583
  // bare div, etc.). For those, convey selection via aria-current — valid
@@ -555,19 +597,22 @@ export function Item({
555
597
  isInteractive && rowPressLayerStyles.cell, isLinkRoot && styles.linkRoot, isHighlighted && styles.highlighted, isSelected && styles.selected, isDisabled && !hasParentRole && styles.disabled, hasSwipe && styles.swipeRoot, xstyle), className, style),
556
598
  role: role,
557
599
  onClick: rootOnClick,
558
- children: [/*#__PURE__*/_jsxs(ItemDescriptionContext, {
600
+ children: [/*#__PURE__*/_jsx(ItemDescriptionContext, {
559
601
  value: hasRenderableDescription ? descriptionID : null,
560
- children: [isRenderable(marker) && marker, isRenderable(marker) && columnMarker === marker ? /*#__PURE__*/_jsx("span", {
561
- ...{
562
- 0: {
563
- className: "x78zum5 x98rzlu xeuugli x1h91t0o xkh2ocl x14kbac9"
564
- },
565
- 1: {
566
- className: "x78zum5 x98rzlu xeuugli x1h91t0o x14kbac9 xoi2r2e"
567
- }
568
- }[!!(align === 'first-line') << 0],
569
- children: content
570
- }) : content]
602
+ children: /*#__PURE__*/_jsxs(ItemListRowContext, {
603
+ value: false,
604
+ children: [isRenderable(marker) && marker, isRenderable(marker) && columnMarker === marker ? /*#__PURE__*/_jsx("span", {
605
+ ...{
606
+ 0: {
607
+ className: "x78zum5 x98rzlu xeuugli x1h91t0o xkh2ocl x14kbac9"
608
+ },
609
+ 1: {
610
+ className: "x78zum5 x98rzlu xeuugli x1h91t0o x14kbac9 xoi2r2e"
611
+ }
612
+ }[!!(align === 'first-line') << 0],
613
+ children: content
614
+ }) : content]
615
+ })
571
616
  }), hasSwipe &&
572
617
  /*#__PURE__*/
573
618
  // The panels: out-of-flow children of this root, so the DOM is the one
@@ -0,0 +1,2 @@
1
+ export declare const ItemListRowContext: import("react").Context<boolean>;
2
+ //# sourceMappingURL=ItemListRowContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemListRowContext.d.ts","sourceRoot":"","sources":["../../src/Item/ItemListRowContext.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,kBAAkB,kCAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file ItemListRowContext.tsx
7
+ * @input Uses React createContext
8
+ * @output Exports ItemListRowContext
9
+ * @position Internal seam between ListItem and the Item it renders. Under a
10
+ * coarse primary pointer a List row's whole touch target follows its link,
11
+ * so ListItem marks its Item as a List row. Item clears the mark for its own
12
+ * content, and a standalone Item has none.
13
+ */
14
+ import { createContext } from 'react';
15
+ export const ItemListRowContext = /*#__PURE__*/createContext(false);
16
+ ItemListRowContext.displayName = 'ItemListRowContext';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @file LayoutPanel.tsx
3
3
  * @input Uses React StyleX, LayoutAreaContext, LayoutSlotsContext,
4
- * useScrollRegionProps
4
+ * useScrollRegionProps, resizablePane.ts
5
5
  * @output Exports LayoutPanel component and LayoutPanelProps
6
6
  * @position Sidebar panel for Layout start/end slots. Use for navigation panels,
7
7
  * settings sidebars, detail panels, or any fixed-width side content.
@@ -14,7 +14,7 @@
14
14
  import type { AriaRole, ReactNode } from 'react';
15
15
  import type { BaseProps } from '../BaseProps.js';
16
16
  import type { SizeValue, SpacingStep } from '../utils/types.js';
17
- import type { ResizableProps } from '../Resizable/useResizable.js';
17
+ import { type ResizableProps, type ResizableRegion } from '../Resizable/useResizable.js';
18
18
  export interface LayoutPanelProps extends BaseProps<HTMLDivElement> {
19
19
  ref?: React.Ref<HTMLDivElement>;
20
20
  /**
@@ -64,20 +64,20 @@ export interface LayoutPanelProps extends BaseProps<HTMLDivElement> {
64
64
  */
65
65
  width?: SizeValue;
66
66
  /**
67
- * Resize props from `useResizable()`. When provided, the panel width
68
- * is driven by the hook and a resize handle should be placed adjacent
69
- * to this panel.
67
+ * The output of `useResizable()`, or its `props`. When provided, the panel
68
+ * width is driven by the hook and a resize handle should be placed
69
+ * adjacent to this panel.
70
70
  *
71
71
  * @example
72
72
  * ```
73
- * const sidebar = useResizable({ defaultSize: 250, minSize: 200 });
74
- * <LayoutPanel resizable={sidebar.props}>
73
+ * const resizable = useResizable({ defaultSize: 250, minSize: 200 });
74
+ * <LayoutPanel resizable={resizable}>
75
75
  * <Navigation />
76
76
  * </LayoutPanel>
77
- * <ResizeHandle resizable={sidebar.props} />
77
+ * <ResizeHandle resizable={resizable} />
78
78
  * ```
79
79
  */
80
- resizable?: ResizableProps;
80
+ resizable?: ResizableRegion | ResizableProps;
81
81
  }
82
82
  /**
83
83
  * Sidebar or side panel for Layout. Use in the `start` slot for left navigation
@@ -107,7 +107,7 @@ export interface LayoutPanelProps extends BaseProps<HTMLDivElement> {
107
107
  * </LayoutContainer>
108
108
  * ```
109
109
  */
110
- export declare function LayoutPanel({ children, hasDivider, isScrollable, label, padding, role, width, resizable, xstyle, className, style, ref, ...props }: LayoutPanelProps): import("react").JSX.Element;
110
+ export declare function LayoutPanel({ children, hasDivider, isScrollable, label, padding, role, width, resizable: resizableValue, xstyle, className, style, ref, ...props }: LayoutPanelProps): import("react").JSX.Element;
111
111
  export declare namespace LayoutPanel {
112
112
  var displayName: string;
113
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutPanel.d.ts","sourceRoot":"","sources":["../../src/Layout/LayoutPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAmF9D,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,UAAkB,EAClB,YAAmB,EACnB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,KAAK,EACL,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAoElB;yBAlFe,WAAW"}
1
+ {"version":3,"file":"LayoutPanel.d.ts","sourceRoot":"","sources":["../../src/Layout/LayoutPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AA6FnC,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,UAAkB,EAClB,YAAmB,EACnB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,KAAK,EACL,SAAS,EAAE,cAAc,EACzB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAkIlB;yBAhJe,WAAW"}