@amboss/design-system 4.0.4-canary.1 → 4.0.5

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 (184) hide show
  1. package/build/cjs/components/ChatResponse/ChatResponse.js +1 -1
  2. package/build/cjs/components/DataTable/DataTable.js +1 -1
  3. package/build/cjs/components/DataTable/TableBody.d.ts +4 -2
  4. package/build/cjs/components/DataTable/TableBody.js +1 -1
  5. package/build/cjs/components/DataTable/TableCell.d.ts +4 -3
  6. package/build/cjs/components/DataTable/TableCell.js +1 -1
  7. package/build/cjs/components/DataTable/header/SortableCellContent.d.ts +1 -4
  8. package/build/cjs/components/DataTable/header/TableHeader.d.ts +3 -1
  9. package/build/cjs/components/DataTable/header/TableHeader.js +1 -1
  10. package/build/cjs/components/DataTable/internal/DataTableDataRow.d.ts +20 -0
  11. package/build/cjs/components/DataTable/internal/DataTableDataRow.js +1 -0
  12. package/build/cjs/components/DataTable/internal/DataTableRowGroup.d.ts +2 -0
  13. package/build/cjs/components/DataTable/internal/DataTableRowGroup.js +1 -0
  14. package/build/cjs/components/DataTable/internal/buildInternalColumns.d.ts +9 -0
  15. package/build/cjs/components/DataTable/internal/buildInternalColumns.js +1 -0
  16. package/build/cjs/components/DataTable/internal/controlColumns/checkboxColumn.d.ts +2 -0
  17. package/build/cjs/components/DataTable/internal/controlColumns/checkboxColumn.js +1 -0
  18. package/build/cjs/components/DataTable/internal/getColumnSticky.d.ts +8 -0
  19. package/build/cjs/components/DataTable/internal/getColumnSticky.js +1 -0
  20. package/build/cjs/components/DataTable/internal/getVisibleColumnCount.d.ts +2 -0
  21. package/build/cjs/components/DataTable/internal/getVisibleColumnCount.js +1 -0
  22. package/build/cjs/components/DataTable/internal/resolveRowContext.d.ts +17 -0
  23. package/build/cjs/components/DataTable/internal/resolveRowContext.js +1 -0
  24. package/build/cjs/components/DataTable/internal/tablePrimitives.d.ts +35 -0
  25. package/build/cjs/components/DataTable/internal/tablePrimitives.js +1 -0
  26. package/build/cjs/components/DataTable/internal/types.d.ts +26 -0
  27. package/build/cjs/components/DataTable/internal/types.js +1 -0
  28. package/build/cjs/components/Internal/Drawer/Drawer.d.ts +2 -0
  29. package/build/cjs/components/Internal/Drawer/Drawer.js +13 -1
  30. package/build/cjs/components/Internal/Drawer/useDrawerAnimation.d.ts +6 -14
  31. package/build/cjs/components/Internal/Drawer/useDrawerAnimation.js +1 -1
  32. package/build/cjs/components/Internal/PanelHeader/PanelHeader.d.ts +31 -0
  33. package/build/cjs/components/Internal/PanelHeader/PanelHeader.js +1 -0
  34. package/build/cjs/components/Internal/Sandwich/-types.d.ts +10 -12
  35. package/build/cjs/components/Internal/Sandwich/Sandwich.d.ts +8 -8
  36. package/build/cjs/components/Internal/Sandwich/Sandwich.js +1 -1
  37. package/build/cjs/components/Internal/Sandwich/SandwichFooter.d.ts +1 -1
  38. package/build/cjs/components/Internal/Sandwich/SandwichFooter.js +1 -1
  39. package/build/cjs/components/Internal/Sandwich/SandwichHeader.d.ts +1 -1
  40. package/build/cjs/components/Internal/Sandwich/SandwichHeader.js +1 -1
  41. package/build/cjs/components/Internal/Sandwich/useSandwichContext.d.ts +3 -3
  42. package/build/cjs/components/Internal/Sandwich/useSandwichContext.js +1 -1
  43. package/build/cjs/components/Layout/-types.d.ts +63 -36
  44. package/build/{esm/components/Layout → cjs/components/Layout/Content}/Content.d.ts +1 -1
  45. package/build/cjs/components/Layout/Content/Content.js +1 -0
  46. package/build/cjs/components/Layout/Layout.d.ts +16 -4
  47. package/build/cjs/components/Layout/Layout.js +1 -1
  48. package/build/cjs/components/Layout/LeftPanel/LeftPanel.d.ts +10 -0
  49. package/build/cjs/components/Layout/LeftPanel/LeftPanel.js +1 -0
  50. package/build/cjs/components/Layout/LeftPanel/LeftPanelFooter.d.ts +7 -0
  51. package/build/cjs/components/Layout/LeftPanel/LeftPanelFooter.js +1 -0
  52. package/build/cjs/components/Layout/LeftPanel/LeftPanelHeader.d.ts +7 -0
  53. package/build/cjs/components/Layout/LeftPanel/LeftPanelHeader.js +1 -0
  54. package/build/cjs/components/Layout/PanelContainer.d.ts +9 -0
  55. package/build/cjs/components/Layout/PanelContainer.js +1 -0
  56. package/build/{esm/components/Layout → cjs/components/Layout/RightPanel}/RightPanel.d.ts +4 -2
  57. package/build/cjs/components/Layout/RightPanel/RightPanel.js +1 -0
  58. package/build/cjs/components/Layout/RightPanel/RightPanelFooter.d.ts +7 -0
  59. package/build/cjs/components/Layout/RightPanel/RightPanelFooter.js +1 -0
  60. package/build/cjs/components/Layout/RightPanel/RightPanelHeader.d.ts +10 -0
  61. package/build/cjs/components/Layout/RightPanel/RightPanelHeader.js +1 -0
  62. package/build/{esm/components/Layout → cjs/components/Layout/Split}/Split.d.ts +4 -2
  63. package/build/cjs/components/Layout/Split/Split.js +1 -0
  64. package/build/cjs/components/Layout/Split/SplitFooter.d.ts +7 -0
  65. package/build/cjs/components/Layout/Split/SplitFooter.js +1 -0
  66. package/build/cjs/components/Layout/Split/SplitHeader.d.ts +7 -0
  67. package/build/cjs/components/Layout/Split/SplitHeader.js +1 -0
  68. package/build/cjs/components/Layout/index.d.ts +0 -1
  69. package/build/cjs/components/Layout/index.js +1 -1
  70. package/build/cjs/components/Link/Link.js +1 -1
  71. package/build/cjs/components/Link/LinkContext.d.ts +19 -0
  72. package/build/cjs/components/Link/LinkContext.js +1 -0
  73. package/build/cjs/components/Link/getLinkDecorationStyles.d.ts +20 -0
  74. package/build/cjs/components/Link/getLinkDecorationStyles.js +1 -0
  75. package/build/cjs/components/Typography/Text/Text.d.ts +10 -6
  76. package/build/cjs/components/Typography/Text/Text.js +1 -1
  77. package/build/cjs/web-tokens/_sizes.json +51 -51
  78. package/build/esm/components/ChatResponse/ChatResponse.js +1 -1
  79. package/build/esm/components/DataTable/DataTable.js +1 -1
  80. package/build/esm/components/DataTable/TableBody.d.ts +4 -2
  81. package/build/esm/components/DataTable/TableBody.js +1 -1
  82. package/build/esm/components/DataTable/TableCell.d.ts +4 -3
  83. package/build/esm/components/DataTable/TableCell.js +1 -1
  84. package/build/esm/components/DataTable/header/SortableCellContent.d.ts +1 -4
  85. package/build/esm/components/DataTable/header/TableHeader.d.ts +3 -1
  86. package/build/esm/components/DataTable/header/TableHeader.js +1 -1
  87. package/build/esm/components/DataTable/internal/DataTableDataRow.d.ts +20 -0
  88. package/build/esm/components/DataTable/internal/DataTableDataRow.js +1 -0
  89. package/build/esm/components/DataTable/internal/DataTableRowGroup.d.ts +2 -0
  90. package/build/esm/components/DataTable/internal/DataTableRowGroup.js +1 -0
  91. package/build/esm/components/DataTable/internal/buildInternalColumns.d.ts +9 -0
  92. package/build/esm/components/DataTable/internal/buildInternalColumns.js +1 -0
  93. package/build/esm/components/DataTable/internal/controlColumns/checkboxColumn.d.ts +2 -0
  94. package/build/esm/components/DataTable/internal/controlColumns/checkboxColumn.js +1 -0
  95. package/build/esm/components/DataTable/internal/getColumnSticky.d.ts +8 -0
  96. package/build/esm/components/DataTable/internal/getColumnSticky.js +1 -0
  97. package/build/esm/components/DataTable/internal/getVisibleColumnCount.d.ts +2 -0
  98. package/build/esm/components/DataTable/internal/getVisibleColumnCount.js +1 -0
  99. package/build/esm/components/DataTable/internal/resolveRowContext.d.ts +17 -0
  100. package/build/esm/components/DataTable/internal/resolveRowContext.js +1 -0
  101. package/build/esm/components/DataTable/internal/tablePrimitives.d.ts +35 -0
  102. package/build/esm/components/DataTable/internal/tablePrimitives.js +1 -0
  103. package/build/esm/components/DataTable/internal/types.d.ts +26 -0
  104. package/build/esm/components/DataTable/internal/types.js +1 -0
  105. package/build/esm/components/Internal/Drawer/Drawer.d.ts +2 -0
  106. package/build/esm/components/Internal/Drawer/Drawer.js +13 -1
  107. package/build/esm/components/Internal/Drawer/useDrawerAnimation.d.ts +6 -14
  108. package/build/esm/components/Internal/Drawer/useDrawerAnimation.js +1 -1
  109. package/build/esm/components/Internal/PanelHeader/PanelHeader.d.ts +31 -0
  110. package/build/esm/components/Internal/PanelHeader/PanelHeader.js +1 -0
  111. package/build/esm/components/Internal/Sandwich/-types.d.ts +10 -12
  112. package/build/esm/components/Internal/Sandwich/Sandwich.d.ts +8 -8
  113. package/build/esm/components/Internal/Sandwich/Sandwich.js +1 -1
  114. package/build/esm/components/Internal/Sandwich/SandwichFooter.d.ts +1 -1
  115. package/build/esm/components/Internal/Sandwich/SandwichFooter.js +1 -1
  116. package/build/esm/components/Internal/Sandwich/SandwichHeader.d.ts +1 -1
  117. package/build/esm/components/Internal/Sandwich/SandwichHeader.js +1 -1
  118. package/build/esm/components/Internal/Sandwich/useSandwichContext.d.ts +3 -3
  119. package/build/esm/components/Internal/Sandwich/useSandwichContext.js +1 -1
  120. package/build/esm/components/Layout/-types.d.ts +63 -36
  121. package/build/{cjs/components/Layout → esm/components/Layout/Content}/Content.d.ts +1 -1
  122. package/build/esm/components/Layout/Content/Content.js +1 -0
  123. package/build/esm/components/Layout/Layout.d.ts +16 -4
  124. package/build/esm/components/Layout/Layout.js +1 -1
  125. package/build/esm/components/Layout/LeftPanel/LeftPanel.d.ts +10 -0
  126. package/build/esm/components/Layout/LeftPanel/LeftPanel.js +1 -0
  127. package/build/esm/components/Layout/LeftPanel/LeftPanelFooter.d.ts +7 -0
  128. package/build/esm/components/Layout/LeftPanel/LeftPanelFooter.js +1 -0
  129. package/build/esm/components/Layout/LeftPanel/LeftPanelHeader.d.ts +7 -0
  130. package/build/esm/components/Layout/LeftPanel/LeftPanelHeader.js +1 -0
  131. package/build/esm/components/Layout/PanelContainer.d.ts +9 -0
  132. package/build/esm/components/Layout/PanelContainer.js +1 -0
  133. package/build/{cjs/components/Layout → esm/components/Layout/RightPanel}/RightPanel.d.ts +4 -2
  134. package/build/esm/components/Layout/RightPanel/RightPanel.js +1 -0
  135. package/build/esm/components/Layout/RightPanel/RightPanelFooter.d.ts +7 -0
  136. package/build/esm/components/Layout/RightPanel/RightPanelFooter.js +1 -0
  137. package/build/esm/components/Layout/RightPanel/RightPanelHeader.d.ts +10 -0
  138. package/build/esm/components/Layout/RightPanel/RightPanelHeader.js +1 -0
  139. package/build/{cjs/components/Layout → esm/components/Layout/Split}/Split.d.ts +4 -2
  140. package/build/esm/components/Layout/Split/Split.js +1 -0
  141. package/build/esm/components/Layout/Split/SplitFooter.d.ts +7 -0
  142. package/build/esm/components/Layout/Split/SplitFooter.js +1 -0
  143. package/build/esm/components/Layout/Split/SplitHeader.d.ts +7 -0
  144. package/build/esm/components/Layout/Split/SplitHeader.js +1 -0
  145. package/build/esm/components/Layout/index.d.ts +0 -1
  146. package/build/esm/components/Layout/index.js +1 -1
  147. package/build/esm/components/Link/Link.js +1 -1
  148. package/build/esm/components/Link/LinkContext.d.ts +19 -0
  149. package/build/esm/components/Link/LinkContext.js +1 -0
  150. package/build/esm/components/Link/getLinkDecorationStyles.d.ts +20 -0
  151. package/build/esm/components/Link/getLinkDecorationStyles.js +1 -0
  152. package/build/esm/components/Typography/Text/Text.d.ts +10 -6
  153. package/build/esm/components/Typography/Text/Text.js +1 -1
  154. package/build/esm/web-tokens/_sizes.json +51 -51
  155. package/build/scss/_layout.scss +8 -3
  156. package/build/scss/_theming.scss +3 -0
  157. package/build/scss/_variables.scss +2 -0
  158. package/package.json +1 -1
  159. package/build/cjs/components/Internal/Sandwich/SandwichBody.d.ts +0 -3
  160. package/build/cjs/components/Internal/Sandwich/SandwichBody.js +0 -1
  161. package/build/cjs/components/Layout/Content.js +0 -1
  162. package/build/cjs/components/Layout/LeftPanel.d.ts +0 -8
  163. package/build/cjs/components/Layout/LeftPanel.js +0 -1
  164. package/build/cjs/components/Layout/LeftPanelDocked.d.ts +0 -9
  165. package/build/cjs/components/Layout/LeftPanelDocked.js +0 -1
  166. package/build/cjs/components/Layout/LeftPanelDrawer.d.ts +0 -10
  167. package/build/cjs/components/Layout/LeftPanelDrawer.js +0 -1
  168. package/build/cjs/components/Layout/RightPanel.js +0 -1
  169. package/build/cjs/components/Layout/RightPanelContainer.d.ts +0 -3
  170. package/build/cjs/components/Layout/RightPanelContainer.js +0 -1
  171. package/build/cjs/components/Layout/Split.js +0 -1
  172. package/build/esm/components/Internal/Sandwich/SandwichBody.d.ts +0 -3
  173. package/build/esm/components/Internal/Sandwich/SandwichBody.js +0 -1
  174. package/build/esm/components/Layout/Content.js +0 -1
  175. package/build/esm/components/Layout/LeftPanel.d.ts +0 -8
  176. package/build/esm/components/Layout/LeftPanel.js +0 -1
  177. package/build/esm/components/Layout/LeftPanelDocked.d.ts +0 -9
  178. package/build/esm/components/Layout/LeftPanelDocked.js +0 -1
  179. package/build/esm/components/Layout/LeftPanelDrawer.d.ts +0 -10
  180. package/build/esm/components/Layout/LeftPanelDrawer.js +0 -1
  181. package/build/esm/components/Layout/RightPanel.js +0 -1
  182. package/build/esm/components/Layout/RightPanelContainer.d.ts +0 -3
  183. package/build/esm/components/Layout/RightPanelContainer.js +0 -1
  184. package/build/esm/components/Layout/Split.js +0 -1
