From ffb8e2e99e1d0c105b1c545ff7ab4d3149ec6c48 Mon Sep 17 00:00:00 2001
From: joonhoekim <26rote@gmail.com>
Date: Mon, 1 Dec 2025 15:22:38 +0900
Subject: (김준회) 서버측 where, order by 절 지원을 위한 v2 임시작업
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../client-table-v2/client-table-toolbar.tsx       | 59 ++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 components/client-table-v2/client-table-toolbar.tsx

(limited to 'components/client-table-v2/client-table-toolbar.tsx')

diff --git a/components/client-table-v2/client-table-toolbar.tsx b/components/client-table-v2/client-table-toolbar.tsx
new file mode 100644
index 00000000..089501e1
--- /dev/null
+++ b/components/client-table-v2/client-table-toolbar.tsx
@@ -0,0 +1,59 @@
+"use client"
+
+import * as React from "react"
+import { Search, Download } from "lucide-react"
+import { Input } from "@/components/ui/input"
+import { Button } from "@/components/ui/button"
+
+interface ClientTableToolbarProps {
+  globalFilter: string
+  setGlobalFilter: (value: string) => void
+  totalRows: number
+  visibleRows: number
+  onExport?: () => void
+  actions?: React.ReactNode
+  customToolbar?: React.ReactNode
+  viewOptions?: React.ReactNode
+}
+
+export function ClientTableToolbar({
+  globalFilter,
+  setGlobalFilter,
+  totalRows,
+  visibleRows,
+  onExport,
+  actions,
+  customToolbar,
+  viewOptions,
+}: ClientTableToolbarProps) {
+  return (
+    <div className="flex w-full items-center justify-between gap-4 p-1 overflow-x-auto">
+      <div className="flex items-center gap-2">
+        <div className="relative max-w-sm min-w-[200px]">
+          <Search className="absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" />
+          <Input
+            placeholder="Search all columns..."
+            value={globalFilter ?? ""}
+            onChange={(e) => setGlobalFilter(e.target.value)}
+            className="pl-8"
+          />
+        </div>
+        <div className="text-sm text-muted-foreground whitespace-nowrap">
+          Showing {visibleRows} of {totalRows}
+        </div>
+        {viewOptions}
+        {onExport && (
+          <Button onClick={onExport} variant="outline" size="sm">
+            <Download className="mr-2 h-4 w-4" />
+            Export
+          </Button>
+        )}  
+      </div>
+
+      <div className="flex items-center gap-2 shrink-0">
+        {customToolbar}
+        {actions}
+      </div>
+    </div>
+  )
+}
-- 
cgit v1.2.3

