@flipdish/ui-library 0.42.0 → 0.43.0

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 (237) hide show
  1. package/dist/components/atoms/LoadingIndicator/index.cjs +5 -0
  2. package/dist/components/atoms/LoadingIndicator/index.cjs.map +1 -1
  3. package/dist/components/atoms/LoadingIndicator/index.d.ts +1 -1
  4. package/dist/components/atoms/LoadingIndicator/index.d.ts.map +1 -1
  5. package/dist/components/atoms/LoadingIndicator/index.js +5 -0
  6. package/dist/components/atoms/LoadingIndicator/index.js.map +1 -1
  7. package/dist/components/atoms/SearchInput/index.cjs +28 -2
  8. package/dist/components/atoms/SearchInput/index.cjs.map +1 -1
  9. package/dist/components/atoms/SearchInput/index.d.ts +8 -1
  10. package/dist/components/atoms/SearchInput/index.d.ts.map +1 -1
  11. package/dist/components/atoms/SearchInput/index.js +28 -2
  12. package/dist/components/atoms/SearchInput/index.js.map +1 -1
  13. package/dist/components/atoms/SocialButton/index.cjs +11 -7
  14. package/dist/components/atoms/SocialButton/index.cjs.map +1 -1
  15. package/dist/components/atoms/SocialButton/index.d.ts.map +1 -1
  16. package/dist/components/atoms/SocialButton/index.js +11 -7
  17. package/dist/components/atoms/SocialButton/index.js.map +1 -1
  18. package/dist/components/atoms/Tooltip/index.cjs +8 -1
  19. package/dist/components/atoms/Tooltip/index.cjs.map +1 -1
  20. package/dist/components/atoms/Tooltip/index.d.ts.map +1 -1
  21. package/dist/components/atoms/Tooltip/index.js +8 -1
  22. package/dist/components/atoms/Tooltip/index.js.map +1 -1
  23. package/dist/components/atoms/UtilityButton/index.cjs.map +1 -1
  24. package/dist/components/atoms/UtilityButton/index.d.ts +2 -0
  25. package/dist/components/atoms/UtilityButton/index.d.ts.map +1 -1
  26. package/dist/components/atoms/UtilityButton/index.js.map +1 -1
  27. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.cjs +16 -4
  28. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.cjs.map +1 -1
  29. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.d.ts.map +1 -1
  30. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.js +17 -5
  31. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.js.map +1 -1
  32. package/dist/components/molecules/ButtonGroup/index.cjs +8 -1
  33. package/dist/components/molecules/ButtonGroup/index.cjs.map +1 -1
  34. package/dist/components/molecules/ButtonGroup/index.d.ts.map +1 -1
  35. package/dist/components/molecules/ButtonGroup/index.js +9 -2
  36. package/dist/components/molecules/ButtonGroup/index.js.map +1 -1
  37. package/dist/components/molecules/CodeSnippet/index.cjs +8 -1
  38. package/dist/components/molecules/CodeSnippet/index.cjs.map +1 -1
  39. package/dist/components/molecules/CodeSnippet/index.d.ts.map +1 -1
  40. package/dist/components/molecules/CodeSnippet/index.js +8 -1
  41. package/dist/components/molecules/CodeSnippet/index.js.map +1 -1
  42. package/dist/components/molecules/Dropdown/index.cjs +10 -7
  43. package/dist/components/molecules/Dropdown/index.cjs.map +1 -1
  44. package/dist/components/molecules/Dropdown/index.d.ts.map +1 -1
  45. package/dist/components/molecules/Dropdown/index.js +11 -8
  46. package/dist/components/molecules/Dropdown/index.js.map +1 -1
  47. package/dist/components/molecules/EmptyState/index.cjs +3 -2
  48. package/dist/components/molecules/EmptyState/index.cjs.map +1 -1
  49. package/dist/components/molecules/EmptyState/index.d.ts.map +1 -1
  50. package/dist/components/molecules/EmptyState/index.js +3 -2
  51. package/dist/components/molecules/EmptyState/index.js.map +1 -1
  52. package/dist/components/molecules/Select/components/Combobox.cjs +8 -1
  53. package/dist/components/molecules/Select/components/Combobox.cjs.map +1 -1
  54. package/dist/components/molecules/Select/components/Combobox.js +8 -1
  55. package/dist/components/molecules/Select/components/Combobox.js.map +1 -1
  56. package/dist/components/molecules/Select/components/SelectItem.cjs +10 -1
  57. package/dist/components/molecules/Select/components/SelectItem.cjs.map +1 -1
  58. package/dist/components/molecules/Select/components/SelectItem.d.ts.map +1 -1
  59. package/dist/components/molecules/Select/components/SelectItem.js +10 -1
  60. package/dist/components/molecules/Select/components/SelectItem.js.map +1 -1
  61. package/dist/components/molecules/Select/index.cjs +11 -1
  62. package/dist/components/molecules/Select/index.cjs.map +1 -1
  63. package/dist/components/molecules/Select/index.d.ts.map +1 -1
  64. package/dist/components/molecules/Select/index.js +11 -1
  65. package/dist/components/molecules/Select/index.js.map +1 -1
  66. package/dist/components/molecules/Select/multiSelect.utils.cjs +5 -1
  67. package/dist/components/molecules/Select/multiSelect.utils.cjs.map +1 -1
  68. package/dist/components/molecules/Select/multiSelect.utils.d.ts.map +1 -1
  69. package/dist/components/molecules/Select/multiSelect.utils.js +5 -1
  70. package/dist/components/molecules/Select/multiSelect.utils.js.map +1 -1
  71. package/dist/components/molecules/Tabs/index.cjs +14 -9
  72. package/dist/components/molecules/Tabs/index.cjs.map +1 -1
  73. package/dist/components/molecules/Tabs/index.d.ts +5 -3
  74. package/dist/components/molecules/Tabs/index.d.ts.map +1 -1
  75. package/dist/components/molecules/Tabs/index.js +15 -10
  76. package/dist/components/molecules/Tabs/index.js.map +1 -1
  77. package/dist/components/molecules/Tags/index.cjs +8 -1
  78. package/dist/components/molecules/Tags/index.cjs.map +1 -1
  79. package/dist/components/molecules/Tags/index.d.ts.map +1 -1
  80. package/dist/components/molecules/Tags/index.js +8 -1
  81. package/dist/components/molecules/Tags/index.js.map +1 -1
  82. package/dist/components/molecules/VerificationCodeInput/index.cjs +1 -1
  83. package/dist/components/molecules/VerificationCodeInput/index.cjs.map +1 -1
  84. package/dist/components/molecules/VerificationCodeInput/index.js +1 -1
  85. package/dist/components/molecules/VerificationCodeInput/index.js.map +1 -1
  86. package/dist/components/organisms/ApplicationHeader/index.cjs +4 -1
  87. package/dist/components/organisms/ApplicationHeader/index.cjs.map +1 -1
  88. package/dist/components/organisms/ApplicationHeader/index.d.ts.map +1 -1
  89. package/dist/components/organisms/ApplicationHeader/index.js +4 -1
  90. package/dist/components/organisms/ApplicationHeader/index.js.map +1 -1
  91. package/dist/components/organisms/Calendar/calendar.utils.cjs +14 -0
  92. package/dist/components/organisms/Calendar/calendar.utils.cjs.map +1 -1
  93. package/dist/components/organisms/Calendar/calendar.utils.d.ts +7 -0
  94. package/dist/components/organisms/Calendar/calendar.utils.d.ts.map +1 -1
  95. package/dist/components/organisms/Calendar/calendar.utils.js +14 -1
  96. package/dist/components/organisms/Calendar/calendar.utils.js.map +1 -1
  97. package/dist/components/organisms/Calendar/components/CalendarDayView.cjs +1 -1
  98. package/dist/components/organisms/Calendar/components/CalendarDayView.cjs.map +1 -1
  99. package/dist/components/organisms/Calendar/components/CalendarDayView.d.ts.map +1 -1
  100. package/dist/components/organisms/Calendar/components/CalendarDayView.js +2 -2
  101. package/dist/components/organisms/Calendar/components/CalendarDayView.js.map +1 -1
  102. package/dist/components/organisms/Calendar/components/CalendarMonthView.cjs +12 -5
  103. package/dist/components/organisms/Calendar/components/CalendarMonthView.cjs.map +1 -1
  104. package/dist/components/organisms/Calendar/components/CalendarMonthView.d.ts.map +1 -1
  105. package/dist/components/organisms/Calendar/components/CalendarMonthView.js +13 -6
  106. package/dist/components/organisms/Calendar/components/CalendarMonthView.js.map +1 -1
  107. package/dist/components/organisms/Calendar/components/CalendarWeekView.cjs +1 -1
  108. package/dist/components/organisms/Calendar/components/CalendarWeekView.cjs.map +1 -1
  109. package/dist/components/organisms/Calendar/components/CalendarWeekView.d.ts.map +1 -1
  110. package/dist/components/organisms/Calendar/components/CalendarWeekView.js +2 -2
  111. package/dist/components/organisms/Calendar/components/CalendarWeekView.js.map +1 -1
  112. package/dist/components/organisms/Charts/components/ChartsBase.cjs +28 -13
  113. package/dist/components/organisms/Charts/components/ChartsBase.cjs.map +1 -1
  114. package/dist/components/organisms/Charts/components/ChartsBase.d.ts.map +1 -1
  115. package/dist/components/organisms/Charts/components/ChartsBase.js +28 -13
  116. package/dist/components/organisms/Charts/components/ChartsBase.js.map +1 -1
  117. package/dist/components/organisms/Charts/components/Metrics.cjs +1 -1
  118. package/dist/components/organisms/Charts/components/Metrics.cjs.map +1 -1
  119. package/dist/components/organisms/Charts/components/Metrics.d.ts.map +1 -1
  120. package/dist/components/organisms/Charts/components/Metrics.js +1 -1
  121. package/dist/components/organisms/Charts/components/Metrics.js.map +1 -1
  122. package/dist/components/organisms/ColorPicker/index.cjs +8 -5
  123. package/dist/components/organisms/ColorPicker/index.cjs.map +1 -1
  124. package/dist/components/organisms/ColorPicker/index.d.ts.map +1 -1
  125. package/dist/components/organisms/ColorPicker/index.js +8 -5
  126. package/dist/components/organisms/ColorPicker/index.js.map +1 -1
  127. package/dist/components/organisms/Messaging/index.cjs +23 -5
  128. package/dist/components/organisms/Messaging/index.cjs.map +1 -1
  129. package/dist/components/organisms/Messaging/index.d.ts.map +1 -1
  130. package/dist/components/organisms/Messaging/index.js +24 -6
  131. package/dist/components/organisms/Messaging/index.js.map +1 -1
  132. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.cjs +7 -2
  133. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.cjs.map +1 -1
  134. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.d.ts +3 -1
  135. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.d.ts.map +1 -1
  136. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.js +8 -3
  137. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.js.map +1 -1
  138. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.cjs +121 -0
  139. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.cjs.map +1 -0
  140. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.d.ts +30 -0
  141. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.d.ts.map +1 -0
  142. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.js +119 -0
  143. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.js.map +1 -0
  144. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.cjs +39 -0
  145. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.cjs.map +1 -0
  146. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.d.ts +23 -0
  147. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.d.ts.map +1 -0
  148. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.js +37 -0
  149. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.js.map +1 -0
  150. package/dist/components/organisms/SlideoutMenu/index.cjs +34 -37
  151. package/dist/components/organisms/SlideoutMenu/index.cjs.map +1 -1
  152. package/dist/components/organisms/SlideoutMenu/index.d.ts +52 -41
  153. package/dist/components/organisms/SlideoutMenu/index.d.ts.map +1 -1
  154. package/dist/components/organisms/SlideoutMenu/index.js +35 -38
  155. package/dist/components/organisms/SlideoutMenu/index.js.map +1 -1
  156. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.cjs +13 -0
  157. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.cjs.map +1 -0
  158. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.d.ts +14 -0
  159. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.d.ts.map +1 -0
  160. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.js +11 -0
  161. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.js.map +1 -0
  162. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.cjs +9 -0
  163. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.cjs.map +1 -0
  164. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.d.ts +13 -0
  165. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.d.ts.map +1 -0
  166. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.js +7 -0
  167. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.js.map +1 -0
  168. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.cjs +52 -0
  169. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.cjs.map +1 -0
  170. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.d.ts +26 -0
  171. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.d.ts.map +1 -0
  172. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.js +47 -0
  173. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.js.map +1 -0
  174. package/dist/components/organisms/Table/index.cjs +35 -5
  175. package/dist/components/organisms/Table/index.cjs.map +1 -1
  176. package/dist/components/organisms/Table/index.d.ts +8 -2
  177. package/dist/components/organisms/Table/index.d.ts.map +1 -1
  178. package/dist/components/organisms/Table/index.js +36 -6
  179. package/dist/components/organisms/Table/index.js.map +1 -1
  180. package/dist/components/organisms/Table/table.utils.cjs +37 -0
  181. package/dist/components/organisms/Table/table.utils.cjs.map +1 -0
  182. package/dist/components/organisms/Table/table.utils.d.ts +22 -0
  183. package/dist/components/organisms/Table/table.utils.d.ts.map +1 -0
  184. package/dist/components/organisms/Table/table.utils.js +33 -0
  185. package/dist/components/organisms/Table/table.utils.js.map +1 -0
  186. package/dist/components/organisms/TreeView/index.cjs +14 -7
  187. package/dist/components/organisms/TreeView/index.cjs.map +1 -1
  188. package/dist/components/organisms/TreeView/index.d.ts.map +1 -1
  189. package/dist/components/organisms/TreeView/index.js +14 -7
  190. package/dist/components/organisms/TreeView/index.js.map +1 -1
  191. package/dist/components/organisms/TreeView/treeView.utils.cjs +4 -1
  192. package/dist/components/organisms/TreeView/treeView.utils.cjs.map +1 -1
  193. package/dist/components/organisms/TreeView/treeView.utils.d.ts.map +1 -1
  194. package/dist/components/organisms/TreeView/treeView.utils.js +4 -1
  195. package/dist/components/organisms/TreeView/treeView.utils.js.map +1 -1
  196. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.cjs +43 -0
  197. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.cjs.map +1 -0
  198. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.d.ts +12 -0
  199. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.d.ts.map +1 -0
  200. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.js +41 -0
  201. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.js.map +1 -0
  202. package/dist/components/templates/AppShell/index.cjs +10 -6
  203. package/dist/components/templates/AppShell/index.cjs.map +1 -1
  204. package/dist/components/templates/AppShell/index.d.ts +1 -1
  205. package/dist/components/templates/AppShell/index.d.ts.map +1 -1
  206. package/dist/components/templates/AppShell/index.js +11 -7
  207. package/dist/components/templates/AppShell/index.js.map +1 -1
  208. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.cjs +56 -0
  209. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.cjs.map +1 -0
  210. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.d.ts +26 -0
  211. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.d.ts.map +1 -0
  212. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.js +54 -0
  213. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.js.map +1 -0
  214. package/dist/hooks/useDebouncedCallback/index.cjs +45 -0
  215. package/dist/hooks/useDebouncedCallback/index.cjs.map +1 -0
  216. package/dist/hooks/useDebouncedCallback/index.d.ts +18 -0
  217. package/dist/hooks/useDebouncedCallback/index.d.ts.map +1 -0
  218. package/dist/hooks/useDebouncedCallback/index.js +43 -0
  219. package/dist/hooks/useDebouncedCallback/index.js.map +1 -0
  220. package/dist/native/components/atoms/Checkbox/index.d.ts.map +1 -1
  221. package/dist/native/components/atoms/Checkbox/index.js +1 -1
  222. package/dist/native/components/atoms/Checkbox/index.js.map +1 -1
  223. package/dist/native/components/molecules/Tags/index.d.ts.map +1 -1
  224. package/dist/native/components/molecules/Tags/index.js +8 -1
  225. package/dist/native/components/molecules/Tags/index.js.map +1 -1
  226. package/dist/native/hooks/useDebouncedCallback/index.d.ts +18 -0
  227. package/dist/native/hooks/useDebouncedCallback/index.d.ts.map +1 -0
  228. package/dist/native/hooks/useDebouncedCallback/index.js +43 -0
  229. package/dist/native/hooks/useDebouncedCallback/index.js.map +1 -0
  230. package/dist/native/utilities/searchParamsUtils/index.d.ts +12 -0
  231. package/dist/utilities/searchParamsUtils/index.cjs +71 -0
  232. package/dist/utilities/searchParamsUtils/index.cjs.map +1 -0
  233. package/dist/utilities/searchParamsUtils/index.d.ts +61 -0
  234. package/dist/utilities/searchParamsUtils/index.d.ts.map +1 -0
  235. package/dist/utilities/searchParamsUtils/index.js +64 -0
  236. package/dist/utilities/searchParamsUtils/index.js.map +1 -0
  237. package/package.json +3 -1
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { Link03, FileIcon, Stars02, Edit04, DownloadCloud02, RefreshCcw02, Copy01 } from '@flipdish/ui-icons';
2
+ import { FileIcon, Link03, Stars02, Edit04, DownloadCloud02, RefreshCcw02, Copy01 } from '@flipdish/ui-icons';
3
3
  import { Avatar } from '@flipdish/ui-library/components/atoms/Avatar';
