react-panel-layout 0.5.2 → 0.6.1

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 (541) hide show
  1. package/dist/{FloatingPanelFrame-lLg-Lpg7.js → FloatingPanelFrame-3eU9AwPo.js} +11 -11
  2. package/dist/{FloatingPanelFrame-lLg-Lpg7.js.map → FloatingPanelFrame-3eU9AwPo.js.map} +1 -1
  3. package/dist/{FloatingPanelFrame-D9Cp2al1.cjs → FloatingPanelFrame-CEmXDvUA.cjs} +2 -2
  4. package/dist/{FloatingPanelFrame-D9Cp2al1.cjs.map → FloatingPanelFrame-CEmXDvUA.cjs.map} +1 -1
  5. package/dist/FloatingWindow-CUXnEtrb.js +827 -0
  6. package/dist/FloatingWindow-CUXnEtrb.js.map +1 -0
  7. package/dist/FloatingWindow-DMwyK0eK.cjs +2 -0
  8. package/dist/FloatingWindow-DMwyK0eK.cjs.map +1 -0
  9. package/dist/GridLayout-DKTg_N61.cjs +2 -0
  10. package/dist/GridLayout-DKTg_N61.cjs.map +1 -0
  11. package/dist/GridLayout-UWNxXw77.js +926 -0
  12. package/dist/GridLayout-UWNxXw77.js.map +1 -0
  13. package/dist/HorizontalDivider-DdxzfV0l.js +30 -0
  14. package/dist/HorizontalDivider-DdxzfV0l.js.map +1 -0
  15. package/dist/HorizontalDivider-_pgV4Mcv.cjs +2 -0
  16. package/dist/HorizontalDivider-_pgV4Mcv.cjs.map +1 -0
  17. package/dist/PanelSystem-BqUzNtf2.js +1946 -0
  18. package/dist/PanelSystem-BqUzNtf2.js.map +1 -0
  19. package/dist/PanelSystem-D603LKKv.cjs +3 -0
  20. package/dist/PanelSystem-D603LKKv.cjs.map +1 -0
  21. package/dist/ResizeHandle-CBcAS918.cjs +2 -0
  22. package/dist/ResizeHandle-CBcAS918.cjs.map +1 -0
  23. package/dist/ResizeHandle-CXjc1meV.js +119 -0
  24. package/dist/ResizeHandle-CXjc1meV.js.map +1 -0
  25. package/dist/SwipePivotTabBar-DWrCuwEI.js +411 -0
  26. package/dist/SwipePivotTabBar-DWrCuwEI.js.map +1 -0
  27. package/dist/SwipePivotTabBar-fjjXkpj7.cjs +2 -0
  28. package/dist/SwipePivotTabBar-fjjXkpj7.cjs.map +1 -0
  29. package/dist/components/gesture/SwipeSafeZone.d.ts +40 -0
  30. package/dist/components/window/Drawer.d.ts +3 -1
  31. package/dist/components/window/DrawerLayers.d.ts +1 -1
  32. package/dist/components/window/drawerStyles.d.ts +69 -0
  33. package/dist/components/window/drawerSwipeConfig.d.ts +29 -0
  34. package/dist/components/window/useDrawerSwipeTransform.d.ts +23 -0
  35. package/dist/config.cjs +1 -1
  36. package/dist/config.cjs.map +1 -1
  37. package/dist/config.js +11 -9
  38. package/dist/config.js.map +1 -1
  39. package/dist/constants/styles.d.ts +35 -4
  40. package/dist/dialog/index.d.ts +69 -0
  41. package/dist/floating.cjs +1 -1
  42. package/dist/floating.js +1 -1
  43. package/dist/grid/index.d.ts +58 -0
  44. package/dist/grid.cjs +2 -0
  45. package/dist/grid.cjs.map +1 -0
  46. package/dist/grid.js +13 -0
  47. package/dist/grid.js.map +1 -0
  48. package/dist/hooks/gesture/presets.d.ts +33 -0
  49. package/dist/hooks/gesture/testing/createGestureSimulator.d.ts +117 -0
  50. package/dist/hooks/gesture/thresholdValue.d.ts +44 -0
  51. package/dist/hooks/gesture/types.d.ts +297 -0
  52. package/dist/hooks/gesture/useDirectionalLock.d.ts +20 -0
  53. package/dist/hooks/gesture/useEdgeSwipeInput.d.ts +23 -0
  54. package/dist/hooks/gesture/useNativeGestureGuard.d.ts +23 -0
  55. package/dist/hooks/gesture/usePointerTracking.d.ts +22 -0
  56. package/dist/hooks/gesture/useScrollBoundary.d.ts +23 -0
  57. package/dist/hooks/gesture/useSwipeInput.d.ts +5 -0
  58. package/dist/hooks/gesture/utils.d.ts +59 -0
  59. package/dist/hooks/useAnimatedVisibility.d.ts +58 -0
  60. package/dist/hooks/useAnimationFrame.d.ts +86 -0
  61. package/dist/hooks/useOperationContinuity.d.ts +64 -0
  62. package/dist/hooks/useResizeObserver.d.ts +33 -1
  63. package/dist/hooks/useSharedElementTransition.d.ts +112 -0
  64. package/dist/hooks/useSnapAnimation.d.ts +54 -0
  65. package/dist/hooks/useSwipeContentTransform.d.ts +86 -0
  66. package/dist/index.cjs +1 -2
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.d.ts +0 -1
  69. package/dist/index.js +25 -2006
  70. package/dist/index.js.map +1 -1
  71. package/dist/modules/dialog/AlertDialog.d.ts +9 -0
  72. package/dist/modules/dialog/DialogContainer.d.ts +37 -0
  73. package/dist/modules/dialog/Modal.d.ts +26 -0
  74. package/dist/modules/dialog/SwipeDialogContainer.d.ts +16 -0
  75. package/dist/modules/dialog/dialogAnimationUtils.d.ts +113 -0
  76. package/dist/modules/dialog/types.d.ts +183 -0
  77. package/dist/modules/dialog/useDialog.d.ts +39 -0
  78. package/dist/modules/dialog/useDialogContainer.d.ts +47 -0
  79. package/dist/modules/dialog/useDialogSwipeInput.d.ts +70 -0
  80. package/dist/modules/dialog/useDialogTransform.d.ts +82 -0
  81. package/dist/modules/drawer/types.d.ts +74 -0
  82. package/dist/modules/drawer/useDrawerSwipeInput.d.ts +24 -0
  83. package/dist/modules/pivot/PivotContent.d.ts +1 -1
  84. package/dist/modules/pivot/SwipePivotContent.d.ts +39 -0
  85. package/dist/modules/pivot/SwipePivotContent.debug.tmp.d.ts +25 -0
  86. package/dist/modules/pivot/SwipePivotContent.test.d.ts +1 -0
  87. package/dist/modules/pivot/SwipePivotTabBar.d.ts +92 -0
  88. package/dist/modules/pivot/index.d.ts +3 -0
  89. package/dist/modules/pivot/scaleInputState.d.ts +37 -0
  90. package/dist/modules/pivot/types.d.ts +67 -2
  91. package/dist/modules/pivot/usePivotSwipeInput.d.ts +68 -0
  92. package/dist/modules/stack/StackContent.d.ts +15 -0
  93. package/dist/modules/stack/SwipeStackContent.d.ts +66 -0
  94. package/dist/modules/stack/SwipeStackOutlet.d.ts +80 -0
  95. package/dist/modules/stack/computeStackContentState.d.ts +99 -0
  96. package/dist/modules/stack/computeSwipeStackTransform.d.ts +76 -0
  97. package/dist/modules/stack/types.d.ts +194 -0
  98. package/dist/modules/stack/useStackAnimationState.d.ts +32 -0
  99. package/dist/modules/stack/useStackNavigation.d.ts +23 -0
  100. package/dist/modules/stack/useStackSwipeInput.d.ts +27 -0
  101. package/dist/panels/index.d.ts +67 -0
  102. package/dist/panels.cjs +2 -0
  103. package/dist/panels.cjs.map +1 -0
  104. package/dist/panels.js +28 -0
  105. package/dist/panels.js.map +1 -0
  106. package/dist/pivot/index.d.ts +3 -0
  107. package/dist/pivot.cjs +1 -1
  108. package/dist/pivot.cjs.map +1 -1
  109. package/dist/pivot.js +20 -2
  110. package/dist/pivot.js.map +1 -1
  111. package/dist/resizer/index.d.ts +57 -0
  112. package/dist/resizer.cjs +2 -0
  113. package/dist/resizer.cjs.map +1 -0
  114. package/dist/resizer.js +8 -0
  115. package/dist/resizer.js.map +1 -0
  116. package/dist/stack/index.d.ts +72 -0
  117. package/dist/stack.cjs +2 -0
  118. package/dist/stack.cjs.map +1 -0
  119. package/dist/stack.js +721 -0
  120. package/dist/stack.js.map +1 -0
  121. package/dist/sticky-header/StickyArea.d.ts +38 -0
  122. package/dist/sticky-header/calculateStickyMetrics.d.ts +28 -0
  123. package/dist/sticky-header/index.d.ts +4 -4
  124. package/dist/sticky-header/types.d.ts +35 -22
  125. package/dist/sticky-header.cjs +1 -1
  126. package/dist/sticky-header.cjs.map +1 -1
  127. package/dist/sticky-header.js +73 -174
  128. package/dist/sticky-header.js.map +1 -1
  129. package/dist/styles-NkjuMOVS.js +57 -0
  130. package/dist/styles-NkjuMOVS.js.map +1 -0
  131. package/dist/styles-qf6ptVLD.cjs +2 -0
  132. package/dist/styles-qf6ptVLD.cjs.map +1 -0
  133. package/dist/types.d.ts +16 -0
  134. package/dist/useContentCache-CO3LYNmz.js +24 -0
  135. package/dist/useContentCache-CO3LYNmz.js.map +1 -0
  136. package/dist/useContentCache-DqXtLrLs.cjs +2 -0
  137. package/dist/useContentCache-DqXtLrLs.cjs.map +1 -0
  138. package/dist/useDocumentPointerEvents-DXxw3qWj.js +54 -0
  139. package/dist/useDocumentPointerEvents-DXxw3qWj.js.map +1 -0
  140. package/dist/useDocumentPointerEvents-DxDSOtip.cjs +2 -0
  141. package/dist/useDocumentPointerEvents-DxDSOtip.cjs.map +1 -0
  142. package/dist/useFloatingState-C4kRaW_R.cjs +2 -0
  143. package/dist/useFloatingState-C4kRaW_R.cjs.map +1 -0
  144. package/dist/useFloatingState-tEfA_wbc.js +74 -0
  145. package/dist/useFloatingState-tEfA_wbc.js.map +1 -0
  146. package/dist/useNativeGestureGuard-C7TSqEkr.cjs +2 -0
  147. package/dist/useNativeGestureGuard-C7TSqEkr.cjs.map +1 -0
  148. package/dist/useNativeGestureGuard-CGYo6O0r.js +347 -0
  149. package/dist/useNativeGestureGuard-CGYo6O0r.js.map +1 -0
  150. package/dist/window/index.d.ts +63 -0
  151. package/dist/window.cjs +2 -0
  152. package/dist/window.cjs.map +1 -0
  153. package/dist/window.js +160 -0
  154. package/dist/window.js.map +1 -0
  155. package/docs/design-tokens.md +405 -0
  156. package/package.json +34 -4
  157. package/src/PanelSystemContext.tsx +88 -0
  158. package/src/components/gesture/SwipeSafeZone.tsx +69 -0
  159. package/src/components/grid/GridLayerList.tsx +172 -0
  160. package/src/components/grid/GridLayerResizeHandles.tsx +145 -0
  161. package/src/components/grid/GridLayout.spec.tsx +743 -0
  162. package/src/components/grid/GridLayout.tsx +130 -0
  163. package/src/components/grid/GridTrackResizeHandle.tsx +87 -0
  164. package/src/components/paneling/FloatingPanelFrame.tsx +203 -0
  165. package/src/components/panels/DropSuggestOverlay.tsx +131 -0
  166. package/src/components/panels/PanelGroupView.tsx +112 -0
  167. package/src/components/pivot/PivotLayer.tsx +27 -0
  168. package/src/components/resizer/HorizontalDivider.tsx +52 -0
  169. package/src/components/resizer/ResizeHandle.tsx +118 -0
  170. package/src/components/tabs/TabBar.tsx +223 -0
  171. package/src/components/tabs/TabBarTab.tsx +133 -0
  172. package/src/components/tabs/TabDragOverlay.tsx +92 -0
  173. package/src/components/window/DialogOverlay.tsx +180 -0
  174. package/src/components/window/Drawer.tsx +369 -0
  175. package/src/components/window/DrawerLayers.tsx +68 -0
  176. package/src/components/window/FloatingWindow.tsx +95 -0
  177. package/src/components/window/PopupLayerPortal.tsx +218 -0
  178. package/src/components/window/drawerStyles.spec.ts +263 -0
  179. package/src/components/window/drawerStyles.ts +228 -0
  180. package/src/components/window/drawerSwipeConfig.spec.ts +131 -0
  181. package/src/components/window/drawerSwipeConfig.ts +112 -0
  182. package/src/components/window/useDrawerSwipeTransform.spec.ts +234 -0
  183. package/src/components/window/useDrawerSwipeTransform.ts +129 -0
  184. package/src/config/PanelContentDeclaration.tsx +427 -0
  185. package/src/config/index.tsx +52 -0
  186. package/src/config/panelJsx.spec.tsx +54 -0
  187. package/src/config/panelJsxConfig.spec.tsx +54 -0
  188. package/src/config/panelJsxDrawer.spec.tsx +33 -0
  189. package/src/config/panelRouter.spec.ts +68 -0
  190. package/src/config/panelRouter.tsx +155 -0
  191. package/src/constants/styles.ts +280 -0
  192. package/src/demo/Layout.module.css +258 -0
  193. package/src/demo/Layout.tsx +176 -0
  194. package/src/demo/components/CodeBlock.module.css +54 -0
  195. package/src/demo/components/CodeBlock.tsx +34 -0
  196. package/src/demo/components/CodePreview.module.css +37 -0
  197. package/src/demo/components/CodePreview.tsx +31 -0
  198. package/src/demo/components/DataPreview.module.css +177 -0
  199. package/src/demo/components/DataPreview.tsx +115 -0
  200. package/src/demo/components/Story.module.css +68 -0
  201. package/src/demo/components/Story.tsx +54 -0
  202. package/src/demo/components/layout/CodePanel.module.css +183 -0
  203. package/src/demo/components/layout/CodePanel.tsx +149 -0
  204. package/src/demo/components/layout/DemoPage.module.css +60 -0
  205. package/src/demo/components/layout/DemoPage.tsx +56 -0
  206. package/src/demo/components/layout/SingleSamplePage.module.css +11 -0
  207. package/src/demo/components/layout/SingleSamplePage.tsx +35 -0
  208. package/src/demo/components/layout/SplitDemoLayout.module.css +107 -0
  209. package/src/demo/components/layout/SplitDemoLayout.tsx +218 -0
  210. package/src/demo/components/layout/index.ts +11 -0
  211. package/src/demo/components/tab-styles/ChromeTabBar.module.css +75 -0
  212. package/src/demo/components/tab-styles/ChromeTabBar.tsx +111 -0
  213. package/src/demo/components/tab-styles/GitHubTabBar.module.css +81 -0
  214. package/src/demo/components/tab-styles/GitHubTabBar.tsx +109 -0
  215. package/src/demo/components/tab-styles/VSCodeTabBar.module.css +78 -0
  216. package/src/demo/components/tab-styles/VSCodeTabBar.tsx +109 -0
  217. package/src/demo/components/tab-styles/index.ts +6 -0
  218. package/src/demo/components/ui/DemoButton.module.css +63 -0
  219. package/src/demo/components/ui/DemoButton.tsx +32 -0
  220. package/src/demo/components/ui/DemoCard.module.css +15 -0
  221. package/src/demo/components/ui/DemoCard.tsx +30 -0
  222. package/src/demo/components/ui/DemoContainer.module.css +17 -0
  223. package/src/demo/components/ui/DemoContainer.tsx +30 -0
  224. package/src/demo/components/ui/DemoPanel.module.css +23 -0
  225. package/src/demo/components/ui/DemoPanel.tsx +33 -0
  226. package/src/demo/components/ui/PanelText.module.css +18 -0
  227. package/src/demo/components/ui/PanelText.tsx +29 -0
  228. package/src/demo/components/ui/PanelTitle.module.css +18 -0
  229. package/src/demo/components/ui/PanelTitle.tsx +31 -0
  230. package/src/demo/contexts/TabbarDemoConfig.tsx +218 -0
  231. package/src/demo/demo.css +172 -0
  232. package/src/demo/hooks/useMedia.ts +41 -0
  233. package/src/demo/hooks/useShikiHighlight.ts +55 -0
  234. package/src/demo/index.tsx +293 -0
  235. package/src/demo/pages/Dialog/alerts/index.tsx +22 -0
  236. package/src/demo/pages/Dialog/card/index.tsx +22 -0
  237. package/src/demo/pages/Dialog/components/AlertDialogDemo.tsx +124 -0
  238. package/src/demo/pages/Dialog/components/CardExpandDemo.module.css +243 -0
  239. package/src/demo/pages/Dialog/components/CardExpandDemo.tsx +204 -0
  240. package/src/demo/pages/Dialog/components/CustomAlertDialogDemo.tsx +219 -0
  241. package/src/demo/pages/Dialog/components/DialogDemos.module.css +77 -0
  242. package/src/demo/pages/Dialog/components/ModalBasics.tsx +45 -0
  243. package/src/demo/pages/Dialog/components/SwipeDialogDemo.module.css +77 -0
  244. package/src/demo/pages/Dialog/components/SwipeDialogDemo.tsx +181 -0
  245. package/src/demo/pages/Dialog/custom-alert/index.tsx +22 -0
  246. package/src/demo/pages/Dialog/modal/index.tsx +17 -0
  247. package/src/demo/pages/Dialog/swipe/index.tsx +22 -0
  248. package/src/demo/pages/Drawer/animations/index.tsx +22 -0
  249. package/src/demo/pages/Drawer/basics/index.tsx +17 -0
  250. package/src/demo/pages/Drawer/components/DrawerAnimations.module.css +125 -0
  251. package/src/demo/pages/Drawer/components/DrawerAnimations.tsx +118 -0
  252. package/src/demo/pages/Drawer/components/DrawerBasics.module.css +55 -0
  253. package/src/demo/pages/Drawer/components/DrawerBasics.tsx +76 -0
  254. package/src/demo/pages/Drawer/components/DrawerMenuLayout.module.css +332 -0
  255. package/src/demo/pages/Drawer/components/DrawerMenuLayout.tsx +199 -0
  256. package/src/demo/pages/Drawer/components/DrawerSwipe.module.css +316 -0
  257. package/src/demo/pages/Drawer/components/DrawerSwipe.tsx +178 -0
  258. package/src/demo/pages/Drawer/menu/index.tsx +17 -0
  259. package/src/demo/pages/Drawer/swipe/index.tsx +17 -0
  260. package/src/demo/pages/FloatingPanelFrame/ResizableFloatingPanelsPreview.module.css +163 -0
  261. package/src/demo/pages/FloatingPanelFrame/ResizableFloatingPanelsPreview.tsx +234 -0
  262. package/src/demo/pages/FloatingPanelFrame/basic/index.tsx +17 -0
  263. package/src/demo/pages/FloatingPanelFrame/complex/index.tsx +26 -0
  264. package/src/demo/pages/FloatingPanelFrame/components/BasicPanel.module.css +16 -0
  265. package/src/demo/pages/FloatingPanelFrame/components/BasicPanel.tsx +24 -0
  266. package/src/demo/pages/FloatingPanelFrame/components/ComplexPanel.module.css +54 -0
  267. package/src/demo/pages/FloatingPanelFrame/components/ComplexPanel.tsx +67 -0
  268. package/src/demo/pages/FloatingPanelFrame/components/PanelWithControls.module.css +21 -0
  269. package/src/demo/pages/FloatingPanelFrame/components/PanelWithControls.tsx +41 -0
  270. package/src/demo/pages/FloatingPanelFrame/components/PanelWithMeta.module.css +5 -0
  271. package/src/demo/pages/FloatingPanelFrame/components/PanelWithMeta.tsx +43 -0
  272. package/src/demo/pages/FloatingPanelFrame/components/ScrollablePanel.module.css +11 -0
  273. package/src/demo/pages/FloatingPanelFrame/components/ScrollablePanel.tsx +42 -0
  274. package/src/demo/pages/FloatingPanelFrame/index.tsx +80 -0
  275. package/src/demo/pages/FloatingPanelFrame/scrollable/index.tsx +30 -0
  276. package/src/demo/pages/FloatingPanelFrame/with-controls/index.tsx +30 -0
  277. package/src/demo/pages/FloatingPanelFrame/with-meta/index.tsx +17 -0
  278. package/src/demo/pages/HorizontalDivider/components/PanelsWithRichContent.module.css +112 -0
  279. package/src/demo/pages/HorizontalDivider/components/PanelsWithRichContent.tsx +56 -0
  280. package/src/demo/pages/HorizontalDivider/components/SimpleResizablePanels.module.css +46 -0
  281. package/src/demo/pages/HorizontalDivider/components/SimpleResizablePanels.tsx +29 -0
  282. package/src/demo/pages/HorizontalDivider/components/ThreePanelLayout.module.css +54 -0
  283. package/src/demo/pages/HorizontalDivider/components/ThreePanelLayout.tsx +30 -0
  284. package/src/demo/pages/HorizontalDivider/index.module.css +14 -0
  285. package/src/demo/pages/HorizontalDivider/index.tsx +64 -0
  286. package/src/demo/pages/HorizontalDivider/panels-with-rich-content/index.tsx +21 -0
  287. package/src/demo/pages/HorizontalDivider/simple-resizable-panels/index.tsx +21 -0
  288. package/src/demo/pages/HorizontalDivider/three-panel-layout/index.tsx +21 -0
  289. package/src/demo/pages/PanelLayout/PanelLayoutDemo.module.css +174 -0
  290. package/src/demo/pages/PanelLayout/PanelLayoutDemo.tsx +248 -0
  291. package/src/demo/pages/PanelLayout/components/DashboardLayout.module.css +115 -0
  292. package/src/demo/pages/PanelLayout/components/DashboardLayout.tsx +124 -0
  293. package/src/demo/pages/PanelLayout/components/DraggableOverlays.module.css +101 -0
  294. package/src/demo/pages/PanelLayout/components/DraggableOverlays.tsx +122 -0
  295. package/src/demo/pages/PanelLayout/components/IDELayout.module.css +104 -0
  296. package/src/demo/pages/PanelLayout/components/IDELayout.tsx +143 -0
  297. package/src/demo/pages/PanelLayout/components/SimpleGrid.module.css +19 -0
  298. package/src/demo/pages/PanelLayout/components/SimpleGrid.tsx +62 -0
  299. package/src/demo/pages/PanelLayout/dashboard/index.tsx +22 -0
  300. package/src/demo/pages/PanelLayout/draggable-overlays/index.tsx +22 -0
  301. package/src/demo/pages/PanelLayout/ide-layout/index.tsx +22 -0
  302. package/src/demo/pages/PanelLayout/index.tsx +94 -0
  303. package/src/demo/pages/PanelLayout/simple-grid/index.tsx +22 -0
  304. package/src/demo/pages/PanelSystem/PanelSystemPreview.module.css +20 -0
  305. package/src/demo/pages/PanelSystem/PanelSystemPreview.tsx +101 -0
  306. package/src/demo/pages/PanelSystem/preview/index.tsx +18 -0
  307. package/src/demo/pages/PanelSystem/tabbar/index.tsx +129 -0
  308. package/src/demo/pages/Pivot/basics/index.tsx +17 -0
  309. package/src/demo/pages/Pivot/components/Pivot.module.css +278 -0
  310. package/src/demo/pages/Pivot/components/PivotBasics.tsx +103 -0
  311. package/src/demo/pages/Pivot/components/PivotSidebar.tsx +168 -0
  312. package/src/demo/pages/Pivot/components/PivotTabs.tsx +129 -0
  313. package/src/demo/pages/Pivot/components/PivotTransitions.tsx +120 -0
  314. package/src/demo/pages/Pivot/components/SwipePivot.module.css +114 -0
  315. package/src/demo/pages/Pivot/components/SwipePivot.tsx +193 -0
  316. package/src/demo/pages/Pivot/components/SwipeTabsPivot.module.css +203 -0
  317. package/src/demo/pages/Pivot/components/SwipeTabsPivot.tsx +320 -0
  318. package/src/demo/pages/Pivot/sidebar/index.tsx +17 -0
  319. package/src/demo/pages/Pivot/swipe/index.tsx +16 -0
  320. package/src/demo/pages/Pivot/swipe-debug/index.tsx +287 -0
  321. package/src/demo/pages/Pivot/swipe-tabs/index.tsx +15 -0
  322. package/src/demo/pages/Pivot/tabs/index.tsx +17 -0
  323. package/src/demo/pages/Pivot/transitions/index.tsx +17 -0
  324. package/src/demo/pages/ResizeHandle/both-directions/index.tsx +17 -0
  325. package/src/demo/pages/ResizeHandle/components/BothDirectionsDemo.module.css +72 -0
  326. package/src/demo/pages/ResizeHandle/components/BothDirectionsDemo.tsx +41 -0
  327. package/src/demo/pages/ResizeHandle/components/HorizontalResizeDemo.module.css +61 -0
  328. package/src/demo/pages/ResizeHandle/components/HorizontalResizeDemo.tsx +33 -0
  329. package/src/demo/pages/ResizeHandle/components/NestedPanelsDemo.module.css +83 -0
  330. package/src/demo/pages/ResizeHandle/components/NestedPanelsDemo.tsx +53 -0
  331. package/src/demo/pages/ResizeHandle/components/VerticalResizeDemo.module.css +68 -0
  332. package/src/demo/pages/ResizeHandle/components/VerticalResizeDemo.tsx +33 -0
  333. package/src/demo/pages/ResizeHandle/horizontal/index.tsx +17 -0
  334. package/src/demo/pages/ResizeHandle/index.module.css +11 -0
  335. package/src/demo/pages/ResizeHandle/index.tsx +71 -0
  336. package/src/demo/pages/ResizeHandle/nested-panels/index.tsx +17 -0
  337. package/src/demo/pages/ResizeHandle/vertical/index.tsx +17 -0
  338. package/src/demo/pages/ResponsiveLayout/adaptive-workspace/index.tsx +22 -0
  339. package/src/demo/pages/ResponsiveLayout/components/ResponsiveWorkspace.module.css +423 -0
  340. package/src/demo/pages/ResponsiveLayout/components/ResponsiveWorkspace.tsx +398 -0
  341. package/src/demo/pages/Stack/basics/index.tsx +22 -0
  342. package/src/demo/pages/Stack/components/Stack.module.css +234 -0
  343. package/src/demo/pages/Stack/components/StackBasics.spec.tsx +152 -0
  344. package/src/demo/pages/Stack/components/StackBasics.tsx +301 -0
  345. package/src/demo/pages/Stack/components/StackTablet.module.css +299 -0
  346. package/src/demo/pages/Stack/components/StackTablet.spec.tsx +120 -0
  347. package/src/demo/pages/Stack/components/StackTablet.tsx +422 -0
  348. package/src/demo/pages/Stack/tablet/index.tsx +22 -0
  349. package/src/demo/pages/StickyHeader/basics/index.tsx +17 -0
  350. package/src/demo/pages/StickyHeader/components/StickyHeader.module.css +219 -0
  351. package/src/demo/pages/StickyHeader/components/StickyHeaderBasics.tsx +103 -0
  352. package/src/demo/routes.tsx +214 -0
  353. package/src/demo/styles/animations.css +68 -0
  354. package/src/demo/styles/stack-themes.css +35 -0
  355. package/src/demo/utils/createPanelView.tsx +58 -0
  356. package/src/dialog/index.ts +85 -0
  357. package/src/floating/index.ts +24 -0
  358. package/src/grid/index.ts +75 -0
  359. package/src/hooks/ContentCacheContext.tsx +87 -0
  360. package/src/hooks/gesture/presets.spec.ts +86 -0
  361. package/src/hooks/gesture/presets.ts +95 -0
  362. package/src/hooks/gesture/testing/createGestureSimulator.spec.ts +241 -0
  363. package/src/hooks/gesture/testing/createGestureSimulator.ts +385 -0
  364. package/src/hooks/gesture/thresholdValue.spec.ts +103 -0
  365. package/src/hooks/gesture/thresholdValue.ts +77 -0
  366. package/src/hooks/gesture/types.ts +367 -0
  367. package/src/hooks/gesture/useDirectionalLock.spec.ts +271 -0
  368. package/src/hooks/gesture/useDirectionalLock.ts +115 -0
  369. package/src/hooks/gesture/useEdgeSwipeInput.spec.ts +462 -0
  370. package/src/hooks/gesture/useEdgeSwipeInput.ts +131 -0
  371. package/src/hooks/gesture/useNativeGestureGuard.spec.ts +473 -0
  372. package/src/hooks/gesture/useNativeGestureGuard.ts +135 -0
  373. package/src/hooks/gesture/usePointerTracking.spec.ts +364 -0
  374. package/src/hooks/gesture/usePointerTracking.ts +134 -0
  375. package/src/hooks/gesture/useScrollBoundary.spec.ts +249 -0
  376. package/src/hooks/gesture/useScrollBoundary.ts +113 -0
  377. package/src/hooks/gesture/useSwipeInput.spec.ts +592 -0
  378. package/src/hooks/gesture/useSwipeInput.ts +310 -0
  379. package/src/hooks/gesture/utils.spec.ts +152 -0
  380. package/src/hooks/gesture/utils.ts +178 -0
  381. package/src/hooks/useAnimatedVisibility.spec.ts +277 -0
  382. package/src/hooks/useAnimatedVisibility.ts +172 -0
  383. package/src/hooks/useAnimationFrame.ts +208 -0
  384. package/src/hooks/useCSSMatrix.spec.ts +214 -0
  385. package/src/hooks/useCSSMatrix.ts +262 -0
  386. package/src/hooks/useClonedElementPreview.ts +28 -0
  387. package/src/hooks/useContainerScroll.ts +78 -0
  388. package/src/hooks/useContentCache.spec.tsx +232 -0
  389. package/src/hooks/useContentCache.tsx +127 -0
  390. package/src/hooks/useDocumentPointerEvents.ts +137 -0
  391. package/src/hooks/useDocumentScroll.ts +41 -0
  392. package/src/hooks/useEffectEvent.ts +40 -0
  393. package/src/hooks/useElementComponentWrapper.tsx +63 -0
  394. package/src/hooks/useIntersectionObserver.tsx +125 -0
  395. package/src/hooks/useIsomorphicLayoutEffect.ts +29 -0
  396. package/src/hooks/useOperationContinuity.spec.ts +387 -0
  397. package/src/hooks/useOperationContinuity.ts +135 -0
  398. package/src/hooks/useResizeObserver.spec.tsx +277 -0
  399. package/src/hooks/useResizeObserver.tsx +150 -0
  400. package/src/hooks/useScrollContainer.ts +73 -0
  401. package/src/hooks/useSharedElementTransition.ts +333 -0
  402. package/src/hooks/useSnapAnimation.ts +128 -0
  403. package/src/hooks/useSwipeContentTransform.spec.ts +133 -0
  404. package/src/hooks/useSwipeContentTransform.ts +373 -0
  405. package/src/hooks/useTransitionState.ts +95 -0
  406. package/src/index.tsx +88 -0
  407. package/src/modules/dialog/AlertDialog.spec.tsx +387 -0
  408. package/src/modules/dialog/AlertDialog.tsx +221 -0
  409. package/src/modules/dialog/DialogContainer.spec.tsx +228 -0
  410. package/src/modules/dialog/DialogContainer.tsx +188 -0
  411. package/src/modules/dialog/Modal.spec.tsx +220 -0
  412. package/src/modules/dialog/Modal.tsx +182 -0
  413. package/src/modules/dialog/SwipeDialogContainer.tsx +208 -0
  414. package/src/modules/dialog/dialogAnimationUtils.spec.ts +253 -0
  415. package/src/modules/dialog/dialogAnimationUtils.ts +297 -0
  416. package/src/modules/dialog/types.ts +186 -0
  417. package/src/modules/dialog/useDialog.spec.tsx +447 -0
  418. package/src/modules/dialog/useDialog.ts +214 -0
  419. package/src/modules/dialog/useDialogContainer.spec.ts +331 -0
  420. package/src/modules/dialog/useDialogContainer.ts +150 -0
  421. package/src/modules/dialog/useDialogSwipeInput.spec.ts +157 -0
  422. package/src/modules/dialog/useDialogSwipeInput.ts +319 -0
  423. package/src/modules/dialog/useDialogTransform.spec.ts +370 -0
  424. package/src/modules/dialog/useDialogTransform.ts +407 -0
  425. package/src/modules/drawer/types.ts +102 -0
  426. package/src/modules/drawer/useDrawerSwipeInput.spec.ts +566 -0
  427. package/src/modules/drawer/useDrawerSwipeInput.ts +399 -0
  428. package/src/modules/grid/GridLayoutContext.tsx +57 -0
  429. package/src/modules/grid/LayerInstanceContext.tsx +56 -0
  430. package/src/modules/grid/resizeHandles.ts +157 -0
  431. package/src/modules/grid/trackUtils.ts +146 -0
  432. package/src/modules/grid/useGridPlacements.ts +143 -0
  433. package/src/modules/grid/useGridTracks.ts +156 -0
  434. package/src/modules/grid/useLayerDragHandle.ts +16 -0
  435. package/src/modules/grid/useLayerInteractions.tsx +850 -0
  436. package/src/modules/keybindings/KeybindingsProvider.tsx +111 -0
  437. package/src/modules/panels/dom/DomRegistry.tsx +94 -0
  438. package/src/modules/panels/index.ts +45 -0
  439. package/src/modules/panels/interactions/InteractionsContext.test.tsx +330 -0
  440. package/src/modules/panels/interactions/InteractionsContext.tsx +394 -0
  441. package/src/modules/panels/interactions/dnd.ts +28 -0
  442. package/src/modules/panels/keybindings/KeybindingsInstaller.tsx +15 -0
  443. package/src/modules/panels/layout/adapter.ts +124 -0
  444. package/src/modules/panels/rendering/ContentRegistry.spec.tsx +311 -0
  445. package/src/modules/panels/rendering/ContentRegistry.tsx +205 -0
  446. package/src/modules/panels/rendering/GroupContainer.tsx +65 -0
  447. package/src/modules/panels/rendering/RenderBridge.tsx +115 -0
  448. package/src/modules/panels/rendering/RenderContext.tsx +31 -0
  449. package/src/modules/panels/state/PanelSplitHandles.tsx +147 -0
  450. package/src/modules/panels/state/PanelSystemContext.splitLimits.spec.tsx +50 -0
  451. package/src/modules/panels/state/PanelSystemContext.tsx +289 -0
  452. package/src/modules/panels/state/StateContext.tsx +12 -0
  453. package/src/modules/panels/state/cleanup.ts +37 -0
  454. package/src/modules/panels/state/commands.ts +53 -0
  455. package/src/modules/panels/state/focus/Context.tsx +25 -0
  456. package/src/modules/panels/state/focus/logic.ts +57 -0
  457. package/src/modules/panels/state/groups/Context.tsx +25 -0
  458. package/src/modules/panels/state/groups/logic.ts +105 -0
  459. package/src/modules/panels/state/splitLimits.spec.ts +46 -0
  460. package/src/modules/panels/state/splitLimits.ts +90 -0
  461. package/src/modules/panels/state/state.spec.ts +49 -0
  462. package/src/modules/panels/state/tree/Context.tsx +24 -0
  463. package/src/modules/panels/state/tree/logic.spec.ts +34 -0
  464. package/src/modules/panels/state/tree/logic.ts +138 -0
  465. package/src/modules/panels/state/types.ts +142 -0
  466. package/src/modules/panels/system/PanelSystem.empty-tabbar.spec.tsx +53 -0
  467. package/src/modules/panels/system/PanelSystem.tab-click-activates.spec.tsx +44 -0
  468. package/src/modules/panels/system/PanelSystem.tab-reorder.spec.tsx +64 -0
  469. package/src/modules/panels/system/PanelSystem.tabs-no-dup.spec.tsx +57 -0
  470. package/src/modules/panels/system/PanelSystem.tsx +206 -0
  471. package/src/modules/pivot/PivotContent.spec.tsx +179 -0
  472. package/src/modules/pivot/PivotContent.tsx +77 -0
  473. package/src/modules/pivot/SwipePivotContent.debug.tmp.tsx +237 -0
  474. package/src/modules/pivot/SwipePivotContent.position.spec.tsx +171 -0
  475. package/src/modules/pivot/SwipePivotContent.spec.tsx +494 -0
  476. package/src/modules/pivot/SwipePivotContent.test.tsx +502 -0
  477. package/src/modules/pivot/SwipePivotContent.tsx +197 -0
  478. package/src/modules/pivot/SwipePivotTabBar.spec.tsx +882 -0
  479. package/src/modules/pivot/SwipePivotTabBar.tsx +583 -0
  480. package/src/modules/pivot/index.ts +8 -0
  481. package/src/modules/pivot/scaleInputState.spec.ts +219 -0
  482. package/src/modules/pivot/scaleInputState.ts +66 -0
  483. package/src/modules/pivot/types.ts +139 -0
  484. package/src/modules/pivot/usePivot.spec.ts +635 -0
  485. package/src/modules/pivot/usePivot.spec.tsx +186 -0
  486. package/src/modules/pivot/usePivot.tsx +345 -0
  487. package/src/modules/pivot/usePivotSwipeInput.spec.ts +708 -0
  488. package/src/modules/pivot/usePivotSwipeInput.ts +136 -0
  489. package/src/modules/resizer/useResizeDrag.ts +94 -0
  490. package/src/modules/stack/StackContent.spec.tsx +264 -0
  491. package/src/modules/stack/StackContent.tsx +111 -0
  492. package/src/modules/stack/SwipeStackContent.spec.tsx +1564 -0
  493. package/src/modules/stack/SwipeStackContent.tsx +366 -0
  494. package/src/modules/stack/SwipeStackOutlet.spec.tsx +250 -0
  495. package/src/modules/stack/SwipeStackOutlet.tsx +221 -0
  496. package/src/modules/stack/computeStackContentState.spec.ts +281 -0
  497. package/src/modules/stack/computeStackContentState.ts +304 -0
  498. package/src/modules/stack/computeSwipeStackTransform.spec.ts +186 -0
  499. package/src/modules/stack/computeSwipeStackTransform.ts +145 -0
  500. package/src/modules/stack/swipeTransitionContinuity.spec.tsx +1133 -0
  501. package/src/modules/stack/types.ts +226 -0
  502. package/src/modules/stack/useStackAnimationState.spec.ts +188 -0
  503. package/src/modules/stack/useStackAnimationState.ts +143 -0
  504. package/src/modules/stack/useStackNavigation.spec.ts +672 -0
  505. package/src/modules/stack/useStackNavigation.tsx +393 -0
  506. package/src/modules/stack/useStackSwipeInput.spec.ts +309 -0
  507. package/src/modules/stack/useStackSwipeInput.ts +139 -0
  508. package/src/modules/window/useDrawerState.ts +81 -0
  509. package/src/modules/window/useFloatingState.spec.ts +252 -0
  510. package/src/modules/window/useFloatingState.ts +141 -0
  511. package/src/panels/index.ts +119 -0
  512. package/src/pivot/index.ts +19 -0
  513. package/src/resizer/index.ts +68 -0
  514. package/src/stack/index.ts +91 -0
  515. package/src/sticky-header/StickyArea.tsx +193 -0
  516. package/src/sticky-header/calculateStickyMetrics.spec.ts +105 -0
  517. package/src/sticky-header/calculateStickyMetrics.ts +50 -0
  518. package/src/sticky-header/index.ts +18 -0
  519. package/src/sticky-header/types.ts +68 -0
  520. package/src/types.ts +341 -0
  521. package/src/utils/CSSMatrix.ts +321 -0
  522. package/src/utils/css.ts +65 -0
  523. package/src/utils/dialogUtils.ts +43 -0
  524. package/src/utils/math.ts +18 -0
  525. package/src/utils/polyfills/createDialogPolyfill.ts +18 -0
  526. package/src/utils/typedActions.ts +103 -0
  527. package/src/vite-env.d.ts +6 -0
  528. package/src/window/index.ts +69 -0
  529. package/dist/GridLayout-BQQ63eA1.cjs +0 -2
  530. package/dist/GridLayout-BQQ63eA1.cjs.map +0 -1
  531. package/dist/GridLayout-CJTKq7Mp.js +0 -1465
  532. package/dist/GridLayout-CJTKq7Mp.js.map +0 -1
  533. package/dist/sticky-header/StickyHeader.d.ts +0 -53
  534. package/dist/styles-CA2_zLZt.js +0 -52
  535. package/dist/styles-CA2_zLZt.js.map +0 -1
  536. package/dist/styles-PsqGOEJP.cjs +0 -2
  537. package/dist/styles-PsqGOEJP.cjs.map +0 -1
  538. package/dist/usePivot-7ctin_P_.cjs +0 -2
  539. package/dist/usePivot-7ctin_P_.cjs.map +0 -1
  540. package/dist/usePivot-CgQxB8rc.js +0 -124
  541. package/dist/usePivot-CgQxB8rc.js.map +0 -1
