Files
breakpilot-compliance/admin-compliance/app/sdk/sdk-flow/_components/FlowToolbar.tsx
Sharang Parnerkar 2b818c6fb3 refactor(admin): split sdk-flow page.tsx into colocated components
Extract BetriebOverviewPanel, DetailPanel, FlowCanvas, FlowToolbar,
StepTable, useFlowGraph hook and helpers into _components/ so page.tsx
drops from 1019 to 156 LOC (under the 300 soft target).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 22:49:33 +02:00

94 lines
2.8 KiB
TypeScript

'use client'
import { SDK_FLOW_STEPS, FLOW_PACKAGES } from '../flow-data'
import { PACKAGE_ORDER, type PackageFilter } from './helpers'
export function FlowToolbar({
packageFilter,
setPackageFilter,
setSelectedStep,
showDb,
setShowDb,
showRag,
setShowRag,
}: {
packageFilter: PackageFilter
setPackageFilter: (f: PackageFilter) => void
setSelectedStep: (s: null) => void
showDb: boolean
setShowDb: (v: boolean) => void
showRag: boolean
setShowRag: (v: boolean) => void
}) {
return (
<div className="bg-white rounded-xl border border-slate-200 p-4 shadow-sm">
<div className="flex flex-wrap items-center gap-2">
{/* Package Filter */}
<button
onClick={() => {
setPackageFilter('alle')
setSelectedStep(null)
}}
className={`px-3 py-1.5 rounded-lg text-sm font-medium transition-colors ${
packageFilter === 'alle'
? 'bg-slate-800 text-white'
: 'bg-slate-100 text-slate-700 hover:bg-slate-200'
}`}
>
Alle ({SDK_FLOW_STEPS.length})
</button>
{PACKAGE_ORDER.map(pkgId => {
const pkg = FLOW_PACKAGES[pkgId]
const count = SDK_FLOW_STEPS.filter(s => s.package === pkgId).length
return (
<button
key={pkgId}
onClick={() => {
setPackageFilter(packageFilter === pkgId ? 'alle' : pkgId)
setSelectedStep(null)
}}
className="px-3 py-1.5 rounded-lg text-sm font-medium transition-all flex items-center gap-1.5"
style={{
background:
packageFilter === pkgId ? pkg.color.border : pkg.color.bg,
color: packageFilter === pkgId ? 'white' : pkg.color.text,
}}
>
<span
className="w-2.5 h-2.5 rounded-full"
style={{ background: pkg.color.border }}
/>
{pkg.nameShort} ({count})
</button>
)
})}
{/* Separator */}
<div className="w-px h-6 bg-slate-200 mx-1" />
{/* Toggles */}
<button
onClick={() => setShowDb(!showDb)}
className={`px-3 py-1.5 rounded-lg text-sm font-medium transition-colors ${
showDb
? 'bg-slate-700 text-white'
: 'bg-slate-100 text-slate-600 hover:bg-slate-200'
}`}
>
DB-Tabellen
</button>
<button
onClick={() => setShowRag(!showRag)}
className={`px-3 py-1.5 rounded-lg text-sm font-medium transition-colors ${
showRag
? 'bg-green-600 text-white'
: 'bg-green-50 text-green-700 hover:bg-green-100'
}`}
>
RAG-Collections
</button>
</div>
</div>
)
}