import styles from './LayoutSection.module.css'
import { Sidebar } from '../../../design-system/layout/Sidebar/Sidebar'
import { SidebarTree } from '../../../design-system/layout/Sidebar/SidebarTree'
import type { SidebarTreeNode } from '../../../design-system/layout/Sidebar/SidebarTree'
import { StatusDot } from '../../../design-system/primitives/StatusDot/StatusDot'
import { Box, Settings, FileText, ChevronRight } from 'lucide-react'
import { TopBar } from '../../../design-system/layout/TopBar/TopBar'
// ── DemoCard helper ──────────────────────────────────────────────────────────
interface DemoCardProps {
id: string
title: string
description: string
children: React.ReactNode
}
function DemoCard({ id, title, description, children }: DemoCardProps) {
return (
{title}
{description}
{children}
)
}
// ── Sample tree nodes ────────────────────────────────────────────────────────
const SAMPLE_APP_NODES: SidebarTreeNode[] = [
{
id: 'app1',
label: 'cameleer-prod',
icon: ,
badge: '14.3k',
path: '/apps/app1',
starrable: true,
starKey: 'app:app1',
children: [
{ id: 'app1/r1', label: 'order-ingest', icon: , badge: '5,421', path: '/apps/app1/r1' },
{ id: 'app1/r2', label: 'payment-validate', icon: , badge: '3,102', path: '/apps/app1/r2' },
],
},
{
id: 'app2',
label: 'cameleer-staging',
icon: ,
badge: '871',
path: '/apps/app2',
starrable: true,
starKey: 'app:app2',
children: [
{ id: 'app2/r3', label: 'notify-customer', icon: , badge: '2,201', path: '/apps/app2/r3' },
],
},
{
id: 'app3',
label: 'cameleer-dev',
icon: ,
badge: '42',
path: '/apps/app3',
starrable: true,
starKey: 'app:app3',
},
]
// ── LayoutSection ─────────────────────────────────────────────────────────────
export function LayoutSection() {
return (
Layout
{/* 1. AppShell */}
TopBar — breadcrumb · search · filters · time range · env badge · user avatar
Sidebar
Logo
Search
Navigation
Applications tree
Agents tree
Starred
<children> — page content rendered here
{/* 2. Sidebar */}
{/* 3. TopBar */}
)
}