@@ -14,14 +14,14 @@ import { useParams, useSearchParams, useNavigate } from 'react-router-dom';
1414import { ObjectChart } from '@object-ui/plugin-charts' ;
1515import { ListView } from '@object-ui/plugin-list' ;
1616import { DetailView , RecordChatterPanel } from '@object-ui/plugin-detail' ;
17- import { ObjectView as PluginObjectView , ViewTabBar } from '@object-ui/plugin-view' ;
18- import type { ViewTabItem , AvailableViewType } from '@object-ui/plugin-view' ;
17+ import { ObjectView as PluginObjectView } from '@object-ui/plugin-view' ;
18+ import type { AvailableViewType } from '@object-ui/plugin-view' ;
1919// Import plugins for side-effects (registration)
2020import '@object-ui/plugin-grid' ;
2121import '@object-ui/plugin-kanban' ;
2222import '@object-ui/plugin-calendar' ;
2323import { Button , Empty , EmptyTitle , EmptyDescription , NavigationOverlay , DropdownMenu , DropdownMenuContent , DropdownMenuItem , DropdownMenuTrigger , DropdownMenuSeparator } from '@object-ui/components' ;
24- import { Plus , Table as TableIcon , Settings2 , Wrench , KanbanSquare , Calendar , LayoutGrid , Activity , GanttChart , MapPin , BarChart3 , ChevronRight } from 'lucide-react' ;
24+ import { Plus , Table as TableIcon , Settings2 , Wrench , KanbanSquare , Calendar , LayoutGrid , Activity , GanttChart , MapPin , BarChart3 } from 'lucide-react' ;
2525import type { ListViewSchema , ViewNavigationConfig , FeedItem } from '@object-ui/types' ;
2626import { MetadataToggle , MetadataPanel , useMetadataInspector } from './MetadataInspector' ;
2727import { ViewConfigPanel } from './ViewConfigPanel' ;
@@ -697,12 +697,6 @@ export function ObjectView({ dataSource, objects, onEdit }: any) {
697697 < TableIcon className = "h-4 w-4 text-primary" />
698698 </ div >
699699 < div className = "min-w-0" >
700- { /* Breadcrumb: Object > View */ }
701- < div className = "flex items-center gap-1 text-xs text-muted-foreground mb-0.5" >
702- < span className = "truncate" > { objectLabel ( objectDef ) } </ span >
703- < ChevronRight className = "h-3 w-3 shrink-0" />
704- < span className = "truncate font-medium text-foreground" > { activeView ?. label || t ( 'console.objectView.allRecords' ) } </ span >
705- </ div >
706700 < h1 className = "text-base sm:text-lg font-semibold tracking-tight text-foreground truncate" > { objectLabel ( objectDef ) } </ h1 >
707701 { objectDef . description && (
708702 < p className = "text-xs text-muted-foreground truncate hidden sm:block max-w-md" > { objectDesc ( objectDef ) } </ p >
@@ -763,56 +757,7 @@ export function ObjectView({ dataSource, objects, onEdit }: any) {
763757 </ div >
764758 </ div >
765759
766- { /* View Tabs — Airtable-style named-view switcher with management UX */ }
767- { views . length > 1 && (
768- < div className = "border-b px-3 sm:px-4 bg-background overflow-x-auto shrink-0" >
769- < ViewTabBar
770- views = { views . map ( ( view : { id : string ; label : string ; type : string ; filter ?: any [ ] ; sort ?: any [ ] } ) => ( {
771- id : view . id ,
772- label : view . label ,
773- type : view . type ,
774- hasActiveFilters : Array . isArray ( ( view as any ) . filter ) && ( view as any ) . filter . length > 0 ,
775- hasActiveSort : Array . isArray ( ( view as any ) . sort ) && ( view as any ) . sort . length > 0 ,
776- } as ViewTabItem ) ) }
777- activeViewId = { activeViewId }
778- onViewChange = { handleViewChange }
779- viewTypeIcons = { VIEW_TYPE_ICONS }
780- config = { { ...objectDef . viewTabBar , reorderable : isAdmin ? true : objectDef . viewTabBar ?. reorderable } }
781- onAddView = { isAdmin ? ( ) => { setViewConfigPanelMode ( 'create' ) ; setShowViewConfigPanel ( true ) ; } : undefined }
782- onRenameView = { ( id : any , newName : any ) => {
783- // Rename is wired for future backend integration
784- console . info ( '[ViewTabBar] Rename view:' , id , newName ) ;
785- } }
786- onDuplicateView = { ( id : any ) => {
787- console . info ( '[ViewTabBar] Duplicate view:' , id ) ;
788- } }
789- onDeleteView = { ( id : any ) => {
790- console . info ( '[ViewTabBar] Delete view:' , id ) ;
791- } }
792- onSetDefaultView = { ( id : any ) => {
793- console . info ( '[ViewTabBar] Set default view:' , id ) ;
794- } }
795- onShareView = { ( id : any ) => {
796- console . info ( '[ViewTabBar] Share view:' , id ) ;
797- } }
798- onPinView = { ( id : any , pinned : any ) => {
799- console . info ( '[ViewTabBar] Pin view:' , id , pinned ) ;
800- } }
801- onReorderViews = { ( viewIds : any ) => {
802- console . info ( '[ViewTabBar] Reorder views:' , viewIds ) ;
803- } }
804- onChangeViewType = { ( id : any , newType : any ) => {
805- console . info ( '[ViewTabBar] Change view type:' , id , newType ) ;
806- } }
807- onConfigView = { isAdmin ? ( id : any ) => {
808- handleViewChange ( id ) ;
809- setViewConfigPanelMode ( 'edit' ) ;
810- setShowViewConfigPanel ( true ) ;
811- } : undefined }
812- availableViewTypes = { AVAILABLE_VIEW_TYPES }
813- />
814- </ div >
815- ) }
760+ { /* View Tabs removed — view switching is handled via ViewConfigPanel (right sidebar) */ }
816761
817762 { /* 2. Content — Plugin ObjectView with ViewSwitcher + Filter + Sort */ }
818763 < div className = "flex-1 overflow-hidden relative flex flex-row" >
0 commit comments