import { FC, ReactNode } from 'react'; import { N as TimbalChatProps, G as ThreadWelcomeProps } from './chat-rMlckAQG.cjs'; import { WorkforceItem } from '@timbal-ai/timbal-sdk'; import * as react_jsx_runtime from 'react/jsx-runtime'; import '@assistant-ui/react'; interface TimbalChatShellProps extends Omit { /** * Pre-selected workforce id. When omitted, the shell fetches the workforce * list from `{baseUrl}/workforce` and picks the first agent automatically. */ workforceId?: string; /** Branding rendered at the start of the header (logo, etc). */ brand?: ReactNode; /** Extra content rendered at the end of the header (theme toggle, logout). */ headerActions?: ReactNode; /** Hide the built-in workforce selector. Default: false. */ hideWorkforceSelector?: boolean; /** Class for the outer flex container. */ className?: string; /** Class for the header bar. */ headerClassName?: string; } /** * Drop-in shell that wraps `TimbalChat` with the Studio playground chrome: * floating topbar with brand + workforce selector + actions, soft gradient * background, and the chat thread filling the remaining vertical space. * * Falls back to picking the first available workforce when `workforceId` * isn't supplied. */ declare const TimbalChatShell: FC; interface TimbalStudioShellProps extends Omit { /** * Pin the chat to a specific workforce. When omitted, the shell fetches * the workforce list via `useWorkforces()` and lets the sidebar drive * selection. */ workforceId?: string; /** * Pre-loaded workforce list. When omitted, the shell fetches it. * Useful for stories / SSR / preview environments. */ workforces?: WorkforceItem[]; /** Custom fetch for the workforce list (mock fetch in preview mode). */ workforcesFetch?: (url: string, options?: RequestInit) => Promise; /** Base URL for the workforce list. Default: `/api`. */ workforcesBaseUrl?: string; /** Brand mark rendered in the sidebar header. Default: ``. */ brand?: ReactNode; /** Logo element rendered in the collapsed sidebar header. Default: uses brand if default, otherwise falls back to the open chevron. */ logo?: ReactNode; /** Extra actions rendered at the right of the floating top bar. */ headerActions?: ReactNode; /** Nodes rendered at the left of the floating top bar (after the menu button). */ headerStart?: ReactNode; /** Initial collapse state when no persisted value exists. Default: false. */ defaultCollapsed?: boolean; /** localStorage key for persisting the collapse state. Default set. */ persistKey?: string | null; /** Pixel breakpoint below which the sidebar becomes a drawer. Default 768. */ mobileBreakpointPx?: number; /** Caption shown in the sidebar footer when no user is signed in. */ sidebarEmptyCaption?: string | null; } /** * Opinionated Timbal studio layout — floating sidebar with workforce picker, * top bar with optional mode toggle / actions, and a `` filling * the rest. Manages collapse state, mobile drawer, and workforce selection * out of the box. For more control compose `StudioSidebar` + `TimbalChat` * directly. */ declare const TimbalStudioShell: FC; /** * A sidebar nav entry. A `WorkforceItem` plus an **optional** leading `icon` * (e.g. a lucide glyph for a route: Dashboard, Inbox, Settings). The icon is * purely additive — existing `WorkforceItem[]` callers keep working unchanged. * * Use this when `StudioSidebar` drives app route navigation and you want an * icon per item — so you never need to hand-roll a custom nav rail. * * @example * ```tsx * import { LayoutDashboard, Inbox, Settings } from "lucide-react"; * * const items: StudioSidebarItem[] = [ * { id: "dashboard", name: "Dashboard", icon: }, * { id: "inbox", name: "Alert inbox", icon: }, * { id: "settings", name: "Settings", icon: }, * ]; * * * ``` */ type StudioSidebarItem = WorkforceItem & { icon?: ReactNode; }; /** * Panel appearance: * - `"floating"` — rounded card with a gap around it (studio playground chrome). * - `"flush"` — full-height rail attached to the viewport edge with a single * hairline border; the standard product-dashboard look. */ type StudioSidebarVariant = "floating" | "flush"; interface StudioSidebarProps { /** * Nav entries to display. Each is a `WorkforceItem` (`{ id, name }` is * enough) plus an **optional `icon`** for route-style navigation * (Dashboard / Inbox / Settings). When omitted entirely, the sidebar * fetches workforces via the shared `useWorkforces()` hook. * * This is the canonical app sidebar — pass it to `AppShell.sidebar`. Do * **not** hand-roll a custom `