+ {/* Main toolbar row */}
+
+ {/* Left side: Search */}
+
+ {showSearchBox && (
+
+
+ ) => setSearchQuery(e.target.value)}
+ className="pl-9"
+ />
+
+ )}
+
+
+ {/* Right side: Actions */}
+
+ {showFiltersButton && (
+
+ )}
+
+ {showRefreshButton && (
+
+ )}
+
+ {showCreateButton && (
+
+ )}
+
+
+
+ {/* Filter panel (shown when filters are active) */}
+ {showFilters && (
+
+
+ Filter functionality will be integrated with FilterBuilder component
+
+ {/* TODO: Integrate FilterBuilder component here */}
+
+ )}
+
+ );
+ };
+
+ return (
+
+ {/* Title and description */}
+ {(schema.title || schema.description) && (
+
+ {schema.title && (
+
{schema.title}
+ )}
+ {schema.description && (
+
{schema.description}
+ )}
+
+ )}
+
+ {/* Toolbar */}
+ {renderToolbar()}
+
+ {/* Table */}
+
+
+ {/* Form (drawer or modal) */}
+ {layout === 'drawer' && renderDrawerForm()}
+ {layout === 'modal' && renderModalForm()}
+
+ );
+};
diff --git a/packages/plugin-object/src/__tests__/ObjectView.test.tsx b/packages/plugin-object/src/__tests__/ObjectView.test.tsx
new file mode 100644
index 0000000..3f40cb0
--- /dev/null
+++ b/packages/plugin-object/src/__tests__/ObjectView.test.tsx
@@ -0,0 +1,361 @@
+/**
+ * ObjectUI
+ * Copyright (c) 2024-present ObjectStack Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import { describe, it, expect, vi, beforeEach } from 'vitest';
+import { render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { ObjectView } from '../ObjectView';
+import type { ObjectViewSchema } from '@object-ui/types';
+import type { ObjectQLDataSource } from '@object-ui/data-objectql';
+
+// Mock child components
+vi.mock('../ObjectTable', () => ({
+ ObjectTable: ({ schema, onRowClick, onEdit, onDelete }: any) => (
+