4
4
  import { Tooltip } from '@flipdish/ui-library/components/atoms/Tooltip';
5
5
  import { cx } from '@flipdish/ui-library/utilities/cx';
@@ -9,8 +9,14 @@ import { Button } from 'react-aria-components';
9
9
  /** Delivery tick for a message, showing sent, read or failed with a tooltip that names the state. */
10
10
  const MessageStatus = ({ status, readAt, 'data-testid': dataTestId }) => {
11
11
  const messageStatusTestId = useResolvedTestId({ testId: dataTestId, segment: 'message-status', rootName: 'message-status' });
12
- const statusLabel = status === 'sent' ? 'Message unread' : status === 'read' ? `Message read${readAt ? ` ${readAt}` : ''}` : 'Message failed to send, retry';
13
- return (jsx(Tooltip, { title: status === 'sent' ? 'Unread' : status === 'read' ? `Read${readAt ? ` ${readAt}` : ''}` : 'Failed', children: jsx(Button, { "aria-label": statusLabel, "data-testid": messageStatusTestId, className: "focus:outline-hidden", children: jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", children: [status === 'sent' && (jsx("path", { d: "M13 5L7 11L4 8", className: "stroke-fg-quaternary", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })), status === 'read' && (jsx("path", { d: "M10.5 5L4.5 11L1.5 8M14.5 5L8.5 11L6.5 9", className: "stroke-fg-brand-secondary", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })), status === 'failed' && (jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8 14C11.3137 14 14 11.3137 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14ZM7.25 5C7.25 4.58579 7.58579 4.25 8 4.25C8.41421 4.25 8.75 4.58579 8.75 5V8.5C8.75 8.91421 8.41421 9.25 8 9.25C7.58579 9.25 7.25 8.91421 7.25 8.5V5ZM8 11.75C8.41421 11.75 8.75 11.4142 8.75 11C8.75 10.5858 8.41421 10.25 8 10.25C7.58579 10.25 7.25 10.5858 7.25 11C7.25 11.4142 7.58579 11.75 8 11.75Z", className: "fill-fg-error-primary" }))] }) }) }));
12
+ const readSuffix = readAt ? ` ${readAt}` : '';
13
+ const statusLabel = {
14
+ sent: 'Message unread',
15
+ read: `Message read${readSuffix}`,
16
+ failed: 'Message failed to send, retry',
17
+ }[status];
18
+ const tooltipTitle = { sent: 'Unread', read: `Read${readSuffix}`, failed: 'Failed' }[status];
19
+ return (jsx(Tooltip, { title: tooltipTitle, children: jsx(Button, { "aria-label": statusLabel, "data-testid": messageStatusTestId, className: "focus:outline-hidden", children: jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", children: [status === 'sent' && (jsx("path", { d: "M13 5L7 11L4 8", className: "stroke-fg-quaternary", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })), status === 'read' && (jsx("path", { d: "M10.5 5L4.5 11L1.5 8M14.5 5L8.5 11L6.5 9", className: "stroke-fg-brand-secondary", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })), status === 'failed' && (jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8 14C11.3137 14 14 11.3137 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14ZM7.25 5C7.25 4.58579 7.58579 4.25 8 4.25C8.41421 4.25 8.75 4.58579 8.75 5V8.5C8.75 8.91421 8.41421 9.25 8 9.25C7.58579 9.25 7.25 8.91421 7.25 8.5V5ZM8 11.75C8.41421 11.75 8.75 11.4142 8.75 11C8.75 10.5858 8.41421 10.25 8 10.25C7.58579 10.25 7.25 10.5858 7.25 11C7.25 11.4142 7.58579 11.75 8 11.75Z", className: "fill-fg-error-primary" }))] }) }) }));
14
20
  };
