@@ -19,8 +19,8 @@ import { ObjectView as PluginObjectView } from '@object-ui/plugin-view';
1919import '@object-ui/plugin-grid' ;
2020import '@object-ui/plugin-kanban' ;
2121import '@object-ui/plugin-calendar' ;
22- import { Button , Empty , EmptyTitle , EmptyDescription , Sheet , SheetContent } from '@object-ui/components' ;
23- import { Plus , Table as TableIcon , Settings2 } from 'lucide-react' ;
22+ import { Button , Empty , EmptyTitle , EmptyDescription , Sheet , SheetContent , DropdownMenu , DropdownMenuContent , DropdownMenuItem , DropdownMenuTrigger , DropdownMenuSeparator } from '@object-ui/components' ;
23+ import { Plus , Table as TableIcon , Settings2 , MoreVertical , Wrench } from 'lucide-react' ;
2424import type { ListViewSchema } from '@object-ui/types' ;
2525import { MetadataToggle , MetadataPanel , useMetadataInspector } from './MetadataInspector' ;
2626import { useObjectActions } from '../hooks/useObjectActions' ;
@@ -31,6 +31,9 @@ export function ObjectView({ dataSource, objects, onEdit, onRowClick }: any) {
3131 const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
3232 const { showDebug, toggleDebug } = useMetadataInspector ( ) ;
3333
34+ // Design mode toggle - default false for end users
35+ const [ designMode , setDesignMode ] = useState ( false ) ;
36+
3437 // Get Object Definition
3538 const objectDef = objects . find ( ( o : any ) => o . name === objectName ) ;
3639
@@ -213,7 +216,7 @@ export function ObjectView({ dataSource, objects, onEdit, onRowClick }: any) {
213216
214217 return (
215218 < div className = "h-full flex flex-col bg-background" >
216- { /* 1. Main Header */ }
219+ { /* 1. Simplified Header */ }
217220 < div className = "flex justify-between items-center py-2.5 sm:py-3 px-3 sm:px-4 border-b shrink-0 bg-background z-10" >
218221 < div className = "flex items-center gap-2 sm:gap-3 min-w-0 flex-1" >
219222 < div className = "bg-primary/10 p-1.5 sm:p-2 rounded-md shrink-0" >
@@ -225,31 +228,48 @@ export function ObjectView({ dataSource, objects, onEdit, onRowClick }: any) {
225228 </ div >
226229
227230 < div className = "flex items-center gap-1.5 sm:gap-2 shrink-0" >
228- < MetadataToggle open = { showDebug } onToggle = { toggleDebug } className = "hidden sm:flex" />
229- < Button
230- size = "sm"
231- variant = "outline"
232- onClick = { ( ) => navigate ( viewId ? `../../views/${ viewId } ` : `views/${ activeViewId } ` ) }
233- className = "shadow-none gap-1.5 h-8 sm:h-9 hidden sm:flex"
234- title = "Edit current view layout"
235- >
236- < Settings2 className = "h-4 w-4" />
237- < span className = "hidden lg:inline" > Edit View</ span >
238- </ Button >
239- < Button
240- size = "sm"
241- variant = "outline"
242- onClick = { ( ) => navigate ( viewId ? '../../views/new' : 'views/new' ) }
243- className = "shadow-none gap-1.5 h-8 sm:h-9 hidden sm:flex"
244- title = "Add a view"
245- >
246- < Plus className = "h-4 w-4" />
247- < span className = "hidden lg:inline" > Add View</ span >
248- </ Button >
231+ { /* Primary action - always visible */ }
249232 < Button size = "sm" onClick = { actions . create } className = "shadow-none gap-1.5 sm:gap-2 h-8 sm:h-9" >
250233 < Plus className = "h-4 w-4" />
251234 < span className = "hidden sm:inline" > New</ span >
252235 </ Button >
236+
237+ { /* Design mode tools menu */ }
238+ < DropdownMenu >
239+ < DropdownMenuTrigger asChild >
240+ < Button
241+ size = "sm"
242+ variant = { designMode ? "secondary" : "ghost" }
243+ className = "shadow-none h-8 sm:h-9 px-2"
244+ title = "Design tools"
245+ >
246+ { designMode ? < Wrench className = "h-4 w-4" /> : < MoreVertical className = "h-4 w-4" /> }
247+ </ Button >
248+ </ DropdownMenuTrigger >
249+ < DropdownMenuContent align = "end" className = "w-48" >
250+ < DropdownMenuItem onClick = { ( ) => setDesignMode ( ! designMode ) } >
251+ < Wrench className = "h-4 w-4 mr-2" />
252+ { designMode ? 'Exit Design Mode' : 'Enter Design Mode' }
253+ </ DropdownMenuItem >
254+ { designMode && (
255+ < >
256+ < DropdownMenuSeparator />
257+ < DropdownMenuItem onClick = { toggleDebug } >
258+ < MetadataToggle open = { showDebug } onToggle = { toggleDebug } className = "hidden" />
259+ Metadata Inspector
260+ </ DropdownMenuItem >
261+ < DropdownMenuItem onClick = { ( ) => navigate ( viewId ? `../../views/${ viewId } ` : `views/${ activeViewId } ` ) } >
262+ < Settings2 className = "h-4 w-4 mr-2" />
263+ Edit View
264+ </ DropdownMenuItem >
265+ < DropdownMenuItem onClick = { ( ) => navigate ( viewId ? '../../views/new' : 'views/new' ) } >
266+ < Plus className = "h-4 w-4 mr-2" />
267+ Add View
268+ </ DropdownMenuItem >
269+ </ >
270+ ) }
271+ </ DropdownMenuContent >
272+ </ DropdownMenu >
253273 </ div >
254274 </ div >
255275
@@ -270,8 +290,9 @@ export function ObjectView({ dataSource, objects, onEdit, onRowClick }: any) {
270290 />
271291 </ div >
272292 </ div >
293+ { /* Metadata panel only shows in design mode */ }
273294 < MetadataPanel
274- open = { showDebug }
295+ open = { showDebug && designMode }
275296 sections = { [
276297 { title : 'View Configuration' , data : activeView } ,
277298 { title : 'Object Definition' , data : objectDef } ,
0 commit comments