@@ -0,0 +1,155 @@
1
+ /**
2
+ * @file Router-like builder for GridLayout
3
+ *
4
+ * Provides a React Router–style configuration API to declare panel layers.
5
+ * Converts route objects to the existing GridLayout props without magic.
6
+ */
7
+ import * as React from "react";
8
+ import type {
9
+ DrawerBehavior,
10
+ FloatingBehavior,
11
+ LayerDefinition,
12
+ LayerPositionMode,
13
+ PanelLayoutConfig,
14
+ PanelLayoutProps,
15
+ PivotBehavior,
16
+ WindowPosition,
17
+ } from "../types";
18
+ import { GridLayout } from "../components/grid/GridLayout";
19
+
20
+ export type PanelRoute = {
21
+ /** Unique id for the layer. Required. */
22
+ id: string;
23
+ /** React node to render for this layer. Required. */
24
+ element: React.ReactNode;
25
+ /** Visibility flag. Defaults to visible. */
26
+ visible?: boolean;
27
+
28
+ /**
29
+ * Grid placement key. When using `positionMode: 'grid'` (default), this must be provided.
30
+ * Using `area` mirrors React Router's route path intent but for grid cells.
31
+ */
32
+ area?: string;
33
+
34
+ /** Explicit positioning mode; defaults to 'grid' unless floating/drawer implies otherwise. */
35
+ positionMode?: LayerPositionMode;
36
+ /** Offsets when using non-grid modes. */
37
+ position?: WindowPosition;
38
+ /** Optional stacking order. */
39
+ zIndex?: number;
40
+ /** Optional dimensions; required for resizable/draggable floating layers. */
41
+ width?: number | string;
42
+ height?: number | string;
43
+ /** Pointer events control. */
44
+ pointerEvents?: boolean | "auto" | "none";
45
+ /** Optional style overrides. */
46
+ style?: React.CSSProperties;
47
+ /** Optional backdrop style (drawer). */
48
+ backdropStyle?: React.CSSProperties;
49
+
50
+ /** Drawer behavior for mobile-friendly panels. */
51
+ drawer?: DrawerBehavior;
52
+ /** Floating window configuration. */
53
+ floating?: FloatingBehavior;
54
+ /** Pivot behavior for content switching. */
55
+ pivot?: PivotBehavior;
56
+
57
+ /**
58
+ * Optional child declarations; purely a grouping convenience.
59
+ * Children are flattened; no implicit inheritance.
60
+ */
61
+ children?: PanelRoute[];
62
+ };
63
+
64
+ const toLayer = (route: PanelRoute): LayerDefinition => {
65
+ const inferredMode: LayerPositionMode = resolveRoutePositionMode(route);
66
+
67
+ if (inferredMode === "grid") {
68
+ if (!route.area) {
69
+ throw new Error(`PanelRoute ${route.id} must specify 'area' for grid placement.`);
70
+ }
71
+ }
72
+
73
+ return {
74
+ id: route.id,
75
+ component: route.element,
76
+ visible: route.visible,
77
+ gridArea: route.area,
78
+ positionMode: inferredMode,
79
+ position: route.position,
80
+ zIndex: route.zIndex,
81
+ width: route.width,
82
+ height: route.height,
83
+ pointerEvents: route.pointerEvents,
84
+ style: route.style,
85
+ drawer: route.drawer,
86
+ floating: route.floating,
87
+ pivot: route.pivot,
88
+ backdropStyle: route.backdropStyle,
89
+ } satisfies LayerDefinition;
90
+ };
91
+
92
+ const resolveRoutePositionMode = (route: PanelRoute): LayerPositionMode => {
93
+ if (route.positionMode) {
94
+ return route.positionMode;
95
+ }
96
+ if (route.floating) {
97
+ // Embedded => absolute, Popup => relative (handled by renderer); keep explicitness here.
98
+ return "absolute";
99
+ }
100
+ if (route.drawer) {
101
+ return "grid";
102
+ }
103
+ return "grid";
104
+ };
105
+
106
+ const flattenRoutes = (routes: PanelRoute[]): PanelRoute[] => {
107
+ const result: PanelRoute[] = [];
108
+ const walk = (node: PanelRoute): void => {
109
+ result.push(node);
110
+ if (node.children) {
111
+ node.children.forEach((child) => walk(child));
112
+ }
113
+ };
114
+ routes.forEach((r) => walk(r));
115
+ return result;
116
+ };
117
+
118
+ const validateUniqueIds = (routes: PanelRoute[]): void => {
119
+ const seen = new Set<string>();
120
+ routes.forEach((r) => {
121
+ if (seen.has(r.id)) {
122
+ throw new Error(`Duplicate PanelRoute id detected: ${r.id}`);
123
+ }
124
+ seen.add(r.id);
125
+ });
126
+ };
127
+
128
+ export const buildLayersFromRoutes = (routes: PanelRoute[]): LayerDefinition[] => {
129
+ const flat = flattenRoutes(routes);
130
+ validateUniqueIds(flat);
131
+ return flat.map((r) => toLayer(r));
132
+ };
133
+
134
+ export const createPanelLayoutFromRoutes = (input: {
135
+ config: PanelLayoutConfig;
136
+ routes: PanelRoute[];
137
+ style?: React.CSSProperties;
138
+ }): PanelLayoutProps => {
139
+ const layers = buildLayersFromRoutes(input.routes);
140
+ return {
141
+ config: input.config,
142
+ layers,
143
+ };
144
+ };
145
+
146
+ export type PanelLayoutRouterProps = {
147
+ config: PanelLayoutConfig;
148
+ routes: PanelRoute[];
149
+ style?: React.CSSProperties;
150
+ };
151
+
152
+ export const PanelLayoutRouter: React.FC<PanelLayoutRouterProps> = ({ config, routes, style }) => {
153
+ const layers = React.useMemo(() => buildLayersFromRoutes(routes), [routes]);
154
+ return <GridLayout config={config} layers={layers} style={style} />;
155
+ };
@@ -0,0 +1,280 @@
1
+ /**
2
+ * @file Style constants for library components
3
+ *
4
+ * All style values are defined here with CSS variable fallbacks.
5
+ * Users can override these via CSS variables (--rpl-*).
6
+ *
7
+ * All CSS variables use the unified prefix: --rpl- (react-panel-layout)
8
+ *
9
+ * @example
10
+ * // In your CSS:
11
+ * :root {
12
+ * --rpl-color-primary: #ff0000;
13
+ * }
14
+ */
15
+
16
+ // ========================================
17
+ // CSS VARIABLE PREFIX
18
+ // ========================================
19
+
20
+ /**
21
+ * Unified CSS variable prefix for all react-panel-layout variables
22
+ * All theme variables use this prefix: --rpl-*
23
+ */
24
+ export const CSS_VAR_PREFIX = "rpl";
25
+
26
+ // ========================================
27
+ // COLORS
28
+ // ========================================
29
+
30
+ /**
31
+ * Tab colors - used in TabBar component
32
+ */
33
+ export const COLOR_TAB_FG = "var(--rpl-color-tab-fg, #d5d7de)";
34
+ export const COLOR_TAB_ACTIVE_BG = "var(--rpl-color-tab-active-bg, #2b2d35)";
35
+ export const COLOR_TABBAR_BG = "var(--rpl-color-tabbar-bg, #1e1f24)";
36
+
37
+ /**
38
+ * Panel colors - used in panel layouts
39
+ */
40
+ export const COLOR_PANEL_BORDER = "var(--rpl-color-panel-border, rgba(0, 0, 0, 0.3))";
41
+ export const COLOR_PANEL_BG = "var(--rpl-color-panel-bg, #0b0b0c)";
42
+
43
+ /**
44
+ * Primary color - used for resize handles, highlights
45
+ */
46
+ export const COLOR_PRIMARY = "var(--rpl-color-primary, #2196f3)";
47
+ export const COLOR_RESIZE_HANDLE_IDLE = "var(--rpl-color-resize-handle-idle, rgba(255, 255, 255, 0.0))";
48
+ export const COLOR_RESIZE_HANDLE_HOVER = "var(--rpl-color-resize-handle-hover, rgba(33, 150, 243, 0.35))";
49
+ export const COLOR_RESIZE_HANDLE_ACTIVE = "var(--rpl-color-resize-handle-active, rgba(33, 150, 243, 0.55))";
50
+
51
+ /**
52
+ * Drop suggestion overlay colors
53
+ */
54
+ export const COLOR_DROP_SUGGEST_BORDER = "var(--rpl-color-drop-suggest-border, rgba(90, 150, 255, 0.9))";
55
+ export const COLOR_DROP_SUGGEST_BG = "var(--rpl-color-drop-suggest-bg, rgba(90, 150, 255, 0.15))";
56
+
57
+ /**
58
+ * Tab drag overlay colors
59
+ */
60
+ export const COLOR_TABDRAG_BG = "var(--rpl-color-tabdrag-bg, rgba(34, 36, 42, 0.95))";
61
+ export const COLOR_TABDRAG_FG = "var(--rpl-color-tabdrag-fg, #e9ebf0)";
62
+ export const COLOR_TABDRAG_BORDER = "var(--rpl-color-tabdrag-border, rgba(120, 160, 255, 0.6))";
63
+ export const COLOR_TABDRAG_SHADOW = "var(--rpl-color-tabdrag-shadow, 0 6px 20px rgba(0, 0, 0, 0.35))";
64
+
65
+ /**
66
+ * Insert guide colors
67
+ */
68
+ export const COLOR_INSERT_GUIDE = "var(--rpl-color-insert-guide, rgba(120, 160, 255, 0.95))";
69
+ export const COLOR_INSERT_GUIDE_SHADOW = "var(--rpl-color-insert-guide-shadow, 0 0 0 2px rgba(120, 160, 255, 0.2))";
70
+
71
+ /**
72
+ * Node editor / floating panel colors
73
+ * These are used by Drawer and FloatingPanelFrame components
74
+ */
75
+ export const COLOR_NODE_EDITOR_SURFACE = "var(--rpl-color-surface, #fff)";
76
+ export const COLOR_NODE_EDITOR_SURFACE_2 = "var(--rpl-color-surface-2, #fafafa)";
77
+ export const COLOR_NODE_EDITOR_BORDER = "var(--rpl-color-border, #e5e7eb)";
78
+ export const COLOR_NODE_EDITOR_MUTED_FG = "var(--rpl-color-muted-fg, #6b7280)";
79
+ export const COLOR_NODE_EDITOR_CARD_SHADOW = "var(--rpl-shadow-card, 0 2px 10px rgba(0, 0, 0, 0.08))";
80
+ export const COLOR_DRAWER_BACKDROP = "var(--rpl-color-drawer-backdrop, rgba(0, 0, 0, 0.5))";
81
+
82
+ /**
83
+ * Drawer transitions
84
+ */
85
+ export const DRAWER_TRANSITION_DURATION = "var(--rpl-drawer-transition-duration, 220ms)";
86
+ export const DRAWER_TRANSITION_EASING = "var(--rpl-drawer-transition-easing, cubic-bezier(0.22, 1, 0.36, 1))";
87
+
88
+ /**
89
+ * Pivot animations
90
+ * User defines @keyframes in their CSS and references via these tokens.
91
+ * - Enter: Applied when content becomes active
92
+ * - Leave: Applied when content becomes inactive
93
+ */
94
+ export const PIVOT_ANIMATION_ENTER = "var(--rpl-pivot-animation-enter, none)";
95
+ export const PIVOT_ANIMATION_LEAVE = "var(--rpl-pivot-animation-leave, none)";
96
+
97
+ /**
98
+ * Pivot swipe animations
99
+ * Used by SwipePivotContent for snap-back animation after swipe ends.
100
+ */
101
+ export const PIVOT_SWIPE_SNAP_DURATION = "var(--rpl-pivot-swipe-snap-duration, 300ms)";
102
+ export const PIVOT_SWIPE_SNAP_EASING = "var(--rpl-pivot-swipe-snap-easing, cubic-bezier(0.22, 1, 0.36, 1))";
103
+
104
+ /**
105
+ * Stack animations
106
+ * User defines @keyframes in their CSS and references via these tokens.
107
+ * - Push: Applied when a new panel is pushed onto the stack
108
+ * - Pop: Applied when a panel is popped from the stack
109
+ */
110
+ export const STACK_ANIMATION_PUSH = "var(--rpl-stack-animation-push, none)";
111
+ export const STACK_ANIMATION_POP = "var(--rpl-stack-animation-pop, none)";
112
+ export const STACK_TRANSITION_DURATION = "var(--rpl-stack-transition-duration, 350ms)";
113
+ export const STACK_TRANSITION_EASING = "var(--rpl-stack-transition-easing, cubic-bezier(0.32, 0.72, 0, 1))";
114
+
115
+ // ========================================
116
+ // SIZING & SPACING
117
+ // ========================================
118
+
119
+ /**
120
+ * Tab sizing
121
+ */
122
+ export const SIZE_TAB_FONT = "var(--rpl-size-tab-font, 12px)";
123
+ export const SPACE_TAB_PADDING_Y = "var(--rpl-space-tab-padding-y, 4px)";
124
+ export const SPACE_TAB_PADDING_X = "var(--rpl-space-tab-padding-x, 8px)";
125
+
126
+ /**
127
+ * Tabbar spacing
128
+ */
129
+ export const SPACE_TABBAR_GAP = "var(--rpl-space-tabbar-gap, 6px)";
130
+ export const SPACE_TABBAR_PADDING_Y = "var(--rpl-space-tabbar-padding-y, 4px)";
131
+ export const SPACE_TABBAR_PADDING_X = "var(--rpl-space-tabbar-padding-x, 6px)";
132
+
133
+ /**
134
+ * Border radius (decorative, using CSS variables)
135
+ */
136
+ export const RADIUS_TAB = "var(--rpl-radius-tab, 4px)";
137
+ export const RADIUS_SUGGEST = "var(--rpl-radius-suggest, 6px)";
138
+
139
+ /**
140
+ * Border widths
141
+ */
142
+ export const SIZE_SUGGEST_BORDER = "var(--rpl-size-suggest-border, 2px)";
143
+
144
+ /**
145
+ * Handle thicknesses
146
+ * Note: SIZE_GRID_HANDLE_THICKNESS is kept as number for JavaScript calculations
147
+ */
148
+ export const SIZE_GRID_HANDLE_THICKNESS = 4; // Used in GridTrackResizeHandle.tsx for offset calculation
149
+ export const SIZE_RESIZE_HANDLE_THICKNESS = "var(--rpl-size-resize-handle-thickness, 4px)";
150
+ export const SIZE_SPLIT_HANDLE_THICKNESS = "var(--rpl-size-split-handle-thickness, 6px)";
151
+
152
+ /**
153
+ * Drop suggest padding
154
+ */
155
+ export const SPACE_DROP_SUGGEST_PADDING = "var(--rpl-space-drop-suggest-padding, 6px)";
156
+
157
+ // ========================================
158
+ // Z-INDEXES
159
+ // ========================================
160
+
161
+ export const Z_OVERLAY = "var(--rpl-z-overlay, 9998)";
162
+ export const Z_TABDRAG_OVERLAY = "var(--rpl-z-tabdrag-overlay, 9999)";
163
+ export const Z_DIALOG_OVERLAY = "var(--rpl-z-dialog-overlay, 10000)";
164
+
165
+ // ========================================
166
+ // COMPONENT-SPECIFIC CONSTANTS
167
+ // ========================================
168
+
169
+ /**
170
+ * Resize Handle
171
+ */
172
+ export const RESIZE_HANDLE_THICKNESS = SIZE_RESIZE_HANDLE_THICKNESS;
173
+ export const RESIZE_HANDLE_Z_INDEX = "var(--rpl-z-resize-handle, 1000)";
174
+
175
+ /**
176
+ * Grid Track Resize Handle
177
+ */
178
+ export const GRID_HANDLE_THICKNESS = SIZE_GRID_HANDLE_THICKNESS;
179
+
180
+ /**
181
+ * Grid Layer Resize Handles
182
+ */
183
+ export const GRID_LAYER_CORNER_HIT_SIZE = "var(--rpl-size-grid-layer-corner-hit, 14px)";
184
+ export const GRID_LAYER_EDGE_HIT_THICKNESS = "var(--rpl-size-grid-layer-edge-hit-thickness, 12px)";
185
+
186
+ /**
187
+ * Drop Suggest Overlay
188
+ */
189
+ export const DROP_SUGGEST_Z_INDEX = Z_OVERLAY;
190
+ export const DROP_SUGGEST_BORDER_WIDTH = SIZE_SUGGEST_BORDER;
191
+ export const DROP_SUGGEST_BORDER_RADIUS = RADIUS_SUGGEST;
192
+ export const DROP_SUGGEST_BORDER_COLOR = COLOR_DROP_SUGGEST_BORDER;
193
+ export const DROP_SUGGEST_BG_COLOR = COLOR_DROP_SUGGEST_BG;
194
+ export const DROP_SUGGEST_PADDING = SPACE_DROP_SUGGEST_PADDING;
195
+ export const DROP_SUGGEST_PADDING_PX = 6;
196
+
197
+ /**
198
+ * Tab Drag Overlay
199
+ */
200
+ export const TAB_DRAG_OVERLAY_Z_INDEX = Z_TABDRAG_OVERLAY;
201
+ export const TAB_DRAG_PREVIEW_OFFSET_X = "var(--rpl-space-tab-drag-preview-offset-x, 12px)";
202
+ export const TAB_DRAG_PREVIEW_OFFSET_Y = "var(--rpl-space-tab-drag-preview-offset-y, 12px)";
203
+ export const TAB_DRAG_PREVIEW_BORDER_RADIUS = "var(--rpl-radius-tab-drag-preview, 6px)";
204
+ export const TAB_DRAG_PREVIEW_PADDING_Y = "var(--rpl-space-tab-drag-preview-padding-y, 4px)";
205
+ export const TAB_DRAG_PREVIEW_PADDING_X = "var(--rpl-space-tab-drag-preview-padding-x, 8px)";
206
+ export const TAB_DRAG_PREVIEW_FONT_SIZE = "var(--rpl-size-tab-drag-preview-font, 12px)";
207
+ export const TAB_DRAG_INSERT_GUIDE_WIDTH = "var(--rpl-size-tab-drag-insert-guide-width, 2px)";
208
+ export const TAB_DRAG_INSERT_GUIDE_BORDER_RADIUS = "var(--rpl-radius-tab-drag-insert-guide, 1px)";
209
+ export const TAB_DRAG_PREVIEW_BG_COLOR = COLOR_TABDRAG_BG;
210
+ export const TAB_DRAG_PREVIEW_FG_COLOR = COLOR_TABDRAG_FG;
211
+ export const TAB_DRAG_PREVIEW_BORDER_COLOR = COLOR_TABDRAG_BORDER;
212
+ export const TAB_DRAG_PREVIEW_SHADOW = COLOR_TABDRAG_SHADOW;
213
+ export const TAB_DRAG_INSERT_GUIDE_COLOR = COLOR_INSERT_GUIDE;
214
+ export const TAB_DRAG_INSERT_GUIDE_SHADOW = COLOR_INSERT_GUIDE_SHADOW;
215
+
216
+ /**
217
+ * Dialog Overlay
218
+ */
219
+ export const DIALOG_OVERLAY_Z_INDEX = Z_DIALOG_OVERLAY;
220
+
221
+ /**
222
+ * Floating Panel Frame
223
+ */
224
+ export const FLOATING_PANEL_BORDER_RADIUS = "var(--rpl-radius-floating-panel, 8px)";
225
+ export const FLOATING_PANEL_GAP = "var(--rpl-space-floating-panel-gap, 8px)";
226
+ export const FLOATING_PANEL_HEADER_PADDING_Y = "var(--rpl-space-floating-panel-header-padding-y, 8px)";
227
+ export const FLOATING_PANEL_HEADER_PADDING_X = "var(--rpl-space-floating-panel-header-padding-x, 12px)";
228
+ export const FLOATING_PANEL_CONTENT_PADDING = "var(--rpl-space-floating-panel-content-padding, 12px)";
229
+ export const FLOATING_PANEL_META_FONT_SIZE = "var(--rpl-size-floating-panel-meta-font, 12px)";
230
+ export const FLOATING_PANEL_CONTROLS_GAP = "var(--rpl-space-floating-panel-controls-gap, 6px)";
231
+ export const FLOATING_PANEL_CLOSE_BUTTON_FONT_SIZE = "var(--rpl-size-floating-panel-close-button-font, 1.25rem)";
232
+ export const FLOATING_PANEL_CLOSE_BUTTON_PADDING =
233
+ "var(--rpl-space-floating-panel-close-button-padding, 0.25rem 0.5rem)";
234
+ export const FLOATING_PANEL_SURFACE_COLOR = COLOR_NODE_EDITOR_SURFACE;
235
+ export const FLOATING_PANEL_SURFACE_2_COLOR = COLOR_NODE_EDITOR_SURFACE_2;
236
+ export const FLOATING_PANEL_BORDER_COLOR = COLOR_NODE_EDITOR_BORDER;
237
+ export const FLOATING_PANEL_MUTED_FG_COLOR = COLOR_NODE_EDITOR_MUTED_FG;
238
+ export const FLOATING_PANEL_SHADOW = COLOR_NODE_EDITOR_CARD_SHADOW;
239
+
240
+ /**
241
+ * Drawer
242
+ */
243
+ export const DRAWER_HEADER_PADDING_Y = "var(--rpl-space-drawer-header-padding-y, 10px)";
244
+ export const DRAWER_HEADER_PADDING_X = "var(--rpl-space-drawer-header-padding-x, 12px)";
245
+ export const DRAWER_HEADER_GAP = "var(--rpl-space-drawer-header-gap, 8px)";
246
+ export const DRAWER_CONTENT_PADDING = "var(--rpl-space-drawer-content-padding, 12px)";
247
+ export const DRAWER_CLOSE_BUTTON_FONT_SIZE = "var(--rpl-size-drawer-close-button-font, 18px)";
248
+ export const DRAWER_SURFACE_COLOR = COLOR_NODE_EDITOR_SURFACE;
249
+ export const DRAWER_BORDER_COLOR = COLOR_NODE_EDITOR_BORDER;
250
+ export const DRAWER_SHADOW = COLOR_NODE_EDITOR_CARD_SHADOW;
251
+
252
+ /**
253
+ * Split Handles
254
+ */
255
+ export const SPLIT_HANDLE_THICKNESS = SIZE_SPLIT_HANDLE_THICKNESS;
256
+
257
+ /**
258
+ * HorizontalDivider
259
+ */
260
+ export const HORIZONTAL_DIVIDER_WIDTH = "var(--rpl-size-horizontal-divider-width, 4px)";
261
+ export const HORIZONTAL_DIVIDER_HIT_AREA_OFFSET = "var(--rpl-space-horizontal-divider-hit-area-offset, 4px)";
262
+
263
+ /**
264
+ * Modal
265
+ */
266
+ export const COLOR_MODAL_BACKDROP = "var(--rpl-color-modal-backdrop, rgba(0, 0, 0, 0.5))";
267
+ export const MODAL_TRANSITION_DURATION = "var(--rpl-modal-transition-duration, 200ms)";
268
+ export const MODAL_TRANSITION_EASING = "var(--rpl-modal-transition-easing, ease-out)";
269
+ export const MODAL_MIN_WIDTH = "var(--rpl-modal-min-width, 280px)";
270
+ export const MODAL_MAX_WIDTH = "var(--rpl-modal-max-width, 90vw)";
271
+ export const MODAL_MAX_HEIGHT = "var(--rpl-modal-max-height, 85vh)";
272
+
273
+ /**
274
+ * Alert Dialog
275
+ */
276
+ export const ALERT_DIALOG_WIDTH = "var(--rpl-alert-dialog-width, 320px)";
277
+ export const ALERT_DIALOG_BUTTON_GAP = "var(--rpl-alert-dialog-button-gap, 8px)";
278
+ export const ALERT_DIALOG_ACTIONS_PADDING = "var(--rpl-alert-dialog-actions-padding, 12px)";
279
+ export const ALERT_DIALOG_MESSAGE_PADDING = "var(--rpl-alert-dialog-message-padding, 16px)";
280
+ export const ALERT_DIALOG_INPUT_MARGIN_TOP = "var(--rpl-alert-dialog-input-margin-top, 12px)";
@@ -0,0 +1,258 @@
1
+ .sidebar {
2
+ height: 100%;
3
+ background: var(--rpl-demo-sidebar-bg);
4
+ color: var(--rpl-demo-text-primary);
5
+ display: flex;
6
+ flex-direction: column;
7
+ overflow: auto;
8
+ border-right: 1px solid var(--rpl-demo-sidebar-border);
9
+ font-family: var(--rpl-demo-font-family);
10
+ font-size: var(--rpl-demo-font-size-sm);
11
+ }
12
+
13
+ .sidebarHeader {
14
+ padding: var(--rpl-demo-space-lg) var(--rpl-demo-space-lg) var(--rpl-demo-space-md);
15
+ border-bottom: none;
16
+ margin-bottom: var(--rpl-demo-space-sm);
17
+ }
18
+
19
+ .sidebarTitle {
20
+ margin: 0;
21
+ font-size: var(--rpl-demo-font-size-lg);
22
+ font-weight: 700;
23
+ letter-spacing: -0.02em;
24
+ color: var(--rpl-demo-text-primary);
25
+ background: var(--rpl-demo-gradient-text);
26
+ background-clip: text;
27
+ -webkit-background-clip: text;
28
+ -webkit-text-fill-color: transparent;
29
+ display: inline-block;
30
+ }
31
+
32
+ .sidebarSubtitle {
33
+ margin: 4px 0 0;
34
+ font-size: var(--rpl-demo-font-size-xs);
35
+ color: var(--rpl-demo-text-secondary);
36
+ font-weight: 500;
37
+ letter-spacing: 0.02em;
38
+ text-transform: uppercase;
39
+ opacity: 0.8;
40
+ }
41
+
42
+ .nav {
43
+ flex: 1;
44
+ padding: 0 var(--rpl-demo-space-md);
45
+ display: flex;
46
+ flex-direction: column;
47
+ gap: 2px;
48
+ }
49
+
50
+ .navCategory {
51
+ margin: 4px 0;
52
+ }
53
+
54
+ .navCategorySummary {
55
+ padding: 8px 12px;
56
+ font-size: var(--rpl-demo-font-size-sm);
57
+ font-weight: 600;
58
+ color: var(--rpl-demo-text-secondary);
59
+ display: flex;
60
+ align-items: center;
61
+ gap: 10px;
62
+ cursor: pointer;
63
+ list-style: none;
64
+ border-radius: var(--rpl-demo-radius-md);
65
+ transition: var(--rpl-demo-transition);
66
+ }
67
+
68
+ .navCategorySummary:hover {
69
+ color: var(--rpl-demo-text-primary);
70
+ background: rgba(0, 0, 0, 0.03);
71
+ }
72
+
73
+ .navCategorySummary::-webkit-details-marker {
74
+ display: none;
75
+ }
76
+
77
+ .navArrow {
78
+ color: var(--rpl-demo-text-tertiary);
79
+ transition: transform 0.2s ease;
80
+ font-size: 16px;
81
+ }
82
+
83
+ .navCategory[open] .navArrow {
84
+ transform: rotate(90deg);
85
+ }
86
+
87
+ .navGroupChildren {
88
+ padding-left: 0;
89
+ margin-top: 2px;
90
+ display: flex;
91
+ flex-direction: column;
92
+ gap: 2px;
93
+ }
94
+
95
+ .navLink {
96
+ display: flex;
97
+ align-items: center;
98
+ gap: 10px;
99
+ padding: 8px 12px;
100
+ color: var(--rpl-demo-text-secondary);
101
+ text-decoration: none;
102
+ font-size: var(--rpl-demo-font-size-sm);
103
+ background: transparent;
104
+ border-radius: var(--rpl-demo-radius-md);
105
+ transition: var(--rpl-demo-transition);
106
+ font-weight: 500;
107
+ }
108
+
109
+ .navLink:hover {
110
+ background: rgba(0, 0, 0, 0.03);
111
+ color: var(--rpl-demo-text-primary);
112
+ }
113
+
114
+ .navLink.active {
115
+ background: rgba(0, 122, 255, 0.08);
116
+ color: var(--rpl-demo-accent);
117
+ font-weight: 600;
118
+ }
119
+
120
+ .navIcon {
121
+ font-size: 18px;
122
+ display: flex;
123
+ align-items: center;
124
+ justify-content: center;
125
+ color: inherit;
126
+ opacity: 0.8;
127
+ }
128
+
129
+ .navLink.active .navIcon {
130
+ opacity: 1;
131
+ }
132
+
133
+ .navChildLink {
134
+ display: block;
135
+ padding: 8px 12px 8px 40px;
136
+ color: var(--rpl-demo-text-secondary);
137
+ text-decoration: none;
138
+ font-size: var(--rpl-demo-font-size-sm);
139
+ background: transparent;
140
+ border-radius: var(--rpl-demo-radius-md);
141
+ transition: var(--rpl-demo-transition);
142
+ font-weight: 400;
143
+ }
144
+
145
+ .navChildLink:hover {
146
+ background: rgba(0, 0, 0, 0.03);
147
+ color: var(--rpl-demo-text-primary);
148
+ }
149
+
150
+ .navChildLink.active {
151
+ color: var(--rpl-demo-accent);
152
+ background: rgba(0, 122, 255, 0.08);
153
+ font-weight: 500;
154
+ }
155
+
156
+ .sidebarFooter {
157
+ padding: var(--rpl-demo-space-lg);
158
+ border-top: 1px solid var(--rpl-demo-sidebar-border);
159
+ font-size: var(--rpl-demo-font-size-xs);
160
+ color: var(--rpl-demo-text-tertiary);
161
+ text-align: center;
162
+ }
163
+
164
+ /**
165
+ * Stacked (mobile) layout wrapper
166
+ */
167
+ .stackedMainContent {
168
+
169
+ background: var(--rpl-demo-bg);
170
+ display: flex;
171
+ flex-direction: column;
172
+ position: relative;
173
+ }
174
+
175
+ .stackedContentArea {
176
+ flex: 1;
177
+ min-height: 0;
178
+ overflow: auto;
179
+ padding-top: 54px;
180
+ }
181
+
182
+ .mobileHeader {
183
+ display: none;
184
+ align-items: center;
185
+ gap: var(--rpl-demo-space-sm);
186
+ padding: var(--rpl-demo-space-sm) var(--rpl-demo-space-md);
187
+ border-bottom: 1px solid var(--rpl-demo-sidebar-border);
188
+ position: sticky;
189
+ top: 0;
190
+ z-index: 2;
191
+ background: var(--rpl-demo-bg);
192
+ }
193
+
194
+ .stackedMobileHeader {
195
+ position: fixed;
196
+ top: 0;
197
+ left: 0;
198
+ width: 100%;
199
+ z-index: 10;
200
+ }
201
+
202
+ .mobileNavButton {
203
+ display: inline-flex;
204
+ align-items: center;
205
+ gap: 8px;
206
+ border: 1px solid var(--rpl-demo-sidebar-border);
207
+ border-radius: var(--rpl-demo-radius-md);
208
+ padding: 8px 12px;
209
+ background: var(--rpl-demo-control-bg);
210
+ color: var(--rpl-demo-text-primary);
211
+ cursor: pointer;
212
+ transition: var(--rpl-demo-transition);
213
+ }
214
+
215
+ .mobileNavButton:hover {
216
+ background: var(--rpl-demo-control-bg-hover);
217
+ }
218
+
219
+ .mobileNavButton:active {
220
+ background: var(--rpl-demo-control-bg-active);
221
+ }
222
+
223
+ .mobileNavLabel {
224
+ font-weight: 600;
225
+ font-size: var(--rpl-demo-font-size-sm);
226
+ }
227
+
228
+ .mobileTitle {
229
+ margin: 0;
230
+ font-size: var(--rpl-demo-font-size-lg);
231
+ font-weight: 700;
232
+ letter-spacing: -0.02em;
233
+ }
234
+
235
+ @media (max-width: 960px) {
236
+ .sidebar {
237
+ height: auto;
238
+ border-right: none;
239
+ border-bottom: 1px solid var(--rpl-demo-sidebar-border);
240
+ }
241
+
242
+ .sidebarHeader {
243
+ padding: var(--rpl-demo-space-md) var(--rpl-demo-space-md) var(--rpl-demo-space-sm);
244
+ text-align: center;
245
+ }
246
+
247
+ .nav {
248
+ padding: 0 var(--rpl-demo-space-sm) var(--rpl-demo-space-sm);
249
+ }
250
+
251
+ .sidebarFooter {
252
+ padding: var(--rpl-demo-space-md);
253
+ }
254
+
255
+ .mobileHeader {
256
+ display: flex;
257
+ }
258
+ }