@astryxdesign/core 0.4.0 → 0.4.1-canary.0ad35c3

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 (282) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  3. package/dist/AspectRatio/AspectRatio.js +1 -2
  4. package/dist/AspectRatio/index.d.ts.map +1 -1
  5. package/dist/AspectRatio/index.js +1 -2
  6. package/dist/Badge/Badge.d.ts.map +1 -1
  7. package/dist/Badge/Badge.js +1 -2
  8. package/dist/Badge/index.d.ts.map +1 -1
  9. package/dist/Badge/index.js +1 -2
  10. package/dist/Banner/Banner.d.ts +3 -0
  11. package/dist/Banner/Banner.d.ts.map +1 -1
  12. package/dist/Banner/Banner.js +17 -3
  13. package/dist/Blockquote/Blockquote.d.ts.map +1 -1
  14. package/dist/Blockquote/Blockquote.js +1 -2
  15. package/dist/Blockquote/index.d.ts.map +1 -1
  16. package/dist/Blockquote/index.js +1 -2
  17. package/dist/Button/Button.d.ts.map +1 -1
  18. package/dist/Button/Button.js +11 -9
  19. package/dist/Card/Card.d.ts.map +1 -1
  20. package/dist/Card/Card.js +1 -2
  21. package/dist/Card/index.d.ts.map +1 -1
  22. package/dist/Card/index.js +1 -2
  23. package/dist/Center/Center.d.ts.map +1 -1
  24. package/dist/Center/Center.js +1 -2
  25. package/dist/Center/index.d.ts.map +1 -1
  26. package/dist/Center/index.js +1 -2
  27. package/dist/Chat/ChatMessage.d.ts +7 -0
  28. package/dist/Chat/ChatMessage.d.ts.map +1 -1
  29. package/dist/Chat/ChatMessageBubble.d.ts +13 -1
  30. package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
  31. package/dist/Chat/ChatMessageBubble.js +19 -1
  32. package/dist/Code/Code.d.ts.map +1 -1
  33. package/dist/Code/Code.js +1 -2
  34. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  35. package/dist/CommandPalette/CommandPalette.js +5 -0
  36. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  37. package/dist/ComplexSelector/ComplexSelector.js +7 -8
  38. package/dist/DateInput/DateInput.d.ts.map +1 -1
  39. package/dist/DateInput/DateInput.js +23 -10
  40. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  41. package/dist/DateRangeInput/DateRangeInput.js +44 -16
  42. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  43. package/dist/DateTimeInput/DateTimeInput.js +32 -13
  44. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -1
  45. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  46. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +10 -3
  47. package/dist/Field/PanelSearchInput.d.ts +81 -0
  48. package/dist/Field/PanelSearchInput.d.ts.map +1 -0
  49. package/dist/Field/PanelSearchInput.js +151 -0
  50. package/dist/FileInput/FileInput.d.ts.map +1 -1
  51. package/dist/FileInput/FileInput.js +21 -10
  52. package/dist/Grid/Grid.d.ts.map +1 -1
  53. package/dist/Grid/Grid.js +1 -2
  54. package/dist/Grid/index.d.ts.map +1 -1
  55. package/dist/Grid/index.js +1 -2
  56. package/dist/HoverCard/HoverCard.d.ts +1 -1
  57. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  58. package/dist/HoverCard/HoverCard.js +5 -13
  59. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  60. package/dist/HoverCard/useHoverCard.js +6 -5
  61. package/dist/Icon/globalIconRegistry.d.ts +5 -4
  62. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  63. package/dist/Icon/globalIconRegistry.js +5 -4
  64. package/dist/Indicator/index.d.ts +1 -1
  65. package/dist/Indicator/index.d.ts.map +1 -1
  66. package/dist/Indicator/types.d.ts +10 -0
  67. package/dist/Indicator/types.d.ts.map +1 -1
  68. package/dist/InputGroup/groupStyles.d.ts.map +1 -1
  69. package/dist/InputGroup/groupStyles.js +7 -2
  70. package/dist/Layer/layerHost.d.ts +24 -0
  71. package/dist/Layer/layerHost.d.ts.map +1 -0
  72. package/dist/Layer/layerHost.js +79 -0
  73. package/dist/Layer/useLayer.d.ts +14 -6
  74. package/dist/Layer/useLayer.d.ts.map +1 -1
  75. package/dist/Layer/useLayer.js +155 -29
  76. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  77. package/dist/Lightbox/Lightbox.js +24 -50
  78. package/dist/MultiSelector/MultiSelector.d.ts +8 -1
  79. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  80. package/dist/MultiSelector/MultiSelector.js +134 -102
  81. package/dist/NavItem/navItemStyles.stylex.d.ts +17 -5
  82. package/dist/NavItem/navItemStyles.stylex.d.ts.map +1 -1
  83. package/dist/NavItem/navItemStyles.stylex.js +11 -5
  84. package/dist/Popover/usePopover.d.ts +15 -0
  85. package/dist/Popover/usePopover.d.ts.map +1 -1
  86. package/dist/Popover/usePopover.js +14 -2
  87. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  88. package/dist/ProgressBar/ProgressBar.js +2 -3
  89. package/dist/Section/Section.d.ts.map +1 -1
  90. package/dist/Section/Section.js +1 -2
  91. package/dist/Section/index.d.ts.map +1 -1
  92. package/dist/Section/index.js +1 -2
  93. package/dist/Selector/Selector.d.ts +10 -0
  94. package/dist/Selector/Selector.d.ts.map +1 -1
  95. package/dist/Selector/Selector.js +135 -95
  96. package/dist/SideNav/SideNav.d.ts +7 -9
  97. package/dist/SideNav/SideNav.d.ts.map +1 -1
  98. package/dist/SideNav/SideNav.js +32 -5
  99. package/dist/SideNav/SideNavCollapseButton.d.ts +25 -9
  100. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  101. package/dist/SideNav/SideNavCollapseButton.js +39 -15
  102. package/dist/SideNav/SideNavCollapseContext.d.ts +21 -0
  103. package/dist/SideNav/SideNavCollapseContext.d.ts.map +1 -1
  104. package/dist/SideNav/SideNavCollapseContext.js +16 -2
  105. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  106. package/dist/SideNav/SideNavHeading.js +70 -24
  107. package/dist/SideNav/SideNavItem.d.ts +7 -2
  108. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  109. package/dist/SideNav/SideNavItem.js +114 -75
  110. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  111. package/dist/SideNav/SideNavSection.js +7 -16
  112. package/dist/SideNav/index.d.ts +1 -1
  113. package/dist/SideNav/index.d.ts.map +1 -1
  114. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  115. package/dist/Skeleton/Skeleton.js +1 -2
  116. package/dist/Skeleton/index.d.ts.map +1 -1
  117. package/dist/Skeleton/index.js +1 -2
  118. package/dist/Slider/Slider.d.ts.map +1 -1
  119. package/dist/Slider/Slider.js +2 -6
  120. package/dist/Switch/Switch.d.ts.map +1 -1
  121. package/dist/Switch/Switch.js +3 -3
  122. package/dist/Table/TableRow.d.ts +1 -1
  123. package/dist/Table/TableRow.d.ts.map +1 -1
  124. package/dist/Table/TableRow.js +4 -2
  125. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  126. package/dist/TimeInput/TimeInput.js +7 -2
  127. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  128. package/dist/Timestamp/Timestamp.js +14 -3
  129. package/dist/Timestamp/formatInstant.d.ts +11 -1
  130. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  131. package/dist/Timestamp/formatInstant.js +3 -1
  132. package/dist/TopNav/TopNavMegaMenu.js +1 -1
  133. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  134. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  135. package/dist/TopNav/TopNavMenu.js +2 -2
  136. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  137. package/dist/VisuallyHidden/VisuallyHidden.js +1 -2
  138. package/dist/VisuallyHidden/index.d.ts.map +1 -1
  139. package/dist/VisuallyHidden/index.js +1 -2
  140. package/dist/astryx.css +23 -24
  141. package/dist/astryx.umd.js +47 -47
  142. package/dist/astryx.umd.js.map +4 -4
  143. package/dist/hooks/index.d.ts +1 -1
  144. package/dist/hooks/index.d.ts.map +1 -1
  145. package/dist/hooks/index.js +1 -1
  146. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  147. package/dist/hooks/useFocusTrap.js +16 -2
  148. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  149. package/dist/hooks/useInputStatusIcon.js +17 -4
  150. package/dist/theme/defineTheme.d.ts +2 -2
  151. package/dist/theme/defineTheme.d.ts.map +1 -1
  152. package/dist/theme/defineTheme.js +2 -1
  153. package/dist/theme/index.d.ts +1 -1
  154. package/dist/theme/index.d.ts.map +1 -1
  155. package/dist/theme/index.js +1 -1
  156. package/dist/theme/tokens.stylex.d.ts +12 -0
  157. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  158. package/dist/theme/tokens.stylex.js +23 -0
  159. package/dist/utils/focusOutline.stylex.d.ts +34 -19
  160. package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
  161. package/dist/utils/focusOutline.stylex.js +46 -33
  162. package/dist/utils/index.d.ts +1 -0
  163. package/dist/utils/index.d.ts.map +1 -1
  164. package/dist/utils/index.js +5 -1
  165. package/dist/utils/interactionModality.d.ts +34 -0
  166. package/dist/utils/interactionModality.d.ts.map +1 -0
  167. package/dist/utils/interactionModality.js +70 -0
  168. package/locales/en.json +44 -0
  169. package/locales/pseudo.json +33 -0
  170. package/package.json +3 -3
  171. package/src/AppShell/AppShell.doc.mjs +3 -0
  172. package/src/AspectRatio/AspectRatio.tsx +0 -2
  173. package/src/AspectRatio/index.ts +0 -2
  174. package/src/Badge/Badge.tsx +0 -2
  175. package/src/Badge/index.ts +0 -2
  176. package/src/Banner/Banner.test.tsx +58 -1
  177. package/src/Banner/Banner.tsx +24 -5
  178. package/src/Blockquote/Blockquote.tsx +0 -2
  179. package/src/Blockquote/index.ts +0 -2
  180. package/src/Button/Button.doc.mjs +2 -2
  181. package/src/Button/Button.tsx +10 -7
  182. package/src/ButtonGroup/ButtonGroup.test.tsx +7 -4
  183. package/src/Card/Card.tsx +0 -2
  184. package/src/Card/index.ts +0 -2
  185. package/src/Center/Center.tsx +0 -2
  186. package/src/Center/index.ts +0 -2
  187. package/src/Chat/Chat.doc.mjs +4 -1
  188. package/src/Chat/ChatMessage.doc.mjs +3 -3
  189. package/src/Chat/ChatMessage.tsx +7 -0
  190. package/src/Chat/ChatMessageBubble.doc.mjs +7 -0
  191. package/src/Chat/ChatMessageBubble.test.tsx +95 -6
  192. package/src/Chat/ChatMessageBubble.tsx +25 -0
  193. package/src/CheckboxInput/CheckboxInput.test.tsx +8 -3
  194. package/src/Code/Code.tsx +0 -2
  195. package/src/CommandPalette/CommandPalette.test.tsx +54 -0
  196. package/src/CommandPalette/CommandPalette.tsx +5 -0
  197. package/src/ComplexSelector/ComplexSelector.test.tsx +15 -6
  198. package/src/ComplexSelector/ComplexSelector.tsx +6 -10
  199. package/src/DateInput/DateInput.test.tsx +19 -0
  200. package/src/DateInput/DateInput.tsx +3 -6
  201. package/src/DateRangeInput/DateRangeInput.tsx +3 -9
  202. package/src/DateTimeInput/DateTimeInput.test.tsx +79 -1
  203. package/src/DateTimeInput/DateTimeInput.tsx +23 -9
  204. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +2 -1
  205. package/src/Field/PanelSearchInput.tsx +271 -0
  206. package/src/FileInput/FileInput.tsx +21 -8
  207. package/src/Grid/Grid.tsx +0 -2
  208. package/src/Grid/index.ts +0 -2
  209. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  210. package/src/HoverCard/HoverCard.test.tsx +283 -55
  211. package/src/HoverCard/HoverCard.tsx +5 -13
  212. package/src/HoverCard/useHoverCard.tsx +8 -11
  213. package/src/Icon/globalIconRegistry.tsx +5 -4
  214. package/src/Indicator/Indicator.doc.mjs +1 -1
  215. package/src/Indicator/index.ts +1 -0
  216. package/src/Indicator/types.ts +11 -0
  217. package/src/InputGroup/groupStyles.ts +7 -8
  218. package/src/Layer/layerHost.test.ts +99 -0
  219. package/src/Layer/layerHost.ts +141 -0
  220. package/src/Layer/useLayer.doc.mjs +14 -4
  221. package/src/Layer/useLayer.test.tsx +318 -7
  222. package/src/Layer/useLayer.tsx +229 -35
  223. package/src/Lightbox/Lightbox.tsx +2 -11
  224. package/src/MultiSelector/MultiSelector.doc.mjs +9 -0
  225. package/src/MultiSelector/MultiSelector.test.tsx +135 -5
  226. package/src/MultiSelector/MultiSelector.tsx +170 -127
  227. package/src/NavItem/navItemStyles.stylex.ts +31 -5
  228. package/src/Popover/Popover.doc.mjs +2 -0
  229. package/src/Popover/usePopover.tsx +37 -4
  230. package/src/ProgressBar/ProgressBar.tsx +2 -8
  231. package/src/Section/Section.tsx +0 -2
  232. package/src/Section/index.ts +0 -2
  233. package/src/Selector/Selector.doc.mjs +10 -0
  234. package/src/Selector/Selector.test.tsx +386 -2
  235. package/src/Selector/Selector.tsx +182 -122
  236. package/src/SideNav/SideNav.doc.mjs +13 -4
  237. package/src/SideNav/SideNav.test.tsx +771 -2
  238. package/src/SideNav/SideNav.tsx +37 -16
  239. package/src/SideNav/SideNavCollapseButton.doc.mjs +28 -6
  240. package/src/SideNav/SideNavCollapseButton.tsx +67 -15
  241. package/src/SideNav/SideNavCollapseContext.ts +29 -9
  242. package/src/SideNav/SideNavHeading.tsx +28 -10
  243. package/src/SideNav/SideNavItem.doc.mjs +13 -0
  244. package/src/SideNav/SideNavItem.tsx +92 -84
  245. package/src/SideNav/SideNavSection.tsx +6 -20
  246. package/src/SideNav/index.ts +2 -0
  247. package/src/Skeleton/Skeleton.tsx +0 -2
  248. package/src/Skeleton/index.ts +0 -2
  249. package/src/Slider/Slider.tsx +2 -11
  250. package/src/Switch/Switch.tsx +10 -2
  251. package/src/Table/Table.test.tsx +31 -0
  252. package/src/Table/TableRow.tsx +6 -0
  253. package/src/Text/Text.doc.mjs +1 -1
  254. package/src/TimeInput/TimeInput.test.tsx +54 -0
  255. package/src/TimeInput/TimeInput.tsx +17 -2
  256. package/src/Timestamp/Timestamp.test.tsx +125 -30
  257. package/src/Timestamp/Timestamp.tsx +14 -2
  258. package/src/Timestamp/formatInstant.ts +16 -1
  259. package/src/Toolbar/Toolbar.test.tsx +14 -14
  260. package/src/TopNav/TopNavMegaMenu.doc.mjs +5 -0
  261. package/src/TopNav/TopNavMegaMenu.test.tsx +43 -0
  262. package/src/TopNav/TopNavMegaMenu.tsx +4 -1
  263. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  264. package/src/TopNav/TopNavMenu.test.tsx +41 -0
  265. package/src/TopNav/TopNavMenu.tsx +8 -2
  266. package/src/TreeList/TreeList.test.tsx +3 -2
  267. package/src/VisuallyHidden/VisuallyHidden.tsx +0 -2
  268. package/src/VisuallyHidden/index.ts +0 -2
  269. package/src/hooks/index.ts +5 -1
  270. package/src/hooks/useFocusTrap.test.tsx +16 -0
  271. package/src/hooks/useFocusTrap.ts +20 -2
  272. package/src/hooks/useInputStatusIcon.tsx +8 -8
  273. package/src/serverSafeComponents.test.ts +665 -0
  274. package/src/theme/defineTheme.ts +3 -0
  275. package/src/theme/generateThemeRules.test.ts +17 -0
  276. package/src/theme/index.ts +2 -0
  277. package/src/theme/themingTargets.test.ts +152 -26
  278. package/src/theme/tokens.stylex.ts +18 -0
  279. package/src/theme/tokens.test.ts +37 -0
  280. package/src/utils/focusOutline.stylex.ts +37 -23
  281. package/src/utils/index.ts +4 -0
  282. package/src/utils/interactionModality.ts +74 -0