15
21
  /**
16
22
  * One chat bubble in a conversation thread, aligned left for incoming and right for outgoing
@@ -24,9 +30,21 @@ const MessageItem = ({ msg, showUserLabel = true, 'data-testid': dataTestId, ...
24
30
  const renderActions = () => (jsxs("div", { className: "dark-mode absolute right-2 -bottom-5 z-1 flex gap-1.5 rounded-lg bg-primary_alt px-2 py-1.5 opacity-0 shadow-xl transition duration-100 ease-linear group-hover/msg:opacity-100", children: [jsx("button", { title: "Generate with AI", "aria-label": "Generate with AI", className: "cursor-pointer rounded p-0.5 text-fg-quaternary outline-focus-ring transition duration-100 ease-linear hover:text-fg-quaternary_hover focus-visible:outline-2 focus-visible:outline-offset-2", children: jsx(Stars02, { className: "size-4" }) }), (msg.text || msg.attachment || msg.audio || msg.image) && (
25
31
  // biome-ignore lint/a11y/useButtonType: we don't need a type for this button
26
32
  jsx("button", { title: msg.text ? 'Edit message' : 'Download', "aria-label": msg.text ? 'Edit message' : 'Download', className: "cursor-pointer rounded p-0.5 text-fg-quaternary outline-focus-ring transition duration-100 ease-linear hover:text-fg-quaternary_hover focus-visible:outline-2 focus-visible:outline-offset-2", children: msg.text ? jsx(Edit04, { className: "size-4" }) : jsx(DownloadCloud02, { className: "size-4" }) })), jsx("button", { title: "Reply", "aria-label": "Reply", className: "cursor-pointer rounded p-0.5 text-fg-quaternary outline-focus-ring transition duration-100 ease-linear hover:text-fg-quaternary_hover focus-visible:outline-2 focus-visible:outline-offset-2", children: jsx(RefreshCcw02, { className: "size-4" }) }), jsx("button", { title: "Copy", "aria-label": "Copy", className: "cursor-pointer rounded p-0.5 text-fg-quaternary outline-focus-ring transition duration-100 ease-linear hover:text-fg-quaternary_hover focus-visible:outline-2 focus-visible:outline-offset-2", children: jsx(Copy01, { className: "size-4" }) })] }));
27
- return (jsx(TestIdProvider, { value: messageItemTestId, children: jsxs("li", { ...props, "data-testid": messageItemTestId, className: cx('relative flex items-start gap-3', msg.user?.me ? 'self-end pl-10' : 'pr-8 lg:pr-10', props.className), children: [msg.user && !msg.user.me && jsx(Avatar, { src: msg.user.avatarUrl, alt: msg.user.name ?? '', size: "sm", status: msg.user.status }), jsxs("article", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [((msg.user && showUserLabel) || msg.sentAt || msg.status) && (jsxs("header", { className: "flex items-center gap-2", children: [msg.user && showUserLabel && (jsx("cite", { className: "flex-1 truncate text-sm font-medium text-secondary not-italic", children: msg.user.me ? 'You' : msg.user.name })), !msg.typing && (msg.sentAt || msg.status) && (jsxs("div", { className: "flex items-center gap-0.5", children: [msg.sentAt && (jsx("time", { className: "text-xs text-tertiary", dateTime: msg.sentAt, children: msg.sentAt })), msg.status && jsx(MessageStatus, { status: msg.status, readAt: msg.readAt })] }))] })), msg.text ? (jsxs("div", { className: cx('group/msg relative rounded-lg px-3 py-2 text-md wrap-break-word text-primary ring-1 ring-secondary ring-inset', msg.user?.me ? 'rounded-tr-none bg-primary pr-4' : 'rounded-tl-none bg-secondary',
28
- // Link styles
29
- '[&_a]:rounded-xs [&_a]:text-brand-secondary [&_a]:underline [&_a]:underline-offset-2 [&_a]:outline-focus-ring [&_a]:transition [&_a]:duration-100 [&_a]:ease-linear [&_a]:hover:text-brand-secondary_hover [&_a]:focus-visible:outline-2 [&_a]:focus-visible:outline-offset-2'), children: [msg.reply && (jsx("blockquote", { className: "relative mb-1.5 rounded-lg bg-primary px-3 py-2 text-sm text-tertiary ring-1 ring-secondary ring-inset before:pointer-events-none before:absolute before:inset-0 before:rounded-[inherit] before:border-l-[3px] before:border-brand", children: msg.reply.text })), msg.image && (jsx("figure", { className: "mt-1 mb-1.5", children: jsx("img", { src: msg.image.src, alt: msg.image.alt, className: "w-full rounded-md object-cover outline-1 -outline-offset-[0.5px] outline-black/10" }) })), msg.urlPreview && (jsxs("aside", { className: "mt-1 mb-1.5 flex items-start gap-1.5 rounded-lg bg-primary p-2 pr-3 ring-1 ring-secondary ring-inset", children: [jsx(Link03, { className: "mt-0.5 size-4 shrink-0 text-fg-quaternary" }), jsxs("div", { className: "min-w-0 flex-1", children: [jsx("p", { className: "w-full truncate text-sm font-medium text-secondary", children: msg.urlPreview.title }), jsx("p", { className: "w-full truncate text-sm text-tertiary", children: msg.urlPreview.description })] })] })), msg.text, renderActions()] })) : msg.image ? (jsxs("figure", { className: "flex flex-col gap-1.5", children: [jsxs("div", { className: "group/msg relative", children: [jsx("img", { src: msg.image.src, alt: msg.image.alt, className: "w-full rounded-md object-cover outline-1 -outline-offset-[0.5px] outline-black/10" }), renderActions()] }), jsxs("figcaption", { className: "flex items-center gap-1", children: [jsx("span", { className: "min-w-0 flex-1 truncate text-sm font-medium text-secondary", children: msg.image.name }), jsx("span", { className: "text-sm text-tertiary", children: msg.image.size })] })] })) : msg.audio ? (jsxs("div", { className: "group/msg relative flex items-center gap-2 rounded-lg rounded-tl-none bg-primary p-3 ring-1 ring-secondary", children: [jsx("button", { "aria-label": "Play audio message", className: "flex size-8 cursor-pointer items-center justify-center rounded-full bg-fg-brand-primary_alt outline-focus-ring focus-visible:outline-2 focus-visible:outline-offset-2", children: jsx("svg", { width: "12.8", height: "14", viewBox: "0 0 16 16", fill: "none", className: "translate-x-[1px] text-fg-white", children: jsx("path", { d: "M2.19995 2.86327C2.19995 1.61155 3.57248 0.844595 4.63851 1.50061L12.9856 6.63731C14.0009 7.26209 14.0009 8.73784 12.9856 9.36262L4.63851 14.4993C3.57247 15.1553 2.19995 14.3884 2.19995 13.1367V2.86327Z", fill: "currentColor" }) }) }), jsx("svg", { width: "206", height: "34", viewBox: "0 0 206 34", fill: "none", className: "flex-1 text-fg-brand-primary_alt", children: jsx("path", { d: "M1 15V19M5 15V19M9 15V19M13 15V19M17 9.00005V25M21 5.00005V29M25 1.00005V33M29 1.00005V33M33 5.00005V29M37 13V21M41 9.00005V25M45 13V21M49 5.00005V29M53 5.00005V29M57 9.00005V25M61 9.00005V25M65 1.00005V33M69 1.00005V33M73 5.00005V29M77 1.00005V33M81 9.00005V25M85 13V21M89 15V19.0001M93 15V19.0001M97 13V21.0001M101 13V21.0001M105 9V25.0001M109 5V29.0001M113 1V33.0001M117 5V29.0001M121 5V29.0001M125 5V29.0001M129 9V25.0001M133 13V21.0001M137 9V25.0001M141 13V21.0001M145 9V25.0001M149 5V29.0001M153 5V29.0001M157 9V25.0001M161 1V33.0001M165 5V29.0001M169 9V25.0001M173 13V21.0001M177 15V19.0001M181 9V25.0001M185 5V29.0001M189 5V29.0001M193 9V25.0001M197 15V19.0001M201 15V19.0001M205 15V19.0001", stroke: "currentColor", strokeLinecap: "round" }) }), jsx("p", { className: "text-xs text-tertiary", children: msg.audio.duration }), renderActions()] })) : null, msg.attachment && (jsxs("div", { className: "group/msg relative flex gap-3 rounded-lg rounded-tl-none bg-primary px-3.5 py-2.5 ring-1 ring-secondary", children: [jsx(FileIcon, { type: msg.attachment.type, theme: "light", className: "size-10 dark:hidden" }), jsx(FileIcon, { type: msg.attachment.type, theme: "dark", className: "size-10 not-dark:hidden" }), jsxs("div", { className: "min-w-0 flex-1", children: [jsx("p", { className: "truncate text-sm font-medium text-secondary", children: msg.attachment.name }), jsx("p", { className: "text-sm text-tertiary", children: msg.attachment.size })] }), renderActions()] })), msg.reactions && msg.reactions.length > 0 && (jsx("ul", { className: "flex justify-end gap-1", children: msg.reactions?.map((reaction) => (jsxs("li", { className: "flex h-6 items-center gap-1 rounded-2xl bg-secondary px-2 py-0.5 ring-1 ring-secondary ring-inset", children: [reaction.content, reaction.count > 1 && jsx("span", { className: "text-sm font-medium text-secondary", children: reaction.count })] }, reaction.content))) })), msg.typing && (jsxs("div", { className: "flex h-7 w-10 items-center justify-center gap-1 self-start rounded-lg rounded-tl-none bg-secondary text-md text-primary ring-1 ring-secondary ring-inset", children: [jsx("div", { className: "size-1 animate-bounce rounded-full bg-fg-tertiary [animation-delay:-0.3s]" }), jsx("div", { className: "size-1 animate-bounce rounded-full bg-fg-quaternary [animation-delay:-0.15s]" }), jsx("div", { className: "size-1 animate-bounce rounded-full bg-fg-tertiary" })] }))] })] }, msg.id) }));
33
+ const renderBody = () => {
34
+ if (msg.text) {
35
+ return (jsxs("div", { className: cx('group/msg relative rounded-lg px-3 py-2 text-md wrap-break-word text-primary ring-1 ring-secondary ring-inset', msg.user?.me ? 'rounded-tr-none bg-primary pr-4' : 'rounded-tl-none bg-secondary',
36
+ // Link styles
37
+ '[&_a]:rounded-xs [&_a]:text-brand-secondary [&_a]:underline [&_a]:underline-offset-2 [&_a]:outline-focus-ring [&_a]:transition [&_a]:duration-100 [&_a]:ease-linear [&_a]:hover:text-brand-secondary_hover [&_a]:focus-visible:outline-2 [&_a]:focus-visible:outline-offset-2'), children: [msg.reply && (jsx("blockquote", { className: "relative mb-1.5 rounded-lg bg-primary px-3 py-2 text-sm text-tertiary ring-1 ring-secondary ring-inset before:pointer-events-none before:absolute before:inset-0 before:rounded-[inherit] before:border-l-[3px] before:border-brand", children: msg.reply.text })), msg.image && (jsx("figure", { className: "mt-1 mb-1.5", children: jsx("img", { src: msg.image.src, alt: msg.image.alt, className: "w-full rounded-md object-cover outline-1 -outline-offset-[0.5px] outline-black/10" }) })), msg.urlPreview && (jsxs("aside", { className: "mt-1 mb-1.5 flex items-start gap-1.5 rounded-lg bg-primary p-2 pr-3 ring-1 ring-secondary ring-inset", children: [jsx(Link03, { className: "mt-0.5 size-4 shrink-0 text-fg-quaternary" }), jsxs("div", { className: "min-w-0 flex-1", children: [jsx("p", { className: "w-full truncate text-sm font-medium text-secondary", children: msg.urlPreview.title }), jsx("p", { className: "w-full truncate text-sm text-tertiary", children: msg.urlPreview.description })] })] })), msg.text, renderActions()] }));
38
+ }
39
+ if (msg.image) {
40
+ return (jsxs("figure", { className: "flex flex-col gap-1.5", children: [jsxs("div", { className: "group/msg relative", children: [jsx("img", { src: msg.image.src, alt: msg.image.alt, className: "w-full rounded-md object-cover outline-1 -outline-offset-[0.5px] outline-black/10" }), renderActions()] }), jsxs("figcaption", { className: "flex items-center gap-1", children: [jsx("span", { className: "min-w-0 flex-1 truncate text-sm font-medium text-secondary", children: msg.image.name }), jsx("span", { className: "text-sm text-tertiary", children: msg.image.size })] })] }));
41
+ }
42
+ if (msg.audio) {
43
+ return (jsxs("div", { className: "group/msg relative flex items-center gap-2 rounded-lg rounded-tl-none bg-primary p-3 ring-1 ring-secondary", children: [jsx("button", { "aria-label": "Play audio message", className: "flex size-8 cursor-pointer items-center justify-center rounded-full bg-fg-brand-primary_alt outline-focus-ring focus-visible:outline-2 focus-visible:outline-offset-2", children: jsx("svg", { width: "12.8", height: "14", viewBox: "0 0 16 16", fill: "none", className: "translate-x-[1px] text-fg-white", children: jsx("path", { d: "M2.19995 2.86327C2.19995 1.61155 3.57248 0.844595 4.63851 1.50061L12.9856 6.63731C14.0009 7.26209 14.0009 8.73784 12.9856 9.36262L4.63851 14.4993C3.57247 15.1553 2.19995 14.3884 2.19995 13.1367V2.86327Z", fill: "currentColor" }) }) }), jsx("svg", { width: "206", height: "34", viewBox: "0 0 206 34", fill: "none", className: "flex-1 text-fg-brand-primary_alt", children: jsx("path", { d: "M1 15V19M5 15V19M9 15V19M13 15V19M17 9.00005V25M21 5.00005V29M25 1.00005V33M29 1.00005V33M33 5.00005V29M37 13V21M41 9.00005V25M45 13V21M49 5.00005V29M53 5.00005V29M57 9.00005V25M61 9.00005V25M65 1.00005V33M69 1.00005V33M73 5.00005V29M77 1.00005V33M81 9.00005V25M85 13V21M89 15V19.0001M93 15V19.0001M97 13V21.0001M101 13V21.0001M105 9V25.0001M109 5V29.0001M113 1V33.0001M117 5V29.0001M121 5V29.0001M125 5V29.0001M129 9V25.0001M133 13V21.0001M137 9V25.0001M141 13V21.0001M145 9V25.0001M149 5V29.0001M153 5V29.0001M157 9V25.0001M161 1V33.0001M165 5V29.0001M169 9V25.0001M173 13V21.0001M177 15V19.0001M181 9V25.0001M185 5V29.0001M189 5V29.0001M193 9V25.0001M197 15V19.0001M201 15V19.0001M205 15V19.0001", stroke: "currentColor", strokeLinecap: "round" }) }), jsx("p", { className: "text-xs text-tertiary", children: msg.audio.duration }), renderActions()] }));
44
+ }
45
+ return null;
46
+ };
47
+ return (jsx(TestIdProvider, { value: messageItemTestId, children: jsxs("li", { ...props, "data-testid": messageItemTestId, className: cx('relative flex items-start gap-3', msg.user?.me ? 'self-end pl-10' : 'pr-8 lg:pr-10', props.className), children: [msg.user && !msg.user.me && jsx(Avatar, { src: msg.user.avatarUrl, alt: msg.user.name ?? '', size: "sm", status: msg.user.status }), jsxs("article", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [((msg.user && showUserLabel) || msg.sentAt || msg.status) && (jsxs("header", { className: "flex items-center gap-2", children: [msg.user && showUserLabel && (jsx("cite", { className: "flex-1 truncate text-sm font-medium text-secondary not-italic", children: msg.user.me ? 'You' : msg.user.name })), !msg.typing && (msg.sentAt || msg.status) && (jsxs("div", { className: "flex items-center gap-0.5", children: [msg.sentAt && (jsx("time", { className: "text-xs text-tertiary", dateTime: msg.sentAt, children: msg.sentAt })), msg.status && jsx(MessageStatus, { status: msg.status, readAt: msg.readAt })] }))] })), renderBody(), msg.attachment && (jsxs("div", { className: "group/msg relative flex gap-3 rounded-lg rounded-tl-none bg-primary px-3.5 py-2.5 ring-1 ring-secondary", children: [jsx(FileIcon, { type: msg.attachment.type, theme: "light", className: "size-10 dark:hidden" }), jsx(FileIcon, { type: msg.attachment.type, theme: "dark", className: "size-10 not-dark:hidden" }), jsxs("div", { className: "min-w-0 flex-1", children: [jsx("p", { className: "truncate text-sm font-medium text-secondary", children: msg.attachment.name }), jsx("p", { className: "text-sm text-tertiary", children: msg.attachment.size })] }), renderActions()] })), msg.reactions && msg.reactions.length > 0 && (jsx("ul", { className: "flex justify-end gap-1", children: msg.reactions?.map((reaction) => (jsxs("li", { className: "flex h-6 items-center gap-1 rounded-2xl bg-secondary px-2 py-0.5 ring-1 ring-secondary ring-inset", children: [reaction.content, reaction.count > 1 && jsx("span", { className: "text-sm font-medium text-secondary", children: reaction.count })] }, reaction.content))) })), msg.typing && (jsxs("div", { className: "flex h-7 w-10 items-center justify-center gap-1 self-start rounded-lg rounded-tl-none bg-secondary text-md text-primary ring-1 ring-secondary ring-inset", children: [jsx("div", { className: "size-1 animate-bounce rounded-full bg-fg-tertiary [animation-delay:-0.3s]" }), jsx("div", { className: "size-1 animate-bounce rounded-full bg-fg-quaternary [animation-delay:-0.15s]" }), jsx("div", { className: "size-1 animate-bounce rounded-full bg-fg-tertiary" })] }))] })] }, msg.id) }));
30
48
  };
31
49
 
32
50
  export { MessageItem, MessageStatus };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/organisms/Messaging/index.tsx"],"sourcesContent":[null],"names":["_jsx","AriaButton","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/organisms/Messaging/index.tsx"],"sourcesContent":[null],"names":["_jsx","AriaButton","_jsxs"],"mappings":"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"}
@@ -13,7 +13,8 @@ const focusableSiblingBefore = (panel) => {
13
13
  * and makes a leaving panel inert. Managed by hand, not with a focus scope: a scope would also
14
14
  * reroute Tab at the panel's edges, as a popover does.
15
15
  *
16
- * @returns a capture-phase focus handler to spread onto the panel element
16
+ * @returns a capture-phase focus handler to spread onto the panel element, and `setOpener`, which points the hand-back on
17
+ * close at another control after a content swap
17
18
  */
