diff --git a/packages/designer/src/components/ComponentPalette.tsx b/packages/designer/src/components/ComponentPalette.tsx index 3ed882efc..d9ec89e40 100644 --- a/packages/designer/src/components/ComponentPalette.tsx +++ b/packages/designer/src/components/ComponentPalette.tsx @@ -166,12 +166,8 @@ export const ComponentPalette: React.FC = React.memo(({ c }, []); return ( -
+
-
-

Components

-

Drag to add to canvas

-
= React.memo(({ classNa }, [setSelectedNodeId]); return ( -
-
-
- -

Component Tree

-
-

Navigate and organize components

-
- +
{schema && ( diff --git a/packages/designer/src/components/Designer.tsx b/packages/designer/src/components/Designer.tsx index 7390f0bcf..5a5f62c1f 100644 --- a/packages/designer/src/components/Designer.tsx +++ b/packages/designer/src/components/Designer.tsx @@ -1,7 +1,6 @@ import React, { useEffect } from 'react'; import { DesignerProvider } from '../context/DesignerContext'; -import { ComponentPalette } from './ComponentPalette'; -import { ComponentTree } from './ComponentTree'; +import { LeftSidebar } from './LeftSidebar'; import { Canvas } from './Canvas'; import { PropertyPanel } from './PropertyPanel'; import { useDesigner } from '../context/DesignerContext'; @@ -22,8 +21,7 @@ export const DesignerContent: React.FC = () => { removeNode, selectedNodeId, canUndo, - canRedo, - showComponentTree + canRedo } = useDesigner(); // Keyboard shortcuts @@ -75,18 +73,11 @@ export const DesignerContent: React.FC = () => { {/* removed, moved to parent */}
- {/* Left Sidebar - Component Palette */} + {/* Left Sidebar - Combined Component Palette and Tree */}
- +
- {/* Component Tree (Optional) */} - {showComponentTree && ( -
- -
- )} - {/* Main Canvas Area */}
diff --git a/packages/designer/src/components/LeftSidebar.tsx b/packages/designer/src/components/LeftSidebar.tsx new file mode 100644 index 000000000..b98cf7d24 --- /dev/null +++ b/packages/designer/src/components/LeftSidebar.tsx @@ -0,0 +1,58 @@ +import React, { useState } from 'react'; +import { ComponentPalette } from './ComponentPalette'; +import { ComponentTree } from './ComponentTree'; +import { cn } from '@object-ui/components'; +import { Layers, Box } from 'lucide-react'; + +interface LeftSidebarProps { + className?: string; +} + +type TabType = 'palette' | 'tree'; + +export const LeftSidebar: React.FC = React.memo(({ className }) => { + const [activeTab, setActiveTab] = useState('palette'); + + return ( +
+ {/* Tab Headers */} +
+ + +
+ + {/* Tab Content */} +
+ {activeTab === 'palette' ? ( + + ) : ( + + )} +
+
+ ); +}); + +LeftSidebar.displayName = 'LeftSidebar'; diff --git a/packages/designer/src/components/Toolbar.tsx b/packages/designer/src/components/Toolbar.tsx index 525f966b4..e3cafcaae 100644 --- a/packages/designer/src/components/Toolbar.tsx +++ b/packages/designer/src/components/Toolbar.tsx @@ -12,7 +12,6 @@ import { Upload, Copy, FileJson, - Layers, } from 'lucide-react'; import { Dialog, @@ -41,9 +40,7 @@ export const Toolbar: React.FC = React.memo(() => { canUndo, canRedo, viewportMode, - setViewportMode, - showComponentTree, - setShowComponentTree + setViewportMode } = useDesigner(); const [showExportDialog, setShowExportDialog] = useState(false); const [showImportDialog, setShowImportDialog] = useState(false); @@ -167,26 +164,6 @@ export const Toolbar: React.FC = React.memo(() => { Mobile View (375px)
- - {/* Component Tree Toggle */} - - - - - - {showComponentTree ? 'Hide' : 'Show'} Component Tree - -
{/* Right Actions */} diff --git a/packages/designer/src/context/DesignerContext.tsx b/packages/designer/src/context/DesignerContext.tsx index fe31187b8..38bc19515 100644 --- a/packages/designer/src/context/DesignerContext.tsx +++ b/packages/designer/src/context/DesignerContext.tsx @@ -16,8 +16,6 @@ export interface DesignerContextValue { setDraggingNodeId: React.Dispatch>; viewportMode: ViewportMode; setViewportMode: React.Dispatch>; - showComponentTree: boolean; - setShowComponentTree: React.Dispatch>; addNode: (parentId: string | null, node: SchemaNode, index?: number) => void; updateNode: (id: string, updates: Partial) => void; removeNode: (id: string) => void; @@ -203,7 +201,6 @@ export const DesignerProvider: React.FC = ({ const [draggingType, setDraggingType] = useState(null); const [draggingNodeId, setDraggingNodeId] = useState(null); const [viewportMode, setViewportMode] = useState('desktop'); - const [showComponentTree, setShowComponentTree] = useState(true); // Undo/Redo state const [history, setHistory] = useState([ensureNodeIds(initialSchema || defaultSchema)]); @@ -339,8 +336,6 @@ export const DesignerProvider: React.FC = ({ setDraggingNodeId, viewportMode, setViewportMode, - showComponentTree, - setShowComponentTree, addNode, updateNode, removeNode, diff --git a/packages/designer/src/index.ts b/packages/designer/src/index.ts index 8af6bcdb3..1ee9a40ef 100644 --- a/packages/designer/src/index.ts +++ b/packages/designer/src/index.ts @@ -12,6 +12,7 @@ export { PropertyPanel } from './components/PropertyPanel'; export { Toolbar } from './components/Toolbar'; export { ComponentTree } from './components/ComponentTree'; export { ContextMenu } from './components/ContextMenu'; +export { LeftSidebar } from './components/LeftSidebar'; export const name = '@object-ui/designer'; export const version = '0.1.0';