@@ -15,10 +15,12 @@
15
15
  */
16
16
  import React, { useCallback, useEffect, useId, useRef, useState } from 'react';
17
17
  import * as stylex from '@stylexjs/stylex';
18
+ import { createPortal } from 'react-dom';
18
19
  import { addAnchorName, removeAnchorName } from "./anchorName.js";
20
+ import { resolveLayerPortalTarget } from "./layerHost.js";
19
21
  import "../theme/tokens.stylex.js";
20
22
  import { typographyVars } from "../theme/tokens.stylex.js";
21
- import { jsx as _jsx } from "react/jsx-runtime";
23
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
24
  const _temp = {
23
25
  keoZOQ: "x1vhfslr",
24
26
  k1K539: "xlm3tn6",
@@ -100,17 +102,40 @@ const styles = {
100
102
  function toCssLength(value) {
101
103
  return typeof value === 'number' ? `${value}px` : value;
102
104
  }
105
+ function readPortalWritingContext(element, portalTarget) {
106
+ const view = element.ownerDocument.defaultView;
107
+ if (!view) {
108
+ return {};
109
+ }
110
+ const sourceStyle = view.getComputedStyle(element);
111
+ const targetStyle = view.getComputedStyle(portalTarget);
112
+
113
+ // Do not snapshot custom properties here. The portal target is the closest
114
+ // safe ancestor, so theme variables continue to inherit and update there.
115
+ // These two properties can be set on the unsafe chain itself and directly
116
+ // affect the logical anchor-positioning keywords used by the layer. Only
117
+ // override values the portal would actually lose; matching values should
118
+ // keep inheriting from the target so later direction changes remain live.
119
+ return {
120
+ ...(sourceStyle.direction !== targetStyle.direction && {
121
+ direction: sourceStyle.direction
122
+ }),
123
+ ...(sourceStyle.writingMode !== targetStyle.writingMode && {
124
+ writingMode: sourceStyle.writingMode
125
+ })
126
+ };
127
+ }
103
128
 
104
129
  /**
105
130
  * Map logical placement/alignment to a CSS position-area value.
106
131
  *
107
132
  * Uses the self-* logical keyword family: the inline axis resolves against
108
- * the popover's own inherited direction (the layer renders inside the
109
- * trigger's subtree, so it inherits `direction` and mirrors in RTL with no
110
- * JS). The block axis is direction-neutral but must come from the same
111
- * keyword family — mixing physical `top` with `self-inline-*` produces an
112
- * invalid position-area (computes to `none`, which pins the popover to the
113
- * viewport corner because styles.base zeroes the UA margins).
133
+ * the popover's own direction (inherited inline or preserved when portaled),
134
+ * so it mirrors in RTL without placement-specific JS. The block axis is
135
+ * direction-neutral but must come from the same keyword family — mixing
136
+ * physical `top` with `self-inline-*` produces an invalid position-area
137
+ * (computes to `none`, which pins the popover to the viewport corner because
138
+ * styles.base zeroes the UA margins).
114
139
  *
115
140
  * Note the plain logical family (`inline-start`, no `self-`) is NOT a
116
141
  * substitute: it resolves against the containing block — the page root for
@@ -182,36 +207,101 @@ export function useLayer(options) {
182
207
  onHide,
183
208
  lightDismiss = false
184
209
  } = options;
210
+ const lazyMount = mode === 'context' ? options.lazyMount ?? false : false;
185
211
  const id = useId();
186
212
  const anchorId = `--astryx-layer-${id.replace(/:/g, '')}`;
187
213
  const [isOpen, setIsOpen] = useState(false);
188
214
  const popoverRef = useRef(null);
215
+ // The DOM element on which the current logical open state was applied.
216
+ // A portal target change replaces the popover element; retaining the old
217
+ // reference lets the ref callback recognize and reopen its replacement.
218
+ const openedPopoverRef = useRef(null);
189
219
  const triggerRef = useRef(null);
220
+ // Context layers place a persistent inert marker at their real JSX position.
221
+ // Its parent tells us whether the final layer can stay inline or needs a
222
+ // corrective portal, including after the render call moves.
223
+ const sentinelRef = useRef(null);
224
+ const contextMountRef = useRef(null);
225
+ const [contextMount, setContextMount] = useState(null);
226
+ // A show() that arrives before the final layer mounts is replayed when its
227
+ // popover ref attaches.
228
+ const pendingShowRef = useRef(false);
190
229
 
191
230
  // Ref mirrors isOpen for synchronous reads inside show/hide.
192
231
  // State drives re-renders; the ref lets the imperative calls avoid
193
232
  // stale-closure reads of the previous isOpen value.
194
233
  const isOpenRef = useRef(false);
234
+ const showPopoverElement = useCallback(popover => {
235
+ // Finding infra-4: the Popover API is unsupported on Safari <17 and
236
+ // Firefox <125. On those browsers `showPopover` does not exist, so fall
237
+ // back to plain visibility instead of throwing.
238
+ if (typeof popover.showPopover === 'function') {
239
+ // The trigger is passed as the popover's invoker `source`: a layer
240
+ // hosted away from its trigger then still takes its sequential focus
241
+ // order (and its popover nesting) from the trigger rather than from its
242
+ // own DOM position. Browsers without the option ignore it.
243
+ popover.showPopover({
244
+ source: triggerRef.current ?? undefined
245
+ });
246
+ } else {
247
+ popover.style.display = 'block';
248
+ }
249
+ openedPopoverRef.current = popover;
250
+ }, []);
251
+ const isCurrentContextPopover = useCallback(popover => {
252
+ if (mode !== 'context') {
253
+ return true;
254
+ }
255
+ const mount = contextMountRef.current;
256
+ if (mount === null) {
257
+ return false;
258
+ }
259
+ const expectedParent = mount.portalTarget ?? sentinelRef.current?.parentElement ?? null;
260
+ return popover.parentElement === expectedParent;
261
+ }, [mode]);
262
+ const requestContextMount = useCallback(() => {
263
+ if (mode !== 'context') {
264
+ return;
265
+ }
266
+ const sentinel = sentinelRef.current;
267
+ const inlineParent = sentinel?.parentElement ?? null;
268
+ if (!sentinel || !inlineParent) {
269
+ return;
270
+ }
271
+ const portalTarget = resolveLayerPortalTarget(inlineParent);
272
+ const mount = {
273
+ portalTarget,
274
+ portalStyle: portalTarget ? readPortalWritingContext(sentinel, portalTarget) : {}
275
+ };
276
+ contextMountRef.current = mount;
277
+ setContextMount(mount);
278
+ }, [mode]);
279
+ const clearContextMount = useCallback(() => {
280
+ if (mode !== 'context' || !lazyMount) {
281
+ return;
282
+ }
283
+ contextMountRef.current = null;
284
+ setContextMount(null);
285
+ }, [mode, lazyMount]);
195
286
  const show = useCallback(() => {
196
- const popover = popoverRef.current;
197
- if (popover && !isOpenRef.current) {
198
- // Finding infra-4: the Popover API is unsupported on Safari <17 and
199
- // Firefox <125. On those browsers `showPopover` does not exist, so
200
- // calling it unconditionally throws a TypeError and the layer never
201
- // opens. Guard behind a feature check; when the API is missing, fall
202
- // back to plain visibility (the [popover] attribute is inert there, so
203
- // the element sits in normal flow) so the layer still becomes visible.
204
- if (typeof popover.showPopover === 'function') {
205
- popover.showPopover();
206
- } else {
207
- popover.style.display = 'block';
208
- }
287
+ // A context popover left over until React commits a previous hide must not
288
+ // be reopened. The synchronous mount ref is the source of truth.
289
+ const candidate = popoverRef.current;
290
+ const popover = candidate && isCurrentContextPopover(candidate) ? candidate : null;
291
+ if (!popover) {
292
+ pendingShowRef.current = true;
293
+ requestContextMount();
294
+ return;
295
+ }
296
+ if (!isOpenRef.current) {
297
+ showPopoverElement(popover);
209
298
  isOpenRef.current = true;
210
299
  setIsOpen(true);
211
300
  onShow?.();
212
301
  }
213
- }, [onShow]);
302
+ }, [onShow, requestContextMount, showPopoverElement, isCurrentContextPopover]);
214
303
  const hide = useCallback(() => {
304
+ pendingShowRef.current = false;
215
305
  if (isOpenRef.current) {
216
306
  const el = popoverRef.current;
217
307
  // See finding infra-4 note in `show`: mirror the same guard on hide so
@@ -223,11 +313,13 @@ export function useLayer(options) {
223
313
  el.style.display = 'none';
224
314
  }
225
315
  }
316
+ openedPopoverRef.current = null;
226
317
  isOpenRef.current = false;
227
318
  setIsOpen(false);
228
319
  onHide?.();
229
320
  }
230
- }, [onHide]);
321
+ clearContextMount();
322
+ }, [onHide, clearContextMount]);
231
323
 
232
324
  // Ref for trigger element (context mode only)
233
325
  const ref = mode === 'context' ? el => {
@@ -255,11 +347,13 @@ export function useLayer(options) {
255
347
  const handleToggle = useCallback(e => {
256
348
  const toggleEvent = e;
257
349
  if (toggleEvent.newState === 'closed' && isOpenRef.current) {
350
+ openedPopoverRef.current = null;
258
351
  isOpenRef.current = false;
259
352
  setIsOpen(false);
260
353
  onHide?.();
354
+ clearContextMount();
261
355
  }
262
- }, [onHide]);
356
+ }, [onHide, clearContextMount]);
263
357
 
264
358
  // Ref callback for popover element — sets up the `toggle` listener.
265
359
  // Tracks the element + handler currently bound so the listener is removed
@@ -283,7 +377,24 @@ export function useLayer(options) {
283
377
  const popoverRefCallback = useCallback(el => {
284
378
  popoverRef.current = el;
285
379
  bindToggleListener(el, handleToggle);
286
- }, [handleToggle, bindToggleListener]);
380
+ if (el && pendingShowRef.current) {
381
+ pendingShowRef.current = false;
382
+ show();
383
+ } else if (el && isOpenRef.current && openedPopoverRef.current !== el && isCurrentContextPopover(el)) {
384
+ // Changing a portal target remounts the popover. Preserve the logical
385
+ // open state without firing onShow again for the replacement element.
386
+ showPopoverElement(el);
387
+ }
388
+ }, [handleToggle, bindToggleListener, show, showPopoverElement, isCurrentContextPopover]);
389
+ const sentinelRefCallback = useCallback(el => {
390
+ sentinelRef.current = el;
391
+ if (el && (!lazyMount || pendingShowRef.current || isOpenRef.current)) {
392
+ // The render call may have moved while the hook stayed mounted.
393
+ // Resolve again from the newly attached marker rather than reusing a
394
+ // portal target from its previous JSX position.
395
+ requestContextMount();
396
+ }
397
+ }, [lazyMount, requestContextMount]);
287
398
 
288
399
  // Re-bind when the handler identity changes while the element stays mounted,
289
400
  // and detach on unmount.
@@ -302,6 +413,17 @@ export function useLayer(options) {
302
413
 
303
414
  // Render function for context mode
304
415
  const renderContext = useCallback((children, props) => {
416
+ // Keep the marker mounted after resolving the layer. Apart from giving
417
+ // us the real JSX parent on first show, this lets its ref report when a
418
+ // persistent hook's render call moves to a different host.
419
+ const sentinel = /*#__PURE__*/_jsx("template", {
420
+ ref: sentinelRefCallback
421
+ });
422
+ if (contextMount === null) {
423
+ return /*#__PURE__*/_jsx(_Fragment, {
424
+ children: sentinel
425
+ });
426
+ }
305
427
  const {
306
428
  placement = 'above',
307
429
  alignment = 'center',
@@ -332,10 +454,10 @@ export function useLayer(options) {
332
454
  const stylexResult = stylex.props(styles.base, offsetStyle, xstyle);
333
455
  const combinedClassName = extraClassName ? `${extraClassName} ${stylexResult.className ?? ''}` : stylexResult.className;
334
456
 
335
- // Render as the requested tag. A `span` keeps the layer phrasing content
336
- // so it is valid (and stays put on hydration) inside inline contexts like
337
- // a `<p>`; `div` remains the default for block layers.
338
- return /*#__PURE__*/_jsx(Container, {
457
+ // The marker gives us the actual JSX parent without mounting arbitrary
458
+ // children there. Safe positions preserve the existing DOM order and
459
+ // cascade; unsafe positions use the nearest corrective portal target.
460
+ const layer = /*#__PURE__*/_jsx(Container, {
339
461
  ref: popoverRefCallback,
340
462
  id: id,
341
463
  role: role,
@@ -345,13 +467,17 @@ export function useLayer(options) {
345
467
  style: {
346
468
  ...stylexResult.style,
347
469
  ...anchorStyle,
470
+ ...contextMount.portalStyle,
348
471
  ...extraStyle
349
472
  },
350
473
  onMouseEnter: onMouseEnter,
351
474
  onMouseLeave: onMouseLeave,
352
475
  children: children
353
476
  });
354
- }, [anchorId, id, lightDismiss, popoverRefCallback]);
477
+ return /*#__PURE__*/_jsxs(_Fragment, {
478
+ children: [sentinel, contextMount.portalTarget ? /*#__PURE__*/createPortal(layer, contextMount.portalTarget) : layer]
479
+ });
480
+ }, [anchorId, contextMount, id, lightDismiss, popoverRefCallback, sentinelRefCallback]);
355
481
 
356
482
  // Render function for fixed mode
357
483
  const renderFixed = useCallback((children, props) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACjE,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,KAAK,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAgB,EAChB,aAAa,EACb,OAAe,EACf,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,KAAK,EACT,EAAE,aAAa,sCAyYf;yBAzZe,QAAQ"}
1
+ {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACjE,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,KAAK,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAwJD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAgB,EAChB,aAAa,EACb,OAAe,EACf,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,KAAK,EACT,EAAE,aAAa,sCAyYf;yBAzZe,QAAQ"}
@@ -26,6 +26,7 @@ import { useScrollLock } from "../hooks/useScrollLock.js";
26
26
  import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
27
27
  import { mergeProps, mergeRefs, rtlStyles } from "../utils/index.js";
28
28
  import { themeProps } from "../utils/themeProps.js";
29
+ import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
29
30
  import { useTranslator } from "../i18n/index.js";
30
31
 
31
32
  /**
@@ -57,6 +58,28 @@ const styles = {
57
58
  kba3nw: "x1abwkk1",
58
59
  $$css: true
59
60
  },
61
+ imageWrapper: {
62
+ k1xSpc: "x78zum5",
63
+ kGNEyG: "x6s0dn4",
64
+ kjj79g: "xl56j7k",
65
+ kVQacm: "xb3r6kr",
66
+ kkrTdU: "xt0e3qv",
67
+ kfSwDN: "x87ps6o",
68
+ kAzted: "x2lwn1j",
69
+ $$css: true
70
+ },
71
+ imageWrapperZoomable: {
72
+ kkrTdU: "x1huxd7x x2dt3px",
73
+ $$css: true
74
+ },
75
+ imageWrapperZoomed: {
76
+ kkrTdU: "x1jm3nie",
77
+ $$css: true
78
+ },
79
+ imageWrapperDragging: {
80
+ kkrTdU: "xi9pz9s",
81
+ $$css: true
82
+ },
60
83
  image: {
61
84
  ks0D6T: "x193iq5w",
62
85
  kskxy: "xmz0i5r",
@@ -461,56 +484,7 @@ export function Lightbox({
461
484
  tabIndex: isZoomTarget ? 0 : undefined,
462
485
  "aria-pressed": isZoomTarget ? isZoomed : undefined,
463
486
  "aria-label": isZoomTarget ? t('@astryx.lightbox.zoom') : undefined,
464
- ...{
465
- 0: {
466
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr xt0e3qv x87ps6o x2lwn1j"
467
- },
468
- 8: {
469
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr xt0e3qv x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk"
470
- },
471
- 4: {
472
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1huxd7x x2dt3px"
473
- },
474
- 12: {
475
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x1huxd7x x2dt3px"
476
- },
477
- 2: {
478
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1jm3nie"
479
- },
480
- 10: {
481
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x1jm3nie"
482
- },
483
- 6: {
484
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1jm3nie"
485
- },
486
- 14: {
487
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x1jm3nie"
488
- },
489
- 1: {
490
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
491
- },
492
- 9: {
493
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
494
- },
495
- 5: {
496
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
497
- },
498
- 13: {
499
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
500
- },
501
- 3: {
502
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
503
- },
504
- 11: {
505
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
506
- },
507
- 7: {
508
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
509
- },
510
- 15: {
511
- className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
512
- }
513
- }[!!isZoomTarget << 3 | !!(!isVideo && hasZoom && !isZoomed) << 2 | !!(!isVideo && isZoomed) << 1 | !!(!isVideo && isDragging) << 0],
487
+ ...stylex.props(styles.imageWrapper, isZoomTarget && focusOutlineStyles.focusVisible, !isVideo && hasZoom && !isZoomed && styles.imageWrapperZoomable, !isVideo && isZoomed && styles.imageWrapperZoomed, !isVideo && isDragging && styles.imageWrapperDragging),
514
488
  onDoubleClick: isVideo ? undefined : handleDoubleClick,
515
489
  onKeyDown: isZoomTarget ? handleImageKeyDown : undefined,
516
490
  onPointerDown: isVideo ? undefined : handlePointerDown,
@@ -14,6 +14,7 @@
14
14
  import React, { type ReactNode } from 'react';
15
15
  import { type IconType } from '../Icon';
16
16
  import { type FieldStatusVariant } from '../Field';
17
+ import type { IndicatorPosition } from '../Indicator';
17
18
  import type { MultiSelectorOptionType, MultiSelectorOptionData, MultiSelectorStatus } from './types';
18
19
  import type { BaseProps } from '../BaseProps';
19
20
  import type { SizeValue } from '../utils/types';
@@ -189,6 +190,12 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
189
190
  * Only called for selectable options (not dividers/sections or the select-all row).
190
191
  */
191
192
  renderOption?: (option: MultiSelectorOptionData) => ReactNode;
193
+ /**
194
+ * Which edge of the option row carries the checkbox.
195
+ *
196
+ * @default 'start'
197
+ */
198
+ indicatorPosition?: IndicatorPosition;
192
199
  /**
193
200
  * Whether the dropdown starts open on mount.
194
201
  * Useful for showcases and previews.
@@ -215,7 +222,7 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
215
222
  * />
216
223
  * ```
217
224
  */
218
- export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, triggerDisplay, maxBadges, renderOption, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
225
+ export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, triggerDisplay, maxBadges, renderOption, indicatorPosition, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
219
226
  export declare namespace MultiSelector {
220
227
  var displayName: string;
221
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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"}