@@ -1 +1 @@
1
- import{useCallback,useLayoutEffect,useRef,useState}from"react";import{keyframes,useTheme}from"@emotion/react";import{useWindow}from"../../../shared/useWindow";function restingTranslate(edge){return edge?"0%":"-50%"}export function useDrawerAnimation({isVisible,onUnmount,positionX,positionY}){let theme=useTheme(),window=useWindow(),[isClosing,setIsClosing]=useState(!1),wasVisible=useRef(isVisible),isLeaving=isClosing&&!isVisible;useLayoutEffect(()=>{if(isVisible)setIsClosing(!1);else wasVisible.current&&(window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches?onUnmount?.():setIsClosing(!0));wasVisible.current=isVisible},[isVisible,onUnmount,window]);let onAnimationEnd=useCallback(event=>{event.target===event.currentTarget&&isLeaving&&(setIsClosing(!1),onUnmount?.())},[isLeaving,onUnmount]),restX=restingTranslate(positionX),restY=restingTranslate(positionY),{x:fromX,y:fromY}="left"===positionX?{x:"-100%",y:restY}:"right"===positionX?{x:"100%",y:restY}:"top"===positionY?{x:restX,y:"-100%"}:"bottom"===positionY?{x:restX,y:"100%"}:{x:restX,y:restY},contentTransform=`translate(${restX}, ${restY})`,offscreen=`translate(${fromX}, ${fromY})`,slideIn=keyframes("from{transform:",offscreen,";}to{transform:",contentTransform,";}","slideIn","/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyIsInNvdXJjZXMiOlsic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB0eXBlIEFuaW1hdGlvbkV2ZW50SGFuZGxlcixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIHVzZVRoZW1lIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuXG5leHBvcnQgdHlwZSBFZGdlWCA9IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuZXhwb3J0IHR5cGUgRWRnZVkgPSBcInRvcFwiIHwgXCJib3R0b21cIjtcblxuZnVuY3Rpb24gcHJlZmVyc1JlZHVjZWRNb3Rpb24od2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhd2luZG93Lm1hdGNoTWVkaWE/LihcIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpXCIpPy5tYXRjaGVzO1xufVxuXG4vLyAwJSB3aGVuIHBpbm5lZCB0byBhbiBlZGdlIChhbHJlYWR5IHBvc2l0aW9uZWQgdmlhIGxlZnQvcmlnaHQvdG9wL2JvdHRvbSksXG4vLyAtNTAlIHdoZW4gY2VudGVyZWQgKG5lZWRzIHRoZSB0cmFuc2xhdGUgdG8gcmVjZW50ZXIgaXQpLlxuZnVuY3Rpb24gcmVzdGluZ1RyYW5zbGF0ZShlZGdlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVkZ2UgPyBcIjAlXCIgOiBcIi01MCVcIjtcbn1cblxuLy8gVGhlIGRyYXdlciBzbGlkZXMgaW4gZnJvbSB3aGljaGV2ZXIgZWRnZSBpdCdzIHBpbm5lZCB0bzsgWCB3aW5zIG92ZXIgWSB3aGVuXG4vLyBib3RoIGFyZSBzZXQgKGNvcm5lciBwaW4pLiBBIGNlbnRlcmVkIGRyYXdlciAobmVpdGhlciBzZXQpIGRvZXNuJ3Qgc2xpZGUg4oCUXG4vLyBpdCBvbmx5IGZhZGVzLlxuZnVuY3Rpb24gc2xpZGVPZmZzZXQoXG4gIHBvc2l0aW9uWDogRWRnZVggfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uWTogRWRnZVkgfCB1bmRlZmluZWQsXG4gIHJlc3RYOiBzdHJpbmcsXG4gIHJlc3RZOiBzdHJpbmdcbik6IHsgeDogc3RyaW5nOyB5OiBzdHJpbmcgfSB7XG4gIGlmIChwb3NpdGlvblggPT09IFwibGVmdFwiKSByZXR1cm4geyB4OiBcIi0xMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblggPT09IFwicmlnaHRcIikgcmV0dXJuIHsgeDogXCIxMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblkgPT09IFwidG9wXCIpIHJldHVybiB7IHg6IHJlc3RYLCB5OiBcIi0xMDAlXCIgfTtcbiAgaWYgKHBvc2l0aW9uWSA9PT0gXCJib3R0b21cIikgcmV0dXJuIHsgeDogcmVzdFgsIHk6IFwiMTAwJVwiIH07XG4gIHJldHVybiB7IHg6IHJlc3RYLCB5OiByZXN0WSB9O1xufVxuXG5leHBvcnQgdHlwZSBEcmF3ZXJBbmltYXRpb24gPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBub2RlIHNob3VsZCByZW5kZXIgYXQgYWxsIChlbnRlcmluZywgcHJlc2VudCwgb3IgbWlkLWV4aXQpLiAqL1xuICBpc01vdW50ZWQ6IGJvb2xlYW47XG4gIC8qKiBBdHRhY2ggdG8gdGhlIGFuaW1hdGVkIGNvbnRlbnQgbm9kZTsgdGVhcnMgaXQgZG93biBvbmNlIGl0cyBleGl0IGFuaW1hdGlvbiBlbmRzLiAqL1xuICBvbkFuaW1hdGlvbkVuZDogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgLyoqIENTUyBgYW5pbWF0aW9uYCBzaG9ydGhhbmQgZm9yIHRoZSBiYWNrZHJvcCdzIGZhZGUuICovXG4gIGJhY2tkcm9wQW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBDU1MgYGFuaW1hdGlvbmAgc2hvcnRoYW5kIGZvciB0aGUgY29udGVudCdzIHNsaWRlLiAqL1xuICBjb250ZW50QW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBSZXN0aW5nIGB0cmFuc2Zvcm1gIGZvciB0aGUgY29udGVudCwgYXBwbGllZCBvdXRzaWRlIHRoZSBhbmltYXRpb24gdG9vIHNvIGl0IGhvbGRzIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcy4gKi9cbiAgY29udGVudFRyYW5zZm9ybTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBNYW5hZ2VzIGV2ZXJ5dGhpbmcgYW5pbWF0aW9uLXJlbGF0ZWQgZm9yIHRoZSBkcmF3ZXI6IHByZXNlbmNlIGFjcm9zcyB0aGVcbiAqIGVudGVyL2V4aXQgbGlmZWN5Y2xlLCBhbmQgdGhlIGtleWZyYW1lcy90aW1pbmcgZm9yIGJvdGggdGhlIGJhY2tkcm9wIGZhZGVcbiAqIGFuZCB0aGUgY29udGVudCBzbGlkZS5cbiAqXG4gKiBUaGUgZW50ZXIgYW5pbWF0aW9uIGlzIHB1cmUgQ1NTIHRoYXQgcGxheXMgb24gbW91bnQsIHNvIGl0IG5lZWRzIG5vIHN0YXRlLlxuICogVGhlIGV4aXQgZG9lczogdGhlIGNvbnN1bWVyIGRyaXZlcyBgaXNWaXNpYmxlYCwgYW5kIHdoZW4gaXQgZmxpcHMgdG8gYGZhbHNlYFxuICogdGhlIG5vZGUgc3RheXMgbW91bnRlZCAoYGlzTGVhdmluZyA9PT0gdHJ1ZWAsIHRyYWNrZWQgaW50ZXJuYWxseSkgdW50aWwgdGhlXG4gKiBleGl0IGFuaW1hdGlvbiBlbmRzLCB0aGVuIGBvblVubW91bnRgIGZpcmVzLiBBIGB1c2VMYXlvdXRFZmZlY3RgIGZsaXBzIGludG9cbiAqIHRoZSBjbG9zaW5nIHN0YXRlIGJlZm9yZSBwYWludCBzbyB0aGUgbm9kZSBpc24ndCBkcm9wcGVkIGZvciBhIGZyYW1lLlxuICogUmVkdWNlZCBtb3Rpb24gdGVhcnMgZG93biBpbW1lZGlhdGVseSwgc2luY2Ugd2l0aCBubyBhbmltYXRpb24gdGhlcmUgaXMgbm9cbiAqIGBhbmltYXRpb25lbmRgIHRvIHdhaXQgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJhd2VyQW5pbWF0aW9uKHtcbiAgaXNWaXNpYmxlLFxuICBvblVubW91bnQsXG4gIHBvc2l0aW9uWCxcbiAgcG9zaXRpb25ZLFxufToge1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIG9uVW5tb3VudD86ICgpID0+IHZvaWQ7XG4gIHBvc2l0aW9uWD86IEVkZ2VYO1xuICBwb3NpdGlvblk/OiBFZGdlWTtcbn0pOiBEcmF3ZXJBbmltYXRpb24ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBbaXNDbG9zaW5nLCBzZXRJc0Nsb3NpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB3YXNWaXNpYmxlID0gdXNlUmVmKGlzVmlzaWJsZSk7XG4gIGNvbnN0IGlzTGVhdmluZyA9IGlzQ2xvc2luZyAmJiAhaXNWaXNpYmxlO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKHdhc1Zpc2libGUuY3VycmVudCkge1xuICAgICAgaWYgKHByZWZlcnNSZWR1Y2VkTW90aW9uKHdpbmRvdykpIHtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzQ2xvc2luZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgd2FzVmlzaWJsZS5jdXJyZW50ID0gaXNWaXNpYmxlO1xuICB9LCBbaXNWaXNpYmxlLCBvblVubW91bnQsIHdpbmRvd10pO1xuXG4gIGNvbnN0IG9uQW5pbWF0aW9uRW5kID0gdXNlQ2FsbGJhY2s8QW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBJZ25vcmUgYW5pbWF0aW9ucyBidWJibGluZyB1cCBmcm9tIGNoaWxkcmVuOiBvbmx5IHRoZSBub2RlJ3Mgb3duIGV4aXRcbiAgICAgIC8vIGFuaW1hdGlvbiBzaG91bGQgdHJpZ2dlciB0ZWFyZG93bi5cbiAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgIGlmIChpc0xlYXZpbmcpIHtcbiAgICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc0xlYXZpbmcsIG9uVW5tb3VudF1cbiAgKTtcblxuICBjb25zdCByZXN0WCA9IHJlc3RpbmdUcmFuc2xhdGUocG9zaXRpb25YKTtcbiAgY29uc3QgcmVzdFkgPSByZXN0aW5nVHJhbnNsYXRlKHBvc2l0aW9uWSk7XG4gIGNvbnN0IHsgeDogZnJvbVgsIHk6IGZyb21ZIH0gPSBzbGlkZU9mZnNldChcbiAgICBwb3NpdGlvblgsXG4gICAgcG9zaXRpb25ZLFxuICAgIHJlc3RYLFxuICAgIHJlc3RZXG4gICk7XG4gIGNvbnN0IGNvbnRlbnRUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7cmVzdFh9LCAke3Jlc3RZfSlgO1xuICBjb25zdCBvZmZzY3JlZW4gPSBgdHJhbnNsYXRlKCR7ZnJvbVh9LCAke2Zyb21ZfSlgO1xuICBjb25zdCBzbGlkZUluID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7b2Zmc2NyZWVufTsgfVxuICAgIHRvIHsgdHJhbnNmb3JtOiAke2NvbnRlbnRUcmFuc2Zvcm19OyB9XG4gIGA7XG4gIGNvbnN0IHNsaWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7Y29udGVudFRyYW5zZm9ybX07IH1cbiAgICB0byB7IHRyYW5zZm9ybTogJHtvZmZzY3JlZW59OyB9XG4gIGA7XG4gIGNvbnN0IHsgZHVyYXRpb246IHNsaWRlRHVyYXRpb24sIHRpbWluZ0Z1bmN0aW9uOiBzbGlkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm5hdlNsaWRlLm9wZW47XG5cbiAgY29uc3QgeyBoaWRkZW4sIHZpc2libGUgfSA9IHRoZW1lLnZhcmlhYmxlcy5vcGFjaXR5O1xuICBjb25zdCBmYWRlSW4gPSBrZXlmcmFtZXNgXG4gICAgZnJvbSB7IG9wYWNpdHk6ICR7aGlkZGVufTsgfVxuICAgIHRvIHsgb3BhY2l0eTogJHt2aXNpYmxlfTsgfVxuICBgO1xuICBjb25zdCBmYWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyBvcGFjaXR5OiAke3Zpc2libGV9OyB9XG4gICAgdG8geyBvcGFjaXR5OiAke2hpZGRlbn07IH1cbiAgYDtcbiAgY29uc3QgeyBkdXJhdGlvbjogZmFkZUR1cmF0aW9uLCB0aW1pbmdGdW5jdGlvbjogZmFkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm1vZGFsQmFja2Ryb3Aub3BlbjtcblxuICByZXR1cm4ge1xuICAgIGlzTW91bnRlZDogaXNWaXNpYmxlIHx8IGlzQ2xvc2luZyxcbiAgICBvbkFuaW1hdGlvbkVuZCxcbiAgICBjb250ZW50VHJhbnNmb3JtLFxuICAgIGNvbnRlbnRBbmltYXRpb246IGAke1xuICAgICAgaXNMZWF2aW5nID8gc2xpZGVPdXQgOiBzbGlkZUluXG4gICAgfSAke3NsaWRlRHVyYXRpb259ICR7c2xpZGVFYXNpbmd9IGJvdGhgLFxuICAgIGJhY2tkcm9wQW5pbWF0aW9uOiBgJHtcbiAgICAgIGlzTGVhdmluZyA/IGZhZGVPdXQgOiBmYWRlSW5cbiAgICB9ICR7ZmFkZUR1cmF0aW9ufSAke2ZhZGVFYXNpbmd9IGJvdGhgLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNIa0IifQ== */"),slideOut=keyframes("from{transform:",contentTransform,";}to{transform:",offscreen,";}","slideOut","/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyIsInNvdXJjZXMiOlsic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB0eXBlIEFuaW1hdGlvbkV2ZW50SGFuZGxlcixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIHVzZVRoZW1lIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuXG5leHBvcnQgdHlwZSBFZGdlWCA9IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuZXhwb3J0IHR5cGUgRWRnZVkgPSBcInRvcFwiIHwgXCJib3R0b21cIjtcblxuZnVuY3Rpb24gcHJlZmVyc1JlZHVjZWRNb3Rpb24od2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhd2luZG93Lm1hdGNoTWVkaWE/LihcIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpXCIpPy5tYXRjaGVzO1xufVxuXG4vLyAwJSB3aGVuIHBpbm5lZCB0byBhbiBlZGdlIChhbHJlYWR5IHBvc2l0aW9uZWQgdmlhIGxlZnQvcmlnaHQvdG9wL2JvdHRvbSksXG4vLyAtNTAlIHdoZW4gY2VudGVyZWQgKG5lZWRzIHRoZSB0cmFuc2xhdGUgdG8gcmVjZW50ZXIgaXQpLlxuZnVuY3Rpb24gcmVzdGluZ1RyYW5zbGF0ZShlZGdlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVkZ2UgPyBcIjAlXCIgOiBcIi01MCVcIjtcbn1cblxuLy8gVGhlIGRyYXdlciBzbGlkZXMgaW4gZnJvbSB3aGljaGV2ZXIgZWRnZSBpdCdzIHBpbm5lZCB0bzsgWCB3aW5zIG92ZXIgWSB3aGVuXG4vLyBib3RoIGFyZSBzZXQgKGNvcm5lciBwaW4pLiBBIGNlbnRlcmVkIGRyYXdlciAobmVpdGhlciBzZXQpIGRvZXNuJ3Qgc2xpZGUg4oCUXG4vLyBpdCBvbmx5IGZhZGVzLlxuZnVuY3Rpb24gc2xpZGVPZmZzZXQoXG4gIHBvc2l0aW9uWDogRWRnZVggfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uWTogRWRnZVkgfCB1bmRlZmluZWQsXG4gIHJlc3RYOiBzdHJpbmcsXG4gIHJlc3RZOiBzdHJpbmdcbik6IHsgeDogc3RyaW5nOyB5OiBzdHJpbmcgfSB7XG4gIGlmIChwb3NpdGlvblggPT09IFwibGVmdFwiKSByZXR1cm4geyB4OiBcIi0xMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblggPT09IFwicmlnaHRcIikgcmV0dXJuIHsgeDogXCIxMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblkgPT09IFwidG9wXCIpIHJldHVybiB7IHg6IHJlc3RYLCB5OiBcIi0xMDAlXCIgfTtcbiAgaWYgKHBvc2l0aW9uWSA9PT0gXCJib3R0b21cIikgcmV0dXJuIHsgeDogcmVzdFgsIHk6IFwiMTAwJVwiIH07XG4gIHJldHVybiB7IHg6IHJlc3RYLCB5OiByZXN0WSB9O1xufVxuXG5leHBvcnQgdHlwZSBEcmF3ZXJBbmltYXRpb24gPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBub2RlIHNob3VsZCByZW5kZXIgYXQgYWxsIChlbnRlcmluZywgcHJlc2VudCwgb3IgbWlkLWV4aXQpLiAqL1xuICBpc01vdW50ZWQ6IGJvb2xlYW47XG4gIC8qKiBBdHRhY2ggdG8gdGhlIGFuaW1hdGVkIGNvbnRlbnQgbm9kZTsgdGVhcnMgaXQgZG93biBvbmNlIGl0cyBleGl0IGFuaW1hdGlvbiBlbmRzLiAqL1xuICBvbkFuaW1hdGlvbkVuZDogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgLyoqIENTUyBgYW5pbWF0aW9uYCBzaG9ydGhhbmQgZm9yIHRoZSBiYWNrZHJvcCdzIGZhZGUuICovXG4gIGJhY2tkcm9wQW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBDU1MgYGFuaW1hdGlvbmAgc2hvcnRoYW5kIGZvciB0aGUgY29udGVudCdzIHNsaWRlLiAqL1xuICBjb250ZW50QW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBSZXN0aW5nIGB0cmFuc2Zvcm1gIGZvciB0aGUgY29udGVudCwgYXBwbGllZCBvdXRzaWRlIHRoZSBhbmltYXRpb24gdG9vIHNvIGl0IGhvbGRzIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcy4gKi9cbiAgY29udGVudFRyYW5zZm9ybTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBNYW5hZ2VzIGV2ZXJ5dGhpbmcgYW5pbWF0aW9uLXJlbGF0ZWQgZm9yIHRoZSBkcmF3ZXI6IHByZXNlbmNlIGFjcm9zcyB0aGVcbiAqIGVudGVyL2V4aXQgbGlmZWN5Y2xlLCBhbmQgdGhlIGtleWZyYW1lcy90aW1pbmcgZm9yIGJvdGggdGhlIGJhY2tkcm9wIGZhZGVcbiAqIGFuZCB0aGUgY29udGVudCBzbGlkZS5cbiAqXG4gKiBUaGUgZW50ZXIgYW5pbWF0aW9uIGlzIHB1cmUgQ1NTIHRoYXQgcGxheXMgb24gbW91bnQsIHNvIGl0IG5lZWRzIG5vIHN0YXRlLlxuICogVGhlIGV4aXQgZG9lczogdGhlIGNvbnN1bWVyIGRyaXZlcyBgaXNWaXNpYmxlYCwgYW5kIHdoZW4gaXQgZmxpcHMgdG8gYGZhbHNlYFxuICogdGhlIG5vZGUgc3RheXMgbW91bnRlZCAoYGlzTGVhdmluZyA9PT0gdHJ1ZWAsIHRyYWNrZWQgaW50ZXJuYWxseSkgdW50aWwgdGhlXG4gKiBleGl0IGFuaW1hdGlvbiBlbmRzLCB0aGVuIGBvblVubW91bnRgIGZpcmVzLiBBIGB1c2VMYXlvdXRFZmZlY3RgIGZsaXBzIGludG9cbiAqIHRoZSBjbG9zaW5nIHN0YXRlIGJlZm9yZSBwYWludCBzbyB0aGUgbm9kZSBpc24ndCBkcm9wcGVkIGZvciBhIGZyYW1lLlxuICogUmVkdWNlZCBtb3Rpb24gdGVhcnMgZG93biBpbW1lZGlhdGVseSwgc2luY2Ugd2l0aCBubyBhbmltYXRpb24gdGhlcmUgaXMgbm9cbiAqIGBhbmltYXRpb25lbmRgIHRvIHdhaXQgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJhd2VyQW5pbWF0aW9uKHtcbiAgaXNWaXNpYmxlLFxuICBvblVubW91bnQsXG4gIHBvc2l0aW9uWCxcbiAgcG9zaXRpb25ZLFxufToge1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIG9uVW5tb3VudD86ICgpID0+IHZvaWQ7XG4gIHBvc2l0aW9uWD86IEVkZ2VYO1xuICBwb3NpdGlvblk/OiBFZGdlWTtcbn0pOiBEcmF3ZXJBbmltYXRpb24ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBbaXNDbG9zaW5nLCBzZXRJc0Nsb3NpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB3YXNWaXNpYmxlID0gdXNlUmVmKGlzVmlzaWJsZSk7XG4gIGNvbnN0IGlzTGVhdmluZyA9IGlzQ2xvc2luZyAmJiAhaXNWaXNpYmxlO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKHdhc1Zpc2libGUuY3VycmVudCkge1xuICAgICAgaWYgKHByZWZlcnNSZWR1Y2VkTW90aW9uKHdpbmRvdykpIHtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzQ2xvc2luZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgd2FzVmlzaWJsZS5jdXJyZW50ID0gaXNWaXNpYmxlO1xuICB9LCBbaXNWaXNpYmxlLCBvblVubW91bnQsIHdpbmRvd10pO1xuXG4gIGNvbnN0IG9uQW5pbWF0aW9uRW5kID0gdXNlQ2FsbGJhY2s8QW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBJZ25vcmUgYW5pbWF0aW9ucyBidWJibGluZyB1cCBmcm9tIGNoaWxkcmVuOiBvbmx5IHRoZSBub2RlJ3Mgb3duIGV4aXRcbiAgICAgIC8vIGFuaW1hdGlvbiBzaG91bGQgdHJpZ2dlciB0ZWFyZG93bi5cbiAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgIGlmIChpc0xlYXZpbmcpIHtcbiAgICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc0xlYXZpbmcsIG9uVW5tb3VudF1cbiAgKTtcblxuICBjb25zdCByZXN0WCA9IHJlc3RpbmdUcmFuc2xhdGUocG9zaXRpb25YKTtcbiAgY29uc3QgcmVzdFkgPSByZXN0aW5nVHJhbnNsYXRlKHBvc2l0aW9uWSk7XG4gIGNvbnN0IHsgeDogZnJvbVgsIHk6IGZyb21ZIH0gPSBzbGlkZU9mZnNldChcbiAgICBwb3NpdGlvblgsXG4gICAgcG9zaXRpb25ZLFxuICAgIHJlc3RYLFxuICAgIHJlc3RZXG4gICk7XG4gIGNvbnN0IGNvbnRlbnRUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7cmVzdFh9LCAke3Jlc3RZfSlgO1xuICBjb25zdCBvZmZzY3JlZW4gPSBgdHJhbnNsYXRlKCR7ZnJvbVh9LCAke2Zyb21ZfSlgO1xuICBjb25zdCBzbGlkZUluID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7b2Zmc2NyZWVufTsgfVxuICAgIHRvIHsgdHJhbnNmb3JtOiAke2NvbnRlbnRUcmFuc2Zvcm19OyB9XG4gIGA7XG4gIGNvbnN0IHNsaWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7Y29udGVudFRyYW5zZm9ybX07IH1cbiAgICB0byB7IHRyYW5zZm9ybTogJHtvZmZzY3JlZW59OyB9XG4gIGA7XG4gIGNvbnN0IHsgZHVyYXRpb246IHNsaWRlRHVyYXRpb24sIHRpbWluZ0Z1bmN0aW9uOiBzbGlkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm5hdlNsaWRlLm9wZW47XG5cbiAgY29uc3QgeyBoaWRkZW4sIHZpc2libGUgfSA9IHRoZW1lLnZhcmlhYmxlcy5vcGFjaXR5O1xuICBjb25zdCBmYWRlSW4gPSBrZXlmcmFtZXNgXG4gICAgZnJvbSB7IG9wYWNpdHk6ICR7aGlkZGVufTsgfVxuICAgIHRvIHsgb3BhY2l0eTogJHt2aXNpYmxlfTsgfVxuICBgO1xuICBjb25zdCBmYWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyBvcGFjaXR5OiAke3Zpc2libGV9OyB9XG4gICAgdG8geyBvcGFjaXR5OiAke2hpZGRlbn07IH1cbiAgYDtcbiAgY29uc3QgeyBkdXJhdGlvbjogZmFkZUR1cmF0aW9uLCB0aW1pbmdGdW5jdGlvbjogZmFkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm1vZGFsQmFja2Ryb3Aub3BlbjtcblxuICByZXR1cm4ge1xuICAgIGlzTW91bnRlZDogaXNWaXNpYmxlIHx8IGlzQ2xvc2luZyxcbiAgICBvbkFuaW1hdGlvbkVuZCxcbiAgICBjb250ZW50VHJhbnNmb3JtLFxuICAgIGNvbnRlbnRBbmltYXRpb246IGAke1xuICAgICAgaXNMZWF2aW5nID8gc2xpZGVPdXQgOiBzbGlkZUluXG4gICAgfSAke3NsaWRlRHVyYXRpb259ICR7c2xpZGVFYXNpbmd9IGJvdGhgLFxuICAgIGJhY2tkcm9wQW5pbWF0aW9uOiBgJHtcbiAgICAgIGlzTGVhdmluZyA/IGZhZGVPdXQgOiBmYWRlSW5cbiAgICB9ICR7ZmFkZUR1cmF0aW9ufSAke2ZhZGVFYXNpbmd9IGJvdGhgLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBIbUIifQ== */"),{duration:slideDuration,timingFunction:slideEasing}=theme.variables.animation.navSlide.open,{hidden,visible}=theme.variables.opacity,fadeIn=keyframes("from{opacity:",hidden,";}to{opacity:",visible,";}","fadeIn","/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyIsInNvdXJjZXMiOlsic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB0eXBlIEFuaW1hdGlvbkV2ZW50SGFuZGxlcixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIHVzZVRoZW1lIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuXG5leHBvcnQgdHlwZSBFZGdlWCA9IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuZXhwb3J0IHR5cGUgRWRnZVkgPSBcInRvcFwiIHwgXCJib3R0b21cIjtcblxuZnVuY3Rpb24gcHJlZmVyc1JlZHVjZWRNb3Rpb24od2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhd2luZG93Lm1hdGNoTWVkaWE/LihcIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpXCIpPy5tYXRjaGVzO1xufVxuXG4vLyAwJSB3aGVuIHBpbm5lZCB0byBhbiBlZGdlIChhbHJlYWR5IHBvc2l0aW9uZWQgdmlhIGxlZnQvcmlnaHQvdG9wL2JvdHRvbSksXG4vLyAtNTAlIHdoZW4gY2VudGVyZWQgKG5lZWRzIHRoZSB0cmFuc2xhdGUgdG8gcmVjZW50ZXIgaXQpLlxuZnVuY3Rpb24gcmVzdGluZ1RyYW5zbGF0ZShlZGdlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVkZ2UgPyBcIjAlXCIgOiBcIi01MCVcIjtcbn1cblxuLy8gVGhlIGRyYXdlciBzbGlkZXMgaW4gZnJvbSB3aGljaGV2ZXIgZWRnZSBpdCdzIHBpbm5lZCB0bzsgWCB3aW5zIG92ZXIgWSB3aGVuXG4vLyBib3RoIGFyZSBzZXQgKGNvcm5lciBwaW4pLiBBIGNlbnRlcmVkIGRyYXdlciAobmVpdGhlciBzZXQpIGRvZXNuJ3Qgc2xpZGUg4oCUXG4vLyBpdCBvbmx5IGZhZGVzLlxuZnVuY3Rpb24gc2xpZGVPZmZzZXQoXG4gIHBvc2l0aW9uWDogRWRnZVggfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uWTogRWRnZVkgfCB1bmRlZmluZWQsXG4gIHJlc3RYOiBzdHJpbmcsXG4gIHJlc3RZOiBzdHJpbmdcbik6IHsgeDogc3RyaW5nOyB5OiBzdHJpbmcgfSB7XG4gIGlmIChwb3NpdGlvblggPT09IFwibGVmdFwiKSByZXR1cm4geyB4OiBcIi0xMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblggPT09IFwicmlnaHRcIikgcmV0dXJuIHsgeDogXCIxMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblkgPT09IFwidG9wXCIpIHJldHVybiB7IHg6IHJlc3RYLCB5OiBcIi0xMDAlXCIgfTtcbiAgaWYgKHBvc2l0aW9uWSA9PT0gXCJib3R0b21cIikgcmV0dXJuIHsgeDogcmVzdFgsIHk6IFwiMTAwJVwiIH07XG4gIHJldHVybiB7IHg6IHJlc3RYLCB5OiByZXN0WSB9O1xufVxuXG5leHBvcnQgdHlwZSBEcmF3ZXJBbmltYXRpb24gPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBub2RlIHNob3VsZCByZW5kZXIgYXQgYWxsIChlbnRlcmluZywgcHJlc2VudCwgb3IgbWlkLWV4aXQpLiAqL1xuICBpc01vdW50ZWQ6IGJvb2xlYW47XG4gIC8qKiBBdHRhY2ggdG8gdGhlIGFuaW1hdGVkIGNvbnRlbnQgbm9kZTsgdGVhcnMgaXQgZG93biBvbmNlIGl0cyBleGl0IGFuaW1hdGlvbiBlbmRzLiAqL1xuICBvbkFuaW1hdGlvbkVuZDogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgLyoqIENTUyBgYW5pbWF0aW9uYCBzaG9ydGhhbmQgZm9yIHRoZSBiYWNrZHJvcCdzIGZhZGUuICovXG4gIGJhY2tkcm9wQW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBDU1MgYGFuaW1hdGlvbmAgc2hvcnRoYW5kIGZvciB0aGUgY29udGVudCdzIHNsaWRlLiAqL1xuICBjb250ZW50QW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBSZXN0aW5nIGB0cmFuc2Zvcm1gIGZvciB0aGUgY29udGVudCwgYXBwbGllZCBvdXRzaWRlIHRoZSBhbmltYXRpb24gdG9vIHNvIGl0IGhvbGRzIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcy4gKi9cbiAgY29udGVudFRyYW5zZm9ybTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBNYW5hZ2VzIGV2ZXJ5dGhpbmcgYW5pbWF0aW9uLXJlbGF0ZWQgZm9yIHRoZSBkcmF3ZXI6IHByZXNlbmNlIGFjcm9zcyB0aGVcbiAqIGVudGVyL2V4aXQgbGlmZWN5Y2xlLCBhbmQgdGhlIGtleWZyYW1lcy90aW1pbmcgZm9yIGJvdGggdGhlIGJhY2tkcm9wIGZhZGVcbiAqIGFuZCB0aGUgY29udGVudCBzbGlkZS5cbiAqXG4gKiBUaGUgZW50ZXIgYW5pbWF0aW9uIGlzIHB1cmUgQ1NTIHRoYXQgcGxheXMgb24gbW91bnQsIHNvIGl0IG5lZWRzIG5vIHN0YXRlLlxuICogVGhlIGV4aXQgZG9lczogdGhlIGNvbnN1bWVyIGRyaXZlcyBgaXNWaXNpYmxlYCwgYW5kIHdoZW4gaXQgZmxpcHMgdG8gYGZhbHNlYFxuICogdGhlIG5vZGUgc3RheXMgbW91bnRlZCAoYGlzTGVhdmluZyA9PT0gdHJ1ZWAsIHRyYWNrZWQgaW50ZXJuYWxseSkgdW50aWwgdGhlXG4gKiBleGl0IGFuaW1hdGlvbiBlbmRzLCB0aGVuIGBvblVubW91bnRgIGZpcmVzLiBBIGB1c2VMYXlvdXRFZmZlY3RgIGZsaXBzIGludG9cbiAqIHRoZSBjbG9zaW5nIHN0YXRlIGJlZm9yZSBwYWludCBzbyB0aGUgbm9kZSBpc24ndCBkcm9wcGVkIGZvciBhIGZyYW1lLlxuICogUmVkdWNlZCBtb3Rpb24gdGVhcnMgZG93biBpbW1lZGlhdGVseSwgc2luY2Ugd2l0aCBubyBhbmltYXRpb24gdGhlcmUgaXMgbm9cbiAqIGBhbmltYXRpb25lbmRgIHRvIHdhaXQgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJhd2VyQW5pbWF0aW9uKHtcbiAgaXNWaXNpYmxlLFxuICBvblVubW91bnQsXG4gIHBvc2l0aW9uWCxcbiAgcG9zaXRpb25ZLFxufToge1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIG9uVW5tb3VudD86ICgpID0+IHZvaWQ7XG4gIHBvc2l0aW9uWD86IEVkZ2VYO1xuICBwb3NpdGlvblk/OiBFZGdlWTtcbn0pOiBEcmF3ZXJBbmltYXRpb24ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBbaXNDbG9zaW5nLCBzZXRJc0Nsb3NpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB3YXNWaXNpYmxlID0gdXNlUmVmKGlzVmlzaWJsZSk7XG4gIGNvbnN0IGlzTGVhdmluZyA9IGlzQ2xvc2luZyAmJiAhaXNWaXNpYmxlO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKHdhc1Zpc2libGUuY3VycmVudCkge1xuICAgICAgaWYgKHByZWZlcnNSZWR1Y2VkTW90aW9uKHdpbmRvdykpIHtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzQ2xvc2luZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgd2FzVmlzaWJsZS5jdXJyZW50ID0gaXNWaXNpYmxlO1xuICB9LCBbaXNWaXNpYmxlLCBvblVubW91bnQsIHdpbmRvd10pO1xuXG4gIGNvbnN0IG9uQW5pbWF0aW9uRW5kID0gdXNlQ2FsbGJhY2s8QW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBJZ25vcmUgYW5pbWF0aW9ucyBidWJibGluZyB1cCBmcm9tIGNoaWxkcmVuOiBvbmx5IHRoZSBub2RlJ3Mgb3duIGV4aXRcbiAgICAgIC8vIGFuaW1hdGlvbiBzaG91bGQgdHJpZ2dlciB0ZWFyZG93bi5cbiAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgIGlmIChpc0xlYXZpbmcpIHtcbiAgICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc0xlYXZpbmcsIG9uVW5tb3VudF1cbiAgKTtcblxuICBjb25zdCByZXN0WCA9IHJlc3RpbmdUcmFuc2xhdGUocG9zaXRpb25YKTtcbiAgY29uc3QgcmVzdFkgPSByZXN0aW5nVHJhbnNsYXRlKHBvc2l0aW9uWSk7XG4gIGNvbnN0IHsgeDogZnJvbVgsIHk6IGZyb21ZIH0gPSBzbGlkZU9mZnNldChcbiAgICBwb3NpdGlvblgsXG4gICAgcG9zaXRpb25ZLFxuICAgIHJlc3RYLFxuICAgIHJlc3RZXG4gICk7XG4gIGNvbnN0IGNvbnRlbnRUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7cmVzdFh9LCAke3Jlc3RZfSlgO1xuICBjb25zdCBvZmZzY3JlZW4gPSBgdHJhbnNsYXRlKCR7ZnJvbVh9LCAke2Zyb21ZfSlgO1xuICBjb25zdCBzbGlkZUluID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7b2Zmc2NyZWVufTsgfVxuICAgIHRvIHsgdHJhbnNmb3JtOiAke2NvbnRlbnRUcmFuc2Zvcm19OyB9XG4gIGA7XG4gIGNvbnN0IHNsaWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7Y29udGVudFRyYW5zZm9ybX07IH1cbiAgICB0byB7IHRyYW5zZm9ybTogJHtvZmZzY3JlZW59OyB9XG4gIGA7XG4gIGNvbnN0IHsgZHVyYXRpb246IHNsaWRlRHVyYXRpb24sIHRpbWluZ0Z1bmN0aW9uOiBzbGlkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm5hdlNsaWRlLm9wZW47XG5cbiAgY29uc3QgeyBoaWRkZW4sIHZpc2libGUgfSA9IHRoZW1lLnZhcmlhYmxlcy5vcGFjaXR5O1xuICBjb25zdCBmYWRlSW4gPSBrZXlmcmFtZXNgXG4gICAgZnJvbSB7IG9wYWNpdHk6ICR7aGlkZGVufTsgfVxuICAgIHRvIHsgb3BhY2l0eTogJHt2aXNpYmxlfTsgfVxuICBgO1xuICBjb25zdCBmYWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyBvcGFjaXR5OiAke3Zpc2libGV9OyB9XG4gICAgdG8geyBvcGFjaXR5OiAke2hpZGRlbn07IH1cbiAgYDtcbiAgY29uc3QgeyBkdXJhdGlvbjogZmFkZUR1cmF0aW9uLCB0aW1pbmdGdW5jdGlvbjogZmFkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm1vZGFsQmFja2Ryb3Aub3BlbjtcblxuICByZXR1cm4ge1xuICAgIGlzTW91bnRlZDogaXNWaXNpYmxlIHx8IGlzQ2xvc2luZyxcbiAgICBvbkFuaW1hdGlvbkVuZCxcbiAgICBjb250ZW50VHJhbnNmb3JtLFxuICAgIGNvbnRlbnRBbmltYXRpb246IGAke1xuICAgICAgaXNMZWF2aW5nID8gc2xpZGVPdXQgOiBzbGlkZUluXG4gICAgfSAke3NsaWRlRHVyYXRpb259ICR7c2xpZGVFYXNpbmd9IGJvdGhgLFxuICAgIGJhY2tkcm9wQW5pbWF0aW9uOiBgJHtcbiAgICAgIGlzTGVhdmluZyA/IGZhZGVPdXQgOiBmYWRlSW5cbiAgICB9ICR7ZmFkZUR1cmF0aW9ufSAke2ZhZGVFYXNpbmd9IGJvdGhgLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtJaUIifQ== */"),fadeOut=keyframes("from{opacity:",visible,";}to{opacity:",hidden,";}","fadeOut","/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyIsInNvdXJjZXMiOlsic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvRHJhd2VyL3VzZURyYXdlckFuaW1hdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB0eXBlIEFuaW1hdGlvbkV2ZW50SGFuZGxlcixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIHVzZVRoZW1lIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3VzZVdpbmRvd1wiO1xuXG5leHBvcnQgdHlwZSBFZGdlWCA9IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuZXhwb3J0IHR5cGUgRWRnZVkgPSBcInRvcFwiIHwgXCJib3R0b21cIjtcblxuZnVuY3Rpb24gcHJlZmVyc1JlZHVjZWRNb3Rpb24od2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhd2luZG93Lm1hdGNoTWVkaWE/LihcIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpXCIpPy5tYXRjaGVzO1xufVxuXG4vLyAwJSB3aGVuIHBpbm5lZCB0byBhbiBlZGdlIChhbHJlYWR5IHBvc2l0aW9uZWQgdmlhIGxlZnQvcmlnaHQvdG9wL2JvdHRvbSksXG4vLyAtNTAlIHdoZW4gY2VudGVyZWQgKG5lZWRzIHRoZSB0cmFuc2xhdGUgdG8gcmVjZW50ZXIgaXQpLlxuZnVuY3Rpb24gcmVzdGluZ1RyYW5zbGF0ZShlZGdlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVkZ2UgPyBcIjAlXCIgOiBcIi01MCVcIjtcbn1cblxuLy8gVGhlIGRyYXdlciBzbGlkZXMgaW4gZnJvbSB3aGljaGV2ZXIgZWRnZSBpdCdzIHBpbm5lZCB0bzsgWCB3aW5zIG92ZXIgWSB3aGVuXG4vLyBib3RoIGFyZSBzZXQgKGNvcm5lciBwaW4pLiBBIGNlbnRlcmVkIGRyYXdlciAobmVpdGhlciBzZXQpIGRvZXNuJ3Qgc2xpZGUg4oCUXG4vLyBpdCBvbmx5IGZhZGVzLlxuZnVuY3Rpb24gc2xpZGVPZmZzZXQoXG4gIHBvc2l0aW9uWDogRWRnZVggfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uWTogRWRnZVkgfCB1bmRlZmluZWQsXG4gIHJlc3RYOiBzdHJpbmcsXG4gIHJlc3RZOiBzdHJpbmdcbik6IHsgeDogc3RyaW5nOyB5OiBzdHJpbmcgfSB7XG4gIGlmIChwb3NpdGlvblggPT09IFwibGVmdFwiKSByZXR1cm4geyB4OiBcIi0xMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblggPT09IFwicmlnaHRcIikgcmV0dXJuIHsgeDogXCIxMDAlXCIsIHk6IHJlc3RZIH07XG4gIGlmIChwb3NpdGlvblkgPT09IFwidG9wXCIpIHJldHVybiB7IHg6IHJlc3RYLCB5OiBcIi0xMDAlXCIgfTtcbiAgaWYgKHBvc2l0aW9uWSA9PT0gXCJib3R0b21cIikgcmV0dXJuIHsgeDogcmVzdFgsIHk6IFwiMTAwJVwiIH07XG4gIHJldHVybiB7IHg6IHJlc3RYLCB5OiByZXN0WSB9O1xufVxuXG5leHBvcnQgdHlwZSBEcmF3ZXJBbmltYXRpb24gPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBub2RlIHNob3VsZCByZW5kZXIgYXQgYWxsIChlbnRlcmluZywgcHJlc2VudCwgb3IgbWlkLWV4aXQpLiAqL1xuICBpc01vdW50ZWQ6IGJvb2xlYW47XG4gIC8qKiBBdHRhY2ggdG8gdGhlIGFuaW1hdGVkIGNvbnRlbnQgbm9kZTsgdGVhcnMgaXQgZG93biBvbmNlIGl0cyBleGl0IGFuaW1hdGlvbiBlbmRzLiAqL1xuICBvbkFuaW1hdGlvbkVuZDogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgLyoqIENTUyBgYW5pbWF0aW9uYCBzaG9ydGhhbmQgZm9yIHRoZSBiYWNrZHJvcCdzIGZhZGUuICovXG4gIGJhY2tkcm9wQW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBDU1MgYGFuaW1hdGlvbmAgc2hvcnRoYW5kIGZvciB0aGUgY29udGVudCdzIHNsaWRlLiAqL1xuICBjb250ZW50QW5pbWF0aW9uOiBzdHJpbmc7XG4gIC8qKiBSZXN0aW5nIGB0cmFuc2Zvcm1gIGZvciB0aGUgY29udGVudCwgYXBwbGllZCBvdXRzaWRlIHRoZSBhbmltYXRpb24gdG9vIHNvIGl0IGhvbGRzIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcy4gKi9cbiAgY29udGVudFRyYW5zZm9ybTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBNYW5hZ2VzIGV2ZXJ5dGhpbmcgYW5pbWF0aW9uLXJlbGF0ZWQgZm9yIHRoZSBkcmF3ZXI6IHByZXNlbmNlIGFjcm9zcyB0aGVcbiAqIGVudGVyL2V4aXQgbGlmZWN5Y2xlLCBhbmQgdGhlIGtleWZyYW1lcy90aW1pbmcgZm9yIGJvdGggdGhlIGJhY2tkcm9wIGZhZGVcbiAqIGFuZCB0aGUgY29udGVudCBzbGlkZS5cbiAqXG4gKiBUaGUgZW50ZXIgYW5pbWF0aW9uIGlzIHB1cmUgQ1NTIHRoYXQgcGxheXMgb24gbW91bnQsIHNvIGl0IG5lZWRzIG5vIHN0YXRlLlxuICogVGhlIGV4aXQgZG9lczogdGhlIGNvbnN1bWVyIGRyaXZlcyBgaXNWaXNpYmxlYCwgYW5kIHdoZW4gaXQgZmxpcHMgdG8gYGZhbHNlYFxuICogdGhlIG5vZGUgc3RheXMgbW91bnRlZCAoYGlzTGVhdmluZyA9PT0gdHJ1ZWAsIHRyYWNrZWQgaW50ZXJuYWxseSkgdW50aWwgdGhlXG4gKiBleGl0IGFuaW1hdGlvbiBlbmRzLCB0aGVuIGBvblVubW91bnRgIGZpcmVzLiBBIGB1c2VMYXlvdXRFZmZlY3RgIGZsaXBzIGludG9cbiAqIHRoZSBjbG9zaW5nIHN0YXRlIGJlZm9yZSBwYWludCBzbyB0aGUgbm9kZSBpc24ndCBkcm9wcGVkIGZvciBhIGZyYW1lLlxuICogUmVkdWNlZCBtb3Rpb24gdGVhcnMgZG93biBpbW1lZGlhdGVseSwgc2luY2Ugd2l0aCBubyBhbmltYXRpb24gdGhlcmUgaXMgbm9cbiAqIGBhbmltYXRpb25lbmRgIHRvIHdhaXQgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJhd2VyQW5pbWF0aW9uKHtcbiAgaXNWaXNpYmxlLFxuICBvblVubW91bnQsXG4gIHBvc2l0aW9uWCxcbiAgcG9zaXRpb25ZLFxufToge1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIG9uVW5tb3VudD86ICgpID0+IHZvaWQ7XG4gIHBvc2l0aW9uWD86IEVkZ2VYO1xuICBwb3NpdGlvblk/OiBFZGdlWTtcbn0pOiBEcmF3ZXJBbmltYXRpb24ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBbaXNDbG9zaW5nLCBzZXRJc0Nsb3NpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB3YXNWaXNpYmxlID0gdXNlUmVmKGlzVmlzaWJsZSk7XG4gIGNvbnN0IGlzTGVhdmluZyA9IGlzQ2xvc2luZyAmJiAhaXNWaXNpYmxlO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKHdhc1Zpc2libGUuY3VycmVudCkge1xuICAgICAgaWYgKHByZWZlcnNSZWR1Y2VkTW90aW9uKHdpbmRvdykpIHtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzQ2xvc2luZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgd2FzVmlzaWJsZS5jdXJyZW50ID0gaXNWaXNpYmxlO1xuICB9LCBbaXNWaXNpYmxlLCBvblVubW91bnQsIHdpbmRvd10pO1xuXG4gIGNvbnN0IG9uQW5pbWF0aW9uRW5kID0gdXNlQ2FsbGJhY2s8QW5pbWF0aW9uRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBJZ25vcmUgYW5pbWF0aW9ucyBidWJibGluZyB1cCBmcm9tIGNoaWxkcmVuOiBvbmx5IHRoZSBub2RlJ3Mgb3duIGV4aXRcbiAgICAgIC8vIGFuaW1hdGlvbiBzaG91bGQgdHJpZ2dlciB0ZWFyZG93bi5cbiAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgIGlmIChpc0xlYXZpbmcpIHtcbiAgICAgICAgc2V0SXNDbG9zaW5nKGZhbHNlKTtcbiAgICAgICAgb25Vbm1vdW50Py4oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc0xlYXZpbmcsIG9uVW5tb3VudF1cbiAgKTtcblxuICBjb25zdCByZXN0WCA9IHJlc3RpbmdUcmFuc2xhdGUocG9zaXRpb25YKTtcbiAgY29uc3QgcmVzdFkgPSByZXN0aW5nVHJhbnNsYXRlKHBvc2l0aW9uWSk7XG4gIGNvbnN0IHsgeDogZnJvbVgsIHk6IGZyb21ZIH0gPSBzbGlkZU9mZnNldChcbiAgICBwb3NpdGlvblgsXG4gICAgcG9zaXRpb25ZLFxuICAgIHJlc3RYLFxuICAgIHJlc3RZXG4gICk7XG4gIGNvbnN0IGNvbnRlbnRUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7cmVzdFh9LCAke3Jlc3RZfSlgO1xuICBjb25zdCBvZmZzY3JlZW4gPSBgdHJhbnNsYXRlKCR7ZnJvbVh9LCAke2Zyb21ZfSlgO1xuICBjb25zdCBzbGlkZUluID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7b2Zmc2NyZWVufTsgfVxuICAgIHRvIHsgdHJhbnNmb3JtOiAke2NvbnRlbnRUcmFuc2Zvcm19OyB9XG4gIGA7XG4gIGNvbnN0IHNsaWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyB0cmFuc2Zvcm06ICR7Y29udGVudFRyYW5zZm9ybX07IH1cbiAgICB0byB7IHRyYW5zZm9ybTogJHtvZmZzY3JlZW59OyB9XG4gIGA7XG4gIGNvbnN0IHsgZHVyYXRpb246IHNsaWRlRHVyYXRpb24sIHRpbWluZ0Z1bmN0aW9uOiBzbGlkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm5hdlNsaWRlLm9wZW47XG5cbiAgY29uc3QgeyBoaWRkZW4sIHZpc2libGUgfSA9IHRoZW1lLnZhcmlhYmxlcy5vcGFjaXR5O1xuICBjb25zdCBmYWRlSW4gPSBrZXlmcmFtZXNgXG4gICAgZnJvbSB7IG9wYWNpdHk6ICR7aGlkZGVufTsgfVxuICAgIHRvIHsgb3BhY2l0eTogJHt2aXNpYmxlfTsgfVxuICBgO1xuICBjb25zdCBmYWRlT3V0ID0ga2V5ZnJhbWVzYFxuICAgIGZyb20geyBvcGFjaXR5OiAke3Zpc2libGV9OyB9XG4gICAgdG8geyBvcGFjaXR5OiAke2hpZGRlbn07IH1cbiAgYDtcbiAgY29uc3QgeyBkdXJhdGlvbjogZmFkZUR1cmF0aW9uLCB0aW1pbmdGdW5jdGlvbjogZmFkZUVhc2luZyB9ID1cbiAgICB0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm1vZGFsQmFja2Ryb3Aub3BlbjtcblxuICByZXR1cm4ge1xuICAgIGlzTW91bnRlZDogaXNWaXNpYmxlIHx8IGlzQ2xvc2luZyxcbiAgICBvbkFuaW1hdGlvbkVuZCxcbiAgICBjb250ZW50VHJhbnNmb3JtLFxuICAgIGNvbnRlbnRBbmltYXRpb246IGAke1xuICAgICAgaXNMZWF2aW5nID8gc2xpZGVPdXQgOiBzbGlkZUluXG4gICAgfSAke3NsaWRlRHVyYXRpb259ICR7c2xpZGVFYXNpbmd9IGJvdGhgLFxuICAgIGJhY2tkcm9wQW5pbWF0aW9uOiBgJHtcbiAgICAgIGlzTGVhdmluZyA/IGZhZGVPdXQgOiBmYWRlSW5cbiAgICB9ICR7ZmFkZUR1cmF0aW9ufSAke2ZhZGVFYXNpbmd9IGJvdGhgLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNJa0IifQ== */"),{duration:fadeDuration,timingFunction:fadeEasing}=theme.variables.animation.modalBackdrop.open;return{isMounted:isVisible||isClosing,onAnimationEnd,contentTransform,contentAnimation:`${isLeaving?slideOut:slideIn} ${slideDuration} ${slideEasing} both`,backdropAnimation:`${isLeaving?fadeOut:fadeIn} ${fadeDuration} ${fadeEasing} both`}}
1
+ import{useCallback,useLayoutEffect,useRef,useState}from"react";import{useWindow}from"../../../shared/useWindow";export function useDrawerAnimation({isVisible,onUnmount}){let window=useWindow(),[isClosing,setIsClosing]=useState(!1),wasVisible=useRef(isVisible),isLeaving=isClosing&&!isVisible;useLayoutEffect(()=>{if(isVisible)setIsClosing(!1);else wasVisible.current&&(window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches?onUnmount?.():setIsClosing(!0));wasVisible.current=isVisible},[isVisible,onUnmount,window]);let onAnimationEnd=useCallback(event=>{event.target===event.currentTarget&&isLeaving&&(setIsClosing(!1),onUnmount?.())},[isLeaving,onUnmount]);return{isMounted:isVisible||isClosing,isLeaving,onAnimationEnd}}
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import type { IconProps } from "../../Icon/Icon";
3
+ /**
4
+ * Title shown in the header, after `leftSlot`. Visual only — the owning
5
+ * panel's accessible name comes from its `aria-label`.
6
+ */
7
+ export type PanelHeaderTitle = {
8
+ /** Visible title label. */
9
+ label: string;
10
+ /** Optional leading icon. Decorative — the visible label names it. */
11
+ icon?: Omit<IconProps, "size" | "aria-label" | "aria-labelledby" | "role">;
12
+ /** Show the title block. Default `true`. */
13
+ isVisible?: boolean;
14
+ };
15
+ export type PanelHeaderProps = {
16
+ /** Rendered at the header start, vertically centered. */
17
+ leftSlot?: React.ReactNode;
18
+ /** Title block (icon + heading), rendered after `leftSlot`. */
19
+ title?: PanelHeaderTitle;
20
+ /** Rendered at the header end, vertically centered. */
21
+ rightSlot?: React.ReactNode;
22
+ "data-e2e-test-id"?: string;
23
+ };
24
+ /**
25
+ * Internal primitive: padded panel-header row with a left and a right slot,
26
+ * spread apart, and an optional title block. Purely presentational — no role
27
+ * or ARIA of its own; the owning panel names its region and the slot content
28
+ * carries the semantics (heading, buttons). Place it inside `Sandwich.Header`
29
+ * to get the sticky positioning and scroll separator.
30
+ */
31
+ export declare function PanelHeader({ leftSlot, title, rightSlot, "data-e2e-test-id": dataE2eTestId, }: PanelHeaderProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ import React from"react";import{Box}from"../../Box/Box";import{Inline}from"../../Inline/Inline";import{Icon}from"../../Icon/Icon";import{H5}from"../../Typography/Header/Header";export function PanelHeader({leftSlot,title,rightSlot,"data-e2e-test-id":dataE2eTestId}){let colorTitleItems="primary";return React.createElement(Box,{space:"s",vSpace:"xs","data-e2e-test-id":dataE2eTestId},React.createElement(Inline,{alignItems:"spaceBetween",vAlignItems:"center",noWrap:!0,fullWidth:!0},React.createElement(Inline,{space:"xs",vAlignItems:"center",noWrap:!0},React.createElement(React.Fragment,null,leftSlot,title&&!1!==title.isVisible&&React.createElement(Inline,{space:"xs",vAlignItems:"center",noWrap:!0},title.icon&&React.createElement(Icon,{...title.icon,color:colorTitleItems,size:"s"}),React.createElement(H5,{color:colorTitleItems},title.label)))),React.createElement(Inline,{space:"xxs",vAlignItems:"center",noWrap:!0},React.createElement(React.Fragment,null,rightSlot))))}
@@ -1,10 +1,13 @@
1
1
  import type React from "react";
2
2
  export type SandwichProps = {
3
+ /** Content in source order; `Sandwich.Header` / `Sandwich.Footer` children
4
+ * stick to the edges, everything else scrolls. */
3
5
  children: React.ReactNode;
4
- "data-e2e-test-id"?: string;
5
- /** Override the root's `data-ds-id` (e.g. when a wrapper component owns the node). */
6
- "data-ds-id"?: string;
7
- } & React.HTMLAttributes<HTMLDivElement>;
6
+ /** Forwarded scroll handler; fires after the internal edge measurement. */
7
+ onScroll?: React.UIEventHandler<HTMLDivElement>;
8
+ /** Forwarded to the scroll container element (e.g. for scroll restoration). */
9
+ scrollRef?: React.Ref<HTMLDivElement>;
10
+ };
8
11
  /**
9
12
  * Separator visibility:
10
13
  * - `auto`: show only while the content is scrolled away from the edge (default).
@@ -15,19 +18,14 @@ export type SandwichSeparator = "auto" | "always" | "never";
15
18
  export type SandwichHeaderProps = {
16
19
  children: React.ReactNode;
17
20
  showSeparator?: SandwichSeparator;
21
+ "data-e2e-test-id"?: string;
18
22
  };
19
23
  export type SandwichFooterProps = {
20
24
  children: React.ReactNode;
21
25
  showSeparator?: SandwichSeparator;
26
+ "data-e2e-test-id"?: string;
22
27
  };
23
- export type SandwichBodyProps = {
24
- children: React.ReactNode;
25
- /** Forwarded scroll handler; fires after the internal edge measurement. */
26
- onScroll?: React.UIEventHandler<HTMLDivElement>;
27
- /** Forwarded to the scroll container element (e.g. for scroll restoration). */
28
- scrollRef?: React.Ref<HTMLDivElement>;
29
- };
30
- /** Scroll-edge visibility published by `Body`, consumed by `Header` / `Footer`. */
28
+ /** Scroll-edge visibility published by the root, consumed by `Header` / `Footer`. */
31
29
  export type SandwichEdges = {
32
30
  /** Start of the scroll content is visible (not scrolled down). */
33
31
  atTop: boolean;
@@ -1,23 +1,23 @@
1
1
  import React from "react";
2
2
  import type { SandwichProps } from "./-types";
3
- import { SandwichBody } from "./SandwichBody";
4
3
  import { SandwichHeader } from "./SandwichHeader";
5
4
  import { SandwichFooter } from "./SandwichFooter";
6
5
  /**
7
- * Internal compound component: a scrollable middle region (`Sandwich.Body`)
8
- * flanked by a sticky `Sandwich.Header` / `Sandwich.Footer` that reveal a border
9
- * only while content is scrolled under them. Edge state is shared through
10
- * context (see `useSandwichContext.tsx`).
6
+ * Internal compound component: ONE scrollable region that hosts
7
+ * `Sandwich.Header` / `Sandwich.Footer` in the flow of its children —
8
+ * `position: sticky` pins them to the edges so consumers author
9
+ * `<Header />{body}<Footer />` in source order, with no slot extraction.
10
+ * Header/footer reveal a border only while content is scrolled under them;
11
+ * edge state is shared through context (see `useSandwichContext.tsx`).
11
12
  */
12
- declare function SandwichRoot({ children, ...rest }: SandwichProps): React.ReactElement;
13
+ declare function SandwichRoot({ children, scrollRef, onScroll, }: SandwichProps): React.ReactElement;
13
14
  /**
14
- * Compound export: `Sandwich` with `.Header`, `.Body`, `.Footer` attached.
15
+ * Compound export: `Sandwich` with `.Header` / `.Footer` attached.
15
16
  * Object.assign keeps the static sub-components typed on the root
16
17
  * (function-declaration statics don't type-check).
17
18
  */
18
19
  export declare const Sandwich: typeof SandwichRoot & {
19
20
  Header: typeof SandwichHeader;
20
- Body: typeof SandwichBody;
21
21
  Footer: typeof SandwichFooter;
22
22
  };
23
23
  export {};
@@ -1 +1 @@
1
- import React,{useCallback,useMemo,useState}from"react";import styled from"@emotion/styled";import{SandwichProvider}from"./useSandwichContext";import{SandwichBody}from"./SandwichBody";import{SandwichHeader}from"./SandwichHeader";import{SandwichFooter}from"./SandwichFooter";let StyledRoot=styled("div",{target:"e164s6zy0",label:"StyledRoot"})({display:"flex",flexDirection:"column",minHeight:0,height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvU2FuZHdpY2gvU2FuZHdpY2gudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9JbnRlcm5hbC9TYW5kd2ljaC9TYW5kd2ljaC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgdHlwZSB7IFNhbmR3aWNoRWRnZXMsIFNhbmR3aWNoUHJvcHMgfSBmcm9tIFwiLi8tdHlwZXNcIjtcbmltcG9ydCB7IFNhbmR3aWNoUHJvdmlkZXIgfSBmcm9tIFwiLi91c2VTYW5kd2ljaENvbnRleHRcIjtcbmltcG9ydCB7IFNhbmR3aWNoQm9keSB9IGZyb20gXCIuL1NhbmR3aWNoQm9keVwiO1xuaW1wb3J0IHsgU2FuZHdpY2hIZWFkZXIgfSBmcm9tIFwiLi9TYW5kd2ljaEhlYWRlclwiO1xuaW1wb3J0IHsgU2FuZHdpY2hGb290ZXIgfSBmcm9tIFwiLi9TYW5kd2ljaEZvb3RlclwiO1xuXG4vLyBDb2x1bW4gbGF5b3V0OiBoZWFkZXIvZm9vdGVyIHNpdCBhYm92ZS9iZWxvdyBhIHNpbmdsZSBzY3JvbGwgcmVnaW9uLiBUaGVcbi8vIHJvb3QgaXRzZWxmIGRvZXMgbm90IHNjcm9sbCDigJQgYEJvZHlgIG93bnMgdGhlIG92ZXJmbG93LlxuY29uc3QgU3R5bGVkUm9vdCA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgbWluSGVpZ2h0OiAwLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuLyoqXG4gKiBJbnRlcm5hbCBjb21wb3VuZCBjb21wb25lbnQ6IGEgc2Nyb2xsYWJsZSBtaWRkbGUgcmVnaW9uIChgU2FuZHdpY2guQm9keWApXG4gKiBmbGFua2VkIGJ5IGEgc3RpY2t5IGBTYW5kd2ljaC5IZWFkZXJgIC8gYFNhbmR3aWNoLkZvb3RlcmAgdGhhdCByZXZlYWwgYSBib3JkZXJcbiAqIG9ubHkgd2hpbGUgY29udGVudCBpcyBzY3JvbGxlZCB1bmRlciB0aGVtLiBFZGdlIHN0YXRlIGlzIHNoYXJlZCB0aHJvdWdoXG4gKiBjb250ZXh0IChzZWUgYHVzZVNhbmR3aWNoQ29udGV4dC50c3hgKS5cbiAqL1xuZnVuY3Rpb24gU2FuZHdpY2hSb290KHtcbiAgY2hpbGRyZW4sXG4gIC4uLnJlc3Rcbn06IFNhbmR3aWNoUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICAvLyBEZWZhdWx0OiBldmVyeXRoaW5nIHZpc2libGUgKG5vIHNjcm9sbGluZyBuZWVkZWQpIOKGkiBubyBib3JkZXJzLlxuICBjb25zdCBbZWRnZXMsIHNldEVkZ2VzU3RhdGVdID0gdXNlU3RhdGU8U2FuZHdpY2hFZGdlcz4oe1xuICAgIGF0VG9wOiB0cnVlLFxuICAgIGF0Qm90dG9tOiB0cnVlLFxuICB9KTtcblxuICBjb25zdCBzZXRFZGdlcyA9IHVzZUNhbGxiYWNrKChuZXh0OiBQYXJ0aWFsPFNhbmR3aWNoRWRnZXM+KSA9PiB7XG4gICAgc2V0RWRnZXNTdGF0ZSgocHJldikgPT4ge1xuICAgICAgY29uc3QgbWVyZ2VkID0geyAuLi5wcmV2LCAuLi5uZXh0IH07XG4gICAgICBpZiAobWVyZ2VkLmF0VG9wID09PSBwcmV2LmF0VG9wICYmIG1lcmdlZC5hdEJvdHRvbSA9PT0gcHJldi5hdEJvdHRvbSkge1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHsgLi4uZWRnZXMsIHNldEVkZ2VzIH0pLCBbZWRnZXMsIHNldEVkZ2VzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U2FuZHdpY2hQcm92aWRlciB2YWx1ZT17dmFsdWV9PlxuICAgICAgPFN0eWxlZFJvb3QgZGF0YS1kcy1pZD1cIlNhbmR3aWNoXCIgey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1N0eWxlZFJvb3Q+XG4gICAgPC9TYW5kd2ljaFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIENvbXBvdW5kIGV4cG9ydDogYFNhbmR3aWNoYCB3aXRoIGAuSGVhZGVyYCwgYC5Cb2R5YCwgYC5Gb290ZXJgIGF0dGFjaGVkLlxuICogT2JqZWN0LmFzc2lnbiBrZWVwcyB0aGUgc3RhdGljIHN1Yi1jb21wb25lbnRzIHR5cGVkIG9uIHRoZSByb290XG4gKiAoZnVuY3Rpb24tZGVjbGFyYXRpb24gc3RhdGljcyBkb24ndCB0eXBlLWNoZWNrKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNhbmR3aWNoID0gT2JqZWN0LmFzc2lnbihTYW5kd2ljaFJvb3QsIHtcbiAgSGVhZGVyOiBTYW5kd2ljaEhlYWRlcixcbiAgQm9keTogU2FuZHdpY2hCb2R5LFxuICBGb290ZXI6IFNhbmR3aWNoRm9vdGVyLFxufSk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVW1CIn0= */");export const Sandwich=Object.assign(function({children,...rest}){let[edges,setEdgesState]=useState({atTop:!0,atBottom:!0}),setEdges=useCallback(next=>{setEdgesState(prev=>{let merged={...prev,...next};return merged.atTop===prev.atTop&&merged.atBottom===prev.atBottom?prev:merged})},[]),value=useMemo(()=>({...edges,setEdges}),[edges,setEdges]);return React.createElement(SandwichProvider,{value:value},React.createElement(StyledRoot,{"data-ds-id":"Sandwich",...rest},children))},{Header:SandwichHeader,Body:SandwichBody,Footer:SandwichFooter});
1
+ import React,{useCallback,useEffect,useLayoutEffect,useMemo,useRef,useState}from"react";import styled from"@emotion/styled";import{SandwichProvider}from"./useSandwichContext";import{SandwichHeader}from"./SandwichHeader";import{SandwichFooter}from"./SandwichFooter";let useScrollEdgeTracking=({scrollRef,onScroll,setEdges})=>{let containerRef=useRef(null),contentRef=useRef(null),setContainerRef=useCallback(node=>{containerRef.current=node,"function"==typeof scrollRef?scrollRef(node):scrollRef&&(scrollRef.current=node)},[scrollRef]),recalculateEdges=useCallback(()=>{let el=containerRef.current;if(!el)return;let{scrollTop,scrollHeight,clientHeight}=el;setEdges({atTop:scrollTop<=1,atBottom:scrollTop+clientHeight>=scrollHeight-1})},[setEdges]),onContainerScroll=useCallback(event=>{recalculateEdges(),onScroll?.(event)},[recalculateEdges,onScroll]);return useLayoutEffect(recalculateEdges,[recalculateEdges]),useEffect(()=>{if("undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(()=>recalculateEdges());return containerRef.current&&observer.observe(containerRef.current),contentRef.current&&observer.observe(contentRef.current),()=>observer.disconnect()},[recalculateEdges]),{setContainerRef,contentRef,onContainerScroll}},useSandwichEdgesState=()=>{let[edges,setEdgesState]=useState({atTop:!0,atBottom:!0}),setEdges=useCallback(next=>{setEdgesState(prev=>{let merged={...prev,...next};return merged.atTop===prev.atTop&&merged.atBottom===prev.atBottom?prev:merged})},[]);return useMemo(()=>({...edges,setEdges}),[edges,setEdges])},StyledScrollRoot=styled("div",{target:"e1milkm30",label:"StyledScrollRoot"})({height:"100%",overflowY:"auto",position:"relative"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvU2FuZHdpY2gvU2FuZHdpY2gudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9JbnRlcm5hbC9TYW5kd2ljaC9TYW5kd2ljaC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgU2FuZHdpY2hFZGdlcywgU2FuZHdpY2hQcm9wcyB9IGZyb20gXCIuLy10eXBlc1wiO1xuaW1wb3J0IHsgU2FuZHdpY2hQcm92aWRlciB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBTYW5kd2ljaENvbnRleHRWYWx1ZSB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuaW1wb3J0IHsgU2FuZHdpY2hIZWFkZXIgfSBmcm9tIFwiLi9TYW5kd2ljaEhlYWRlclwiO1xuaW1wb3J0IHsgU2FuZHdpY2hGb290ZXIgfSBmcm9tIFwiLi9TYW5kd2ljaEZvb3RlclwiO1xuXG4vLyBweCB0b2xlcmFuY2Ug4oCUIHN1Yi1waXhlbCByb3VuZGluZyBzaG91bGRuJ3QgbGVhdmUgYSBkaXZpZGVyIHN0dWNrIG9uLlxuY29uc3QgRURHRV9USFJFU0hPTEQgPSAxO1xuXG50eXBlIFNjcm9sbEVkZ2VUcmFja2luZ1BhcmFtcyA9IHtcbiAgLyoqIENvbnN1bWVyIHJlZiBmb3J3YXJkZWQgdG8gdGhlIHNjcm9sbCBjb250YWluZXIgKHNjcm9sbCByZXN0b3JhdGlvbiBldGMuKS4gKi9cbiAgc2Nyb2xsUmVmPzogUmVhY3QuUmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgLyoqIENvbnN1bWVyIHNjcm9sbCBoYW5kbGVyOyBmaXJlcyBhZnRlciB0aGUgaW50ZXJuYWwgZWRnZSBtZWFzdXJlbWVudC4gKi9cbiAgb25TY3JvbGw/OiBSZWFjdC5VSUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIC8qKiBFZGdlIHNpbmsg4oCUIHRoZSByb290J3MgYHNldEVkZ2VzYC4gKi9cbiAgc2V0RWRnZXM6IChlZGdlczogUGFydGlhbDxTYW5kd2ljaEVkZ2VzPikgPT4gdm9pZDtcbn07XG5cbnR5cGUgU2Nyb2xsRWRnZVRyYWNraW5nID0ge1xuICAvKiogQ2FsbGJhY2sgcmVmIGZvciB0aGUgc2Nyb2xsIGNvbnRhaW5lciBlbGVtZW50LiAqL1xuICBzZXRDb250YWluZXJSZWY6IChub2RlOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBSZWYgZm9yIHRoZSBjb250ZW50IGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXIgKGdyb3d0aCB0cmFja2luZykuICovXG4gIGNvbnRlbnRSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgLyoqIFNjcm9sbCBoYW5kbGVyIGZvciB0aGUgY29udGFpbmVyOyBtZWFzdXJlcywgdGhlbiBjYWxscyBgb25TY3JvbGxgLiAqL1xuICBvbkNvbnRhaW5lclNjcm9sbDogUmVhY3QuVUlFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuLyoqXG4gKiBQdWJsaXNoZXMgdGhlIHNjcm9sbCBjb250YWluZXIncyBlZGdlIHZpc2liaWxpdHkgKGBhdFRvcGAgLyBgYXRCb3R0b21gKSB0b1xuICogYHNldEVkZ2VzYCDigJQgb24gbW91bnQsIG9uIHNjcm9sbCwgYW5kIG9uIHNpemUgY2hhbmdlcyBvZiB0aGUgY29udGFpbmVyIG9yXG4gKiBpdHMgY29udGVudCAodmlhIFJlc2l6ZU9ic2VydmVyKS5cbiAqL1xuY29uc3QgdXNlU2Nyb2xsRWRnZVRyYWNraW5nID0gKHtcbiAgc2Nyb2xsUmVmLFxuICBvblNjcm9sbCxcbiAgc2V0RWRnZXMsXG59OiBTY3JvbGxFZGdlVHJhY2tpbmdQYXJhbXMpOiBTY3JvbGxFZGdlVHJhY2tpbmcgPT4ge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIC8vIEtlZXAgdGhlIGludGVybmFsIHJlZiAodXNlZCBmb3IgbWVhc3VyaW5nKSB3aGlsZSBhbHNvIGZvcndhcmRpbmcgdGhlIG5vZGUgdG9cbiAgLy8gdGhlIGNvbnN1bWVyJ3MgYHNjcm9sbFJlZmAg4oCUIGEgY2FsbGJhY2sgcmVmIGhhbmRsZXMgYm90aCBmb3Jtcy5cbiAgY29uc3Qgc2V0Q29udGFpbmVyUmVmID0gdXNlQ2FsbGJhY2soXG4gICAgKG5vZGU6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgaWYgKHR5cGVvZiBzY3JvbGxSZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBzY3JvbGxSZWYobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKHNjcm9sbFJlZikge1xuICAgICAgICBjb25zdCBtdXRhYmxlUmVmID1cbiAgICAgICAgICBzY3JvbGxSZWYgYXMgUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgICAgICBtdXRhYmxlUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3Njcm9sbFJlZl1cbiAgKTtcblxuICBjb25zdCByZWNhbGN1bGF0ZUVkZ2VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWw7XG4gICAgc2V0RWRnZXMoe1xuICAgICAgYXRUb3A6IHNjcm9sbFRvcCA8PSBFREdFX1RIUkVTSE9MRCxcbiAgICAgIGF0Qm90dG9tOiBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gRURHRV9USFJFU0hPTEQsXG4gICAgfSk7XG4gIH0sIFtzZXRFZGdlc10pO1xuXG4gIGNvbnN0IG9uQ29udGFpbmVyU2Nyb2xsID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgcmVjYWxjdWxhdGVFZGdlcygpO1xuICAgICAgb25TY3JvbGw/LihldmVudCk7XG4gICAgfSxcbiAgICBbcmVjYWxjdWxhdGVFZGdlcywgb25TY3JvbGxdXG4gICk7XG5cbiAgLy8gTWVhc3VyZSBvbiBtb3VudCBvbmx5IOKAlCB0aGUgUmVzaXplT2JzZXJ2ZXIgKyBzY3JvbGwgaGFuZGxlciBiZWxvdyBjb3ZlciB0aGVcbiAgLy8gcmVzdC4gRG8gTk9UIGRyb3AgdGhlIGRlcHM6IGEgZGVwLWxlc3MgZWZmZWN0IHJlLW1lYXN1cmVzIGV2ZXJ5IHJlbmRlciBhbmQgY2FuXG4gIC8vIGluZmluaXRlLWxvb3Agd2hlbiB0aGUgaGVpZ2h0IGlzIGJyaWVmbHkgdW5zdGFibGUgKHNldEVkZ2VzIOKGkiByZWZsb3cg4oaSIHJlcGVhdCkuXG4gIHVzZUxheW91dEVmZmVjdChyZWNhbGN1bGF0ZUVkZ2VzLCBbcmVjYWxjdWxhdGVFZGdlc10pO1xuXG4gIC8vIFJlLW1lYXN1cmUgb24gc2l6ZSBjaGFuZ2VzIHRoYXQgRE9OJ1QgdHJpZ2dlciBhIFJlYWN0IHJlbmRlcjogdGhlIGNvbnRlbnRcbiAgLy8gZ3Jvd2luZy9zaHJpbmtpbmcgKGltYWdlIGxvYWQsIGFjY29yZGlvbiBleHBhbmQsIHRleHQgcmVmbG93KSBhbmQgdGhlXG4gIC8vIHZpZXdwb3J0IGl0c2VsZiByZXNpemluZy4gT2JzZXJ2ZSBib3RoIG5vZGVzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gcmVjYWxjdWxhdGVFZGdlcygpKTtcbiAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQpIG9ic2VydmVyLm9ic2VydmUoY29udGFpbmVyUmVmLmN1cnJlbnQpO1xuICAgIGlmIChjb250ZW50UmVmLmN1cnJlbnQpIG9ic2VydmVyLm9ic2VydmUoY29udGVudFJlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9LCBbcmVjYWxjdWxhdGVFZGdlc10pO1xuXG4gIHJldHVybiB7IHNldENvbnRhaW5lclJlZiwgY29udGVudFJlZiwgb25Db250YWluZXJTY3JvbGwgfTtcbn07XG5cbi8qKlxuICogT3ducyB0aGUgc2Nyb2xsLWVkZ2Ugc3RhdGUgdGhlIHJvb3QgcHJvdmlkZXMgdGhyb3VnaCBjb250ZXh0OiBldmVyeXRoaW5nXG4gKiB2aXNpYmxlIGJ5IGRlZmF1bHQgKG5vIHNjcm9sbGluZyBuZWVkZWQg4oaSIG5vIGJvcmRlcnMpLCBgc2V0RWRnZXNgIG1lcmdlc1xuICogcGFydGlhbCB1cGRhdGVzIGFuZCBiYWlscyBvdXQgd2hlbiBub3RoaW5nIGNoYW5nZWQgc28gc2Nyb2xsIGhhbmRsZXJzIGNhbid0XG4gKiByZS1yZW5kZXItbG9vcC5cbiAqL1xuY29uc3QgdXNlU2FuZHdpY2hFZGdlc1N0YXRlID0gKCk6IFNhbmR3aWNoQ29udGV4dFZhbHVlID0+IHtcbiAgY29uc3QgW2VkZ2VzLCBzZXRFZGdlc1N0YXRlXSA9IHVzZVN0YXRlPFNhbmR3aWNoRWRnZXM+KHtcbiAgICBhdFRvcDogdHJ1ZSxcbiAgICBhdEJvdHRvbTogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3Qgc2V0RWRnZXMgPSB1c2VDYWxsYmFjaygobmV4dDogUGFydGlhbDxTYW5kd2ljaEVkZ2VzPikgPT4ge1xuICAgIHNldEVkZ2VzU3RhdGUoKHByZXYpID0+IHtcbiAgICAgIGNvbnN0IG1lcmdlZCA9IHsgLi4ucHJldiwgLi4ubmV4dCB9O1xuICAgICAgaWYgKG1lcmdlZC5hdFRvcCA9PT0gcHJldi5hdFRvcCAmJiBtZXJnZWQuYXRCb3R0b20gPT09IHByZXYuYXRCb3R0b20pIHtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKHsgLi4uZWRnZXMsIHNldEVkZ2VzIH0pLCBbZWRnZXMsIHNldEVkZ2VzXSk7XG59O1xuXG5jb25zdCBTdHlsZWRTY3JvbGxSb290ID0gc3R5bGVkLmRpdih7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIG92ZXJmbG93WTogXCJhdXRvXCIsXG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG59KTtcblxuLy8gYG1pbi1oZWlnaHRgIGxldHMgc2hvcnQgY29udGVudCBmaWxsIHRoZSBhcmVhIHdpdGhvdXQgY2xpcHBpbmcgdGFsbGVyXG4vLyBjb250ZW50LiBGbGV4IGNvbHVtbiBzbyBhIGBTYW5kd2ljaC5Gb290ZXJgIGNoaWxkIGNhbiBwaW4gaXRzZWxmIHRvIHRoZVxuLy8gYm90dG9tIHZpYSBgbWFyZ2luLXRvcDogYXV0b2AuXG5jb25zdCBTdHlsZWRTY3JvbGxDb250ZW50ID0gc3R5bGVkLmRpdih7XG4gIG1pbkhlaWdodDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxufSk7XG5cbi8qKlxuICogSW50ZXJuYWwgY29tcG91bmQgY29tcG9uZW50OiBPTkUgc2Nyb2xsYWJsZSByZWdpb24gdGhhdCBob3N0c1xuICogYFNhbmR3aWNoLkhlYWRlcmAgLyBgU2FuZHdpY2guRm9vdGVyYCBpbiB0aGUgZmxvdyBvZiBpdHMgY2hpbGRyZW4g4oCUXG4gKiBgcG9zaXRpb246IHN0aWNreWAgcGlucyB0aGVtIHRvIHRoZSBlZGdlcyDigJQgc28gY29uc3VtZXJzIGF1dGhvclxuICogYDxIZWFkZXIgLz57Ym9keX08Rm9vdGVyIC8+YCBpbiBzb3VyY2Ugb3JkZXIsIHdpdGggbm8gc2xvdCBleHRyYWN0aW9uLlxuICogSGVhZGVyL2Zvb3RlciByZXZlYWwgYSBib3JkZXIgb25seSB3aGlsZSBjb250ZW50IGlzIHNjcm9sbGVkIHVuZGVyIHRoZW07XG4gKiBlZGdlIHN0YXRlIGlzIHNoYXJlZCB0aHJvdWdoIGNvbnRleHQgKHNlZSBgdXNlU2FuZHdpY2hDb250ZXh0LnRzeGApLlxuICovXG5mdW5jdGlvbiBTYW5kd2ljaFJvb3Qoe1xuICBjaGlsZHJlbixcbiAgc2Nyb2xsUmVmLFxuICBvblNjcm9sbCxcbn06IFNhbmR3aWNoUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBlZGdlc1ZhbHVlID0gdXNlU2FuZHdpY2hFZGdlc1N0YXRlKCk7XG4gIGNvbnN0IHsgc2V0Q29udGFpbmVyUmVmLCBjb250ZW50UmVmLCBvbkNvbnRhaW5lclNjcm9sbCB9ID1cbiAgICB1c2VTY3JvbGxFZGdlVHJhY2tpbmcoe1xuICAgICAgc2Nyb2xsUmVmLFxuICAgICAgb25TY3JvbGwsXG4gICAgICBzZXRFZGdlczogZWRnZXNWYWx1ZS5zZXRFZGdlcyxcbiAgICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxTYW5kd2ljaFByb3ZpZGVyIHZhbHVlPXtlZGdlc1ZhbHVlfT5cbiAgICAgIHsvKiB0YWJJbmRleCBtYWtlcyB0aGUgc2Nyb2xsIHJlZ2lvbiBrZXlib2FyZC1hY2Nlc3NpYmxlIChhMTF5OiBzY3JvbGxhYmxlXG4gICAgICAgICAgcmVnaW9ucyBtdXN0IGJlIGZvY3VzYWJsZSBzbyBrZXlib2FyZCB1c2VycyBjYW4gc2Nyb2xsIHRoZW0pLiAqL31cbiAgICAgIDxTdHlsZWRTY3JvbGxSb290XG4gICAgICAgIHJlZj17c2V0Q29udGFpbmVyUmVmfVxuICAgICAgICBvblNjcm9sbD17b25Db250YWluZXJTY3JvbGx9XG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICBkYXRhLWRzLWlkPVwiU2FuZHdpY2hcIlxuICAgICAgPlxuICAgICAgICA8U3R5bGVkU2Nyb2xsQ29udGVudCByZWY9e2NvbnRlbnRSZWZ9PntjaGlsZHJlbn08L1N0eWxlZFNjcm9sbENvbnRlbnQ+XG4gICAgICA8L1N0eWxlZFNjcm9sbFJvb3Q+XG4gICAgPC9TYW5kd2ljaFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIENvbXBvdW5kIGV4cG9ydDogYFNhbmR3aWNoYCB3aXRoIGAuSGVhZGVyYCAvIGAuRm9vdGVyYCBhdHRhY2hlZC5cbiAqIE9iamVjdC5hc3NpZ24ga2VlcHMgdGhlIHN0YXRpYyBzdWItY29tcG9uZW50cyB0eXBlZCBvbiB0aGUgcm9vdFxuICogKGZ1bmN0aW9uLWRlY2xhcmF0aW9uIHN0YXRpY3MgZG9uJ3QgdHlwZS1jaGVjaykuXG4gKi9cbmV4cG9ydCBjb25zdCBTYW5kd2ljaCA9IE9iamVjdC5hc3NpZ24oU2FuZHdpY2hSb290LCB7XG4gIEhlYWRlcjogU2FuZHdpY2hIZWFkZXIsXG4gIEZvb3RlcjogU2FuZHdpY2hGb290ZXIsXG59KTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErSHlCIn0= */"),StyledScrollContent=styled("div",{target:"e1milkm31",label:"StyledScrollContent"})({minHeight:"100%",display:"flex",flexDirection:"column"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvU2FuZHdpY2gvU2FuZHdpY2gudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9JbnRlcm5hbC9TYW5kd2ljaC9TYW5kd2ljaC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB0eXBlIHsgU2FuZHdpY2hFZGdlcywgU2FuZHdpY2hQcm9wcyB9IGZyb20gXCIuLy10eXBlc1wiO1xuaW1wb3J0IHsgU2FuZHdpY2hQcm92aWRlciB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBTYW5kd2ljaENvbnRleHRWYWx1ZSB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuaW1wb3J0IHsgU2FuZHdpY2hIZWFkZXIgfSBmcm9tIFwiLi9TYW5kd2ljaEhlYWRlclwiO1xuaW1wb3J0IHsgU2FuZHdpY2hGb290ZXIgfSBmcm9tIFwiLi9TYW5kd2ljaEZvb3RlclwiO1xuXG4vLyBweCB0b2xlcmFuY2Ug4oCUIHN1Yi1waXhlbCByb3VuZGluZyBzaG91bGRuJ3QgbGVhdmUgYSBkaXZpZGVyIHN0dWNrIG9uLlxuY29uc3QgRURHRV9USFJFU0hPTEQgPSAxO1xuXG50eXBlIFNjcm9sbEVkZ2VUcmFja2luZ1BhcmFtcyA9IHtcbiAgLyoqIENvbnN1bWVyIHJlZiBmb3J3YXJkZWQgdG8gdGhlIHNjcm9sbCBjb250YWluZXIgKHNjcm9sbCByZXN0b3JhdGlvbiBldGMuKS4gKi9cbiAgc2Nyb2xsUmVmPzogUmVhY3QuUmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgLyoqIENvbnN1bWVyIHNjcm9sbCBoYW5kbGVyOyBmaXJlcyBhZnRlciB0aGUgaW50ZXJuYWwgZWRnZSBtZWFzdXJlbWVudC4gKi9cbiAgb25TY3JvbGw/OiBSZWFjdC5VSUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIC8qKiBFZGdlIHNpbmsg4oCUIHRoZSByb290J3MgYHNldEVkZ2VzYC4gKi9cbiAgc2V0RWRnZXM6IChlZGdlczogUGFydGlhbDxTYW5kd2ljaEVkZ2VzPikgPT4gdm9pZDtcbn07XG5cbnR5cGUgU2Nyb2xsRWRnZVRyYWNraW5nID0ge1xuICAvKiogQ2FsbGJhY2sgcmVmIGZvciB0aGUgc2Nyb2xsIGNvbnRhaW5lciBlbGVtZW50LiAqL1xuICBzZXRDb250YWluZXJSZWY6IChub2RlOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBSZWYgZm9yIHRoZSBjb250ZW50IGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXIgKGdyb3d0aCB0cmFja2luZykuICovXG4gIGNvbnRlbnRSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgLyoqIFNjcm9sbCBoYW5kbGVyIGZvciB0aGUgY29udGFpbmVyOyBtZWFzdXJlcywgdGhlbiBjYWxscyBgb25TY3JvbGxgLiAqL1xuICBvbkNvbnRhaW5lclNjcm9sbDogUmVhY3QuVUlFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuLyoqXG4gKiBQdWJsaXNoZXMgdGhlIHNjcm9sbCBjb250YWluZXIncyBlZGdlIHZpc2liaWxpdHkgKGBhdFRvcGAgLyBgYXRCb3R0b21gKSB0b1xuICogYHNldEVkZ2VzYCDigJQgb24gbW91bnQsIG9uIHNjcm9sbCwgYW5kIG9uIHNpemUgY2hhbmdlcyBvZiB0aGUgY29udGFpbmVyIG9yXG4gKiBpdHMgY29udGVudCAodmlhIFJlc2l6ZU9ic2VydmVyKS5cbiAqL1xuY29uc3QgdXNlU2Nyb2xsRWRnZVRyYWNraW5nID0gKHtcbiAgc2Nyb2xsUmVmLFxuICBvblNjcm9sbCxcbiAgc2V0RWRnZXMsXG59OiBTY3JvbGxFZGdlVHJhY2tpbmdQYXJhbXMpOiBTY3JvbGxFZGdlVHJhY2tpbmcgPT4ge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIC8vIEtlZXAgdGhlIGludGVybmFsIHJlZiAodXNlZCBmb3IgbWVhc3VyaW5nKSB3aGlsZSBhbHNvIGZvcndhcmRpbmcgdGhlIG5vZGUgdG9cbiAgLy8gdGhlIGNvbnN1bWVyJ3MgYHNjcm9sbFJlZmAg4oCUIGEgY2FsbGJhY2sgcmVmIGhhbmRsZXMgYm90aCBmb3Jtcy5cbiAgY29uc3Qgc2V0Q29udGFpbmVyUmVmID0gdXNlQ2FsbGJhY2soXG4gICAgKG5vZGU6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgaWYgKHR5cGVvZiBzY3JvbGxSZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBzY3JvbGxSZWYobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKHNjcm9sbFJlZikge1xuICAgICAgICBjb25zdCBtdXRhYmxlUmVmID1cbiAgICAgICAgICBzY3JvbGxSZWYgYXMgUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgICAgICBtdXRhYmxlUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3Njcm9sbFJlZl1cbiAgKTtcblxuICBjb25zdCByZWNhbGN1bGF0ZUVkZ2VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWw7XG4gICAgc2V0RWRnZXMoe1xuICAgICAgYXRUb3A6IHNjcm9sbFRvcCA8PSBFREdFX1RIUkVTSE9MRCxcbiAgICAgIGF0Qm90dG9tOiBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gRURHRV9USFJFU0hPTEQsXG4gICAgfSk7XG4gIH0sIFtzZXRFZGdlc10pO1xuXG4gIGNvbnN0IG9uQ29udGFpbmVyU2Nyb2xsID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgcmVjYWxjdWxhdGVFZGdlcygpO1xuICAgICAgb25TY3JvbGw/LihldmVudCk7XG4gICAgfSxcbiAgICBbcmVjYWxjdWxhdGVFZGdlcywgb25TY3JvbGxdXG4gICk7XG5cbiAgLy8gTWVhc3VyZSBvbiBtb3VudCBvbmx5IOKAlCB0aGUgUmVzaXplT2JzZXJ2ZXIgKyBzY3JvbGwgaGFuZGxlciBiZWxvdyBjb3ZlciB0aGVcbiAgLy8gcmVzdC4gRG8gTk9UIGRyb3AgdGhlIGRlcHM6IGEgZGVwLWxlc3MgZWZmZWN0IHJlLW1lYXN1cmVzIGV2ZXJ5IHJlbmRlciBhbmQgY2FuXG4gIC8vIGluZmluaXRlLWxvb3Agd2hlbiB0aGUgaGVpZ2h0IGlzIGJyaWVmbHkgdW5zdGFibGUgKHNldEVkZ2VzIOKGkiByZWZsb3cg4oaSIHJlcGVhdCkuXG4gIHVzZUxheW91dEVmZmVjdChyZWNhbGN1bGF0ZUVkZ2VzLCBbcmVjYWxjdWxhdGVFZGdlc10pO1xuXG4gIC8vIFJlLW1lYXN1cmUgb24gc2l6ZSBjaGFuZ2VzIHRoYXQgRE9OJ1QgdHJpZ2dlciBhIFJlYWN0IHJlbmRlcjogdGhlIGNvbnRlbnRcbiAgLy8gZ3Jvd2luZy9zaHJpbmtpbmcgKGltYWdlIGxvYWQsIGFjY29yZGlvbiBleHBhbmQsIHRleHQgcmVmbG93KSBhbmQgdGhlXG4gIC8vIHZpZXdwb3J0IGl0c2VsZiByZXNpemluZy4gT2JzZXJ2ZSBib3RoIG5vZGVzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gcmVjYWxjdWxhdGVFZGdlcygpKTtcbiAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQpIG9ic2VydmVyLm9ic2VydmUoY29udGFpbmVyUmVmLmN1cnJlbnQpO1xuICAgIGlmIChjb250ZW50UmVmLmN1cnJlbnQpIG9ic2VydmVyLm9ic2VydmUoY29udGVudFJlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9LCBbcmVjYWxjdWxhdGVFZGdlc10pO1xuXG4gIHJldHVybiB7IHNldENvbnRhaW5lclJlZiwgY29udGVudFJlZiwgb25Db250YWluZXJTY3JvbGwgfTtcbn07XG5cbi8qKlxuICogT3ducyB0aGUgc2Nyb2xsLWVkZ2Ugc3RhdGUgdGhlIHJvb3QgcHJvdmlkZXMgdGhyb3VnaCBjb250ZXh0OiBldmVyeXRoaW5nXG4gKiB2aXNpYmxlIGJ5IGRlZmF1bHQgKG5vIHNjcm9sbGluZyBuZWVkZWQg4oaSIG5vIGJvcmRlcnMpLCBgc2V0RWRnZXNgIG1lcmdlc1xuICogcGFydGlhbCB1cGRhdGVzIGFuZCBiYWlscyBvdXQgd2hlbiBub3RoaW5nIGNoYW5nZWQgc28gc2Nyb2xsIGhhbmRsZXJzIGNhbid0XG4gKiByZS1yZW5kZXItbG9vcC5cbiAqL1xuY29uc3QgdXNlU2FuZHdpY2hFZGdlc1N0YXRlID0gKCk6IFNhbmR3aWNoQ29udGV4dFZhbHVlID0+IHtcbiAgY29uc3QgW2VkZ2VzLCBzZXRFZGdlc1N0YXRlXSA9IHVzZVN0YXRlPFNhbmR3aWNoRWRnZXM+KHtcbiAgICBhdFRvcDogdHJ1ZSxcbiAgICBhdEJvdHRvbTogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3Qgc2V0RWRnZXMgPSB1c2VDYWxsYmFjaygobmV4dDogUGFydGlhbDxTYW5kd2ljaEVkZ2VzPikgPT4ge1xuICAgIHNldEVkZ2VzU3RhdGUoKHByZXYpID0+IHtcbiAgICAgIGNvbnN0IG1lcmdlZCA9IHsgLi4ucHJldiwgLi4ubmV4dCB9O1xuICAgICAgaWYgKG1lcmdlZC5hdFRvcCA9PT0gcHJldi5hdFRvcCAmJiBtZXJnZWQuYXRCb3R0b20gPT09IHByZXYuYXRCb3R0b20pIHtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKHsgLi4uZWRnZXMsIHNldEVkZ2VzIH0pLCBbZWRnZXMsIHNldEVkZ2VzXSk7XG59O1xuXG5jb25zdCBTdHlsZWRTY3JvbGxSb290ID0gc3R5bGVkLmRpdih7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIG92ZXJmbG93WTogXCJhdXRvXCIsXG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG59KTtcblxuLy8gYG1pbi1oZWlnaHRgIGxldHMgc2hvcnQgY29udGVudCBmaWxsIHRoZSBhcmVhIHdpdGhvdXQgY2xpcHBpbmcgdGFsbGVyXG4vLyBjb250ZW50LiBGbGV4IGNvbHVtbiBzbyBhIGBTYW5kd2ljaC5Gb290ZXJgIGNoaWxkIGNhbiBwaW4gaXRzZWxmIHRvIHRoZVxuLy8gYm90dG9tIHZpYSBgbWFyZ2luLXRvcDogYXV0b2AuXG5jb25zdCBTdHlsZWRTY3JvbGxDb250ZW50ID0gc3R5bGVkLmRpdih7XG4gIG1pbkhlaWdodDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxufSk7XG5cbi8qKlxuICogSW50ZXJuYWwgY29tcG91bmQgY29tcG9uZW50OiBPTkUgc2Nyb2xsYWJsZSByZWdpb24gdGhhdCBob3N0c1xuICogYFNhbmR3aWNoLkhlYWRlcmAgLyBgU2FuZHdpY2guRm9vdGVyYCBpbiB0aGUgZmxvdyBvZiBpdHMgY2hpbGRyZW4g4oCUXG4gKiBgcG9zaXRpb246IHN0aWNreWAgcGlucyB0aGVtIHRvIHRoZSBlZGdlcyDigJQgc28gY29uc3VtZXJzIGF1dGhvclxuICogYDxIZWFkZXIgLz57Ym9keX08Rm9vdGVyIC8+YCBpbiBzb3VyY2Ugb3JkZXIsIHdpdGggbm8gc2xvdCBleHRyYWN0aW9uLlxuICogSGVhZGVyL2Zvb3RlciByZXZlYWwgYSBib3JkZXIgb25seSB3aGlsZSBjb250ZW50IGlzIHNjcm9sbGVkIHVuZGVyIHRoZW07XG4gKiBlZGdlIHN0YXRlIGlzIHNoYXJlZCB0aHJvdWdoIGNvbnRleHQgKHNlZSBgdXNlU2FuZHdpY2hDb250ZXh0LnRzeGApLlxuICovXG5mdW5jdGlvbiBTYW5kd2ljaFJvb3Qoe1xuICBjaGlsZHJlbixcbiAgc2Nyb2xsUmVmLFxuICBvblNjcm9sbCxcbn06IFNhbmR3aWNoUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBlZGdlc1ZhbHVlID0gdXNlU2FuZHdpY2hFZGdlc1N0YXRlKCk7XG4gIGNvbnN0IHsgc2V0Q29udGFpbmVyUmVmLCBjb250ZW50UmVmLCBvbkNvbnRhaW5lclNjcm9sbCB9ID1cbiAgICB1c2VTY3JvbGxFZGdlVHJhY2tpbmcoe1xuICAgICAgc2Nyb2xsUmVmLFxuICAgICAgb25TY3JvbGwsXG4gICAgICBzZXRFZGdlczogZWRnZXNWYWx1ZS5zZXRFZGdlcyxcbiAgICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxTYW5kd2ljaFByb3ZpZGVyIHZhbHVlPXtlZGdlc1ZhbHVlfT5cbiAgICAgIHsvKiB0YWJJbmRleCBtYWtlcyB0aGUgc2Nyb2xsIHJlZ2lvbiBrZXlib2FyZC1hY2Nlc3NpYmxlIChhMTF5OiBzY3JvbGxhYmxlXG4gICAgICAgICAgcmVnaW9ucyBtdXN0IGJlIGZvY3VzYWJsZSBzbyBrZXlib2FyZCB1c2VycyBjYW4gc2Nyb2xsIHRoZW0pLiAqL31cbiAgICAgIDxTdHlsZWRTY3JvbGxSb290XG4gICAgICAgIHJlZj17c2V0Q29udGFpbmVyUmVmfVxuICAgICAgICBvblNjcm9sbD17b25Db250YWluZXJTY3JvbGx9XG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICBkYXRhLWRzLWlkPVwiU2FuZHdpY2hcIlxuICAgICAgPlxuICAgICAgICA8U3R5bGVkU2Nyb2xsQ29udGVudCByZWY9e2NvbnRlbnRSZWZ9PntjaGlsZHJlbn08L1N0eWxlZFNjcm9sbENvbnRlbnQ+XG4gICAgICA8L1N0eWxlZFNjcm9sbFJvb3Q+XG4gICAgPC9TYW5kd2ljaFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIENvbXBvdW5kIGV4cG9ydDogYFNhbmR3aWNoYCB3aXRoIGAuSGVhZGVyYCAvIGAuRm9vdGVyYCBhdHRhY2hlZC5cbiAqIE9iamVjdC5hc3NpZ24ga2VlcHMgdGhlIHN0YXRpYyBzdWItY29tcG9uZW50cyB0eXBlZCBvbiB0aGUgcm9vdFxuICogKGZ1bmN0aW9uLWRlY2xhcmF0aW9uIHN0YXRpY3MgZG9uJ3QgdHlwZS1jaGVjaykuXG4gKi9cbmV4cG9ydCBjb25zdCBTYW5kd2ljaCA9IE9iamVjdC5hc3NpZ24oU2FuZHdpY2hSb290LCB7XG4gIEhlYWRlcjogU2FuZHdpY2hIZWFkZXIsXG4gIEZvb3RlcjogU2FuZHdpY2hGb290ZXIsXG59KTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3STRCIn0= */");export const Sandwich=Object.assign(function({children,scrollRef,onScroll}){let edgesValue=useSandwichEdgesState(),{setContainerRef,contentRef,onContainerScroll}=useScrollEdgeTracking({scrollRef,onScroll,setEdges:edgesValue.setEdges});return React.createElement(SandwichProvider,{value:edgesValue},React.createElement(StyledScrollRoot,{ref:setContainerRef,onScroll:onContainerScroll,tabIndex:0,"data-ds-id":"Sandwich"},React.createElement(StyledScrollContent,{ref:contentRef},children)))},{Header:SandwichHeader,Footer:SandwichFooter});
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import type { SandwichFooterProps } from "./-types";
3
- export declare function SandwichFooter({ children, showSeparator, }: SandwichFooterProps): React.ReactElement;
3
+ export declare function SandwichFooter({ children, showSeparator, "data-e2e-test-id": dataE2eTestId, }: SandwichFooterProps): React.ReactElement;
@@ -1 +1 @@
1
- import React from"react";import styled from"@emotion/styled";import{useSandwichContext}from"./useSandwichContext";let StyledFooter=styled("div",{shouldForwardProp:prop=>"showBorder"!==prop,target:"esecync0",label:"StyledFooter"})(({theme,showBorder})=>({position:"sticky",bottom:0,flex:"0 0 auto",zIndex:1,borderTopWidth:1,borderTopStyle:"solid",borderTopColor:showBorder?theme.values.color.border.secondary.default:"transparent",transition:"border-color 0.15s ease"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvU2FuZHdpY2gvU2FuZHdpY2hGb290ZXIudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9JbnRlcm5hbC9TYW5kd2ljaC9TYW5kd2ljaEZvb3Rlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgdHlwZSB7IFNhbmR3aWNoRm9vdGVyUHJvcHMgfSBmcm9tIFwiLi8tdHlwZXNcIjtcbmltcG9ydCB7IHVzZVNhbmR3aWNoQ29udGV4dCB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuXG5jb25zdCBCT1JERVJfV0lEVEggPSAxO1xuXG5jb25zdCBTdHlsZWRGb290ZXIgPSBzdHlsZWQoXCJkaXZcIiwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogKHByb3ApID0+IHByb3AgIT09IFwic2hvd0JvcmRlclwiLFxufSk8eyBzaG93Qm9yZGVyOiBib29sZWFuIH0+KCh7IHRoZW1lLCBzaG93Qm9yZGVyIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcInN0aWNreVwiLFxuICBib3R0b206IDAsXG4gIGZsZXg6IFwiMCAwIGF1dG9cIixcbiAgekluZGV4OiAxLFxuICAvLyBSZXNlcnZlIHRoZSBib3JkZXIgYm94IGF0IGFsbCB0aW1lczsgb25seSB0aGUgY29sb3IgdG9nZ2xlcyBzbyB0aGUgZGl2aWRlclxuICAvLyBhcHBlYXJzIHdpdGhvdXQgc2hpZnRpbmcgbGF5b3V0LlxuICBib3JkZXJUb3BXaWR0aDogQk9SREVSX1dJRFRILFxuICBib3JkZXJUb3BTdHlsZTogXCJzb2xpZFwiLFxuICBib3JkZXJUb3BDb2xvcjogc2hvd0JvcmRlclxuICAgID8gdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5zZWNvbmRhcnkuZGVmYXVsdFxuICAgIDogXCJ0cmFuc3BhcmVudFwiLFxuICB0cmFuc2l0aW9uOiBcImJvcmRlci1jb2xvciAwLjE1cyBlYXNlXCIsXG59KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBTYW5kd2ljaEZvb3Rlcih7XG4gIGNoaWxkcmVuLFxuICBzaG93U2VwYXJhdG9yID0gXCJhdXRvXCIsXG59OiBTYW5kd2ljaEZvb3RlclByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyBhdEJvdHRvbSB9ID0gdXNlU2FuZHdpY2hDb250ZXh0KCk7XG4gIC8vIERpdmlkZXIgd2hpbGUgY29udGVudCByZW1haW5zIGJlbG93IHRoZSBmb2xkIChvciBwZXIgYHNob3dTZXBhcmF0b3JgKS5cbiAgY29uc3Qgc2hvd0JvcmRlciA9XG4gICAgc2hvd1NlcGFyYXRvciA9PT0gXCJhbHdheXNcIiB8fCAoc2hvd1NlcGFyYXRvciA9PT0gXCJhdXRvXCIgJiYgIWF0Qm90dG9tKTtcbiAgcmV0dXJuIDxTdHlsZWRGb290ZXIgc2hvd0JvcmRlcj17c2hvd0JvcmRlcn0+e2NoaWxkcmVufTwvU3R5bGVkRm9vdGVyPjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPcUIifQ== */");export function SandwichFooter({children,showSeparator="auto"}){let{atBottom}=useSandwichContext();return React.createElement(StyledFooter,{showBorder:"always"===showSeparator||"auto"===showSeparator&&!atBottom},children)}
1
+ import React from"react";import styled from"@emotion/styled";import{useSandwichContext}from"./useSandwichContext";let StyledFooter=styled("div",{shouldForwardProp:prop=>"showBorder"!==prop,target:"e6qp72i0",label:"StyledFooter"})(({theme,showBorder})=>({position:"sticky",bottom:0,flex:"0 0 auto",marginTop:"auto",zIndex:1,borderTopWidth:1,borderTopStyle:"solid",borderTopColor:showBorder?theme.values.color.border.secondary.default:"transparent",transition:"border-color 0.15s ease"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvU2FuZHdpY2gvU2FuZHdpY2hGb290ZXIudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9JbnRlcm5hbC9TYW5kd2ljaC9TYW5kd2ljaEZvb3Rlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgdHlwZSB7IFNhbmR3aWNoRm9vdGVyUHJvcHMgfSBmcm9tIFwiLi8tdHlwZXNcIjtcbmltcG9ydCB7IHVzZVNhbmR3aWNoQ29udGV4dCB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuXG5jb25zdCBCT1JERVJfV0lEVEggPSAxO1xuXG5jb25zdCBTdHlsZWRGb290ZXIgPSBzdHlsZWQoXCJkaXZcIiwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogKHByb3ApID0+IHByb3AgIT09IFwic2hvd0JvcmRlclwiLFxufSk8eyBzaG93Qm9yZGVyOiBib29sZWFuIH0+KCh7IHRoZW1lLCBzaG93Qm9yZGVyIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcInN0aWNreVwiLFxuICBib3R0b206IDAsXG4gIGZsZXg6IFwiMCAwIGF1dG9cIixcbiAgLy8gUGlucyB0aGUgZm9vdGVyIHRvIHRoZSBjb250YWluZXIgYm90dG9tIHdoZW4gY29udGVudCBpcyBzaG9ydC5cbiAgbWFyZ2luVG9wOiBcImF1dG9cIixcbiAgekluZGV4OiAxLFxuICAvLyBSZXNlcnZlIHRoZSBib3JkZXIgYm94IGF0IGFsbCB0aW1lczsgb25seSB0aGUgY29sb3IgdG9nZ2xlcyBzbyB0aGUgZGl2aWRlclxuICAvLyBhcHBlYXJzIHdpdGhvdXQgc2hpZnRpbmcgbGF5b3V0LlxuICBib3JkZXJUb3BXaWR0aDogQk9SREVSX1dJRFRILFxuICBib3JkZXJUb3BTdHlsZTogXCJzb2xpZFwiLFxuICBib3JkZXJUb3BDb2xvcjogc2hvd0JvcmRlclxuICAgID8gdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5zZWNvbmRhcnkuZGVmYXVsdFxuICAgIDogXCJ0cmFuc3BhcmVudFwiLFxuICB0cmFuc2l0aW9uOiBcImJvcmRlci1jb2xvciAwLjE1cyBlYXNlXCIsXG59KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBTYW5kd2ljaEZvb3Rlcih7XG4gIGNoaWxkcmVuLFxuICBzaG93U2VwYXJhdG9yID0gXCJhdXRvXCIsXG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxufTogU2FuZHdpY2hGb290ZXJQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgYXRCb3R0b20gfSA9IHVzZVNhbmR3aWNoQ29udGV4dCgpO1xuICAvLyBEaXZpZGVyIHdoaWxlIGNvbnRlbnQgcmVtYWlucyBiZWxvdyB0aGUgZm9sZCAob3IgcGVyIGBzaG93U2VwYXJhdG9yYCkuXG4gIGNvbnN0IHNob3dCb3JkZXIgPVxuICAgIHNob3dTZXBhcmF0b3IgPT09IFwiYWx3YXlzXCIgfHwgKHNob3dTZXBhcmF0b3IgPT09IFwiYXV0b1wiICYmICFhdEJvdHRvbSk7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEZvb3RlciBzaG93Qm9yZGVyPXtzaG93Qm9yZGVyfSBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZEZvb3Rlcj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPcUIifQ== */");export function SandwichFooter({children,showSeparator="auto","data-e2e-test-id":dataE2eTestId}){let{atBottom}=useSandwichContext();return React.createElement(StyledFooter,{showBorder:"always"===showSeparator||"auto"===showSeparator&&!atBottom,"data-e2e-test-id":dataE2eTestId},children)}
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import type { SandwichHeaderProps } from "./-types";
3
- export declare function SandwichHeader({ children, showSeparator, }: SandwichHeaderProps): React.ReactElement;
3
+ export declare function SandwichHeader({ children, showSeparator, "data-e2e-test-id": dataE2eTestId, }: SandwichHeaderProps): React.ReactElement;
@@ -1 +1 @@
1
- import React from"react";import styled from"@emotion/styled";import{useSandwichContext}from"./useSandwichContext";let StyledHeader=styled("div",{shouldForwardProp:prop=>"showBorder"!==prop,target:"erdgd190",label:"StyledHeader"})(({theme,showBorder})=>({position:"sticky",top:0,flex:"0 0 auto",zIndex:1,borderBottomWidth:1,borderBottomStyle:"solid",borderBottomColor:showBorder?theme.values.color.border.secondary.default:"transparent",transition:"border-color 0.15s ease"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvU2FuZHdpY2gvU2FuZHdpY2hIZWFkZXIudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9JbnRlcm5hbC9TYW5kd2ljaC9TYW5kd2ljaEhlYWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgdHlwZSB7IFNhbmR3aWNoSGVhZGVyUHJvcHMgfSBmcm9tIFwiLi8tdHlwZXNcIjtcbmltcG9ydCB7IHVzZVNhbmR3aWNoQ29udGV4dCB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuXG5jb25zdCBCT1JERVJfV0lEVEggPSAxO1xuXG5jb25zdCBTdHlsZWRIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIiwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogKHByb3ApID0+IHByb3AgIT09IFwic2hvd0JvcmRlclwiLFxufSk8eyBzaG93Qm9yZGVyOiBib29sZWFuIH0+KCh7IHRoZW1lLCBzaG93Qm9yZGVyIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcInN0aWNreVwiLFxuICB0b3A6IDAsXG4gIGZsZXg6IFwiMCAwIGF1dG9cIixcbiAgekluZGV4OiAxLFxuICAvLyBSZXNlcnZlIHRoZSBib3JkZXIgYm94IGF0IGFsbCB0aW1lczsgb25seSB0aGUgY29sb3IgdG9nZ2xlcyBzbyB0aGUgZGl2aWRlclxuICAvLyBhcHBlYXJzIHdpdGhvdXQgc2hpZnRpbmcgbGF5b3V0LlxuICBib3JkZXJCb3R0b21XaWR0aDogQk9SREVSX1dJRFRILFxuICBib3JkZXJCb3R0b21TdHlsZTogXCJzb2xpZFwiLFxuICBib3JkZXJCb3R0b21Db2xvcjogc2hvd0JvcmRlclxuICAgID8gdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5zZWNvbmRhcnkuZGVmYXVsdFxuICAgIDogXCJ0cmFuc3BhcmVudFwiLFxuICB0cmFuc2l0aW9uOiBcImJvcmRlci1jb2xvciAwLjE1cyBlYXNlXCIsXG59KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBTYW5kd2ljaEhlYWRlcih7XG4gIGNoaWxkcmVuLFxuICBzaG93U2VwYXJhdG9yID0gXCJhdXRvXCIsXG59OiBTYW5kd2ljaEhlYWRlclByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyBhdFRvcCB9ID0gdXNlU2FuZHdpY2hDb250ZXh0KCk7XG4gIC8vIERpdmlkZXIgb25jZSB0aGUgc3RhcnQgb2YgdGhlIGNvbnRlbnQgaXMgc2Nyb2xsZWQgYXdheSAob3IgcGVyIGBzaG93U2VwYXJhdG9yYCkuXG4gIGNvbnN0IHNob3dCb3JkZXIgPVxuICAgIHNob3dTZXBhcmF0b3IgPT09IFwiYWx3YXlzXCIgfHwgKHNob3dTZXBhcmF0b3IgPT09IFwiYXV0b1wiICYmICFhdFRvcCk7XG4gIHJldHVybiA8U3R5bGVkSGVhZGVyIHNob3dCb3JkZXI9e3Nob3dCb3JkZXJ9PntjaGlsZHJlbn08L1N0eWxlZEhlYWRlcj47XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT3FCIn0= */");export function SandwichHeader({children,showSeparator="auto"}){let{atTop}=useSandwichContext();return React.createElement(StyledHeader,{showBorder:"always"===showSeparator||"auto"===showSeparator&&!atTop},children)}
1
+ import React from"react";import styled from"@emotion/styled";import{useSandwichContext}from"./useSandwichContext";let StyledHeader=styled("div",{shouldForwardProp:prop=>"showBorder"!==prop,target:"e1k5spef0",label:"StyledHeader"})(({theme,showBorder})=>({position:"sticky",top:0,flex:"0 0 auto",zIndex:1,borderBottomWidth:1,borderBottomStyle:"solid",borderBottomColor:showBorder?theme.values.color.border.secondary.default:"transparent",transition:"border-color 0.15s ease"}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvSW50ZXJuYWwvU2FuZHdpY2gvU2FuZHdpY2hIZWFkZXIudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9JbnRlcm5hbC9TYW5kd2ljaC9TYW5kd2ljaEhlYWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgdHlwZSB7IFNhbmR3aWNoSGVhZGVyUHJvcHMgfSBmcm9tIFwiLi8tdHlwZXNcIjtcbmltcG9ydCB7IHVzZVNhbmR3aWNoQ29udGV4dCB9IGZyb20gXCIuL3VzZVNhbmR3aWNoQ29udGV4dFwiO1xuXG5jb25zdCBCT1JERVJfV0lEVEggPSAxO1xuXG5jb25zdCBTdHlsZWRIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIiwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogKHByb3ApID0+IHByb3AgIT09IFwic2hvd0JvcmRlclwiLFxufSk8eyBzaG93Qm9yZGVyOiBib29sZWFuIH0+KCh7IHRoZW1lLCBzaG93Qm9yZGVyIH0pID0+ICh7XG4gIHBvc2l0aW9uOiBcInN0aWNreVwiLFxuICB0b3A6IDAsXG4gIGZsZXg6IFwiMCAwIGF1dG9cIixcbiAgekluZGV4OiAxLFxuICAvLyBSZXNlcnZlIHRoZSBib3JkZXIgYm94IGF0IGFsbCB0aW1lczsgb25seSB0aGUgY29sb3IgdG9nZ2xlcyBzbyB0aGUgZGl2aWRlclxuICAvLyBhcHBlYXJzIHdpdGhvdXQgc2hpZnRpbmcgbGF5b3V0LlxuICBib3JkZXJCb3R0b21XaWR0aDogQk9SREVSX1dJRFRILFxuICBib3JkZXJCb3R0b21TdHlsZTogXCJzb2xpZFwiLFxuICBib3JkZXJCb3R0b21Db2xvcjogc2hvd0JvcmRlclxuICAgID8gdGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5zZWNvbmRhcnkuZGVmYXVsdFxuICAgIDogXCJ0cmFuc3BhcmVudFwiLFxuICB0cmFuc2l0aW9uOiBcImJvcmRlci1jb2xvciAwLjE1cyBlYXNlXCIsXG59KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBTYW5kd2ljaEhlYWRlcih7XG4gIGNoaWxkcmVuLFxuICBzaG93U2VwYXJhdG9yID0gXCJhdXRvXCIsXG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxufTogU2FuZHdpY2hIZWFkZXJQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgYXRUb3AgfSA9IHVzZVNhbmR3aWNoQ29udGV4dCgpO1xuICAvLyBEaXZpZGVyIG9uY2UgdGhlIHN0YXJ0IG9mIHRoZSBjb250ZW50IGlzIHNjcm9sbGVkIGF3YXkgKG9yIHBlciBgc2hvd1NlcGFyYXRvcmApLlxuICBjb25zdCBzaG93Qm9yZGVyID1cbiAgICBzaG93U2VwYXJhdG9yID09PSBcImFsd2F5c1wiIHx8IChzaG93U2VwYXJhdG9yID09PSBcImF1dG9cIiAmJiAhYXRUb3ApO1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRIZWFkZXIgc2hvd0JvcmRlcj17c2hvd0JvcmRlcn0gZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRIZWFkZXI+XG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT3FCIn0= */");export function SandwichHeader({children,showSeparator="auto","data-e2e-test-id":dataE2eTestId}){let{atTop}=useSandwichContext();return React.createElement(StyledHeader,{showBorder:"always"===showSeparator||"auto"===showSeparator&&!atTop,"data-e2e-test-id":dataE2eTestId},children)}
@@ -1,8 +1,8 @@
1
1
  import type { SandwichEdges } from "./-types";
2
2
  /**
3
- * Context decouples the parts: `Body` reports edge visibility via `setEdges`,
4
- * `Header` / `Footer` read `atTop` / `atBottom`. The link is the context, not
5
- * child order, so the parts may be authored in any order.
3
+ * Context decouples the parts: the scrollable root reports edge visibility via
4
+ * `setEdges`, `Header` / `Footer` read `atTop` / `atBottom`. The link is the
5
+ * context, not child order, so the parts may be authored in any order.
6
6
  */
7
7
  export type SandwichContextValue = SandwichEdges & {
8
8
  setEdges: (edges: Partial<SandwichEdges>) => void;
@@ -1 +1 @@
1
- import{createContext,useContext}from"react";let SandwichContext=createContext(null);export const SandwichProvider=SandwichContext.Provider;export function useSandwichContext(){let ctx=useContext(SandwichContext);if(!ctx)throw Error("Sandwich.Header / Sandwich.Footer / Sandwich.Body must be used within <Sandwich>.");return ctx}
1
+ import{createContext,useContext}from"react";let SandwichContext=createContext(null);export const SandwichProvider=SandwichContext.Provider;export function useSandwichContext(){let ctx=useContext(SandwichContext);if(!ctx)throw Error("Sandwich.Header / Sandwich.Footer must be used within <Sandwich>.");return ctx}
@@ -1,6 +1,6 @@
1
1
  import type React from "react";
2
2
  import type { PanelKey, SidePanelKey, SlotKey } from "./-constants";
3
- import type { IconProps } from "../Icon/Icon";
3
+ import type { PanelHeaderTitle } from "../Internal/PanelHeader/PanelHeader";
4
4
  /**
5
5
  * Surface = compound components (`Layout.LeftPanel` / `Layout.RightPanel` /
6
6
  * `Layout.Content` / `Layout.Split`) + one control hook
@@ -138,7 +138,11 @@ export type LayoutValue = {
138
138
  splitview: PanelHandle;
139
139
  };
140
140
  export type SidePanelProps = {
141
+ /** Panel content in source order. Header/footer components
142
+ * (e.g. `<Layout.LeftPanelHeader />`) stick to the edges; the rest scrolls. */
141
143
  children: React.ReactNode;
144
+ /** Accessible name; when set, the panel renders as a `region` landmark. */
145
+ "aria-label"?: string;
142
146
  variant?: Variant;
143
147
  collapsible?: boolean;
144
148
  /** Number = pixels, unitless string = percent (e.g. `"30%"`). */
@@ -148,11 +152,6 @@ export type SidePanelProps = {
148
152
  /** Called whenever the panel's visibility changes, with the new value. */
149
153
  onVisibleChange?: (visible: boolean) => void;
150
154
  };
151
- export type LeftPanelProps = SidePanelProps & {
152
- /** Accessible name for the panel. Used to label the modal drawer it renders
153
- * as on mobile (`role="dialog"`). Ignored by the docked desktop panel. */
154
- "aria-label": string;
155
- };
156
155
  export type ContentProps = {
157
156
  children: React.ReactNode;
158
157
  /** Number = pixels, unitless string = percent (e.g. `"30%"`). */
@@ -160,7 +159,11 @@ export type ContentProps = {
160
159
  maxSize?: Size;
161
160
  };
162
161
  export type SplitProps = {
162
+ /** Panel content in source order. `<Layout.SplitHeader />` /
163
+ * `<Layout.SplitFooter />` children stick to the edges; the rest scrolls. */
163
164
  children: React.ReactNode;
165
+ /** Accessible name; when set, the panel renders as a `region` landmark. */
166
+ "aria-label"?: string;
164
167
  /** Number = pixels, unitless string = percent (e.g. `"30%"`). */
165
168
  defaultSize?: Size;
166
169
  minSize?: Size;
@@ -183,44 +186,68 @@ export type LayoutProps = {
183
186
  storage?: LayoutStorage;
184
187
  };
185
188
  /**
186
- * Title shown in the panel header. `label` always provides the panel's
187
- * accessible name (even when the title block is visually hidden).
189
+ * Shared contract of the per-panel header components
190
+ * (`Layout.LeftPanelHeader` / `Layout.RightPanelHeader` / `Layout.SplitHeader`).
191
+ * Place among the panel's children; it sticks to the top.
188
192
  */
189
- export type RightPanelContainerTitle = {
190
- /** Visible label and the panel's accessible name. */
191
- label: string;
192
- /** Optional leading icon. Decorative — the visible title label names it. */
193
- icon?: Omit<IconProps, "size" | "aria-label" | "aria-labelledby" | "role">;
194
- /** Show the visible label+icon block. Default `true`. When `false` the block
195
- * is hidden but `label` is still exposed as the accessible name. */
196
- isVisible?: boolean;
197
- };
198
- export type RightPanelContainerSlotProps = {
199
- /** Header slots around the title. */
200
- header?: {
201
- /** Rendered at the header start, before the title. */
202
- leftSlot?: React.ReactNode;
203
- /** Rendered at the header end, after the title and before the close button. */
204
- rightSlot?: React.ReactNode;
205
- };
206
- /** Sticky footer content. Footer is omitted entirely when not provided. */
207
- footer?: React.ReactNode;
208
- /** Props for the always-rendered close button. */
193
+ export type PanelSlotHeaderProps = {
194
+ /** Rendered at the header start. */
195
+ leftSlot?: React.ReactNode;
196
+ /** Rendered at the header end. */
197
+ rightSlot?: React.ReactNode;
198
+ "data-e2e-test-id"?: string;
199
+ };
200
+ /**
201
+ * Shared contract of the per-panel footer components
202
+ * (`Layout.LeftPanelFooter` / `Layout.RightPanelFooter` / `Layout.SplitFooter`).
203
+ * Place among the panel's children; it sticks to the bottom.
204
+ */
205
+ export type PanelSlotFooterProps = {
206
+ children: React.ReactNode;
207
+ "data-e2e-test-id"?: string;
208
+ };
209
+ export type LeftPanelHeaderProps = PanelSlotHeaderProps;
210
+ export type LeftPanelFooterProps = PanelSlotFooterProps;
211
+ /**
212
+ * Title shown in the right panel header, after `leftSlot`. Visual only — the
213
+ * panel's accessible name comes from `Layout.RightPanel`'s `aria-label`.
214
+ */
215
+ export type RightPanelHeaderTitle = PanelHeaderTitle;
216
+ export type RightPanelHeaderSlotProps = {
217
+ /** Props for the built-in close button, rendered at the header end after
218
+ * `rightSlot`. Clicking it hides the panel. */
209
219
  closeButton: {
210
220
  "aria-label": string;
211
221
  };
212
222
  };
213
- export type RightPanelContainerProps = {
214
- title: RightPanelContainerTitle;
215
- /** Scrollable body content. */
223
+ export type RightPanelHeaderProps = PanelSlotHeaderProps & {
224
+ /** Title block (icon + heading), rendered after `leftSlot`. */
225
+ title?: RightPanelHeaderTitle;
226
+ /** Props forwarded to internal sub-components. */
227
+ slotProps: RightPanelHeaderSlotProps;
228
+ };
229
+ export type RightPanelFooterProps = PanelSlotFooterProps;
230
+ export type SplitHeaderProps = PanelSlotHeaderProps;
231
+ export type SplitFooterProps = PanelSlotFooterProps;
232
+ export type PanelContainerProps = {
233
+ /** Content in source order. Per-panel header/footer components stick to the
234
+ * edges; everything else scrolls. */
216
235
  children: React.ReactNode;
217
- /** Called when the (always rendered) close button is clicked. */
218
- onClose?: () => void;
219
- slotProps: RightPanelContainerSlotProps;
236
+ /** Accessible name; when set, the container renders as a `region` landmark. */
237
+ "aria-label"?: string;
238
+ /** Forwarded to the scroll container element (scroll restoration etc.). */
239
+ scrollContainerRef?: React.Ref<HTMLDivElement>;
240
+ /** Forwarded to the scroll container's scroll handler. */
241
+ onScroll?: React.UIEventHandler<HTMLDivElement>;
242
+ /** Draws a separator border on the panel's left edge. */
243
+ showBorderLeft?: boolean;
244
+ "data-e2e-test-id"?: string;
245
+ };
246
+ export type RightPanelProps = SidePanelProps & {
247
+ /** Accessible name for the panel's `region` landmark. */
248
+ "aria-label": string;
220
249
  /** Forwarded to the scrollable body element (scroll restoration etc.). */
221
250
  scrollContainerRef?: React.Ref<HTMLDivElement>;
222
251
  /** Forwarded to the scrollable body's scroll handler. */
223
252
  onScroll?: React.UIEventHandler<HTMLDivElement>;
224
- "data-e2e-test-id"?: string;
225
253
  };
226
- export type RightPanelProps = SidePanelProps & Omit<RightPanelContainerProps, "data-e2e-test-id">;
@@ -1,5 +1,5 @@
1
1
  import type React from "react";
2
- import type { ContentProps } from "./-types";
2
+ import type { ContentProps } from "../-types";
3
3
  /**
4
4
  * Primary content panel. Always shown (never collapsible) and flexes to fill the
5
5
  * space the side panels leave. Declares the `content` slot and portals into it.
@@ -0,0 +1 @@
1
+ import{Slot}from"../-constants";import{useDeclarePanel,useLayoutPortal}from"../registry";export const Content=({children,minSize,maxSize})=>(useDeclarePanel(Slot.content,{minSize,maxSize,collapsible:!1}),useLayoutPortal(Slot.content,children));
@@ -1,17 +1,29 @@
1
1
  import React from "react";
2
2
  import { LayoutProvider } from "./LayoutProvider";
3
- import { Content } from "./Content";
4
- import { RightPanel } from "./RightPanel";
5
- import { LeftPanel } from "./LeftPanel";
6
- import { Split } from "./Split";
3
+ import { Content } from "./Content/Content";
4
+ import { RightPanel } from "./RightPanel/RightPanel";
5
+ import { RightPanelHeader } from "./RightPanel/RightPanelHeader";
6
+ import { RightPanelFooter } from "./RightPanel/RightPanelFooter";
7
+ import { LeftPanel } from "./LeftPanel/LeftPanel";
8
+ import { LeftPanelHeader } from "./LeftPanel/LeftPanelHeader";
9
+ import { LeftPanelFooter } from "./LeftPanel/LeftPanelFooter";
10
+ import { Split } from "./Split/Split";
11
+ import { SplitHeader } from "./Split/SplitHeader";
12
+ import { SplitFooter } from "./Split/SplitFooter";
7
13
  import type { LayoutProps } from "./-types";
8
14
  declare function LayoutBase({ children, persistenceKey, storage, }: LayoutProps): React.ReactElement;
9
15
  type LayoutComponent = typeof LayoutBase & {
10
16
  Provider: typeof LayoutProvider;
11
17
  LeftPanel: typeof LeftPanel;
18
+ LeftPanelHeader: typeof LeftPanelHeader;
19
+ LeftPanelFooter: typeof LeftPanelFooter;
12
20
  RightPanel: typeof RightPanel;
21
+ RightPanelHeader: typeof RightPanelHeader;
22
+ RightPanelFooter: typeof RightPanelFooter;
13
23
  Content: typeof Content;
14
24
  Split: typeof Split;
25
+ SplitHeader: typeof SplitHeader;
26
+ SplitFooter: typeof SplitFooter;
15
27
  };
16
28
  export declare const Layout: LayoutComponent;
17
29
  export {};