18
19
  const usePanelFocus = ({ panelRef, isPresent, isDesktop, shouldFocusOnMount, contentKey }) => {
19
20
  const openerRef = React.useRef(null);
@@ -80,7 +81,11 @@ const usePanelFocus = ({ panelRef, isPresent, isDesktop, shouldFocusOnMount, con
80
81
  if (openerRef.current === null && from instanceof HTMLElement && !event.currentTarget.contains(from))
81
82
  openerRef.current = from;
82
83
  };
83
- return { onFocusCapture };
84
+ // A panel whose content swaps while open follows the user's latest gesture, so closing lands on the row they are on, not the first one.
85
+ const setOpener = React.useCallback((element) => {
86
+ openerRef.current = element;
87
+ }, []);
88
+ return { onFocusCapture, setOpener };
84
89
  };
85
90
 
86
91
  exports.usePanelFocus = usePanelFocus;
@@ -1 +1 @@
1
- {"version":3,"file":"usePanelFocus.cjs","sources":["../../../../../src/components/organisms/SidePanel/hooks/usePanelFocus.ts"],"sourcesContent":[null],"names":["useRef","useState","getFocusedElement","useEffect","useLayoutEffect"],"mappings":";;;;;AAMA;AACA,MAAM,sBAAsB,GAAG,CAAC,KAAkB,KAAwB;AACxE,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,sBAAsB;AAE5C,IAAA,OAAO,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI;AACjF,CAAC;AAcD;;;;;;AAMG;AACI,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAwB,KAAI;AACxH,IAAA,MAAM,SAAS,GAAGA,YAAM,CAAqB,IAAI,CAAC;AAClD,IAAA,MAAM,iBAAiB,GAAGA,YAAM,CAAiB,IAAI,CAAC;AACtD,IAAA,MAAM,iBAAiB,GAAGA,YAAM,CAAC,SAAS,CAAC;;IAE3C,MAAM,CAAC,kBAAkB,CAAC,GAAGC,cAAQ,CAAqBC,6BAAiB,CAAC;IAE5EC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO;AAC1C,QAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS;;AAErC,QAAA,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,IAAI,IAAI,kBAAkB,CAAC,CAAC;QACjG,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,QAAQ,KAAK,IAAI;AACjD,QAAA,MAAM,OAAO,GAAGD,6BAAiB,EAAE;AACnC,QAAA,MAAM,cAAc,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAGlE,QAAA,IAAI,SAAS;AAAE,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK;QAClC,IAAI,UAAU,EAAE;;AAEd,YAAA,SAAS,CAAC,OAAO,GAAG,QAAQ,KAAK,IAAI,GAAG,kBAAkB,GAAG,OAAO;;;AAGpE,YAAA,IAAI,CAAC,cAAc;gBAAE,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC3D;;AAEA,QAAA,IAAI,SAAS,IAAI,cAAc,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO;;AAEhC,YAAA,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;QACzE;;AAEA,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI;IACpC,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAEjEC,eAAS,CAAC,MAAK;QACb,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,OAAO,IAAI,CAAC,SAAS;AACtE,QAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS;AAErC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,MAAM,OAAO,GAAGD,6BAAiB,EAAE;;QAEnC,IAAI,sBAAsB,IAAI,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;YACpH,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACtC;AACF,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;;;AAIzB,IAAA,MAAM,kBAAkB,GAAGF,YAAM,CAAC,UAAU,CAAC;IAC7CI,qBAAe,CAAC,MAAK;AACnB,QAAA,IAAI,kBAAkB,CAAC,OAAO,KAAK,UAAU;YAAE;AAC/C,QAAA,kBAAkB,CAAC,OAAO,GAAG,UAAU;AACvC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,IAAI,KAAK,IAAI,SAAS,IAAIF,6BAAiB,EAAE,KAAK,IAAI;YAAE,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAC9F,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;;AAGrC,IAAA,MAAM,cAAc,GAAG,CAAC,KAA8B,KAAI;AACxD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa;AAChC,QAAA,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,YAAY,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,YAAA,SAAS,CAAC,OAAO,GAAG,IAAI;AAChI,IAAA,CAAC;IAED,OAAO,EAAE,cAAc,EAAE;AAC3B;;"}
1
+ {"version":3,"file":"usePanelFocus.cjs","sources":["../../../../../src/components/organisms/SidePanel/hooks/usePanelFocus.ts"],"sourcesContent":[null],"names":["useRef","useState","getFocusedElement","useEffect","useLayoutEffect","useCallback"],"mappings":"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"}
@@ -15,10 +15,12 @@ interface UsePanelFocusOptions {
15
15
  * and makes a leaving panel inert. Managed by hand, not with a focus scope: a scope would also
16
16
  * reroute Tab at the panel's edges, as a popover does.
17
17
  *
18
- * @returns a capture-phase focus handler to spread onto the panel element
18
+ * @returns a capture-phase focus handler to spread onto the panel element, and `setOpener`, which points the hand-back on
19
+ * close at another control after a content swap
19
20
  */
20
21
  export declare const usePanelFocus: ({ panelRef, isPresent, isDesktop, shouldFocusOnMount, contentKey }: UsePanelFocusOptions) => {
21
22
  onFocusCapture: (event: FocusEvent<HTMLElement>) => void;
23
+ setOpener: (element: HTMLElement) => void;
22
24
  };
23
25
  export {};
24
26
  //# sourceMappingURL=usePanelFocus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePanelFocus.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidePanel/hooks/usePanelFocus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWnD,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACxC,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAC;IACnB,wGAAwG;IACxG,kBAAkB,EAAE,OAAO,CAAC;IAC5B,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,oEAAoE,oBAAoB;4BA6DrF,UAAU,CAAC,WAAW,CAAC;CAMvD,CAAC"}
1
+ {"version":3,"file":"usePanelFocus.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidePanel/hooks/usePanelFocus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWnD,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACxC,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAC;IACnB,wGAAwG;IACxG,kBAAkB,EAAE,OAAO,CAAC;IAC5B,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,oEAAoE,oBAAoB;4BA6DrF,UAAU,CAAC,WAAW,CAAC;yBAMd,WAAW;CAKpD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { useRef, useState, useEffect, useLayoutEffect } from 'react';
1
+ import { useRef, useState, useEffect, useLayoutEffect, useCallback } from 'react';
2
2
  import { getFocusedElement } from '../../../../utilities/__internal__/focusUtils/focus.utils.js';
3
3
 
4
4
  /** The element before the panel when it can take focus, such as `AppShell`'s scroll area. */
@@ -11,7 +11,8 @@ const focusableSiblingBefore = (panel) => {
11
11
  * and makes a leaving panel inert. Managed by hand, not with a focus scope: a scope would also
12
12
  * reroute Tab at the panel's edges, as a popover does.
13
13
  *
14
- * @returns a capture-phase focus handler to spread onto the panel element
14
+ * @returns a capture-phase focus handler to spread onto the panel element, and `setOpener`, which points the hand-back on
15
+ * close at another control after a content swap
15
16
  */
16
17
  const usePanelFocus = ({ panelRef, isPresent, isDesktop, shouldFocusOnMount, contentKey }) => {
17
18
  const openerRef = useRef(null);
@@ -78,7 +79,11 @@ const usePanelFocus = ({ panelRef, isPresent, isDesktop, shouldFocusOnMount, con
78
79
  if (openerRef.current === null && from instanceof HTMLElement && !event.currentTarget.contains(from))
79
80
  openerRef.current = from;
80
81
  };
81
- return { onFocusCapture };
82
+ // A panel whose content swaps while open follows the user's latest gesture, so closing lands on the row they are on, not the first one.
83
+ const setOpener = useCallback((element) => {
84
+ openerRef.current = element;
85
+ }, []);
86
+ return { onFocusCapture, setOpener };
82
87
  };
83
88
 
84
89
  export { usePanelFocus };
@@ -1 +1 @@
1
- {"version":3,"file":"usePanelFocus.js","sources":["../../../../../src/components/organisms/SidePanel/hooks/usePanelFocus.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePanelFocus.js","sources":["../../../../../src/components/organisms/SidePanel/hooks/usePanelFocus.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAMA;AACA,MAAM,sBAAsB,GAAG,CAAC,KAAkB,KAAwB;AACxE,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,sBAAsB;AAE5C,IAAA,OAAO,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI;AACjF,CAAC;AAcD;;;;;;;AAOG;AACI,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAwB,KAAI;AACxH,IAAA,MAAM,SAAS,GAAG,MAAM,CAAqB,IAAI,CAAC;AAClD,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAiB,IAAI,CAAC;AACtD,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC;;IAE3C,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAqB,iBAAiB,CAAC;IAE5E,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO;AAC1C,QAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS;;AAErC,QAAA,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,IAAI,IAAI,kBAAkB,CAAC,CAAC;QACjG,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,QAAQ,KAAK,IAAI;AACjD,QAAA,MAAM,OAAO,GAAG,iBAAiB,EAAE;AACnC,QAAA,MAAM,cAAc,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAGlE,QAAA,IAAI,SAAS;AAAE,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK;QAClC,IAAI,UAAU,EAAE;;AAEd,YAAA,SAAS,CAAC,OAAO,GAAG,QAAQ,KAAK,IAAI,GAAG,kBAAkB,GAAG,OAAO;;;AAGpE,YAAA,IAAI,CAAC,cAAc;gBAAE,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC3D;;AAEA,QAAA,IAAI,SAAS,IAAI,cAAc,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO;;AAEhC,YAAA,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;QACzE;;AAEA,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI;IACpC,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAEjE,SAAS,CAAC,MAAK;QACb,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,OAAO,IAAI,CAAC,SAAS;AACtE,QAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS;AAErC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,MAAM,OAAO,GAAG,iBAAiB,EAAE;;QAEnC,IAAI,sBAAsB,IAAI,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;YACpH,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACtC;AACF,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;;;AAIzB,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7C,eAAe,CAAC,MAAK;AACnB,QAAA,IAAI,kBAAkB,CAAC,OAAO,KAAK,UAAU;YAAE;AAC/C,QAAA,kBAAkB,CAAC,OAAO,GAAG,UAAU;AACvC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,IAAI,KAAK,IAAI,SAAS,IAAI,iBAAiB,EAAE,KAAK,IAAI;YAAE,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAC9F,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;;AAGrC,IAAA,MAAM,cAAc,GAAG,CAAC,KAA8B,KAAI;AACxD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa;AAChC,QAAA,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,YAAY,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,YAAA,SAAS,CAAC,OAAO,GAAG,IAAI;AAChI,IAAA,CAAC;;AAGD,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,OAAoB,KAAI;AACrD,QAAA,SAAS,CAAC,OAAO,GAAG,OAAO;IAC7B,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE;AACtC;;"}
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var cx = require('@flipdish/ui-library/utilities/cx');
5
+ var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
6
+ var react = require('motion/react');
7
+ var React = require('react');
8
+ var reactAria = require('react-aria');
9
+ var reactAriaComponents = require('react-aria-components');
10
+ var focus_utils = require('../../../../utilities/__internal__/focusUtils/focus.utils.cjs');
11
+ var hotkeys_utils = require('../../../../utilities/__internal__/hotkeysUtils/hotkeys.utils.cjs');
12
+ var usePanelFocus = require('../../SidePanel/hooks/usePanelFocus.cjs');
13
+ var useSlideoutState = require('../hooks/useSlideoutState.cjs');
14
+ var OverlayBounds_context = require('../providers/OverlayBounds.context.cjs');
15
+ var SlideoutMenu_context = require('../providers/SlideoutMenu.context.cjs');
16
+ var slideoutMenu_utils = require('../utilities/slideoutMenu.utils.cjs');
17
+
18
+ const SLIDE = { type: 'tween', duration: 0.3, ease: 'easeOut' };
19
+ const SLIDE_OUT = { type: 'tween', duration: 0.3, ease: 'easeIn' };
20
+ /** The panel itself. A component of its own so it can tell, while animating out, that it is leaving. */
21
+ const SlideoutPanel = ({ openState, label, labelledBy, boundsStyle, rootTestId, isKeyboardDismissDisabled, children, className, dialogClassName, }) => {
22
+ const panelRef = React.useRef(null);
23
+ const dialogRef = React.useRef(null);
24
+ const isPresent = react.useIsPresent();
25
+ const shouldReduceMotion = react.useReducedMotion();
26
+ // Escape inside the panel; nothing outside is listened to for clicks, so the page stays usable and a click there never closes it.
27
+ const { overlayProps } = reactAria.useOverlay({ isOpen: isPresent, onClose: openState.close, isDismissable: false, shouldCloseOnBlur: false, isKeyboardDismissDisabled }, panelRef);
28
+ // Escape anywhere on the page closes it too: the panel is the transient thing the user opened. Not when another overlay
29
+ // took the key first (they prevent default on their own Escape and run before a document listener), and not from a field
30
+ // outside the panel, where Escape belongs to the field. Focus is left where the user put it.
31
+ const closeRef = React.useRef(openState.close);
32
+ closeRef.current = openState.close;
33
+ React.useEffect(() => {
34
+ if (!isPresent || isKeyboardDismissDisabled)
35
+ return;
36
+ const onKeyDown = (event) => {
37
+ if (event.key !== 'Escape' || event.defaultPrevented || event.isComposing)
38
+ return;
39
+ if (event.target instanceof Node && panelRef.current?.contains(event.target))
40
+ return;
41
+ if (hotkeys_utils.isTypingInField(event))
42
+ return;
43
+ closeRef.current();
44
+ };
45
+ document.addEventListener('keydown', onKeyDown);
46
+ return () => document.removeEventListener('keydown', onKeyDown);
47
+ }, [isPresent, isKeyboardDismissDisabled]);
48
+ // react-aria's `useDialog` already focuses the dialog on mount; this hook is here for the hand-back on close and the inert exit,
49
+ // and `shouldFocusOnMount` is what makes it record the opener. The panel never covers the page, so `isDesktop` stays true.
50
+ const { onFocusCapture, setOpener } = usePanelFocus.usePanelFocus({ panelRef: dialogRef, isPresent, isDesktop: true, shouldFocusOnMount: true });
51
+ // A row opened by mouse selects on pointerdown, so the panel focuses itself before the browser's own mousedown focus lands
52
+ // back on the row. Settle one frame later: if nothing inside holds focus by then, the dialog takes it. A new gesture before
53
+ // that frame means the user has moved on, such as to the next row, and the frame is dropped so focus is not pulled back.
54
+ React.useEffect(() => {
55
+ if (!isPresent)
56
+ return;
57
+ const stopWatching = () => {
58
+ document.removeEventListener('pointerdown', cancel, true);
59
+ document.removeEventListener('keydown', cancel, true);
60
+ };
61
+ const frame = requestAnimationFrame(() => {
62
+ stopWatching();
63
+ const dialog = dialogRef.current;
64
+ const focused = focus_utils.getFocusedElement();
65
+ if (dialog && !(focused && dialog.contains(focused)))
66
+ dialog.focus({ preventScroll: true });
67
+ });
68
+ const cancel = () => {
69
+ cancelAnimationFrame(frame);
70
+ stopWatching();
71
+ };
72
+ document.addEventListener('pointerdown', cancel, true);
73
+ document.addEventListener('keydown', cancel, true);
74
+ return cancel;
75
+ }, [isPresent]);
76
+ // A content swap leaves focus on the row the user clicked, so the new title is spoken instead; with focus inside, the user
77
+ // is already reading the panel and hears the change as they move. The last title lives here, not in `Header`, since a swap
78
+ // between loading and loaded content remounts the header; the first title is the open, which the dialog announces itself.
79
+ const [announcement, setAnnouncement] = React.useState('');
80
+ const lastTitle = React.useRef(null);
81
+ const announceTitle = React.useCallback((title) => {
82
+ const previous = lastTitle.current;
83
+ lastTitle.current = title;
84
+ if (previous === null || title === previous)
85
+ return;
86
+ const focused = focus_utils.getFocusedElement();
87
+ if (focused && panelRef.current?.contains(focused))
88
+ return;
89
+ // The control that swapped the content is what closing hands focus back to, not the one that first opened the panel.
90
+ if (focused)
91
+ setOpener(focused);
92
+ setAnnouncement(title);
93
+ }, [setOpener]);
94
+ return (
95
+ // The clip box covers exactly the page area and takes no clicks, so the slide-in is cut at the area's edge instead of
96
+ // crossing the header or a docked panel, and the panel's width is a share of the area, not of the viewport.
97
+ jsxRuntime.jsx("div", { style: boundsStyle, className: "pointer-events-none fixed z-50 overflow-clip", children: jsxRuntime.jsxs(react.motion.div, { ref: panelRef, onKeyDown: overlayProps.onKeyDown, onFocusCapture: onFocusCapture, initial: { x: '100%' }, animate: { x: 0 }, exit: { x: '100%', transition: shouldReduceMotion ? { duration: 0 } : SLIDE_OUT }, transition: shouldReduceMotion ? { duration: 0 } : SLIDE,
98
+ // Below `lg` the panel fills the page area, as a side panel does; from `lg` it is 400px, or the area when that is narrower.
99
+ className: cx.cx('pointer-events-auto absolute inset-y-0 right-0 flex w-full shadow-xl lg:max-w-[min(25rem,100%)]', className), children: [jsxRuntime.jsx(SlideoutMenu_context.SlideoutMenuContext.Provider, { value: { close: openState.close, label, announceTitle }, children: jsxRuntime.jsx(reactAria.FocusScope, { restoreFocus: true, children: jsxRuntime.jsx(reactAriaComponents.Dialog, { ref: dialogRef, role: "dialog", "aria-label": label, "aria-labelledby": labelledBy, "data-testid": rootTestId, className: cx.cx('relative flex size-full flex-col items-start gap-6 overflow-y-auto bg-primary ring-1 ring-secondary_alt outline-hidden', dialogClassName), children: ({ close }) => (typeof children === 'function' ? children({ close }) : children) }) }) }), jsxRuntime.jsx("output", { className: "sr-only", children: announcement })] }) }));
100
+ };
101
+ /**
102
+ * Non-modal shell: portals the panel to the app's overlay root, keeps it mounted through its exit slide,
103
+ * and shares the open state with a surrounding `SlideoutMenu.Trigger`. Nothing is dimmed, locked or
104
+ * made inert; the page behind stays usable.
105
+ */
106
+ const SlideoutShell = ({ isOpen, defaultOpen, onOpenChange, isKeyboardDismissDisabled, bounds, 'aria-label': ariaLabel, 'aria-labelledby': labelledBy, children, className, dialogClassName, 'data-testid': dataTestId, }) => {
107
+ const rootTestId = testIdUtils.useResolvedTestId({ testId: dataTestId, segment: 'slideout-menu', rootName: 'slideout-menu' });
108
+ const triggerState = React.useContext(reactAriaComponents.OverlayTriggerStateContext);
109
+ const local = useSlideoutState.useSlideoutState({ isOpen, defaultOpen, onOpenChange });
110
+ // As react-aria's Modal does: explicit open props win over a surrounding Trigger's state.
111
+ const openState = isOpen !== undefined || defaultOpen !== undefined || !triggerState ? local : triggerState;
112
+ const measured = React.useContext(OverlayBounds_context.OverlayBoundsContext);
113
+ const boundsStyle = slideoutMenu_utils.resolveSlideoutBounds(bounds, measured);
114
+ // A heading named through `aria-labelledby` replaces the default name; an explicit `aria-label` still wins.
115
+ const label = ariaLabel ?? (labelledBy ? undefined : 'Slideout menu');
116
+ return (jsxRuntime.jsx(testIdUtils.TestIdProvider, { value: rootTestId, children: jsxRuntime.jsx(react.AnimatePresence, { children: openState.isOpen && (jsxRuntime.jsx(reactAria.Overlay, { disableFocusManagement: true, children: jsxRuntime.jsx(reactAriaComponents.OverlayTriggerStateContext.Provider, { value: openState, children: jsxRuntime.jsx(SlideoutPanel, { openState: openState, label: label, labelledBy: labelledBy, boundsStyle: boundsStyle, rootTestId: rootTestId, isKeyboardDismissDisabled: isKeyboardDismissDisabled, className: className, dialogClassName: dialogClassName, children: children }) }) }, "slideout-menu")) }) }));
117
+ };
118
+ SlideoutShell.displayName = 'SlideoutShell';
119
+
120
+ exports.SlideoutShell = SlideoutShell;
121
+ //# sourceMappingURL=SlideoutShell.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideoutShell.cjs","sources":["../../../../../src/components/organisms/SlideoutMenu/components/SlideoutShell.tsx"],"sourcesContent":[null],"names":["useRef","useIsPresent","useReducedMotion","useOverlay","useEffect","isTypingInField","usePanelFocus","getFocusedElement","useState","useCallback","_jsx","_jsxs","motion","cx","SlideoutMenuContext","FocusScope","AriaDialog","useResolvedTestId","useContext","OverlayTriggerStateContext","useSlideoutState","OverlayBoundsContext","resolveSlideoutBounds","TestIdProvider","AnimatePresence","Overlay"],"mappings":";;;;;;;;;;;;;;;;;AAuCA,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAW;AACxE,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAW;AAU3E;AACA,MAAM,aAAa,GAAG,CAAC,EACrB,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,yBAAyB,EACzB,QAAQ,EACR,SAAS,EACT,eAAe,GACI,KAAI;AACvB,IAAA,MAAM,QAAQ,GAAGA,YAAM,CAAiB,IAAI,CAAC;AAC7C,IAAA,MAAM,SAAS,GAAGA,YAAM,CAAc,IAAI,CAAC;AAC3C,IAAA,MAAM,SAAS,GAAGC,kBAAY,EAAE;AAChC,IAAA,MAAM,kBAAkB,GAAGC,sBAAgB,EAAE;;AAG7C,IAAA,MAAM,EAAE,YAAY,EAAE,GAAGC,oBAAU,CACjC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAC1H,QAAQ,CACT;;;;IAKD,MAAM,QAAQ,GAAGH,YAAM,CAAC,SAAS,CAAC,KAAK,CAAC;AACxC,IAAA,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK;IAClCI,eAAS,CAAC,MAAK;QACb,IAAI,CAAC,SAAS,IAAI,yBAAyB;YAAE;AAC7C,QAAA,MAAM,SAAS,GAAG,CAAC,KAAoB,KAAI;AACzC,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,WAAW;gBAAE;AAC3E,YAAA,IAAI,KAAK,CAAC,MAAM,YAAY,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE;YAC9E,IAAIC,6BAAe,CAAC,KAAK,CAAC;gBAAE;YAC5B,QAAQ,CAAC,OAAO,EAAE;AACpB,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;QAC/C,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AACjE,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;;;IAG1C,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAGC,2BAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;;;;IAKlIF,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,MAAM,YAAY,GAAG,MAAK;YACxB,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC;YACzD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;AACvD,QAAA,CAAC;AACD,QAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAK;AACvC,YAAA,YAAY,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO;AAChC,YAAA,MAAM,OAAO,GAAGG,6BAAiB,EAAE;AACnC,YAAA,IAAI,MAAM,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAAE,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC7F,QAAA,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,MAAK;YAClB,oBAAoB,CAAC,KAAK,CAAC;AAC3B,YAAA,YAAY,EAAE;AAChB,QAAA,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC;QACtD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;AAClD,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;;;;IAKf,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGC,cAAQ,CAAC,EAAE,CAAC;AACpD,IAAA,MAAM,SAAS,GAAGR,YAAM,CAAgB,IAAI,CAAC;AAC7C,IAAA,MAAM,aAAa,GAAGS,iBAAW,CAC/B,CAAC,KAAa,KAAI;AAChB,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO;AAClC,QAAA,SAAS,CAAC,OAAO,GAAG,KAAK;AACzB,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ;YAAE;AAC7C,QAAA,MAAM,OAAO,GAAGF,6BAAiB,EAAE;QACnC,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YAAE;;AAEpD,QAAA,IAAI,OAAO;YAAE,SAAS,CAAC,OAAO,CAAC;QAC/B,eAAe,CAAC,KAAK,CAAC;AACxB,IAAA,CAAC,EACD,CAAC,SAAS,CAAC,CACZ;IAED;;;AAGE,IAAAG,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,WAAW,EAAE,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAC/EC,eAAA,CAACC,YAAM,CAAC,GAAG,EAAA,EACT,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,YAAY,CAAC,SAAS,EACjC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EACjB,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EACjF,UAAU,EAAE,kBAAkB,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,KAAK;;YAExD,SAAS,EAAEC,KAAE,CAAC,iGAAiG,EAAE,SAAS,CAAC,aAE3HH,cAAA,CAACI,wCAAmB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,YAEnFJ,cAAA,CAACK,oBAAU,IAAC,YAAY,EAAA,IAAA,EAAA,QAAA,EACtBL,cAAA,CAACM,0BAAU,EAAA,EACT,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,QAAQ,gBACD,KAAK,EAAA,iBAAA,EACA,UAAU,EAAA,aAAA,EACd,UAAU,EACvB,SAAS,EAAEH,KAAE,CACX,wHAAwH,EACxH,eAAe,CAChB,EAAA,QAAA,EAEA,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAA,CACtE,EAAA,CACF,EAAA,CACgB,EAC/BH,cAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,YAAY,EAAA,CAAU,CAAA,EAAA,CACxC,EAAA,CACT;AAEV,CAAC;AAED;;;;AAIG;AACI,MAAM,aAAa,GAAG,CAAC,EAC5B,MAAM,EACN,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,MAAM,EACN,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,UAAU,EAC7B,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EAAE,UAAU,GACN,KAAI;AACvB,IAAA,MAAM,UAAU,GAAGO,6BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AACjH,IAAA,MAAM,YAAY,GAAGC,gBAAU,CAACC,8CAA0B,CAAC;AAC3D,IAAA,MAAM,KAAK,GAAGC,iCAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;;IAErE,MAAM,SAAS,GAAsB,MAAM,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,YAAY,GAAG,KAAK,GAAG,YAAY;AAC9H,IAAA,MAAM,QAAQ,GAAGF,gBAAU,CAACG,0CAAoB,CAAC;IACjD,MAAM,WAAW,GAAGC,wCAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;;AAE3D,IAAA,MAAM,KAAK,GAAG,SAAS,KAAK,UAAU,GAAG,SAAS,GAAG,eAAe,CAAC;AAErE,IAAA,QACEZ,cAAA,CAACa,0BAAc,EAAA,EAAC,KAAK,EAAE,UAAU,EAAA,QAAA,EAC/Bb,cAAA,CAACc,qBAAe,EAAA,EAAA,QAAA,EACb,SAAS,CAAC,MAAM,KACfd,cAAA,CAACe,iBAAO,EAAA,EAAqB,sBAAsB,EAAA,IAAA,EAAA,QAAA,EACjDf,cAAA,CAACS,8CAA0B,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,SAAS,YACnDT,cAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,yBAAyB,EAAE,yBAAyB,EACpD,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,YAE/B,QAAQ,EAAA,CACK,EAAA,CACoB,EAAA,EAd3B,eAAe,CAelB,CACX,EAAA,CACe,EAAA,CACH;AAErB;AACA,aAAa,CAAC,WAAW,GAAG,eAAe;;"}
@@ -0,0 +1,30 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { SlideoutBounds } from '../utilities/slideoutMenu.utils';
3
+ /** What the render-prop form of `children` receives. */
4
+ export interface SlideoutRenderProps {
5
+ /** Closes the panel. */
6
+ close: () => void;
7
+ }
8
+ export interface SlideoutShellProps {
9
+ isOpen?: boolean;
10
+ defaultOpen?: boolean;
11
+ onOpenChange?: (isOpen: boolean) => void;
12
+ isKeyboardDismissDisabled?: boolean;
13
+ bounds?: SlideoutBounds;
14
+ 'aria-label'?: string;
15
+ 'aria-labelledby'?: string;
16
+ children: ReactNode | ((state: SlideoutRenderProps) => ReactNode);
17
+ className?: string;
18
+ dialogClassName?: string;
19
+ 'data-testid'?: string;
20
+ }
21
+ /**
22
+ * Non-modal shell: portals the panel to the app's overlay root, keeps it mounted through its exit slide,
23
+ * and shares the open state with a surrounding `SlideoutMenu.Trigger`. Nothing is dimmed, locked or
24
+ * made inert; the page behind stays usable.
25
+ */
26
+ export declare const SlideoutShell: {
27
+ ({ isOpen, defaultOpen, onOpenChange, isKeyboardDismissDisabled, bounds, "aria-label": ariaLabel, "aria-labelledby": labelledBy, children, className, dialogClassName, "data-testid": dataTestId, }: SlideoutShellProps): import("react").JSX.Element;
28
+ displayName: string;
29
+ };
30
+ //# sourceMappingURL=SlideoutShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideoutShell.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SlideoutMenu/components/SlideoutShell.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAWtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0ID;;;;GAIG;AACH,eAAO,MAAM,aAAa;yMAYvB,kBAAkB;;CAmCpB,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { cx } from '@flipdish/ui-library/utilities/cx';
3
+ import { useResolvedTestId, TestIdProvider } from '@flipdish/ui-library/utilities/testIdUtils';
4
+ import { AnimatePresence, useIsPresent, useReducedMotion, motion } from 'motion/react';
5
+ import { useContext, useRef, useEffect, useState, useCallback } from 'react';
6
+ import { Overlay, useOverlay, FocusScope } from 'react-aria';
7
+ import { OverlayTriggerStateContext, Dialog } from 'react-aria-components';
8
+ import { getFocusedElement } from '../../../../utilities/__internal__/focusUtils/focus.utils.js';
9
+ import { isTypingInField } from '../../../../utilities/__internal__/hotkeysUtils/hotkeys.utils.js';
10
+ import { usePanelFocus } from '../../SidePanel/hooks/usePanelFocus.js';
11
+ import { useSlideoutState } from '../hooks/useSlideoutState.js';
12
+ import { OverlayBoundsContext } from '../providers/OverlayBounds.context.js';
13
+ import { SlideoutMenuContext } from '../providers/SlideoutMenu.context.js';
14
+ import { resolveSlideoutBounds } from '../utilities/slideoutMenu.utils.js';
15
+
16
+ const SLIDE = { type: 'tween', duration: 0.3, ease: 'easeOut' };
17
+ const SLIDE_OUT = { type: 'tween', duration: 0.3, ease: 'easeIn' };
18
+ /** The panel itself. A component of its own so it can tell, while animating out, that it is leaving. */
19
+ const SlideoutPanel = ({ openState, label, labelledBy, boundsStyle, rootTestId, isKeyboardDismissDisabled, children, className, dialogClassName, }) => {
20
+ const panelRef = useRef(null);
21
+ const dialogRef = useRef(null);
22
+ const isPresent = useIsPresent();
23
+ const shouldReduceMotion = useReducedMotion();
24
+ // Escape inside the panel; nothing outside is listened to for clicks, so the page stays usable and a click there never closes it.
25
+ const { overlayProps } = useOverlay({ isOpen: isPresent, onClose: openState.close, isDismissable: false, shouldCloseOnBlur: false, isKeyboardDismissDisabled }, panelRef);
26
+ // Escape anywhere on the page closes it too: the panel is the transient thing the user opened. Not when another overlay
27
+ // took the key first (they prevent default on their own Escape and run before a document listener), and not from a field
28
+ // outside the panel, where Escape belongs to the field. Focus is left where the user put it.
29
+ const closeRef = useRef(openState.close);
30
+ closeRef.current = openState.close;
31
+ useEffect(() => {
32
+ if (!isPresent || isKeyboardDismissDisabled)
33
+ return;
34
+ const onKeyDown = (event) => {
35
+ if (event.key !== 'Escape' || event.defaultPrevented || event.isComposing)
36
+ return;
37
+ if (event.target instanceof Node && panelRef.current?.contains(event.target))
38
+ return;
39
+ if (isTypingInField(event))
40
+ return;
41
+ closeRef.current();
42
+ };
43
+ document.addEventListener('keydown', onKeyDown);
44
+ return () => document.removeEventListener('keydown', onKeyDown);
45
+ }, [isPresent, isKeyboardDismissDisabled]);
46
+ // react-aria's `useDialog` already focuses the dialog on mount; this hook is here for the hand-back on close and the inert exit,
47
+ // and `shouldFocusOnMount` is what makes it record the opener. The panel never covers the page, so `isDesktop` stays true.
48
+ const { onFocusCapture, setOpener } = usePanelFocus({ panelRef: dialogRef, isPresent, isDesktop: true, shouldFocusOnMount: true });
49
+ // A row opened by mouse selects on pointerdown, so the panel focuses itself before the browser's own mousedown focus lands
50
+ // back on the row. Settle one frame later: if nothing inside holds focus by then, the dialog takes it. A new gesture before
51
+ // that frame means the user has moved on, such as to the next row, and the frame is dropped so focus is not pulled back.
52
+ useEffect(() => {
53
+ if (!isPresent)
54
+ return;
55
+ const stopWatching = () => {
56
+ document.removeEventListener('pointerdown', cancel, true);
57
+ document.removeEventListener('keydown', cancel, true);
58
+ };
59
+ const frame = requestAnimationFrame(() => {
60
+ stopWatching();
61
+ const dialog = dialogRef.current;
62
+ const focused = getFocusedElement();
63
+ if (dialog && !(focused && dialog.contains(focused)))
64
+ dialog.focus({ preventScroll: true });
65
+ });
66
+ const cancel = () => {
67
+ cancelAnimationFrame(frame);
68
+ stopWatching();
69
+ };
70
+ document.addEventListener('pointerdown', cancel, true);
71
+ document.addEventListener('keydown', cancel, true);
72
+ return cancel;
73
+ }, [isPresent]);
74
+ // A content swap leaves focus on the row the user clicked, so the new title is spoken instead; with focus inside, the user
75
+ // is already reading the panel and hears the change as they move. The last title lives here, not in `Header`, since a swap
76
+ // between loading and loaded content remounts the header; the first title is the open, which the dialog announces itself.
77
+ const [announcement, setAnnouncement] = useState('');
78
+ const lastTitle = useRef(null);
79
+ const announceTitle = useCallback((title) => {
80
+ const previous = lastTitle.current;
81
+ lastTitle.current = title;
82
+ if (previous === null || title === previous)
83
+ return;
84
+ const focused = getFocusedElement();
85
+ if (focused && panelRef.current?.contains(focused))
86
+ return;
87
+ // The control that swapped the content is what closing hands focus back to, not the one that first opened the panel.
88
+ if (focused)
89
+ setOpener(focused);
90
+ setAnnouncement(title);
91
+ }, [setOpener]);
92
+ return (
93
+ // The clip box covers exactly the page area and takes no clicks, so the slide-in is cut at the area's edge instead of
94
+ // crossing the header or a docked panel, and the panel's width is a share of the area, not of the viewport.
95
+ jsx("div", { style: boundsStyle, className: "pointer-events-none fixed z-50 overflow-clip", children: jsxs(motion.div, { ref: panelRef, onKeyDown: overlayProps.onKeyDown, onFocusCapture: onFocusCapture, initial: { x: '100%' }, animate: { x: 0 }, exit: { x: '100%', transition: shouldReduceMotion ? { duration: 0 } : SLIDE_OUT }, transition: shouldReduceMotion ? { duration: 0 } : SLIDE,
96
+ // Below `lg` the panel fills the page area, as a side panel does; from `lg` it is 400px, or the area when that is narrower.
97
+ className: cx('pointer-events-auto absolute inset-y-0 right-0 flex w-full shadow-xl lg:max-w-[min(25rem,100%)]', className), children: [jsx(SlideoutMenuContext.Provider, { value: { close: openState.close, label, announceTitle }, children: jsx(FocusScope, { restoreFocus: true, children: jsx(Dialog, { ref: dialogRef, role: "dialog", "aria-label": label, "aria-labelledby": labelledBy, "data-testid": rootTestId, className: cx('relative flex size-full flex-col items-start gap-6 overflow-y-auto bg-primary ring-1 ring-secondary_alt outline-hidden', dialogClassName), children: ({ close }) => (typeof children === 'function' ? children({ close }) : children) }) }) }), jsx("output", { className: "sr-only", children: announcement })] }) }));
98
+ };
99
+ /**
100
+ * Non-modal shell: portals the panel to the app's overlay root, keeps it mounted through its exit slide,
101
+ * and shares the open state with a surrounding `SlideoutMenu.Trigger`. Nothing is dimmed, locked or
102
+ * made inert; the page behind stays usable.
103
+ */
104
+ const SlideoutShell = ({ isOpen, defaultOpen, onOpenChange, isKeyboardDismissDisabled, bounds, 'aria-label': ariaLabel, 'aria-labelledby': labelledBy, children, className, dialogClassName, 'data-testid': dataTestId, }) => {
105
+ const rootTestId = useResolvedTestId({ testId: dataTestId, segment: 'slideout-menu', rootName: 'slideout-menu' });
106
+ const triggerState = useContext(OverlayTriggerStateContext);
107
+ const local = useSlideoutState({ isOpen, defaultOpen, onOpenChange });
108
+ // As react-aria's Modal does: explicit open props win over a surrounding Trigger's state.
109
+ const openState = isOpen !== undefined || defaultOpen !== undefined || !triggerState ? local : triggerState;
110
+ const measured = useContext(OverlayBoundsContext);
111
+ const boundsStyle = resolveSlideoutBounds(bounds, measured);
112
+ // A heading named through `aria-labelledby` replaces the default name; an explicit `aria-label` still wins.
113
+ const label = ariaLabel ?? (labelledBy ? undefined : 'Slideout menu');
114
+ return (jsx(TestIdProvider, { value: rootTestId, children: jsx(AnimatePresence, { children: openState.isOpen && (jsx(Overlay, { disableFocusManagement: true, children: jsx(OverlayTriggerStateContext.Provider, { value: openState, children: jsx(SlideoutPanel, { openState: openState, label: label, labelledBy: labelledBy, boundsStyle: boundsStyle, rootTestId: rootTestId, isKeyboardDismissDisabled: isKeyboardDismissDisabled, className: className, dialogClassName: dialogClassName, children: children }) }) }, "slideout-menu")) }) }));
115
+ };
116
+ SlideoutShell.displayName = 'SlideoutShell';
117
+
118
+ export { SlideoutShell };
119
+ //# sourceMappingURL=SlideoutShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideoutShell.js","sources":["../../../../../src/components/organisms/SlideoutMenu/components/SlideoutShell.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaDialog"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ /**
6
+ * Owns the panel's open state, controlled or uncontrolled by the usual pair of props, in the shape
7
+ * react-aria's trigger state has so a surrounding `DialogTrigger` and the `Dialog` inside can share it.
8
+ *
9
+ * @param options The open props as the consumer passed them.
10
+ * @returns The open state, with a stable identity across renders.
11
+ */
12
+ const useSlideoutState = ({ isOpen, defaultOpen, onOpenChange }) => {
13
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);
14
+ const isOpenControlled = isOpen !== undefined;
15
+ const resolvedOpen = isOpenControlled ? isOpen : uncontrolledOpen;
16
+ // The latest callback and value live in refs so the returned API keeps its identity across renders.
17
+ const onOpenChangeRef = React.useRef(onOpenChange);
18
+ const isOpenRef = React.useRef(resolvedOpen);
19
+ React.useEffect(() => {
20
+ onOpenChangeRef.current = onOpenChange;
21
+ isOpenRef.current = resolvedOpen;
22
+ });
23
+ const setOpen = React.useCallback((next) => {
24
+ if (!isOpenControlled)
25
+ setUncontrolledOpen(next);
26
+ if (next !== isOpenRef.current)
27
+ onOpenChangeRef.current?.(next);
28
+ }, [isOpenControlled]);
29
+ return React.useMemo(() => ({
30
+ isOpen: resolvedOpen,
31
+ setOpen,
32
+ open: () => setOpen(true),
33
+ close: () => setOpen(false),
34
+ toggle: () => setOpen(!isOpenRef.current),
35
+ }), [resolvedOpen, setOpen]);
36
+ };
37
+
38
+ exports.useSlideoutState = useSlideoutState;
39
+ //# sourceMappingURL=useSlideoutState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlideoutState.cjs","sources":["../../../../../src/components/organisms/SlideoutMenu/hooks/useSlideoutState.ts"],"sourcesContent":[null],"names":["useState","useRef","useEffect","useCallback","useMemo"],"mappings":";;;;AAmBA;;;;;;AAMG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAA2B,KAAuB;AACpH,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGA,cAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;AAC9E,IAAA,MAAM,gBAAgB,GAAG,MAAM,KAAK,SAAS;IAC7C,MAAM,YAAY,GAAG,gBAAgB,GAAG,MAAM,GAAG,gBAAgB;;AAGjE,IAAA,MAAM,eAAe,GAAGC,YAAM,CAAC,YAAY,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAGA,YAAM,CAAC,YAAY,CAAC;IACtCC,eAAS,CAAC,MAAK;AACb,QAAA,eAAe,CAAC,OAAO,GAAG,YAAY;AACtC,QAAA,SAAS,CAAC,OAAO,GAAG,YAAY;AAClC,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,OAAO,GAAGC,iBAAW,CACzB,CAAC,IAAa,KAAI;AAChB,QAAA,IAAI,CAAC,gBAAgB;YAAE,mBAAmB,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,IAAI,KAAK,SAAS,CAAC,OAAO;AAAE,YAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;AACjE,IAAA,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB;AAED,IAAA,OAAOC,aAAO,CACZ,OAAO;AACL,QAAA,MAAM,EAAE,YAAY;QACpB,OAAO;AACP,QAAA,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;AACzB,QAAA,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AAC1C,KAAA,CAAC,EACF,CAAC,YAAY,EAAE,OAAO,CAAC,CACxB;AACH;;"}