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.
- package/dist/{FloatingPanelFrame-lLg-Lpg7.js → FloatingPanelFrame-3eU9AwPo.js} +11 -11
- package/dist/{FloatingPanelFrame-lLg-Lpg7.js.map → FloatingPanelFrame-3eU9AwPo.js.map} +1 -1
- package/dist/{FloatingPanelFrame-D9Cp2al1.cjs → FloatingPanelFrame-CEmXDvUA.cjs} +2 -2
- package/dist/{FloatingPanelFrame-D9Cp2al1.cjs.map → FloatingPanelFrame-CEmXDvUA.cjs.map} +1 -1
- package/dist/FloatingWindow-CUXnEtrb.js +827 -0
- package/dist/FloatingWindow-CUXnEtrb.js.map +1 -0
- package/dist/FloatingWindow-DMwyK0eK.cjs +2 -0
- package/dist/FloatingWindow-DMwyK0eK.cjs.map +1 -0
- package/dist/GridLayout-DKTg_N61.cjs +2 -0
- package/dist/GridLayout-DKTg_N61.cjs.map +1 -0
- package/dist/GridLayout-UWNxXw77.js +926 -0
- package/dist/GridLayout-UWNxXw77.js.map +1 -0
- package/dist/HorizontalDivider-DdxzfV0l.js +30 -0
- package/dist/HorizontalDivider-DdxzfV0l.js.map +1 -0
- package/dist/HorizontalDivider-_pgV4Mcv.cjs +2 -0
- package/dist/HorizontalDivider-_pgV4Mcv.cjs.map +1 -0
- package/dist/PanelSystem-BqUzNtf2.js +1946 -0
- package/dist/PanelSystem-BqUzNtf2.js.map +1 -0
- package/dist/PanelSystem-D603LKKv.cjs +3 -0
- package/dist/PanelSystem-D603LKKv.cjs.map +1 -0
- package/dist/ResizeHandle-CBcAS918.cjs +2 -0
- package/dist/ResizeHandle-CBcAS918.cjs.map +1 -0
- package/dist/ResizeHandle-CXjc1meV.js +119 -0
- package/dist/ResizeHandle-CXjc1meV.js.map +1 -0
- package/dist/SwipePivotTabBar-DWrCuwEI.js +411 -0
- package/dist/SwipePivotTabBar-DWrCuwEI.js.map +1 -0
- package/dist/SwipePivotTabBar-fjjXkpj7.cjs +2 -0
- package/dist/SwipePivotTabBar-fjjXkpj7.cjs.map +1 -0
- package/dist/components/gesture/SwipeSafeZone.d.ts +40 -0
- package/dist/components/window/Drawer.d.ts +3 -1
- package/dist/components/window/DrawerLayers.d.ts +1 -1
- package/dist/components/window/drawerStyles.d.ts +69 -0
- package/dist/components/window/drawerSwipeConfig.d.ts +29 -0
- package/dist/components/window/useDrawerSwipeTransform.d.ts +23 -0
- package/dist/config.cjs +1 -1
- package/dist/config.cjs.map +1 -1
- package/dist/config.js +11 -9
- package/dist/config.js.map +1 -1
- package/dist/constants/styles.d.ts +35 -4
- package/dist/dialog/index.d.ts +69 -0
- package/dist/floating.cjs +1 -1
- package/dist/floating.js +1 -1
- package/dist/grid/index.d.ts +58 -0
- package/dist/grid.cjs +2 -0
- package/dist/grid.cjs.map +1 -0
- package/dist/grid.js +13 -0
- package/dist/grid.js.map +1 -0
- package/dist/hooks/gesture/presets.d.ts +33 -0
- package/dist/hooks/gesture/testing/createGestureSimulator.d.ts +117 -0
- package/dist/hooks/gesture/thresholdValue.d.ts +44 -0
- package/dist/hooks/gesture/types.d.ts +297 -0
- package/dist/hooks/gesture/useDirectionalLock.d.ts +20 -0
- package/dist/hooks/gesture/useEdgeSwipeInput.d.ts +23 -0
- package/dist/hooks/gesture/useNativeGestureGuard.d.ts +23 -0
- package/dist/hooks/gesture/usePointerTracking.d.ts +22 -0
- package/dist/hooks/gesture/useScrollBoundary.d.ts +23 -0
- package/dist/hooks/gesture/useSwipeInput.d.ts +5 -0
- package/dist/hooks/gesture/utils.d.ts +59 -0
- package/dist/hooks/useAnimatedVisibility.d.ts +58 -0
- package/dist/hooks/useAnimationFrame.d.ts +86 -0
- package/dist/hooks/useOperationContinuity.d.ts +64 -0
- package/dist/hooks/useResizeObserver.d.ts +33 -1
- package/dist/hooks/useSharedElementTransition.d.ts +112 -0
- package/dist/hooks/useSnapAnimation.d.ts +54 -0
- package/dist/hooks/useSwipeContentTransform.d.ts +86 -0
- package/dist/index.cjs +1 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +25 -2006
- package/dist/index.js.map +1 -1
- package/dist/modules/dialog/AlertDialog.d.ts +9 -0
- package/dist/modules/dialog/DialogContainer.d.ts +37 -0
- package/dist/modules/dialog/Modal.d.ts +26 -0
- package/dist/modules/dialog/SwipeDialogContainer.d.ts +16 -0
- package/dist/modules/dialog/dialogAnimationUtils.d.ts +113 -0
- package/dist/modules/dialog/types.d.ts +183 -0
- package/dist/modules/dialog/useDialog.d.ts +39 -0
- package/dist/modules/dialog/useDialogContainer.d.ts +47 -0
- package/dist/modules/dialog/useDialogSwipeInput.d.ts +70 -0
- package/dist/modules/dialog/useDialogTransform.d.ts +82 -0
- package/dist/modules/drawer/types.d.ts +74 -0
- package/dist/modules/drawer/useDrawerSwipeInput.d.ts +24 -0
- package/dist/modules/pivot/PivotContent.d.ts +1 -1
- package/dist/modules/pivot/SwipePivotContent.d.ts +39 -0
- package/dist/modules/pivot/SwipePivotContent.debug.tmp.d.ts +25 -0
- package/dist/modules/pivot/SwipePivotContent.test.d.ts +1 -0
- package/dist/modules/pivot/SwipePivotTabBar.d.ts +92 -0
- package/dist/modules/pivot/index.d.ts +3 -0
- package/dist/modules/pivot/scaleInputState.d.ts +37 -0
- package/dist/modules/pivot/types.d.ts +67 -2
- package/dist/modules/pivot/usePivotSwipeInput.d.ts +68 -0
- package/dist/modules/stack/StackContent.d.ts +15 -0
- package/dist/modules/stack/SwipeStackContent.d.ts +66 -0
- package/dist/modules/stack/SwipeStackOutlet.d.ts +80 -0
- package/dist/modules/stack/computeStackContentState.d.ts +99 -0
- package/dist/modules/stack/computeSwipeStackTransform.d.ts +76 -0
- package/dist/modules/stack/types.d.ts +194 -0
- package/dist/modules/stack/useStackAnimationState.d.ts +32 -0
- package/dist/modules/stack/useStackNavigation.d.ts +23 -0
- package/dist/modules/stack/useStackSwipeInput.d.ts +27 -0
- package/dist/panels/index.d.ts +67 -0
- package/dist/panels.cjs +2 -0
- package/dist/panels.cjs.map +1 -0
- package/dist/panels.js +28 -0
- package/dist/panels.js.map +1 -0
- package/dist/pivot/index.d.ts +3 -0
- package/dist/pivot.cjs +1 -1
- package/dist/pivot.cjs.map +1 -1
- package/dist/pivot.js +20 -2
- package/dist/pivot.js.map +1 -1
- package/dist/resizer/index.d.ts +57 -0
- package/dist/resizer.cjs +2 -0
- package/dist/resizer.cjs.map +1 -0
- package/dist/resizer.js +8 -0
- package/dist/resizer.js.map +1 -0
- package/dist/stack/index.d.ts +72 -0
- package/dist/stack.cjs +2 -0
- package/dist/stack.cjs.map +1 -0
- package/dist/stack.js +721 -0
- package/dist/stack.js.map +1 -0
- package/dist/sticky-header/StickyArea.d.ts +38 -0
- package/dist/sticky-header/calculateStickyMetrics.d.ts +28 -0
- package/dist/sticky-header/index.d.ts +4 -4
- package/dist/sticky-header/types.d.ts +35 -22
- package/dist/sticky-header.cjs +1 -1
- package/dist/sticky-header.cjs.map +1 -1
- package/dist/sticky-header.js +73 -174
- package/dist/sticky-header.js.map +1 -1
- package/dist/styles-NkjuMOVS.js +57 -0
- package/dist/styles-NkjuMOVS.js.map +1 -0
- package/dist/styles-qf6ptVLD.cjs +2 -0
- package/dist/styles-qf6ptVLD.cjs.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/useContentCache-CO3LYNmz.js +24 -0
- package/dist/useContentCache-CO3LYNmz.js.map +1 -0
- package/dist/useContentCache-DqXtLrLs.cjs +2 -0
- package/dist/useContentCache-DqXtLrLs.cjs.map +1 -0
- package/dist/useDocumentPointerEvents-DXxw3qWj.js +54 -0
- package/dist/useDocumentPointerEvents-DXxw3qWj.js.map +1 -0
- package/dist/useDocumentPointerEvents-DxDSOtip.cjs +2 -0
- package/dist/useDocumentPointerEvents-DxDSOtip.cjs.map +1 -0
- package/dist/useFloatingState-C4kRaW_R.cjs +2 -0
- package/dist/useFloatingState-C4kRaW_R.cjs.map +1 -0
- package/dist/useFloatingState-tEfA_wbc.js +74 -0
- package/dist/useFloatingState-tEfA_wbc.js.map +1 -0
- package/dist/useNativeGestureGuard-C7TSqEkr.cjs +2 -0
- package/dist/useNativeGestureGuard-C7TSqEkr.cjs.map +1 -0
- package/dist/useNativeGestureGuard-CGYo6O0r.js +347 -0
- package/dist/useNativeGestureGuard-CGYo6O0r.js.map +1 -0
- package/dist/window/index.d.ts +63 -0
- package/dist/window.cjs +2 -0
- package/dist/window.cjs.map +1 -0
- package/dist/window.js +160 -0
- package/dist/window.js.map +1 -0
- package/docs/design-tokens.md +405 -0
- package/package.json +34 -4
- package/src/PanelSystemContext.tsx +88 -0
- package/src/components/gesture/SwipeSafeZone.tsx +69 -0
- package/src/components/grid/GridLayerList.tsx +172 -0
- package/src/components/grid/GridLayerResizeHandles.tsx +145 -0
- package/src/components/grid/GridLayout.spec.tsx +743 -0
- package/src/components/grid/GridLayout.tsx +130 -0
- package/src/components/grid/GridTrackResizeHandle.tsx +87 -0
- package/src/components/paneling/FloatingPanelFrame.tsx +203 -0
- package/src/components/panels/DropSuggestOverlay.tsx +131 -0
- package/src/components/panels/PanelGroupView.tsx +112 -0
- package/src/components/pivot/PivotLayer.tsx +27 -0
- package/src/components/resizer/HorizontalDivider.tsx +52 -0
- package/src/components/resizer/ResizeHandle.tsx +118 -0
- package/src/components/tabs/TabBar.tsx +223 -0
- package/src/components/tabs/TabBarTab.tsx +133 -0
- package/src/components/tabs/TabDragOverlay.tsx +92 -0
- package/src/components/window/DialogOverlay.tsx +180 -0
- package/src/components/window/Drawer.tsx +369 -0
- package/src/components/window/DrawerLayers.tsx +68 -0
- package/src/components/window/FloatingWindow.tsx +95 -0
- package/src/components/window/PopupLayerPortal.tsx +218 -0
- package/src/components/window/drawerStyles.spec.ts +263 -0
- package/src/components/window/drawerStyles.ts +228 -0
- package/src/components/window/drawerSwipeConfig.spec.ts +131 -0
- package/src/components/window/drawerSwipeConfig.ts +112 -0
- package/src/components/window/useDrawerSwipeTransform.spec.ts +234 -0
- package/src/components/window/useDrawerSwipeTransform.ts +129 -0
- package/src/config/PanelContentDeclaration.tsx +427 -0
- package/src/config/index.tsx +52 -0
- package/src/config/panelJsx.spec.tsx +54 -0
- package/src/config/panelJsxConfig.spec.tsx +54 -0
- package/src/config/panelJsxDrawer.spec.tsx +33 -0
- package/src/config/panelRouter.spec.ts +68 -0
- package/src/config/panelRouter.tsx +155 -0
- package/src/constants/styles.ts +280 -0
- package/src/demo/Layout.module.css +258 -0
- package/src/demo/Layout.tsx +176 -0
- package/src/demo/components/CodeBlock.module.css +54 -0
- package/src/demo/components/CodeBlock.tsx +34 -0
- package/src/demo/components/CodePreview.module.css +37 -0
- package/src/demo/components/CodePreview.tsx +31 -0
- package/src/demo/components/DataPreview.module.css +177 -0
- package/src/demo/components/DataPreview.tsx +115 -0
- package/src/demo/components/Story.module.css +68 -0
- package/src/demo/components/Story.tsx +54 -0
- package/src/demo/components/layout/CodePanel.module.css +183 -0
- package/src/demo/components/layout/CodePanel.tsx +149 -0
- package/src/demo/components/layout/DemoPage.module.css +60 -0
- package/src/demo/components/layout/DemoPage.tsx +56 -0
- package/src/demo/components/layout/SingleSamplePage.module.css +11 -0
- package/src/demo/components/layout/SingleSamplePage.tsx +35 -0
- package/src/demo/components/layout/SplitDemoLayout.module.css +107 -0
- package/src/demo/components/layout/SplitDemoLayout.tsx +218 -0
- package/src/demo/components/layout/index.ts +11 -0
- package/src/demo/components/tab-styles/ChromeTabBar.module.css +75 -0
- package/src/demo/components/tab-styles/ChromeTabBar.tsx +111 -0
- package/src/demo/components/tab-styles/GitHubTabBar.module.css +81 -0
- package/src/demo/components/tab-styles/GitHubTabBar.tsx +109 -0
- package/src/demo/components/tab-styles/VSCodeTabBar.module.css +78 -0
- package/src/demo/components/tab-styles/VSCodeTabBar.tsx +109 -0
- package/src/demo/components/tab-styles/index.ts +6 -0
- package/src/demo/components/ui/DemoButton.module.css +63 -0
- package/src/demo/components/ui/DemoButton.tsx +32 -0
- package/src/demo/components/ui/DemoCard.module.css +15 -0
- package/src/demo/components/ui/DemoCard.tsx +30 -0
- package/src/demo/components/ui/DemoContainer.module.css +17 -0
- package/src/demo/components/ui/DemoContainer.tsx +30 -0
- package/src/demo/components/ui/DemoPanel.module.css +23 -0
- package/src/demo/components/ui/DemoPanel.tsx +33 -0
- package/src/demo/components/ui/PanelText.module.css +18 -0
- package/src/demo/components/ui/PanelText.tsx +29 -0
- package/src/demo/components/ui/PanelTitle.module.css +18 -0
- package/src/demo/components/ui/PanelTitle.tsx +31 -0
- package/src/demo/contexts/TabbarDemoConfig.tsx +218 -0
- package/src/demo/demo.css +172 -0
- package/src/demo/hooks/useMedia.ts +41 -0
- package/src/demo/hooks/useShikiHighlight.ts +55 -0
- package/src/demo/index.tsx +293 -0
- package/src/demo/pages/Dialog/alerts/index.tsx +22 -0
- package/src/demo/pages/Dialog/card/index.tsx +22 -0
- package/src/demo/pages/Dialog/components/AlertDialogDemo.tsx +124 -0
- package/src/demo/pages/Dialog/components/CardExpandDemo.module.css +243 -0
- package/src/demo/pages/Dialog/components/CardExpandDemo.tsx +204 -0
- package/src/demo/pages/Dialog/components/CustomAlertDialogDemo.tsx +219 -0
- package/src/demo/pages/Dialog/components/DialogDemos.module.css +77 -0
- package/src/demo/pages/Dialog/components/ModalBasics.tsx +45 -0
- package/src/demo/pages/Dialog/components/SwipeDialogDemo.module.css +77 -0
- package/src/demo/pages/Dialog/components/SwipeDialogDemo.tsx +181 -0
- package/src/demo/pages/Dialog/custom-alert/index.tsx +22 -0
- package/src/demo/pages/Dialog/modal/index.tsx +17 -0
- package/src/demo/pages/Dialog/swipe/index.tsx +22 -0
- package/src/demo/pages/Drawer/animations/index.tsx +22 -0
- package/src/demo/pages/Drawer/basics/index.tsx +17 -0
- package/src/demo/pages/Drawer/components/DrawerAnimations.module.css +125 -0
- package/src/demo/pages/Drawer/components/DrawerAnimations.tsx +118 -0
- package/src/demo/pages/Drawer/components/DrawerBasics.module.css +55 -0
- package/src/demo/pages/Drawer/components/DrawerBasics.tsx +76 -0
- package/src/demo/pages/Drawer/components/DrawerMenuLayout.module.css +332 -0
- package/src/demo/pages/Drawer/components/DrawerMenuLayout.tsx +199 -0
- package/src/demo/pages/Drawer/components/DrawerSwipe.module.css +316 -0
- package/src/demo/pages/Drawer/components/DrawerSwipe.tsx +178 -0
- package/src/demo/pages/Drawer/menu/index.tsx +17 -0
- package/src/demo/pages/Drawer/swipe/index.tsx +17 -0
- package/src/demo/pages/FloatingPanelFrame/ResizableFloatingPanelsPreview.module.css +163 -0
- package/src/demo/pages/FloatingPanelFrame/ResizableFloatingPanelsPreview.tsx +234 -0
- package/src/demo/pages/FloatingPanelFrame/basic/index.tsx +17 -0
- package/src/demo/pages/FloatingPanelFrame/complex/index.tsx +26 -0
- package/src/demo/pages/FloatingPanelFrame/components/BasicPanel.module.css +16 -0
- package/src/demo/pages/FloatingPanelFrame/components/BasicPanel.tsx +24 -0
- package/src/demo/pages/FloatingPanelFrame/components/ComplexPanel.module.css +54 -0
- package/src/demo/pages/FloatingPanelFrame/components/ComplexPanel.tsx +67 -0
- package/src/demo/pages/FloatingPanelFrame/components/PanelWithControls.module.css +21 -0
- package/src/demo/pages/FloatingPanelFrame/components/PanelWithControls.tsx +41 -0
- package/src/demo/pages/FloatingPanelFrame/components/PanelWithMeta.module.css +5 -0
- package/src/demo/pages/FloatingPanelFrame/components/PanelWithMeta.tsx +43 -0
- package/src/demo/pages/FloatingPanelFrame/components/ScrollablePanel.module.css +11 -0
- package/src/demo/pages/FloatingPanelFrame/components/ScrollablePanel.tsx +42 -0
- package/src/demo/pages/FloatingPanelFrame/index.tsx +80 -0
- package/src/demo/pages/FloatingPanelFrame/scrollable/index.tsx +30 -0
- package/src/demo/pages/FloatingPanelFrame/with-controls/index.tsx +30 -0
- package/src/demo/pages/FloatingPanelFrame/with-meta/index.tsx +17 -0
- package/src/demo/pages/HorizontalDivider/components/PanelsWithRichContent.module.css +112 -0
- package/src/demo/pages/HorizontalDivider/components/PanelsWithRichContent.tsx +56 -0
- package/src/demo/pages/HorizontalDivider/components/SimpleResizablePanels.module.css +46 -0
- package/src/demo/pages/HorizontalDivider/components/SimpleResizablePanels.tsx +29 -0
- package/src/demo/pages/HorizontalDivider/components/ThreePanelLayout.module.css +54 -0
- package/src/demo/pages/HorizontalDivider/components/ThreePanelLayout.tsx +30 -0
- package/src/demo/pages/HorizontalDivider/index.module.css +14 -0
- package/src/demo/pages/HorizontalDivider/index.tsx +64 -0
- package/src/demo/pages/HorizontalDivider/panels-with-rich-content/index.tsx +21 -0
- package/src/demo/pages/HorizontalDivider/simple-resizable-panels/index.tsx +21 -0
- package/src/demo/pages/HorizontalDivider/three-panel-layout/index.tsx +21 -0
- package/src/demo/pages/PanelLayout/PanelLayoutDemo.module.css +174 -0
- package/src/demo/pages/PanelLayout/PanelLayoutDemo.tsx +248 -0
- package/src/demo/pages/PanelLayout/components/DashboardLayout.module.css +115 -0
- package/src/demo/pages/PanelLayout/components/DashboardLayout.tsx +124 -0
- package/src/demo/pages/PanelLayout/components/DraggableOverlays.module.css +101 -0
- package/src/demo/pages/PanelLayout/components/DraggableOverlays.tsx +122 -0
- package/src/demo/pages/PanelLayout/components/IDELayout.module.css +104 -0
- package/src/demo/pages/PanelLayout/components/IDELayout.tsx +143 -0
- package/src/demo/pages/PanelLayout/components/SimpleGrid.module.css +19 -0
- package/src/demo/pages/PanelLayout/components/SimpleGrid.tsx +62 -0
- package/src/demo/pages/PanelLayout/dashboard/index.tsx +22 -0
- package/src/demo/pages/PanelLayout/draggable-overlays/index.tsx +22 -0
- package/src/demo/pages/PanelLayout/ide-layout/index.tsx +22 -0
- package/src/demo/pages/PanelLayout/index.tsx +94 -0
- package/src/demo/pages/PanelLayout/simple-grid/index.tsx +22 -0
- package/src/demo/pages/PanelSystem/PanelSystemPreview.module.css +20 -0
- package/src/demo/pages/PanelSystem/PanelSystemPreview.tsx +101 -0
- package/src/demo/pages/PanelSystem/preview/index.tsx +18 -0
- package/src/demo/pages/PanelSystem/tabbar/index.tsx +129 -0
- package/src/demo/pages/Pivot/basics/index.tsx +17 -0
- package/src/demo/pages/Pivot/components/Pivot.module.css +278 -0
- package/src/demo/pages/Pivot/components/PivotBasics.tsx +103 -0
- package/src/demo/pages/Pivot/components/PivotSidebar.tsx +168 -0
- package/src/demo/pages/Pivot/components/PivotTabs.tsx +129 -0
- package/src/demo/pages/Pivot/components/PivotTransitions.tsx +120 -0
- package/src/demo/pages/Pivot/components/SwipePivot.module.css +114 -0
- package/src/demo/pages/Pivot/components/SwipePivot.tsx +193 -0
- package/src/demo/pages/Pivot/components/SwipeTabsPivot.module.css +203 -0
- package/src/demo/pages/Pivot/components/SwipeTabsPivot.tsx +320 -0
- package/src/demo/pages/Pivot/sidebar/index.tsx +17 -0
- package/src/demo/pages/Pivot/swipe/index.tsx +16 -0
- package/src/demo/pages/Pivot/swipe-debug/index.tsx +287 -0
- package/src/demo/pages/Pivot/swipe-tabs/index.tsx +15 -0
- package/src/demo/pages/Pivot/tabs/index.tsx +17 -0
- package/src/demo/pages/Pivot/transitions/index.tsx +17 -0
- package/src/demo/pages/ResizeHandle/both-directions/index.tsx +17 -0
- package/src/demo/pages/ResizeHandle/components/BothDirectionsDemo.module.css +72 -0
- package/src/demo/pages/ResizeHandle/components/BothDirectionsDemo.tsx +41 -0
- package/src/demo/pages/ResizeHandle/components/HorizontalResizeDemo.module.css +61 -0
- package/src/demo/pages/ResizeHandle/components/HorizontalResizeDemo.tsx +33 -0
- package/src/demo/pages/ResizeHandle/components/NestedPanelsDemo.module.css +83 -0
- package/src/demo/pages/ResizeHandle/components/NestedPanelsDemo.tsx +53 -0
- package/src/demo/pages/ResizeHandle/components/VerticalResizeDemo.module.css +68 -0
- package/src/demo/pages/ResizeHandle/components/VerticalResizeDemo.tsx +33 -0
- package/src/demo/pages/ResizeHandle/horizontal/index.tsx +17 -0
- package/src/demo/pages/ResizeHandle/index.module.css +11 -0
- package/src/demo/pages/ResizeHandle/index.tsx +71 -0
- package/src/demo/pages/ResizeHandle/nested-panels/index.tsx +17 -0
- package/src/demo/pages/ResizeHandle/vertical/index.tsx +17 -0
- package/src/demo/pages/ResponsiveLayout/adaptive-workspace/index.tsx +22 -0
- package/src/demo/pages/ResponsiveLayout/components/ResponsiveWorkspace.module.css +423 -0
- package/src/demo/pages/ResponsiveLayout/components/ResponsiveWorkspace.tsx +398 -0
- package/src/demo/pages/Stack/basics/index.tsx +22 -0
- package/src/demo/pages/Stack/components/Stack.module.css +234 -0
- package/src/demo/pages/Stack/components/StackBasics.spec.tsx +152 -0
- package/src/demo/pages/Stack/components/StackBasics.tsx +301 -0
- package/src/demo/pages/Stack/components/StackTablet.module.css +299 -0
- package/src/demo/pages/Stack/components/StackTablet.spec.tsx +120 -0
- package/src/demo/pages/Stack/components/StackTablet.tsx +422 -0
- package/src/demo/pages/Stack/tablet/index.tsx +22 -0
- package/src/demo/pages/StickyHeader/basics/index.tsx +17 -0
- package/src/demo/pages/StickyHeader/components/StickyHeader.module.css +219 -0
- package/src/demo/pages/StickyHeader/components/StickyHeaderBasics.tsx +103 -0
- package/src/demo/routes.tsx +214 -0
- package/src/demo/styles/animations.css +68 -0
- package/src/demo/styles/stack-themes.css +35 -0
- package/src/demo/utils/createPanelView.tsx +58 -0
- package/src/dialog/index.ts +85 -0
- package/src/floating/index.ts +24 -0
- package/src/grid/index.ts +75 -0
- package/src/hooks/ContentCacheContext.tsx +87 -0
- package/src/hooks/gesture/presets.spec.ts +86 -0
- package/src/hooks/gesture/presets.ts +95 -0
- package/src/hooks/gesture/testing/createGestureSimulator.spec.ts +241 -0
- package/src/hooks/gesture/testing/createGestureSimulator.ts +385 -0
- package/src/hooks/gesture/thresholdValue.spec.ts +103 -0
- package/src/hooks/gesture/thresholdValue.ts +77 -0
- package/src/hooks/gesture/types.ts +367 -0
- package/src/hooks/gesture/useDirectionalLock.spec.ts +271 -0
- package/src/hooks/gesture/useDirectionalLock.ts +115 -0
- package/src/hooks/gesture/useEdgeSwipeInput.spec.ts +462 -0
- package/src/hooks/gesture/useEdgeSwipeInput.ts +131 -0
- package/src/hooks/gesture/useNativeGestureGuard.spec.ts +473 -0
- package/src/hooks/gesture/useNativeGestureGuard.ts +135 -0
- package/src/hooks/gesture/usePointerTracking.spec.ts +364 -0
- package/src/hooks/gesture/usePointerTracking.ts +134 -0
- package/src/hooks/gesture/useScrollBoundary.spec.ts +249 -0
- package/src/hooks/gesture/useScrollBoundary.ts +113 -0
- package/src/hooks/gesture/useSwipeInput.spec.ts +592 -0
- package/src/hooks/gesture/useSwipeInput.ts +310 -0
- package/src/hooks/gesture/utils.spec.ts +152 -0
- package/src/hooks/gesture/utils.ts +178 -0
- package/src/hooks/useAnimatedVisibility.spec.ts +277 -0
- package/src/hooks/useAnimatedVisibility.ts +172 -0
- package/src/hooks/useAnimationFrame.ts +208 -0
- package/src/hooks/useCSSMatrix.spec.ts +214 -0
- package/src/hooks/useCSSMatrix.ts +262 -0
- package/src/hooks/useClonedElementPreview.ts +28 -0
- package/src/hooks/useContainerScroll.ts +78 -0
- package/src/hooks/useContentCache.spec.tsx +232 -0
- package/src/hooks/useContentCache.tsx +127 -0
- package/src/hooks/useDocumentPointerEvents.ts +137 -0
- package/src/hooks/useDocumentScroll.ts +41 -0
- package/src/hooks/useEffectEvent.ts +40 -0
- package/src/hooks/useElementComponentWrapper.tsx +63 -0
- package/src/hooks/useIntersectionObserver.tsx +125 -0
- package/src/hooks/useIsomorphicLayoutEffect.ts +29 -0
- package/src/hooks/useOperationContinuity.spec.ts +387 -0
- package/src/hooks/useOperationContinuity.ts +135 -0
- package/src/hooks/useResizeObserver.spec.tsx +277 -0
- package/src/hooks/useResizeObserver.tsx +150 -0
- package/src/hooks/useScrollContainer.ts +73 -0
- package/src/hooks/useSharedElementTransition.ts +333 -0
- package/src/hooks/useSnapAnimation.ts +128 -0
- package/src/hooks/useSwipeContentTransform.spec.ts +133 -0
- package/src/hooks/useSwipeContentTransform.ts +373 -0
- package/src/hooks/useTransitionState.ts +95 -0
- package/src/index.tsx +88 -0
- package/src/modules/dialog/AlertDialog.spec.tsx +387 -0
- package/src/modules/dialog/AlertDialog.tsx +221 -0
- package/src/modules/dialog/DialogContainer.spec.tsx +228 -0
- package/src/modules/dialog/DialogContainer.tsx +188 -0
- package/src/modules/dialog/Modal.spec.tsx +220 -0
- package/src/modules/dialog/Modal.tsx +182 -0
- package/src/modules/dialog/SwipeDialogContainer.tsx +208 -0
- package/src/modules/dialog/dialogAnimationUtils.spec.ts +253 -0
- package/src/modules/dialog/dialogAnimationUtils.ts +297 -0
- package/src/modules/dialog/types.ts +186 -0
- package/src/modules/dialog/useDialog.spec.tsx +447 -0
- package/src/modules/dialog/useDialog.ts +214 -0
- package/src/modules/dialog/useDialogContainer.spec.ts +331 -0
- package/src/modules/dialog/useDialogContainer.ts +150 -0
- package/src/modules/dialog/useDialogSwipeInput.spec.ts +157 -0
- package/src/modules/dialog/useDialogSwipeInput.ts +319 -0
- package/src/modules/dialog/useDialogTransform.spec.ts +370 -0
- package/src/modules/dialog/useDialogTransform.ts +407 -0
- package/src/modules/drawer/types.ts +102 -0
- package/src/modules/drawer/useDrawerSwipeInput.spec.ts +566 -0
- package/src/modules/drawer/useDrawerSwipeInput.ts +399 -0
- package/src/modules/grid/GridLayoutContext.tsx +57 -0
- package/src/modules/grid/LayerInstanceContext.tsx +56 -0
- package/src/modules/grid/resizeHandles.ts +157 -0
- package/src/modules/grid/trackUtils.ts +146 -0
- package/src/modules/grid/useGridPlacements.ts +143 -0
- package/src/modules/grid/useGridTracks.ts +156 -0
- package/src/modules/grid/useLayerDragHandle.ts +16 -0
- package/src/modules/grid/useLayerInteractions.tsx +850 -0
- package/src/modules/keybindings/KeybindingsProvider.tsx +111 -0
- package/src/modules/panels/dom/DomRegistry.tsx +94 -0
- package/src/modules/panels/index.ts +45 -0
- package/src/modules/panels/interactions/InteractionsContext.test.tsx +330 -0
- package/src/modules/panels/interactions/InteractionsContext.tsx +394 -0
- package/src/modules/panels/interactions/dnd.ts +28 -0
- package/src/modules/panels/keybindings/KeybindingsInstaller.tsx +15 -0
- package/src/modules/panels/layout/adapter.ts +124 -0
- package/src/modules/panels/rendering/ContentRegistry.spec.tsx +311 -0
- package/src/modules/panels/rendering/ContentRegistry.tsx +205 -0
- package/src/modules/panels/rendering/GroupContainer.tsx +65 -0
- package/src/modules/panels/rendering/RenderBridge.tsx +115 -0
- package/src/modules/panels/rendering/RenderContext.tsx +31 -0
- package/src/modules/panels/state/PanelSplitHandles.tsx +147 -0
- package/src/modules/panels/state/PanelSystemContext.splitLimits.spec.tsx +50 -0
- package/src/modules/panels/state/PanelSystemContext.tsx +289 -0
- package/src/modules/panels/state/StateContext.tsx +12 -0
- package/src/modules/panels/state/cleanup.ts +37 -0
- package/src/modules/panels/state/commands.ts +53 -0
- package/src/modules/panels/state/focus/Context.tsx +25 -0
- package/src/modules/panels/state/focus/logic.ts +57 -0
- package/src/modules/panels/state/groups/Context.tsx +25 -0
- package/src/modules/panels/state/groups/logic.ts +105 -0
- package/src/modules/panels/state/splitLimits.spec.ts +46 -0
- package/src/modules/panels/state/splitLimits.ts +90 -0
- package/src/modules/panels/state/state.spec.ts +49 -0
- package/src/modules/panels/state/tree/Context.tsx +24 -0
- package/src/modules/panels/state/tree/logic.spec.ts +34 -0
- package/src/modules/panels/state/tree/logic.ts +138 -0
- package/src/modules/panels/state/types.ts +142 -0
- package/src/modules/panels/system/PanelSystem.empty-tabbar.spec.tsx +53 -0
- package/src/modules/panels/system/PanelSystem.tab-click-activates.spec.tsx +44 -0
- package/src/modules/panels/system/PanelSystem.tab-reorder.spec.tsx +64 -0
- package/src/modules/panels/system/PanelSystem.tabs-no-dup.spec.tsx +57 -0
- package/src/modules/panels/system/PanelSystem.tsx +206 -0
- package/src/modules/pivot/PivotContent.spec.tsx +179 -0
- package/src/modules/pivot/PivotContent.tsx +77 -0
- package/src/modules/pivot/SwipePivotContent.debug.tmp.tsx +237 -0
- package/src/modules/pivot/SwipePivotContent.position.spec.tsx +171 -0
- package/src/modules/pivot/SwipePivotContent.spec.tsx +494 -0
- package/src/modules/pivot/SwipePivotContent.test.tsx +502 -0
- package/src/modules/pivot/SwipePivotContent.tsx +197 -0
- package/src/modules/pivot/SwipePivotTabBar.spec.tsx +882 -0
- package/src/modules/pivot/SwipePivotTabBar.tsx +583 -0
- package/src/modules/pivot/index.ts +8 -0
- package/src/modules/pivot/scaleInputState.spec.ts +219 -0
- package/src/modules/pivot/scaleInputState.ts +66 -0
- package/src/modules/pivot/types.ts +139 -0
- package/src/modules/pivot/usePivot.spec.ts +635 -0
- package/src/modules/pivot/usePivot.spec.tsx +186 -0
- package/src/modules/pivot/usePivot.tsx +345 -0
- package/src/modules/pivot/usePivotSwipeInput.spec.ts +708 -0
- package/src/modules/pivot/usePivotSwipeInput.ts +136 -0
- package/src/modules/resizer/useResizeDrag.ts +94 -0
- package/src/modules/stack/StackContent.spec.tsx +264 -0
- package/src/modules/stack/StackContent.tsx +111 -0
- package/src/modules/stack/SwipeStackContent.spec.tsx +1564 -0
- package/src/modules/stack/SwipeStackContent.tsx +366 -0
- package/src/modules/stack/SwipeStackOutlet.spec.tsx +250 -0
- package/src/modules/stack/SwipeStackOutlet.tsx +221 -0
- package/src/modules/stack/computeStackContentState.spec.ts +281 -0
- package/src/modules/stack/computeStackContentState.ts +304 -0
- package/src/modules/stack/computeSwipeStackTransform.spec.ts +186 -0
- package/src/modules/stack/computeSwipeStackTransform.ts +145 -0
- package/src/modules/stack/swipeTransitionContinuity.spec.tsx +1133 -0
- package/src/modules/stack/types.ts +226 -0
- package/src/modules/stack/useStackAnimationState.spec.ts +188 -0
- package/src/modules/stack/useStackAnimationState.ts +143 -0
- package/src/modules/stack/useStackNavigation.spec.ts +672 -0
- package/src/modules/stack/useStackNavigation.tsx +393 -0
- package/src/modules/stack/useStackSwipeInput.spec.ts +309 -0
- package/src/modules/stack/useStackSwipeInput.ts +139 -0
- package/src/modules/window/useDrawerState.ts +81 -0
- package/src/modules/window/useFloatingState.spec.ts +252 -0
- package/src/modules/window/useFloatingState.ts +141 -0
- package/src/panels/index.ts +119 -0
- package/src/pivot/index.ts +19 -0
- package/src/resizer/index.ts +68 -0
- package/src/stack/index.ts +91 -0
- package/src/sticky-header/StickyArea.tsx +193 -0
- package/src/sticky-header/calculateStickyMetrics.spec.ts +105 -0
- package/src/sticky-header/calculateStickyMetrics.ts +50 -0
- package/src/sticky-header/index.ts +18 -0
- package/src/sticky-header/types.ts +68 -0
- package/src/types.ts +341 -0
- package/src/utils/CSSMatrix.ts +321 -0
- package/src/utils/css.ts +65 -0
- package/src/utils/dialogUtils.ts +43 -0
- package/src/utils/math.ts +18 -0
- package/src/utils/polyfills/createDialogPolyfill.ts +18 -0
- package/src/utils/typedActions.ts +103 -0
- package/src/vite-env.d.ts +6 -0
- package/src/window/index.ts +69 -0
- package/dist/GridLayout-BQQ63eA1.cjs +0 -2
- package/dist/GridLayout-BQQ63eA1.cjs.map +0 -1
- package/dist/GridLayout-CJTKq7Mp.js +0 -1465
- package/dist/GridLayout-CJTKq7Mp.js.map +0 -1
- package/dist/sticky-header/StickyHeader.d.ts +0 -53
- package/dist/styles-CA2_zLZt.js +0 -52
- package/dist/styles-CA2_zLZt.js.map +0 -1
- package/dist/styles-PsqGOEJP.cjs +0 -2
- package/dist/styles-PsqGOEJP.cjs.map +0 -1
- package/dist/usePivot-7ctin_P_.cjs +0 -2
- package/dist/usePivot-7ctin_P_.cjs.map +0 -1
- package/dist/usePivot-CgQxB8rc.js +0 -124
- package/dist/usePivot-CgQxB8rc.js.map +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Type definitions for the StickyArea component.
|
|
3
|
+
*
|
|
4
|
+
* StickyArea provides a native app-like experience for SPAs/PWAs
|
|
5
|
+
* by displaying cover content during overscroll/bounce.
|
|
6
|
+
* Supports both top (header) and bottom (footer) positions.
|
|
7
|
+
* Works with document-level scroll only.
|
|
8
|
+
*/
|
|
9
|
+
import type * as React from "react";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Position of the sticky area.
|
|
13
|
+
* - "top": Header behavior - sticks to top, expands on pull-down overscroll
|
|
14
|
+
* - "bottom": Footer behavior - sticks to bottom, expands on pull-up overscroll
|
|
15
|
+
*/
|
|
16
|
+
export type StickyAreaPosition = "top" | "bottom";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* State information exposed by StickyArea.
|
|
20
|
+
*/
|
|
21
|
+
export type StickyAreaState = {
|
|
22
|
+
/**
|
|
23
|
+
* Whether the area is stuck at its edge of the viewport.
|
|
24
|
+
* - For "top": True when scrolled past the top edge
|
|
25
|
+
* - For "bottom": True when scrolled past the bottom edge
|
|
26
|
+
*/
|
|
27
|
+
isStuck: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* The current scroll offset relative to the area.
|
|
30
|
+
* Positive when the area has scrolled past its edge.
|
|
31
|
+
*/
|
|
32
|
+
scrollOffset: number;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Props for the StickyArea component.
|
|
37
|
+
*/
|
|
38
|
+
export type StickyAreaProps = {
|
|
39
|
+
/**
|
|
40
|
+
* Position of the sticky area.
|
|
41
|
+
* - "top": Header behavior (default)
|
|
42
|
+
* - "bottom": Footer behavior
|
|
43
|
+
*
|
|
44
|
+
* @default "top"
|
|
45
|
+
*/
|
|
46
|
+
position?: StickyAreaPosition;
|
|
47
|
+
/**
|
|
48
|
+
* Cover content displayed behind the area.
|
|
49
|
+
* This content expands during overscroll/bounce to create
|
|
50
|
+
* a native app-like pull effect.
|
|
51
|
+
*/
|
|
52
|
+
cover: React.ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* Main content that scrolls over the cover.
|
|
55
|
+
* Can be a ReactNode or a render function receiving state.
|
|
56
|
+
*/
|
|
57
|
+
children: React.ReactNode | ((state: StickyAreaState) => React.ReactNode);
|
|
58
|
+
/**
|
|
59
|
+
* Callback fired when sticky state changes.
|
|
60
|
+
*/
|
|
61
|
+
onStateChange?: (state: StickyAreaState) => void;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// Backwards compatibility aliases
|
|
65
|
+
/** @deprecated Use StickyAreaState instead */
|
|
66
|
+
export type StickyHeaderState = StickyAreaState;
|
|
67
|
+
/** @deprecated Use StickyAreaProps instead */
|
|
68
|
+
export type StickyHeaderProps = StickyAreaProps;
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Unified public type definitions for the panel layout system.
|
|
3
|
+
* Single source of truth for grid, window, and drawer related types.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Window / Popup / Drawer types (formerly src/modules/types.ts)
|
|
9
|
+
// ============================================================================
|
|
10
|
+
|
|
11
|
+
// Basic coordinates used by overlays and anchors
|
|
12
|
+
export type Position = {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// Offset value used when positioning floating windows
|
|
18
|
+
export type WindowOffset = number | string;
|
|
19
|
+
|
|
20
|
+
// CSS-like position offsets for floating windows
|
|
21
|
+
export type WindowPosition = {
|
|
22
|
+
top?: WindowOffset;
|
|
23
|
+
right?: WindowOffset;
|
|
24
|
+
bottom?: WindowOffset;
|
|
25
|
+
left?: WindowOffset;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Explicit dimensions for floating windows
|
|
29
|
+
export type WindowSize = {
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// Complete bounds definition for floating windows
|
|
35
|
+
export type WindowBounds = {
|
|
36
|
+
position?: WindowPosition;
|
|
37
|
+
size: WindowSize;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Size constraints that can be applied to floating/drawer surfaces
|
|
41
|
+
export type WindowConstraints = {
|
|
42
|
+
minWidth?: number;
|
|
43
|
+
maxWidth?: number;
|
|
44
|
+
minHeight?: number;
|
|
45
|
+
maxHeight?: number;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// Browser popup window features
|
|
49
|
+
export type PopupWindowFeatures = {
|
|
50
|
+
toolbar?: boolean;
|
|
51
|
+
menubar?: boolean;
|
|
52
|
+
location?: boolean;
|
|
53
|
+
status?: boolean;
|
|
54
|
+
resizable?: boolean;
|
|
55
|
+
scrollbars?: boolean;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// Extra configuration for browser popup windows
|
|
59
|
+
export type PopupWindowOptions = {
|
|
60
|
+
name?: string;
|
|
61
|
+
features?: PopupWindowFeatures;
|
|
62
|
+
focus?: boolean;
|
|
63
|
+
closeOnUnmount?: boolean;
|
|
64
|
+
createWindow?: (config: PopupWindowFactoryConfig) => Window | null;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// Parameters for creating popup windows via a custom factory
|
|
68
|
+
export type PopupWindowFactoryConfig = {
|
|
69
|
+
name: string;
|
|
70
|
+
features: string;
|
|
71
|
+
bounds: WindowBounds;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// Display mode for floating windows
|
|
75
|
+
export type FloatingWindowMode = "embedded" | "popup";
|
|
76
|
+
|
|
77
|
+
// Floating window header configuration
|
|
78
|
+
export type FloatingHeaderConfig = {
|
|
79
|
+
/** Header title text */
|
|
80
|
+
title?: string;
|
|
81
|
+
/** Show close button (requires onClose callback) */
|
|
82
|
+
showCloseButton?: boolean;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// Unified configuration for floating windows with controlled/uncontrolled support
|
|
86
|
+
export type FloatingBehavior = {
|
|
87
|
+
// === Position (controlled/uncontrolled) ===
|
|
88
|
+
/** Controlled position - when defined, component uses this value directly */
|
|
89
|
+
position?: WindowPosition;
|
|
90
|
+
/** Initial position for uncontrolled mode */
|
|
91
|
+
defaultPosition?: WindowPosition;
|
|
92
|
+
|
|
93
|
+
// === Size (controlled/uncontrolled) ===
|
|
94
|
+
/** Controlled size - when defined, component uses this value directly */
|
|
95
|
+
size?: WindowSize;
|
|
96
|
+
/** Initial size for uncontrolled mode */
|
|
97
|
+
defaultSize?: WindowSize;
|
|
98
|
+
|
|
99
|
+
// === Stacking ===
|
|
100
|
+
/** Z-index for stacking order */
|
|
101
|
+
zIndex?: number;
|
|
102
|
+
|
|
103
|
+
// === Interaction ===
|
|
104
|
+
/** Enable drag-to-move functionality */
|
|
105
|
+
draggable?: boolean;
|
|
106
|
+
/** Enable resize handles */
|
|
107
|
+
resizable?: boolean;
|
|
108
|
+
/** Size constraints for resizing */
|
|
109
|
+
constraints?: WindowConstraints;
|
|
110
|
+
|
|
111
|
+
// === Callbacks ===
|
|
112
|
+
/** Called when position changes (drag/move) */
|
|
113
|
+
onMove?: (position: WindowPosition) => void;
|
|
114
|
+
/** Called when size changes (resize) */
|
|
115
|
+
onResize?: (size: WindowSize) => void;
|
|
116
|
+
/** Called when close button is clicked */
|
|
117
|
+
onClose?: () => void;
|
|
118
|
+
|
|
119
|
+
// === Chrome (like DrawerBehavior) ===
|
|
120
|
+
/**
|
|
121
|
+
* Use built-in chrome (FloatingPanelFrame with border, shadow, background).
|
|
122
|
+
* When true and header is provided, header auto-enables drag handle.
|
|
123
|
+
* Defaults to false.
|
|
124
|
+
*/
|
|
125
|
+
chrome?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Header configuration (renders header when provided).
|
|
128
|
+
* When chrome is true and header is provided, header becomes the drag handle.
|
|
129
|
+
*/
|
|
130
|
+
header?: FloatingHeaderConfig;
|
|
131
|
+
/** Accessible label when header.title is not provided */
|
|
132
|
+
ariaLabel?: string;
|
|
133
|
+
|
|
134
|
+
// === Transitions ===
|
|
135
|
+
/**
|
|
136
|
+
* Transition mode for position/size changes.
|
|
137
|
+
* - "css" uses CSS transitions.
|
|
138
|
+
* - "none" disables transitions.
|
|
139
|
+
*/
|
|
140
|
+
transitionMode?: "css" | "none";
|
|
141
|
+
/** Override transition duration (e.g., "200ms") */
|
|
142
|
+
transitionDuration?: string;
|
|
143
|
+
/** Override transition easing (e.g., "ease-out") */
|
|
144
|
+
transitionEasing?: string;
|
|
145
|
+
|
|
146
|
+
// === Display mode ===
|
|
147
|
+
/** Display mode: "embedded" (default) or "popup" (browser window) */
|
|
148
|
+
mode?: FloatingWindowMode;
|
|
149
|
+
/** Popup-specific options when mode is "popup" */
|
|
150
|
+
popup?: PopupWindowOptions;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Pivot item definition for content switching
|
|
154
|
+
export type PivotBehaviorItem = {
|
|
155
|
+
/** Unique identifier for this content item */
|
|
156
|
+
id: string;
|
|
157
|
+
/** Human-readable label (optional) */
|
|
158
|
+
label?: string;
|
|
159
|
+
/** The actual content to render when this item is active */
|
|
160
|
+
content: React.ReactNode;
|
|
161
|
+
/** Whether this item can be selected */
|
|
162
|
+
disabled?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Enable content caching to preserve React component state across re-renders.
|
|
165
|
+
* When disabled (default), content is re-created on each render.
|
|
166
|
+
* @default false
|
|
167
|
+
*/
|
|
168
|
+
cache?: boolean;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// Pivot behavior configuration for content switching
|
|
172
|
+
export type PivotBehavior = {
|
|
173
|
+
/** Array of content items to switch between */
|
|
174
|
+
items: PivotBehaviorItem[];
|
|
175
|
+
/** Currently active item ID (controlled mode) */
|
|
176
|
+
activeId?: string;
|
|
177
|
+
/** Default active item ID (uncontrolled mode) */
|
|
178
|
+
defaultActiveId?: string;
|
|
179
|
+
/** Callback when active item changes */
|
|
180
|
+
onActiveChange?: (id: string) => void;
|
|
181
|
+
/**
|
|
182
|
+
* Transition mode for content switching.
|
|
183
|
+
* - "css" (default) uses CSS transitions via design tokens.
|
|
184
|
+
* - "none" disables transitions (uses React.Activity for memory optimization).
|
|
185
|
+
*/
|
|
186
|
+
transitionMode?: "css" | "none";
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
// Drawer behavior configuration for mobile-friendly slide-in panels
|
|
190
|
+
export type DrawerBehavior = {
|
|
191
|
+
/** Optional controlled state */
|
|
192
|
+
defaultOpen?: boolean;
|
|
193
|
+
open?: boolean;
|
|
194
|
+
/** Whether clicking backdrop dismisses the drawer */
|
|
195
|
+
dismissible?: boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Anchor edge for the drawer.
|
|
198
|
+
* - "left", "right", "top", "bottom"
|
|
199
|
+
* - When not specified, inferred from position prop
|
|
200
|
+
*/
|
|
201
|
+
anchor?: "left" | "right" | "top" | "bottom";
|
|
202
|
+
/**
|
|
203
|
+
* Transition mode for drawer visibility.
|
|
204
|
+
* - "css" (default) uses CSS transform transitions.
|
|
205
|
+
* - "none" disables transitions.
|
|
206
|
+
*/
|
|
207
|
+
transitionMode?: "css" | "none";
|
|
208
|
+
/** Override transform transition duration (e.g., "240ms"). */
|
|
209
|
+
transitionDuration?: string;
|
|
210
|
+
/** Override transform transition easing (e.g., "cubic-bezier(0.22,1,0.36,1)"). */
|
|
211
|
+
transitionEasing?: string;
|
|
212
|
+
onStateChange?: (open: boolean) => void;
|
|
213
|
+
/** Use the built-in chrome (background, header padding). Defaults to true. */
|
|
214
|
+
chrome?: boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Render the drawer relative to its parent container instead of the viewport.
|
|
217
|
+
* Defaults to false (fixed to viewport).
|
|
218
|
+
*/
|
|
219
|
+
inline?: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* Accessible label when header.title is not provided or when rendering without a header.
|
|
222
|
+
*/
|
|
223
|
+
ariaLabel?: string;
|
|
224
|
+
header?: {
|
|
225
|
+
title?: string;
|
|
226
|
+
showCloseButton?: boolean;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Enable swipe gestures for opening/closing the drawer.
|
|
230
|
+
* - true: Enable both edge-swipe-to-open and swipe-to-close
|
|
231
|
+
* - false: Disable swipe gestures (default)
|
|
232
|
+
* - Object: Fine-grained control over swipe behavior
|
|
233
|
+
*/
|
|
234
|
+
swipeGestures?:
|
|
235
|
+
| boolean
|
|
236
|
+
| {
|
|
237
|
+
/** Enable edge swipe from container to open. @default true */
|
|
238
|
+
edgeSwipeOpen?: boolean;
|
|
239
|
+
/** Enable swipe within drawer to close. @default true */
|
|
240
|
+
swipeClose?: boolean;
|
|
241
|
+
/** Width of edge detection zone in pixels. @default 20 */
|
|
242
|
+
edgeWidth?: number;
|
|
243
|
+
/** Threshold ratio (0-1) to trigger close. @default 0.3 */
|
|
244
|
+
dismissThreshold?: number;
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
// ============================================================================
|
|
249
|
+
// Grid / Panel layout types (formerly src/panel-system/types.ts)
|
|
250
|
+
// ============================================================================
|
|
251
|
+
|
|
252
|
+
// Grid track definition with optional resize capability
|
|
253
|
+
export type GridTrack = {
|
|
254
|
+
size: string;
|
|
255
|
+
resizable?: boolean;
|
|
256
|
+
minSize?: number;
|
|
257
|
+
maxSize?: number;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
// Grid-based layout configuration for the editor
|
|
261
|
+
export type PanelLayoutConfig = {
|
|
262
|
+
areas: string[][];
|
|
263
|
+
rows: GridTrack[];
|
|
264
|
+
columns: GridTrack[];
|
|
265
|
+
gap?: string;
|
|
266
|
+
style?: React.CSSProperties;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// Layer positioning mode
|
|
270
|
+
export type LayerPositionMode = "grid" | "absolute" | "relative" | "fixed";
|
|
271
|
+
|
|
272
|
+
// Layer definition for panel system
|
|
273
|
+
export type LayerDefinition = {
|
|
274
|
+
id: string;
|
|
275
|
+
component: React.ReactNode;
|
|
276
|
+
visible?: boolean;
|
|
277
|
+
|
|
278
|
+
// Grid positioning
|
|
279
|
+
gridArea?: string;
|
|
280
|
+
gridRow?: string;
|
|
281
|
+
gridColumn?: string;
|
|
282
|
+
|
|
283
|
+
// Absolute/Fixed/Relative positioning
|
|
284
|
+
/**
|
|
285
|
+
* Positioning mode: when omitted, derived automatically.
|
|
286
|
+
* If `floating` is present, behaves as absolute (embedded) or relative (popup).
|
|
287
|
+
*/
|
|
288
|
+
positionMode?: LayerPositionMode;
|
|
289
|
+
/**
|
|
290
|
+
* Position offsets for non-floating layers (drawer, absolute positioned).
|
|
291
|
+
* For floating layers, use `floating.position` or `floating.defaultPosition` instead.
|
|
292
|
+
*/
|
|
293
|
+
position?: WindowPosition;
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Stacking order for non-floating layers.
|
|
297
|
+
* For floating layers, use `floating.zIndex` instead.
|
|
298
|
+
*/
|
|
299
|
+
zIndex?: number;
|
|
300
|
+
/**
|
|
301
|
+
* Width for non-floating layers.
|
|
302
|
+
* For floating layers, use `floating.size` or `floating.defaultSize` instead.
|
|
303
|
+
*/
|
|
304
|
+
width?: string | number;
|
|
305
|
+
/**
|
|
306
|
+
* Height for non-floating layers.
|
|
307
|
+
* For floating layers, use `floating.size` or `floating.defaultSize` instead.
|
|
308
|
+
*/
|
|
309
|
+
height?: string | number;
|
|
310
|
+
pointerEvents?: boolean | "auto" | "none";
|
|
311
|
+
/** Optional backdrop style (used by DrawerBehaviour) */
|
|
312
|
+
backdropStyle?: React.CSSProperties;
|
|
313
|
+
|
|
314
|
+
// Behaviors
|
|
315
|
+
drawer?: DrawerBehavior;
|
|
316
|
+
/** Floating window behavior configuration */
|
|
317
|
+
floating?: FloatingBehavior;
|
|
318
|
+
pivot?: PivotBehavior;
|
|
319
|
+
|
|
320
|
+
// Styling
|
|
321
|
+
style?: React.CSSProperties;
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* When true, enables scrolling within this panel (overflow: auto).
|
|
325
|
+
* When false or omitted, content overflow is hidden (default behavior).
|
|
326
|
+
*/
|
|
327
|
+
scrollable?: boolean;
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Enable content caching to preserve React component state across re-renders.
|
|
331
|
+
* When disabled (default), content is re-created on each render.
|
|
332
|
+
* @default false
|
|
333
|
+
*/
|
|
334
|
+
cache?: boolean;
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
// Props for top-level layout components
|
|
338
|
+
export type PanelLayoutProps = {
|
|
339
|
+
config: PanelLayoutConfig;
|
|
340
|
+
layers: LayerDefinition[];
|
|
341
|
+
};
|