klun-ui 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/templates/dashboard/Sidebar.tsx","../../src/templates/dashboard/TopBar.tsx","../../src/templates/dashboard/OverviewScreen.tsx","../../src/templates/dashboard/SettingsScreen.tsx","../../src/templates/dashboard/index.tsx","../../src/templates/ai-assistant/AISidebar.tsx","../../src/templates/ai-assistant/ChatView.tsx","../../src/templates/ai-assistant/Composer.tsx","../../src/templates/ai-assistant/index.tsx","../../src/templates/agent-chat/AgentSidebar.tsx","../../src/templates/agent-chat/AgentThread.tsx","../../src/templates/agent-chat/AgentComposer.tsx","../../src/templates/agent-chat/index.tsx","../../src/templates/crypto/CryptoSidebar.tsx","../../src/templates/crypto/MarketsScreen.tsx","../../src/templates/crypto/index.tsx","../../src/templates/marketing/MarketingNav.tsx","../../src/templates/marketing/MarketingSections.tsx","../../src/templates/marketing/index.tsx","../../src/templates/calendar/index.tsx","../../src/templates/pricing/index.tsx","../../src/templates/settings/index.tsx","../../src/templates/metronic-dashboard/Sidebar.tsx","../../src/templates/metronic-dashboard/TopBar.tsx","../../src/templates/metronic-dashboard/charts.tsx","../../src/templates/metronic-dashboard/widgets.tsx","../../src/templates/metronic-dashboard/DashboardScreen.tsx","../../src/templates/metronic-dashboard/OrdersScreen.tsx","../../src/templates/metronic-dashboard/productModel.ts","../../src/templates/metronic-dashboard/ProductWizardPage.tsx","../../src/templates/metronic-dashboard/ProductsScreen.tsx","../../src/templates/metronic-dashboard/CustomersScreen.tsx","../../src/templates/metronic-dashboard/UsersScreen.tsx","../../src/templates/metronic-dashboard/RolesScreen.tsx","../../src/templates/metronic-dashboard/ReportsScreen.tsx","../../src/templates/metronic-settings/index.tsx","../../src/templates/metronic-dashboard/index.tsx"],"names":["jsxs","jsx","Badge","Button","useState","SegmentedControl","Card","Tabs","ProgressBar","Field","Label","Input","Select","Switch","Divider","useRef","useEffect","Avatar","seed","StatusDot","Spinner","initials","iconBtn","Table","Stat","Accordion","AvatarGroup","HorizontalFilter","ContentLabel","Chip","Alert","ImageUpload","SelectMenu","Textarea","CharacterCounter","useId","AreaChart","ORDERS","STATUS_COLOR","useMemo","Money","CounterInput","Breadcrumb","Wizard","Modal","Drawer","Confirm","Dropdown","RelativeTime","ROLES","Checkbox","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["// Klun UI dashboard sidebar — brand, nav sections, footer profile.\n\nexport interface SidebarUser {\n name: string;\n email: string;\n initials: string;\n}\n\nexport interface SidebarProps {\n active: string;\n onNavigate: (id: string) => void;\n user: SidebarUser;\n}\n\ninterface NavItem {\n id: string;\n label: string;\n icon: string;\n badge?: string;\n}\n\nexport function Sidebar({ active, onNavigate, user }: SidebarProps) {\n const main: NavItem[] = [\n { id: \"overview\", label: \"Overview\", icon: \"ri-dashboard-line\" },\n { id: \"transactions\", label: \"Transactions\", icon: \"ri-arrow-left-right-line\", badge: \"24\" },\n { id: \"cards\", label: \"Cards\", icon: \"ri-bank-card-line\" },\n { id: \"analytics\", label: \"Analytics\", icon: \"ri-bar-chart-2-line\" },\n { id: \"invoices\", label: \"Invoices\", icon: \"ri-bill-line\" },\n ];\n const other: NavItem[] = [\n { id: \"settings\", label: \"Settings\", icon: \"ri-settings-2-line\" },\n { id: \"support\", label: \"Support\", icon: \"ri-headphone-line\" },\n ];\n const Item = ({ it }: { it: NavItem }) => {\n const on = active === it.id;\n return (\n <button onClick={() => onNavigate(it.id)} style={{\n display: \"flex\", alignItems: \"center\", gap: 10, width: \"100%\", height: 38, padding: \"0 12px\",\n border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: \"pointer\", textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}>\n <i className={it.icon} style={{ fontSize: 20, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }} />\n <span style={{ flex: 1 }}>{it.label}</span>\n {it.badge ? <span style={{ font: \"var(--klun-text-label-xs)\", padding: \"1px 6px\", borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-bg-weak-50)\", color: \"var(--klun-text-sub-600)\" }}>{it.badge}</span> : null}\n </button>\n );\n };\n return (\n <aside style={{ width: 272, flexShrink: 0, height: \"100%\", boxSizing: \"border-box\", display: \"flex\", flexDirection: \"column\", padding: 20, background: \"var(--klun-bg-weak-50)\", borderRight: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 8px 18px\" }}>\n <div style={{ width: 36, height: 36, borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-shapes-line\" style={{ fontSize: 20 }} />\n </div>\n <div style={{ lineHeight: 1.1 }}>\n <div style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Apex Finance</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>Workspace</div>\n </div>\n </div>\n <div style={{ position: \"relative\", marginBottom: 16 }}>\n <i className=\"ri-search-line\" style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n <input placeholder=\"Search\" style={{ width: \"100%\", boxSizing: \"border-box\", height: 36, padding: \"0 12px 0 36px\", borderRadius: \"var(--klun-radius-lg)\", border: \"none\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-strong-950)\", outline: \"none\" }} />\n </div>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"0 12px 8px\" }}>Main</div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{main.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"20px 12px 8px\" }}>Other</div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{other.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ flex: 1 }} />\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: 8, borderRadius: \"var(--klun-radius-xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <span style={{ width: 36, height: 36, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-feature-lighter)\", color: \"var(--klun-state-feature-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-label-sm)\", flexShrink: 0 }}>{user.initials}</span>\n <div style={{ flex: 1, minWidth: 0, lineHeight: 1.2 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{user.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{user.email}</div>\n </div>\n <i className=\"ri-expand-up-down-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n </aside>\n );\n}\n","// Klun UI dashboard top bar — page title, search, actions.\nimport { Button, Badge } from \"../../index\";\n\nexport interface TopBarProps {\n title: string;\n subtitle: string;\n}\n\nexport function TopBar({ title, subtitle }: TopBarProps) {\n return (\n <header style={{ display: \"flex\", alignItems: \"center\", gap: 16, padding: \"20px 32px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <div style={{ flex: 1 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{title}</h1>\n <Badge color=\"gray\" size=\"small\">Live</Badge>\n </div>\n <p style={{ margin: \"2px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{subtitle}</p>\n </div>\n <Button iconOnly variant=\"neutral\" appearance=\"stroke\" icon={<i className=\"ri-notification-3-line\" />} />\n <Button iconOnly variant=\"neutral\" appearance=\"stroke\" icon={<i className=\"ri-calendar-line\" />} />\n <Button variant=\"primary\" leadingIcon={<i className=\"ri-add-line\" />}>New transfer</Button>\n </header>\n );\n}\n","// Klun UI dashboard — Overview screen. Stat cards, balance, recent transactions table.\nimport { useState } from \"react\";\nimport { Card, Badge, Button, ProgressBar, SegmentedControl, Tabs } from \"../../index\";\nimport type { BadgeColor } from \"../../index\";\n\ninterface Stat {\n label: string;\n value: string;\n delta: string;\n up: boolean;\n icon: string;\n tint: string;\n}\n\ninterface Transaction {\n name: string;\n sub: string;\n amt: string;\n date: string;\n status: string;\n color: BadgeColor;\n icon: string;\n bg: string;\n fg: string;\n}\n\nexport function OverviewScreen() {\n const [range, setRange] = useState(\"month\");\n const [tab, setTab] = useState(\"all\");\n\n const stats: Stat[] = [\n { label: \"Total balance\", value: \"$84,920.50\", delta: \"+12.4%\", up: true, icon: \"ri-wallet-3-line\", tint: \"feature\" },\n { label: \"Income\", value: \"$24,300.00\", delta: \"+8.1%\", up: true, icon: \"ri-arrow-down-line\", tint: \"success\" },\n { label: \"Expenses\", value: \"$11,240.80\", delta: \"-3.2%\", up: false, icon: \"ri-arrow-up-line\", tint: \"warning\" },\n { label: \"Savings\", value: \"$13,059.20\", delta: \"+5.7%\", up: true, icon: \"ri-safe-2-line\", tint: \"information\" },\n ];\n const tx: Transaction[] = [\n { name: \"Figma\", sub: \"Subscription\", amt: \"-$45.00\", date: \"Today, 10:24\", status: \"Completed\", color: \"green\", icon: \"ri-pencil-ruler-2-line\", bg: \"var(--klun-state-feature-lighter)\", fg: \"var(--klun-state-feature-base)\" },\n { name: \"Stripe payout\", sub: \"Income\", amt: \"+$2,400.00\", date: \"Today, 08:10\", status: \"Completed\", color: \"green\", icon: \"ri-bank-line\", bg: \"var(--klun-state-success-lighter)\", fg: \"var(--klun-state-success-base)\" },\n { name: \"AWS\", sub: \"Infrastructure\", amt: \"-$312.40\", date: \"Yesterday\", status: \"Pending\", color: \"orange\", icon: \"ri-cloud-line\", bg: \"var(--klun-state-warning-lighter)\", fg: \"var(--klun-state-warning-base)\" },\n { name: \"Linear\", sub: \"Subscription\", amt: \"-$96.00\", date: \"Mar 12\", status: \"Completed\", color: \"green\", icon: \"ri-flow-chart\", bg: \"var(--klun-state-information-lighter)\", fg: \"var(--klun-state-information-base)\" },\n { name: \"Refund · Notion\", sub: \"Income\", amt: \"+$120.00\", date: \"Mar 11\", status: \"Failed\", color: \"red\", icon: \"ri-file-text-line\", bg: \"var(--klun-bg-weak-50)\", fg: \"var(--klun-text-sub-600)\" },\n ];\n const budget: ReadonlyArray<readonly [string, number, string]> = [\n [\"Housing\", 38, \"feature\"],\n [\"Food\", 24, \"success\"],\n [\"Transport\", 18, \"warning\"],\n ];\n\n return (\n <div style={{ padding: 32, display: \"flex\", flexDirection: \"column\", gap: 24 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <SegmentedControl value={range} onChange={setRange} items={[{ value: \"week\", label: \"Week\" }, { value: \"month\", label: \"Month\" }, { value: \"year\", label: \"Year\" }]} />\n <Button variant=\"neutral\" appearance=\"stroke\" size=\"small\" leadingIcon={<i className=\"ri-download-2-line\" />}>Export</Button>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\", gap: 16 }}>\n {stats.map((s) => (\n <Card key={s.label} variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"flex-start\" }}>\n <div style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", background: `var(--klun-state-${s.tint}-lighter)`, color: `var(--klun-state-${s.tint}-base)`, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22 }}><i className={s.icon} /></div>\n <Badge color={s.up ? \"green\" : \"red\"} variant=\"light\" size=\"small\" leadingIcon={<i className={s.up ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} />}>{s.delta}</Badge>\n </div>\n <div style={{ marginTop: 16, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{s.label}</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{s.value}</div>\n </Card>\n ))}\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"1.7fr 1fr\", gap: 16, alignItems: \"start\" }}>\n <Card variant=\"stroke\" padding={0}>\n <div style={{ padding: \"16px 20px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Recent transactions</div>\n <Button variant=\"neutral\" appearance=\"ghost\" size=\"xsmall\" trailingIcon={<i className=\"ri-arrow-right-s-line\" />}>View all</Button>\n </div>\n <div style={{ padding: \"8px 12px\" }}>\n <Tabs value={tab} onChange={setTab} items={[{ value: \"all\", label: \"All\" }, { value: \"income\", label: \"Income\" }, { value: \"expense\", label: \"Expenses\" }]} />\n </div>\n <div>\n {tx.map((t, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"12px 20px\", borderTop: i ? \"1px solid var(--klun-stroke-soft-200)\" : \"none\" }}>\n <div style={{ width: 38, height: 38, borderRadius: \"var(--klun-radius-lg)\", background: t.bg, color: t.fg, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 20, flexShrink: 0 }}><i className={t.icon} /></div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{t.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{t.sub} · {t.date}</div>\n </div>\n <Badge color={t.color} variant=\"light\" size=\"small\">{t.status}</Badge>\n <div style={{ width: 92, textAlign: \"right\", font: \"var(--klun-text-label-sm)\", color: t.amt[0] === \"+\" ? \"var(--klun-state-success-base)\" : \"var(--klun-text-strong-950)\" }}>{t.amt}</div>\n </div>\n ))}\n </div>\n </Card>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Card variant=\"shadow\" padding={20} style={{ background: \"var(--klun-bg-strong-950)\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", color: \"var(--klun-static-static-white)\" }}>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", opacity: .7 }}>Virtual card</span>\n <i className=\"ri-visa-line\" style={{ fontSize: 24 }} />\n </div>\n <div style={{ marginTop: 28, font: \"var(--klun-text-label-lg)\", letterSpacing: \"0.12em\", color: \"var(--klun-static-static-white)\" }}>4218&nbsp;&nbsp;••••&nbsp;&nbsp;••••&nbsp;&nbsp;9042</div>\n <div style={{ marginTop: 16, display: \"flex\", justifyContent: \"space-between\", color: \"var(--klun-static-static-white)\", opacity: .8, font: \"var(--klun-text-paragraph-xs)\" }}>\n <span>Arthur Taylor</span><span>09 / 28</span>\n </div>\n </Card>\n <Card variant=\"stroke\" padding={20}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Monthly budget</span>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>$11,240 / $16,000</span>\n </div>\n <div style={{ marginTop: 14 }}><ProgressBar value={70} /></div>\n <div style={{ marginTop: 16, display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {budget.map(([l, p, c]) => (\n <div key={l} style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ width: 8, height: 8, borderRadius: \"var(--klun-radius-pill)\", background: `var(--klun-state-${c}-base)` }} />\n <span style={{ flex: 1, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{l}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{p}%</span>\n </div>\n ))}\n </div>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n","// Klun UI dashboard — Settings screen (profile form).\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Card, Input, Select, Switch, Label, Button, Badge, Divider } from \"../../index\";\n\ninterface FieldProps {\n label: ReactNode;\n children: ReactNode;\n hint?: ReactNode;\n required?: boolean;\n}\n\nexport function SettingsScreen() {\n const [n, setN] = useState(true);\n const [m, setM] = useState(false);\n const Field = ({ label, children, hint, required }: FieldProps) => (\n <div style={{ display: \"grid\", gridTemplateColumns: \"220px 1fr\", gap: 24, padding: \"20px 0\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div>\n <Label required={required}>{label}</Label>\n {hint ? <div style={{ marginTop: 2, font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{hint}</div> : null}\n </div>\n <div style={{ maxWidth: 420 }}>{children}</div>\n </div>\n );\n return (\n <div style={{ padding: 32, maxWidth: 920 }}>\n <Card variant=\"stroke\" padding={24}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 16 }}>\n <span style={{ width: 64, height: 64, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-feature-lighter)\", color: \"var(--klun-state-feature-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-title-h5)\" }}>AT</span>\n <div style={{ flex: 1 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Arthur Taylor</span>\n <Badge color=\"green\" variant=\"light\" size=\"small\" dot>Verified</Badge>\n </div>\n <div style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>arthur@alignui.com</div>\n </div>\n <Button variant=\"neutral\" appearance=\"stroke\" size=\"small\" leadingIcon={<i className=\"ri-upload-2-line\" />}>Change photo</Button>\n </div>\n\n <div style={{ marginTop: 8 }}>\n <Field label=\"Full name\" required>\n <Input defaultValue=\"Arthur Taylor\" />\n </Field>\n <Field label=\"Email address\" required hint=\"Used for sign-in and receipts.\">\n <Input type=\"email\" defaultValue=\"arthur@alignui.com\" leadingIcon={<i className=\"ri-mail-line\" />} />\n </Field>\n <Field label=\"Role\">\n <Select defaultValue=\"finance\"><option value=\"finance\">Finance lead</option><option value=\"admin\">Administrator</option><option value=\"member\">Member</option></Select>\n </Field>\n <Field label=\"Notifications\" hint=\"How we reach you.\">\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 10, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n <Switch checked={n} onChange={setN} /> Email notifications\n </label>\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 10, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n <Switch checked={m} onChange={setM} /> Marketing updates\n </label>\n </div>\n </Field>\n </div>\n\n <Divider style={{ margin: \"8px 0 20px\" }} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 10 }}>\n <Button variant=\"neutral\" appearance=\"stroke\">Cancel</Button>\n <Button variant=\"primary\">Save changes</Button>\n </div>\n </Card>\n </div>\n );\n}\n","// Klun UI dashboard template — app shell composing sidebar, top bar, and screens.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { SidebarUser } from \"./Sidebar\";\nimport { TopBar } from \"./TopBar\";\nimport { OverviewScreen } from \"./OverviewScreen\";\nimport { SettingsScreen } from \"./SettingsScreen\";\n\nexport { Sidebar } from \"./Sidebar\";\nexport type { SidebarProps, SidebarUser } from \"./Sidebar\";\nexport { TopBar } from \"./TopBar\";\nexport type { TopBarProps } from \"./TopBar\";\nexport { OverviewScreen } from \"./OverviewScreen\";\nexport { SettingsScreen } from \"./SettingsScreen\";\n\ninterface Page {\n title: string;\n subtitle: string;\n render: () => ReactNode;\n}\n\nconst PAGES: Record<string, Page> = {\n overview: { title: \"Overview\", subtitle: \"Your money at a glance, March 2026.\", render: () => <OverviewScreen /> },\n settings: { title: \"Settings\", subtitle: \"Manage your profile and preferences.\", render: () => <SettingsScreen /> },\n};\n\nexport function DashboardTemplate() {\n const [active, setActive] = useState(\"overview\");\n const page: Page = PAGES[active] ?? {\n title: active[0].toUpperCase() + active.slice(1),\n subtitle: \"Coming soon in this demo.\",\n render: () => (\n <div style={{ padding: 64, textAlign: \"center\", color: \"var(--klun-text-soft-400)\", font: \"var(--klun-text-paragraph-lg)\" }}>\n <i className=\"ri-inbox-line\" style={{ fontSize: 40, display: \"block\", marginBottom: 12 }} />\n This screen isn't part of the demo — try Overview or Settings.\n </div>\n ),\n };\n const user: SidebarUser = { name: \"Arthur Taylor\", email: \"arthur@alignui.com\", initials: \"AT\" };\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <Sidebar active={active} onNavigate={setActive} user={user} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", overflow: \"hidden\" }}>\n <TopBar title={page.title} subtitle={page.subtitle} />\n <main style={{ flex: 1, overflow: \"auto\", background: \"var(--klun-bg-weak-50)\" }}>{page.render()}</main>\n </div>\n </div>\n );\n}\n","// Klun UI AI assistant — conversations sidebar.\n\nexport interface AIConversation {\n id: string;\n group: \"today\" | \"week\";\n title: string;\n}\n\nexport interface AIUser {\n name: string;\n initials: string;\n}\n\nexport interface AISidebarProps {\n conversations: AIConversation[];\n activeId: string;\n onSelect: (id: string) => void;\n onNew: () => void;\n user: AIUser;\n}\n\nexport function AISidebar({ conversations, activeId, onSelect, onNew, user }: AISidebarProps) {\n const groups = [\n { label: \"Today\", items: conversations.filter((c) => c.group === \"today\") },\n { label: \"Previous 7 days\", items: conversations.filter((c) => c.group === \"week\") },\n ];\n return (\n <aside style={{ width: 280, flexShrink: 0, height: \"100%\", boxSizing: \"border-box\", display: \"flex\", flexDirection: \"column\", padding: 16, background: \"var(--klun-bg-weak-50)\", borderRight: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 6px 16px\" }}>\n <div style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-sparkling-2-fill\" style={{ fontSize: 18 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Klun AI</span>\n </div>\n\n <button onClick={onNew} style={{ display: \"flex\", alignItems: \"center\", gap: 8, width: \"100%\", height: 40, padding: \"0 12px\", marginBottom: 16, border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: \"pointer\", background: \"var(--klun-primary-base)\", color: \"var(--klun-static-static-white)\", font: \"var(--klun-text-label-sm)\" }}>\n <i className=\"ri-add-line\" style={{ fontSize: 20 }} /> New chat\n </button>\n\n <div style={{ position: \"relative\", marginBottom: 16 }}>\n <i className=\"ri-search-line\" style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n <input placeholder=\"Search chats\" style={{ width: \"100%\", boxSizing: \"border-box\", height: 36, padding: \"0 12px 0 36px\", borderRadius: \"var(--klun-radius-lg)\", border: \"none\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-strong-950)\", outline: \"none\" }} />\n </div>\n\n <div style={{ flex: 1, overflow: \"auto\", display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n {groups.map((g) => g.items.length ? (\n <div key={g.label}>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"0 8px 6px\" }}>{g.label}</div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {g.items.map((c) => {\n const on = c.id === activeId;\n return (\n <button key={c.id} onClick={() => onSelect(c.id)} style={{\n display: \"flex\", alignItems: \"center\", gap: 8, width: \"100%\", height: 36, padding: \"0 10px\",\n border: \"none\", borderRadius: \"var(--klun-radius-md)\", cursor: \"pointer\", textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\", font: \"var(--klun-text-label-sm)\",\n }}>\n <i className=\"ri-chat-1-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\", flexShrink: 0 }} />\n <span style={{ flex: 1, whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{c.title}</span>\n </button>\n );\n })}\n </div>\n </div>\n ) : null)}\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: 8, marginTop: 8, borderRadius: \"var(--klun-radius-xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <span style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-feature-lighter)\", color: \"var(--klun-state-feature-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-label-xs)\", flexShrink: 0 }}>{user.initials}</span>\n <div style={{ flex: 1, minWidth: 0, lineHeight: 1.2 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{user.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>Free plan</div>\n </div>\n <i className=\"ri-settings-3-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n </aside>\n );\n}\n","// Klun UI AI assistant — chat thread + welcome state.\nimport { useEffect, useRef } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Avatar } from \"../../index\";\n\nfunction Bubble({ from = \"them\", avatar, children }: { from?: \"me\" | \"them\"; avatar?: ReactNode; children?: ReactNode }) {\n const me = from === \"me\";\n return (\n <div style={{ display: \"flex\", flexDirection: me ? \"row-reverse\" : \"row\", gap: 10, alignItems: \"flex-end\" }}>\n {avatar ? <span style={{ flexShrink: 0 }}>{avatar}</span> : null}\n <div style={{ maxWidth: \"76%\", display: \"flex\", flexDirection: \"column\", gap: 4, alignItems: me ? \"flex-end\" : \"flex-start\" }}>\n <div style={{ padding: \"10px 14px\", font: \"var(--klun-text-paragraph-sm)\", borderRadius: me ? \"var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-sm) var(--klun-radius-2xl)\" : \"var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-sm)\", background: me ? \"var(--klun-primary-base)\" : \"var(--klun-bg-weak-50)\", color: me ? \"var(--klun-static-static-white)\" : \"var(--klun-text-strong-950)\" }}>{children}</div>\n </div>\n </div>\n );\n}\n\nexport interface AIMessage {\n from: \"me\" | \"them\";\n text: string;\n}\n\nexport interface AIChatViewProps {\n messages: AIMessage[];\n busy: boolean;\n userInitials: string;\n onSuggest: (text: string) => void;\n}\n\nexport function AIChatView({ messages, busy, userInitials, onSuggest }: AIChatViewProps) {\n const endRef = useRef<HTMLDivElement>(null);\n useEffect(() => { endRef.current?.scrollTo?.(0, endRef.current.scrollHeight); }, [messages, busy]);\n\n const suggestions = [\n { icon: \"ri-file-list-3-line\", text: \"Summarize my unread invoices\" },\n { icon: \"ri-line-chart-line\", text: \"Compare Q1 and Q2 revenue\" },\n { icon: \"ri-mail-send-line\", text: \"Draft a follow-up email to a client\" },\n { icon: \"ri-calendar-todo-line\", text: \"Plan my week around 3 deadlines\" },\n ];\n\n if (messages.length === 0) {\n return (\n <div style={{ flex: 1, display: \"flex\", flexDirection: \"column\", alignItems: \"center\", justifyContent: \"center\", padding: 32, textAlign: \"center\" }}>\n <div style={{ width: 56, height: 56, borderRadius: \"var(--klun-radius-2xl)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 28, marginBottom: 20 }}>\n <i className=\"ri-sparkling-2-fill\" />\n </div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>How can I help, Arthur?</h1>\n <p style={{ margin: \"8px 0 28px\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\" }}>Ask anything, or start from a suggestion below.</p>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 12, maxWidth: 540, width: \"100%\" }}>\n {suggestions.map((s) => (\n <button key={s.text} onClick={() => onSuggest(s.text)} style={{\n display: \"flex\", alignItems: \"center\", gap: 10, padding: \"14px 16px\", textAlign: \"left\",\n border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\",\n }}>\n <i className={s.icon} style={{ fontSize: 20, color: \"var(--klun-primary-base)\" }} />\n <span>{s.text}</span>\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={endRef} style={{ flex: 1, overflow: \"auto\" }}>\n <div style={{ maxWidth: 720, margin: \"0 auto\", padding: \"24px 24px 8px\", display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n {messages.map((m, i) => (\n <Bubble key={i} from={m.from}\n avatar={m.from === \"me\"\n ? <Avatar size=\"32\" initials={userInitials} color=\"purple\" />\n : <span style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16 }}><i className=\"ri-sparkling-2-fill\" /></span>}\n >{m.text}</Bubble>\n ))}\n {busy ? (\n <Bubble from=\"them\" avatar={<span style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16 }}><i className=\"ri-sparkling-2-fill\" /></span>}>\n <span className=\"ai-typing\"><span></span><span></span><span></span></span>\n </Bubble>\n ) : null}\n </div>\n </div>\n );\n}\n","// Klun UI AI assistant — prompt composer with model select, attachments, send.\nimport { useRef, useState, type ChangeEvent, type CSSProperties } from \"react\";\n\nexport interface AIComposerProps {\n onSend: (text: string) => void;\n busy: boolean;\n}\n\nexport function AIComposer({ onSend, busy }: AIComposerProps) {\n const [text, setText] = useState(\"\");\n const [model, setModel] = useState(\"Klun-4o\");\n const taRef = useRef<HTMLTextAreaElement>(null);\n const send = () => {\n const t = text.trim();\n if (!t || busy) return;\n onSend(t);\n setText(\"\");\n if (taRef.current) taRef.current.style.height = \"auto\";\n };\n const grow = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setText(e.target.value);\n e.target.style.height = \"auto\";\n e.target.style.height = Math.min(e.target.scrollHeight, 160) + \"px\";\n };\n return (\n <div style={{ padding: \"0 24px 20px\" }}>\n <div style={{ maxWidth: 720, margin: \"0 auto\", borderRadius: \"var(--klun-radius-3xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"var(--klun-shadow-md), inset 0 0 0 1px var(--klun-stroke-soft-200)\", padding: 12 }}>\n <textarea\n ref={taRef}\n value={text}\n onChange={grow}\n onKeyDown={(e) => { if (e.key === \"Enter\" && !e.shiftKey) { e.preventDefault(); send(); } }}\n placeholder=\"Ask Klun AI anything…\"\n rows={1}\n style={{ width: \"100%\", boxSizing: \"border-box\", border: \"none\", outline: \"none\", resize: \"none\", background: \"transparent\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-strong-950)\", padding: \"6px 6px 10px\", maxHeight: 160 }}\n />\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <button title=\"Attach file\" style={iconBtn}><i className=\"ri-attachment-2\" /></button>\n <button title=\"Add image\" style={iconBtn}><i className=\"ri-image-line\" /></button>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 4, height: 32, padding: \"0 8px 0 10px\", borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-weak-50)\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", cursor: \"pointer\" }}>\n <i className=\"ri-cpu-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n <select value={model} onChange={(e) => setModel(e.target.value)} style={{ appearance: \"none\", WebkitAppearance: \"none\", border: \"none\", outline: \"none\", background: \"transparent\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", cursor: \"pointer\" }}>\n <option>Klun-4o</option><option>Klun-4 Turbo</option><option>Klun-mini</option>\n </select>\n <i className=\"ri-arrow-down-s-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n <div style={{ flex: 1 }} />\n <button onClick={send} disabled={!text.trim() || busy} title=\"Send\" style={{\n display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 36, height: 36,\n border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: text.trim() && !busy ? \"pointer\" : \"not-allowed\",\n background: text.trim() && !busy ? \"var(--klun-primary-base)\" : \"var(--klun-bg-soft-200)\",\n color: text.trim() && !busy ? \"var(--klun-static-static-white)\" : \"var(--klun-text-soft-400)\", fontSize: 20,\n }}><i className=\"ri-arrow-up-line\" /></button>\n </div>\n </div>\n <div style={{ maxWidth: 720, margin: \"8px auto 0\", textAlign: \"center\", font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Klun AI can make mistakes. Check important info.\n </div>\n </div>\n );\n}\n\nconst iconBtn: CSSProperties = { display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 32, height: 32, border: \"none\", borderRadius: \"var(--klun-radius-md)\", background: \"transparent\", color: \"var(--klun-icon-sub-600)\", cursor: \"pointer\", fontSize: 18 };\n","// Klun UI AI assistant — full template composition.\nimport { useState } from \"react\";\nimport { Badge, Button } from \"../../index\";\nimport { AISidebar, type AIConversation, type AIUser } from \"./AISidebar\";\nimport { AIChatView, type AIMessage } from \"./ChatView\";\nimport { AIComposer } from \"./Composer\";\n\nconst REPLIES = [\n \"Here's a quick summary: you have 3 unread invoices totaling $4,512. Two are overdue — Apex Ltd ($2,400) and Northwind ($1,800).\",\n \"Happy to help with that. Based on your data, Q2 revenue is up 12.4% over Q1, driven mainly by recurring subscriptions.\",\n \"Done — I've drafted a friendly follow-up. Want me to adjust the tone or add a payment link?\",\n \"Got it. I've blocked focus time around your 3 deadlines and left buffers for review. Shall I add them to your calendar?\",\n];\n\nexport function AIAssistantTemplate() {\n const seed: AIConversation[] = [\n { id: \"c1\", group: \"today\", title: \"Q2 revenue breakdown\" },\n { id: \"c2\", group: \"today\", title: \"Follow-up email draft\" },\n { id: \"c3\", group: \"week\", title: \"Invoice reminders\" },\n { id: \"c4\", group: \"week\", title: \"Weekly planning\" },\n ];\n const [convs] = useState<AIConversation[]>(seed);\n const [activeId, setActiveId] = useState(\"new\");\n const [threads, setThreads] = useState<Record<string, AIMessage[]>>({ new: [] });\n const [busy, setBusy] = useState(false);\n const user: AIUser = { name: \"Arthur Taylor\", initials: \"AT\" };\n const messages = threads[activeId] || [];\n\n const ask = (text: string) => {\n setThreads((t) => ({ ...t, [activeId]: [...(t[activeId] || []), { from: \"me\", text }] }));\n setBusy(true);\n setTimeout(() => {\n const reply = REPLIES[Math.floor(Math.random() * REPLIES.length)];\n setThreads((t) => ({ ...t, [activeId]: [...(t[activeId] || []), { from: \"them\", text: reply }] }));\n setBusy(false);\n }, 1100);\n };\n\n const newChat = () => { setActiveId(\"new\"); setThreads((t) => ({ ...t, new: [] })); };\n\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <AISidebar conversations={convs} activeId={activeId} onSelect={(id) => { setActiveId(id); setThreads((t) => t[id] ? t : { ...t, [id]: [] }); }} onNew={newChat} user={user} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\" }}>\n <header style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"14px 24px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>New chat</span>\n <Badge color=\"purple\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-flashlight-fill\" />}>Klun-4o</Badge>\n <div style={{ flex: 1 }} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-share-line\" />} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-more-2-fill\" />} />\n </header>\n <AIChatView messages={messages} busy={busy} userInitials={user.initials} onSuggest={ask} />\n <AIComposer onSend={ask} busy={busy} />\n </div>\n </div>\n );\n}\n","// Klun UI agent chat — sessions sidebar.\nimport { StatusDot } from \"../../index\";\n\nexport interface AgentSession {\n id: string;\n group: \"today\" | \"week\";\n title: string;\n /** Live state shown as a leading dot. */\n state?: \"running\" | \"done\" | \"idle\";\n}\n\nexport interface AgentUser {\n name: string;\n initials: string;\n plan?: string;\n}\n\nexport interface AgentSidebarProps {\n sessions: AgentSession[];\n activeId: string;\n onSelect: (id: string) => void;\n onNew: () => void;\n user: AgentUser;\n}\n\nconst DOT_TONE = { running: \"warn\", done: \"ok\", idle: \"neutral\" } as const;\n\nexport function AgentSidebar({ sessions, activeId, onSelect, onNew, user }: AgentSidebarProps) {\n const groups = [\n { label: \"Today\", items: sessions.filter((c) => c.group === \"today\") },\n { label: \"Previous 7 days\", items: sessions.filter((c) => c.group === \"week\") },\n ];\n return (\n <aside\n style={{\n width: 280,\n flexShrink: 0,\n height: \"100%\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: 16,\n background: \"var(--klun-bg-weak-50)\",\n borderRight: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 6px 16px\" }}>\n <div\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--klun-radius-md)\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <i className=\"ri-sparkling-2-fill\" style={{ fontSize: 18 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Klun Agent</span>\n </div>\n\n <button\n onClick={onNew}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n height: 40,\n padding: \"0 12px\",\n marginBottom: 16,\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-static-static-white)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n <i className=\"ri-add-line\" style={{ fontSize: 20 }} /> New task\n </button>\n\n <div style={{ position: \"relative\", marginBottom: 16 }}>\n <i\n className=\"ri-search-line\"\n style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }}\n />\n <input\n placeholder=\"Search tasks\"\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n height: 36,\n padding: \"0 12px 0 36px\",\n borderRadius: \"var(--klun-radius-lg)\",\n border: \"none\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n font: \"var(--klun-text-paragraph-sm)\",\n color: \"var(--klun-text-strong-950)\",\n outline: \"none\",\n }}\n />\n </div>\n\n <div style={{ flex: 1, overflow: \"auto\", display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n {groups.map((g) =>\n g.items.length ? (\n <div key={g.label}>\n <div\n style={{\n font: \"var(--klun-text-subheading-2xs)\",\n letterSpacing: \"var(--klun-subheading-2xs-tracking)\",\n textTransform: \"uppercase\",\n color: \"var(--klun-text-soft-400)\",\n padding: \"0 8px 6px\",\n }}\n >\n {g.label}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {g.items.map((c) => {\n const on = c.id === activeId;\n return (\n <button\n key={c.id}\n onClick={() => onSelect(c.id)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n height: 36,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n {c.state ? (\n <StatusDot tone={DOT_TONE[c.state]} size=\"sm\" pulse={c.state === \"running\"} />\n ) : (\n <i className=\"ri-chat-1-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\", flexShrink: 0 }} />\n )}\n <span style={{ flex: 1, whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{c.title}</span>\n </button>\n );\n })}\n </div>\n </div>\n ) : null,\n )}\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: 8,\n marginTop: 8,\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n }}\n >\n <span\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-state-feature-lighter)\",\n color: \"var(--klun-state-feature-base)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n font: \"var(--klun-text-label-xs)\",\n flexShrink: 0,\n }}\n >\n {user.initials}\n </span>\n <div style={{ flex: 1, minWidth: 0, lineHeight: 1.2 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{user.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{user.plan || \"Free plan\"}</div>\n </div>\n <i className=\"ri-settings-3-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n </aside>\n );\n}\n","// Klun UI agent chat — message thread that renders an agent run: reasoning,\n// task plan, tool calls and the streamed final answer.\nimport { useEffect, useRef, useState } from \"react\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { Avatar, Badge, Spinner, StatusDot } from \"../../index\";\n\n/* ------------------------------------------------------------------ types -- */\n\nexport type AgentStepStatus = \"todo\" | \"active\" | \"done\";\nexport interface AgentStep {\n text: string;\n status: AgentStepStatus;\n}\n\nexport type AgentToolStatus = \"running\" | \"done\" | \"error\";\n\n/** A collapsible chain-of-thought block. While `seconds` is undefined the agent\n * is still thinking; once set, the block collapses to a one-line summary. */\nexport interface AgentThinkingBlock {\n kind: \"thinking\";\n text: string;\n seconds?: number;\n}\n/** A task list the agent committed to before acting. */\nexport interface AgentPlanBlock {\n kind: \"plan\";\n title?: string;\n steps: AgentStep[];\n}\n/** A single tool invocation with request preview, status and result. */\nexport interface AgentToolBlock {\n kind: \"tool\";\n name: string;\n icon?: string;\n request?: string;\n status: AgentToolStatus;\n result?: string;\n}\n/** Plain (possibly still-streaming) assistant prose. */\nexport interface AgentTextBlock {\n kind: \"text\";\n text: string;\n}\nexport type AgentBlock = AgentThinkingBlock | AgentPlanBlock | AgentToolBlock | AgentTextBlock;\n\nexport interface AgentMessage {\n id: string;\n from: \"me\" | \"agent\";\n /** User turns. */\n text?: string;\n /** Agent turns are a sequence of blocks. */\n blocks?: AgentBlock[];\n /** True while the agent is still producing this turn. */\n streaming?: boolean;\n}\n\nexport interface AgentSuggestion {\n icon: string;\n text: string;\n}\n\nexport interface AgentThreadProps {\n messages: AgentMessage[];\n userInitials: string;\n agentName: string;\n suggestions: AgentSuggestion[];\n onSuggest: (text: string) => void;\n}\n\n/* -------------------------------------------------------------- primitives -- */\n\nfunction AgentMark({ size = 32 }: { size?: number }) {\n return (\n <span\n style={{\n width: size,\n height: size,\n flexShrink: 0,\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: size * 0.5,\n }}\n >\n <i className=\"ri-sparkling-2-fill\" />\n </span>\n );\n}\n\nconst cardBase: CSSProperties = {\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n overflow: \"hidden\",\n};\n\nconst cardHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n padding: \"10px 12px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n textAlign: \"left\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n};\n\nfunction Chevron({ open }: { open: boolean }) {\n return (\n <i\n className=\"ri-arrow-down-s-line\"\n style={{\n marginLeft: \"auto\",\n fontSize: 18,\n color: \"var(--klun-icon-soft-400)\",\n transform: open ? \"rotate(180deg)\" : \"none\",\n transition: \"transform var(--klun-duration-fast, .15s) var(--klun-ease-out, ease)\",\n }}\n />\n );\n}\n\n/* --- thinking ----------------------------------------------------------- */\n\nfunction ThinkingBlock({ block }: { block: AgentThinkingBlock }) {\n const done = block.seconds != null;\n const [open, setOpen] = useState(!done);\n // Auto-collapse once thinking finishes.\n const wasDone = useRef(done);\n useEffect(() => {\n if (done && !wasDone.current) setOpen(false);\n wasDone.current = done;\n }, [done]);\n\n return (\n <div style={cardBase}>\n <button type=\"button\" style={cardHeader} onClick={() => setOpen((o) => !o)}>\n <i\n className={done ? \"ri-brain-line\" : \"ri-loader-4-line\"}\n style={{\n fontSize: 18,\n color: \"var(--klun-state-feature-base)\",\n animation: done ? undefined : \"klun-agent-spin .9s linear infinite\",\n }}\n />\n <span style={{ color: \"var(--klun-text-sub-600)\" }}>\n {done ? `Thought for ${block.seconds}s` : \"Thinking…\"}\n </span>\n <Chevron open={open} />\n </button>\n {open ? (\n <div\n style={{\n padding: \"0 12px 12px 38px\",\n font: \"var(--klun-text-paragraph-sm)\",\n fontStyle: \"italic\",\n color: \"var(--klun-text-sub-600)\",\n whiteSpace: \"pre-wrap\",\n lineHeight: 1.6,\n }}\n >\n {block.text}\n </div>\n ) : null}\n </div>\n );\n}\n\n/* --- plan --------------------------------------------------------------- */\n\nconst STEP_ICON: Record<AgentStepStatus, ReactNode> = {\n done: <i className=\"ri-checkbox-circle-fill\" style={{ color: \"var(--klun-state-success-base)\" }} />,\n active: <Spinner size=\"sm\" color=\"var(--klun-primary-base)\" />,\n todo: <i className=\"ri-checkbox-blank-circle-line\" style={{ color: \"var(--klun-icon-soft-400)\" }} />,\n};\n\nfunction PlanBlock({ block }: { block: AgentPlanBlock }) {\n const done = block.steps.filter((s) => s.status === \"done\").length;\n return (\n <div style={{ ...cardBase, padding: \"12px 14px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n marginBottom: 10,\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n <i className=\"ri-list-check-2\" style={{ fontSize: 18, color: \"var(--klun-icon-sub-600)\" }} />\n <span>{block.title || \"Plan\"}</span>\n <span style={{ marginLeft: \"auto\", font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {done}/{block.steps.length}\n </span>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n {block.steps.map((s, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ width: 16, height: 16, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16, flexShrink: 0 }}>\n {STEP_ICON[s.status]}\n </span>\n <span\n style={{\n font: \"var(--klun-text-paragraph-sm)\",\n color: s.status === \"todo\" ? \"var(--klun-text-soft-400)\" : \"var(--klun-text-strong-950)\",\n textDecoration: s.status === \"done\" ? \"line-through\" : \"none\",\n textDecorationColor: \"var(--klun-text-soft-400)\",\n }}\n >\n {s.text}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n/* --- tool call ---------------------------------------------------------- */\n\nconst TOOL_TONE: Record<AgentToolStatus, { dot: \"warn\" | \"ok\" | \"err\"; label: string }> = {\n running: { dot: \"warn\", label: \"Running\" },\n done: { dot: \"ok\", label: \"Done\" },\n error: { dot: \"err\", label: \"Stopped\" },\n};\n\nfunction ToolBlock({ block }: { block: AgentToolBlock }) {\n const [open, setOpen] = useState(false);\n const tone = TOOL_TONE[block.status];\n return (\n <div style={cardBase}>\n <button type=\"button\" style={cardHeader} onClick={() => setOpen((o) => !o)}>\n <i className={block.icon || \"ri-terminal-box-line\"} style={{ fontSize: 18, color: \"var(--klun-icon-sub-600)\" }} />\n <span style={{ color: \"var(--klun-text-soft-400)\" }}>Tool</span>\n <code\n style={{\n font: \"var(--klun-text-label-sm)\",\n fontFamily: \"var(--klun-font-mono, ui-monospace, monospace)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n {block.name}\n </code>\n {block.status === \"running\" ? (\n <Spinner size=\"xs\" color=\"var(--klun-state-warning-base)\" />\n ) : (\n <StatusDot tone={tone.dot} size=\"sm\" />\n )}\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{tone.label}</span>\n <Chevron open={open} />\n </button>\n {open ? (\n <div style={{ padding: \"0 12px 12px\", display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {block.request ? <Snippet label=\"Request\" body={block.request} /> : null}\n {block.result ? (\n <Snippet label=\"Result\" body={block.result} tone={block.status === \"error\" ? \"error\" : \"default\"} />\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction Snippet({ label, body, tone = \"default\" }: { label: string; body: string; tone?: \"default\" | \"error\" }) {\n return (\n <div>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", marginBottom: 4 }}>\n {label}\n </div>\n <pre\n style={{\n margin: 0,\n padding: \"8px 10px\",\n borderRadius: \"var(--klun-radius-md)\",\n background: tone === \"error\" ? \"var(--klun-state-error-lighter)\" : \"var(--klun-bg-weak-50)\",\n font: \"var(--klun-text-paragraph-xs)\",\n fontFamily: \"var(--klun-font-mono, ui-monospace, monospace)\",\n color: tone === \"error\" ? \"var(--klun-state-error-base)\" : \"var(--klun-text-sub-600)\",\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n }}\n >\n {body}\n </pre>\n </div>\n );\n}\n\n/* --- text --------------------------------------------------------------- */\n\nfunction TextBlock({ block, streaming }: { block: AgentTextBlock; streaming?: boolean }) {\n return (\n <div\n style={{\n font: \"var(--klun-text-paragraph-md)\",\n color: \"var(--klun-text-strong-950)\",\n lineHeight: 1.65,\n whiteSpace: \"pre-wrap\",\n }}\n >\n {block.text}\n {streaming ? <span className=\"klun-agent-caret\" /> : null}\n </div>\n );\n}\n\n/* ----------------------------------------------------------------- render -- */\n\nfunction AgentTurn({ msg }: { msg: AgentMessage }) {\n const blocks = msg.blocks || [];\n const lastTextIdx = blocks.map((b) => b.kind).lastIndexOf(\"text\");\n const onlyThinking = blocks.length > 0 && blocks.every((b) => b.kind === \"thinking\");\n return (\n <div style={{ display: \"flex\", gap: 12, alignItems: \"flex-start\" }}>\n <AgentMark />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: 10, paddingTop: 4 }}>\n {blocks.map((b, i) => {\n if (b.kind === \"thinking\") return <ThinkingBlock key={i} block={b} />;\n if (b.kind === \"plan\") return <PlanBlock key={i} block={b} />;\n if (b.kind === \"tool\") return <ToolBlock key={i} block={b} />;\n return <TextBlock key={i} block={b} streaming={msg.streaming && i === lastTextIdx} />;\n })}\n {/* No text yet but still working → show a typing affordance. */}\n {msg.streaming && lastTextIdx === -1 && !onlyThinking ? (\n <span className=\"klun-agent-typing\"><span /><span /><span /></span>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction UserTurn({ msg, initials }: { msg: AgentMessage; initials: string }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"row-reverse\", gap: 12, alignItems: \"flex-start\" }}>\n <Avatar size=\"32\" initials={initials} color=\"purple\" />\n <div\n style={{\n maxWidth: \"78%\",\n padding: \"10px 14px\",\n borderRadius: \"var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-sm) var(--klun-radius-2xl)\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-static-static-white)\",\n font: \"var(--klun-text-paragraph-sm)\",\n lineHeight: 1.55,\n whiteSpace: \"pre-wrap\",\n }}\n >\n {msg.text}\n </div>\n </div>\n );\n}\n\nexport function AgentThread({ messages, userInitials, agentName, suggestions, onSuggest }: AgentThreadProps) {\n const scrollRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n scrollRef.current?.scrollTo?.(0, scrollRef.current.scrollHeight);\n }, [messages]);\n\n if (messages.length === 0) {\n return (\n <div style={{ flex: 1, display: \"flex\", flexDirection: \"column\", alignItems: \"center\", justifyContent: \"center\", padding: 32, textAlign: \"center\" }}>\n <div\n style={{\n width: 56,\n height: 56,\n borderRadius: \"var(--klun-radius-2xl)\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 28,\n marginBottom: 20,\n }}\n >\n <i className=\"ri-sparkling-2-fill\" />\n </div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n What should {agentName} work on?\n </h1>\n <p style={{ margin: \"8px 0 28px\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\" }}>\n Describe a task — the agent will plan, use tools, and report back.\n </p>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 12, maxWidth: 560, width: \"100%\" }}>\n {suggestions.map((s) => (\n <button\n key={s.text}\n onClick={() => onSuggest(s.text)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"14px 16px\",\n textAlign: \"left\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-xl)\",\n cursor: \"pointer\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n <i className={s.icon} style={{ fontSize: 20, color: \"var(--klun-primary-base)\" }} />\n <span>{s.text}</span>\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={scrollRef} style={{ flex: 1, overflow: \"auto\" }}>\n <div style={{ maxWidth: 760, margin: \"0 auto\", padding: \"24px 24px 8px\", display: \"flex\", flexDirection: \"column\", gap: 24 }}>\n {messages.map((m) =>\n m.from === \"me\" ? (\n <UserTurn key={m.id} msg={m} initials={userInitials} />\n ) : (\n <AgentTurn key={m.id} msg={m} />\n ),\n )}\n </div>\n </div>\n );\n}\n\n/** Small status pill for the thread header. */\nexport function AgentRunBadge({ busy }: { busy: boolean }) {\n return busy ? (\n <Badge color=\"orange\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-loader-4-line\" style={{ animation: \"klun-agent-spin .9s linear infinite\" }} />}>\n Working\n </Badge>\n ) : (\n <Badge color=\"green\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-check-line\" />}>\n Idle\n </Badge>\n );\n}\n","// Klun UI agent chat — composer with model picker, tool toggle and a send\n// button that flips to a stop control while the agent is running.\nimport { useRef, useState, type ChangeEvent, type CSSProperties } from \"react\";\n\nexport interface AgentComposerProps {\n onSend: (text: string) => void;\n onStop: () => void;\n busy: boolean;\n /** Whether the agent is allowed to call tools this turn. */\n toolsOn: boolean;\n onToggleTools: (on: boolean) => void;\n}\n\nexport function AgentComposer({ onSend, onStop, busy, toolsOn, onToggleTools }: AgentComposerProps) {\n const [text, setText] = useState(\"\");\n const [model, setModel] = useState(\"Klun Agent-1\");\n const taRef = useRef<HTMLTextAreaElement>(null);\n\n const send = () => {\n const t = text.trim();\n if (!t || busy) return;\n onSend(t);\n setText(\"\");\n if (taRef.current) taRef.current.style.height = \"auto\";\n };\n const grow = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setText(e.target.value);\n e.target.style.height = \"auto\";\n e.target.style.height = Math.min(e.target.scrollHeight, 160) + \"px\";\n };\n\n const canSend = !!text.trim() && !busy;\n\n return (\n <div style={{ padding: \"0 24px 20px\" }}>\n <div\n style={{\n maxWidth: 760,\n margin: \"0 auto\",\n borderRadius: \"var(--klun-radius-3xl)\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"var(--klun-shadow-md), inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n padding: 12,\n }}\n >\n <textarea\n ref={taRef}\n value={text}\n onChange={grow}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n send();\n }\n }}\n placeholder=\"Give the agent a task…\"\n rows={1}\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n resize: \"none\",\n background: \"transparent\",\n font: \"var(--klun-text-paragraph-md)\",\n color: \"var(--klun-text-strong-950)\",\n padding: \"6px 6px 10px\",\n maxHeight: 160,\n }}\n />\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <button title=\"Attach file\" style={iconBtn}>\n <i className=\"ri-attachment-2\" />\n </button>\n <button\n type=\"button\"\n onClick={() => onToggleTools(!toolsOn)}\n title=\"Toggle tools\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 6,\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n cursor: \"pointer\",\n font: \"var(--klun-text-label-sm)\",\n background: toolsOn ? \"var(--klun-state-feature-lighter)\" : \"var(--klun-bg-weak-50)\",\n color: toolsOn ? \"var(--klun-state-feature-base)\" : \"var(--klun-text-sub-600)\",\n }}\n >\n <i className=\"ri-tools-line\" style={{ fontSize: 16 }} />\n Tools\n </button>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n height: 32,\n padding: \"0 8px 0 10px\",\n borderRadius: \"var(--klun-radius-md)\",\n background: \"var(--klun-bg-weak-50)\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-sub-600)\",\n cursor: \"pointer\",\n }}\n >\n <i className=\"ri-cpu-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n <select\n value={model}\n onChange={(e) => setModel(e.target.value)}\n style={{\n appearance: \"none\",\n WebkitAppearance: \"none\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-sub-600)\",\n cursor: \"pointer\",\n }}\n >\n <option>Klun Agent-1</option>\n <option>Klun Agent-1 Mini</option>\n <option>Klun Agent-1 Pro</option>\n </select>\n <i className=\"ri-arrow-down-s-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n <div style={{ flex: 1 }} />\n {busy ? (\n <button\n onClick={onStop}\n title=\"Stop\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 36,\n height: 36,\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n fontSize: 18,\n }}\n >\n <i className=\"ri-stop-fill\" />\n </button>\n ) : (\n <button\n onClick={send}\n disabled={!canSend}\n title=\"Send\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 36,\n height: 36,\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: canSend ? \"pointer\" : \"not-allowed\",\n background: canSend ? \"var(--klun-primary-base)\" : \"var(--klun-bg-soft-200)\",\n color: canSend ? \"var(--klun-static-static-white)\" : \"var(--klun-text-soft-400)\",\n fontSize: 20,\n }}\n >\n <i className=\"ri-arrow-up-line\" />\n </button>\n )}\n </div>\n </div>\n <div\n style={{\n maxWidth: 760,\n margin: \"8px auto 0\",\n textAlign: \"center\",\n font: \"var(--klun-text-paragraph-xs)\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n The agent can run tools and make mistakes. Review its actions.\n </div>\n </div>\n );\n}\n\nconst iconBtn: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 32,\n height: 32,\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n background: \"transparent\",\n color: \"var(--klun-icon-sub-600)\",\n cursor: \"pointer\",\n fontSize: 18,\n};\n","// Klun UI agent chat — full template composition. A simulated agent run that\n// reasons, lays out a plan, calls tools and streams its final answer, with a\n// working Stop control that aborts the run mid-flight.\nimport { useEffect, useRef, useState } from \"react\";\nimport { Button } from \"../../index\";\nimport { AgentSidebar, type AgentSession, type AgentUser } from \"./AgentSidebar\";\nimport {\n AgentThread,\n AgentRunBadge,\n type AgentBlock,\n type AgentMessage,\n type AgentPlanBlock,\n type AgentStep,\n type AgentSuggestion,\n type AgentTextBlock,\n} from \"./AgentThread\";\nimport { AgentComposer } from \"./AgentComposer\";\n\n/* --------------------------------------------------------------- scenarios -- */\n\ninterface Scenario {\n thinking: string;\n thinkSeconds: number;\n planTitle: string;\n /** One label per tool, plus a final \"compose the answer\" step. */\n steps: string[];\n tools: { name: string; icon: string; request: string; result: string }[];\n answer: string;\n}\n\nconst SCENARIOS: Scenario[] = [\n {\n thinking:\n \"The user wants the Q2 numbers summarized. I'll search the knowledge base for the latest financials, read the segment breakdown, then write a short summary with the key drivers. I won't make up figures — everything comes from the files.\",\n thinkSeconds: 3,\n planTitle: \"Plan\",\n steps: [\"Search the knowledge base\", \"Read the matching records\", \"Write the summary\"],\n tools: [\n {\n name: \"search_kb\",\n icon: \"ri-search-2-line\",\n request: 'query: \"Q2 revenue by segment\"\\nlimit: 5',\n result: \"5 documents found:\\n• 2024-Q2-financials.pdf (0.94)\\n• segment-breakdown.csv (0.91)\\n• board-notes.md (0.83)\",\n },\n {\n name: \"read_file\",\n icon: \"ri-file-text-line\",\n request: 'path: \"segment-breakdown.csv\"',\n result: \"segment,revenue,growth\\nSubscriptions,1.82M,+18%\\nServices,0.64M,+4%\\nOne-off,0.21M,-7%\",\n },\n ],\n answer:\n \"Here's the Q2 breakdown: total revenue was $2.67M, up 12.4% over Q1. Growth came almost entirely from subscriptions (+18%, $1.82M), while one-off sales slipped 7%. Want me to chart this or draft a board summary?\",\n },\n {\n thinking:\n \"They want a follow-up email for an overdue invoice. I'll look up the contact, draft the message, and save it as a draft — I will not send anything without explicit confirmation.\",\n thinkSeconds: 2,\n planTitle: \"Plan\",\n steps: [\"Look up the contact\", \"Draft the message\", \"Prepare the draft\"],\n tools: [\n {\n name: \"get_contact\",\n icon: \"ri-contacts-line\",\n request: 'name: \"Apex Ltd\"',\n result: '{ \"name\": \"Apex Ltd\", \"email\": \"ap@apex.example\", \"owner\": \"Arthur\" }',\n },\n {\n name: \"create_draft\",\n icon: \"ri-mail-add-line\",\n request: 'to: \"ap@apex.example\"\\nsubject: \"Friendly reminder — invoice #1042\"',\n result: \"Draft saved (id: dr_7c21). Not sent.\",\n },\n ],\n answer:\n \"I've drafted a friendly reminder to Apex Ltd about invoice #1042 ($2,400, 6 days overdue) and saved it as a draft — I did not send it. Want me to add a payment link, soften the tone, or go ahead and send?\",\n },\n];\n\nconst SUGGESTIONS: AgentSuggestion[] = [\n { icon: \"ri-search-2-line\", text: \"Research our Q2 revenue and summarize it\" },\n { icon: \"ri-mail-send-line\", text: \"Draft and queue an overdue-invoice reminder\" },\n { icon: \"ri-bug-line\", text: \"Find the failing checkout test and propose a fix\" },\n { icon: \"ri-calendar-todo-line\", text: \"Plan my week around 3 deadlines\" },\n];\n\n/* ----------------------------------------------------------------- helpers -- */\n\nfunction mapLastKind<K extends AgentBlock[\"kind\"]>(\n blocks: AgentBlock[],\n kind: K,\n fn: (b: Extract<AgentBlock, { kind: K }>) => AgentBlock,\n): AgentBlock[] {\n for (let i = blocks.length - 1; i >= 0; i--) {\n if (blocks[i].kind === kind) {\n const next = blocks.slice();\n next[i] = fn(blocks[i] as Extract<AgentBlock, { kind: K }>);\n return next;\n }\n }\n return blocks;\n}\n\n/* ------------------------------------------------------------------- view -- */\n\nconst STYLES = `\n@keyframes klun-agent-spin { to { transform: rotate(360deg); } }\n@keyframes klun-agent-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }\n@keyframes klun-agent-bounce { 0%, 80%, 100% { transform: translateY(0); opacity: .4; } 40% { transform: translateY(-4px); opacity: 1; } }\n.klun-agent-caret { display: inline-block; width: 7px; height: 1.05em; margin-left: 2px; transform: translateY(2px); border-radius: 1px; background: var(--klun-primary-base); animation: klun-agent-blink 1s steps(2) infinite; }\n.klun-agent-typing { display: inline-flex; gap: 4px; padding: 6px 2px; }\n.klun-agent-typing span { width: 6px; height: 6px; border-radius: 50%; background: var(--klun-icon-soft-400); animation: klun-agent-bounce 1.2s infinite ease-in-out; }\n.klun-agent-typing span:nth-child(2) { animation-delay: .15s; }\n.klun-agent-typing span:nth-child(3) { animation-delay: .3s; }\n`;\n\nexport function AgentChatTemplate() {\n const user: AgentUser = { name: \"Arthur Taylor\", initials: \"AT\", plan: \"Pro plan\" };\n\n const [sessions, setSessions] = useState<AgentSession[]>([\n { id: \"s1\", group: \"today\", title: \"Q2 revenue summary\", state: \"done\" },\n { id: \"s2\", group: \"today\", title: \"Invoice reminder draft\", state: \"done\" },\n { id: \"s3\", group: \"week\", title: \"Fix checkout flake\", state: \"idle\" },\n ]);\n const [activeId, setActiveId] = useState(\"new\");\n const [threads, setThreads] = useState<Record<string, AgentMessage[]>>({ new: [] });\n const [busy, setBusy] = useState(false);\n const [toolsOn, setToolsOn] = useState(true);\n\n const messages = threads[activeId] || [];\n\n // Run bookkeeping. runId invalidates in-flight timers so Stop unwinds cleanly.\n const runIdRef = useRef(0);\n const idRef = useRef(0);\n const runThreadRef = useRef(\"new\");\n const agentMsgIdRef = useRef(\"\");\n const timersRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n const toolsOnRef = useRef(toolsOn);\n toolsOnRef.current = toolsOn;\n const scenarioRef = useRef(0);\n\n useEffect(() => () => timersRef.current.forEach(clearTimeout), []);\n\n const nextId = (p: string) => `${p}${(idRef.current += 1)}`;\n\n const sleep = (ms: number, token: number) =>\n new Promise<void>((resolve, reject) => {\n const id = setTimeout(() => {\n if (token === runIdRef.current) resolve();\n else reject(new Error(\"aborted\"));\n }, ms);\n timersRef.current.push(id);\n });\n\n const setSessionState = (id: string, state: AgentSession[\"state\"]) =>\n setSessions((ss) => ss.map((s) => (s.id === id ? { ...s, state } : s)));\n\n const run = async (prompt: string) => {\n const token = (runIdRef.current += 1);\n const threadId = activeId;\n const agentId = nextId(\"a\");\n runThreadRef.current = threadId;\n agentMsgIdRef.current = agentId;\n\n const sc = SCENARIOS[scenarioRef.current % SCENARIOS.length];\n scenarioRef.current += 1;\n const useTools = toolsOnRef.current;\n\n // Scoped helpers that always target this run's agent message.\n const patch = (updater: (blocks: AgentBlock[]) => AgentBlock[]) =>\n setThreads((t) => {\n const msgs = t[threadId];\n if (!msgs) return t;\n const idx = msgs.findIndex((m) => m.id === agentId);\n if (idx < 0) return t;\n const next = msgs.slice();\n next[idx] = { ...next[idx], blocks: updater(next[idx].blocks || []) };\n return { ...t, [threadId]: next };\n });\n const setStreaming = (streaming: boolean) =>\n setThreads((t) => {\n const msgs = t[threadId];\n if (!msgs) return t;\n const idx = msgs.findIndex((m) => m.id === agentId);\n if (idx < 0) return t;\n const next = msgs.slice();\n next[idx] = { ...next[idx], streaming };\n return { ...t, [threadId]: next };\n });\n const push = (b: AgentBlock) => patch((bl) => [...bl, b]);\n\n setBusy(true);\n if (threadId !== \"new\") setSessionState(threadId, \"running\");\n setThreads((t) => ({\n ...t,\n [threadId]: [...(t[threadId] || []), { id: agentId, from: \"agent\", blocks: [], streaming: true }],\n }));\n\n try {\n // 1. Reason.\n push({ kind: \"thinking\", text: sc.thinking });\n await sleep(1500, token);\n patch((bl) => mapLastKind(bl, \"thinking\", (b) => ({ ...b, seconds: sc.thinkSeconds })));\n\n if (useTools) {\n // 2. Plan.\n const steps: AgentStep[] = sc.steps.map((text, i) => ({ text, status: i === 0 ? \"active\" : \"todo\" }));\n push({ kind: \"plan\", title: sc.planTitle, steps });\n await sleep(700, token);\n\n // 3. Tools — advance the plan as each completes.\n for (let i = 0; i < sc.tools.length; i++) {\n const tool = sc.tools[i];\n push({ kind: \"tool\", name: tool.name, icon: tool.icon, request: tool.request, status: \"running\" });\n await sleep(1500, token);\n patch((bl) => mapLastKind(bl, \"tool\", (b) => ({ ...b, status: \"done\", result: tool.result })));\n patch((bl) =>\n mapLastKind(bl, \"plan\", (p: AgentPlanBlock) => ({\n ...p,\n steps: p.steps.map((s, k) =>\n k === i ? { ...s, status: \"done\" } : k === i + 1 ? { ...s, status: \"active\" } : s,\n ),\n })),\n );\n await sleep(450, token);\n }\n }\n\n // 4. Stream the answer.\n push({ kind: \"text\", text: \"\" });\n const words = sc.answer.split(\" \");\n let acc = \"\";\n for (let i = 0; i < words.length; i++) {\n acc += (i === 0 ? \"\" : \" \") + words[i];\n const cur = acc;\n patch((bl) => mapLastKind(bl, \"text\", (b) => ({ ...b, text: cur })));\n await sleep(28, token);\n }\n\n // 5. Done — close out the plan.\n if (useTools) {\n patch((bl) =>\n mapLastKind(bl, \"plan\", (p: AgentPlanBlock) => ({\n ...p,\n steps: p.steps.map((s) => ({ ...s, status: \"done\" as const })),\n })),\n );\n }\n setStreaming(false);\n if (threadId !== \"new\") setSessionState(threadId, \"done\");\n setBusy(false);\n } catch {\n // Aborted via Stop — handled there.\n }\n };\n\n const stop = () => {\n if (!busy) return;\n runIdRef.current += 1; // invalidate: the in-flight sleep will reject and unwind\n const threadId = runThreadRef.current;\n const agentId = agentMsgIdRef.current;\n setThreads((t) => {\n const msgs = t[threadId];\n if (!msgs) return t;\n const idx = msgs.findIndex((m) => m.id === agentId);\n if (idx < 0) return t;\n const msg = msgs[idx];\n let blocks: AgentBlock[] = (msg.blocks || []).map((b) =>\n b.kind === \"tool\" && b.status === \"running\" ? { ...b, status: \"error\", result: \"Stopped by user.\" } : b,\n );\n const last = blocks[blocks.length - 1];\n if (last && last.kind === \"text\" && !(last as AgentTextBlock).text) blocks = blocks.slice(0, -1);\n blocks = [...blocks, { kind: \"text\", text: \"⏹ Stopped.\" }];\n const next = msgs.slice();\n next[idx] = { ...msg, blocks, streaming: false };\n return { ...t, [threadId]: next };\n });\n if (threadId !== \"new\") setSessionState(threadId, \"idle\");\n setBusy(false);\n };\n\n const ask = (text: string) => {\n if (busy) return;\n setThreads((t) => ({ ...t, [activeId]: [...(t[activeId] || []), { id: nextId(\"u\"), from: \"me\", text }] }));\n run(text);\n };\n\n const newTask = () => {\n if (busy) stop();\n setActiveId(\"new\");\n setThreads((t) => ({ ...t, new: [] }));\n };\n\n const select = (id: string) => {\n setActiveId(id);\n setThreads((t) => (t[id] ? t : { ...t, [id]: [] }));\n };\n\n const title = activeId === \"new\" ? \"New task\" : sessions.find((s) => s.id === activeId)?.title || \"Task\";\n\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <style>{STYLES}</style>\n <AgentSidebar sessions={sessions} activeId={activeId} onSelect={select} onNew={newTask} user={user} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\" }}>\n <header\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n padding: \"14px 24px\",\n borderBottom: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>{title}</span>\n <AgentRunBadge busy={busy} />\n <div style={{ flex: 1 }} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-share-line\" />} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-more-2-fill\" />} />\n </header>\n <AgentThread\n messages={messages}\n userInitials={user.initials}\n agentName=\"the agent\"\n suggestions={SUGGESTIONS}\n onSuggest={ask}\n />\n <AgentComposer onSend={ask} onStop={stop} busy={busy} toolsOn={toolsOn} onToggleTools={setToolsOn} />\n </div>\n </div>\n );\n}\n","// Klun UI crypto — trading sidebar.\n\ninterface NavItem {\n id: string;\n label: string;\n icon: string;\n badge?: string;\n}\n\nexport interface CryptoSidebarProps {\n active: string;\n onNavigate: (id: string) => void;\n}\n\nexport function CryptoSidebar({ active, onNavigate }: CryptoSidebarProps) {\n const main: NavItem[] = [\n { id: \"markets\", label: \"Markets\", icon: \"ri-line-chart-line\" },\n { id: \"portfolio\", label: \"Portfolio\", icon: \"ri-pie-chart-2-line\" },\n { id: \"trade\", label: \"Trade\", icon: \"ri-swap-line\" },\n { id: \"wallet\", label: \"Wallet\", icon: \"ri-wallet-3-line\" },\n { id: \"earn\", label: \"Earn\", icon: \"ri-funds-line\", badge: \"New\" },\n ];\n const other: NavItem[] = [\n { id: \"activity\", label: \"Activity\", icon: \"ri-history-line\" },\n { id: \"settings\", label: \"Settings\", icon: \"ri-settings-2-line\" },\n ];\n const Item = ({ it }: { it: NavItem }) => {\n const on = active === it.id;\n return (\n <button onClick={() => onNavigate(it.id)} style={{\n display: \"flex\", alignItems: \"center\", gap: 10, width: \"100%\", height: 38, padding: \"0 12px\",\n border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: \"pointer\", textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\", font: \"var(--klun-text-label-sm)\",\n }}>\n <i className={it.icon} style={{ fontSize: 20, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }} />\n <span style={{ flex: 1 }}>{it.label}</span>\n {it.badge ? <span style={{ font: \"var(--klun-text-subheading-2xs)\", padding: \"1px 6px\", borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-success-lighter)\", color: \"var(--klun-state-success-base)\" }}>{it.badge}</span> : null}\n </button>\n );\n };\n return (\n <aside style={{ width: 256, flexShrink: 0, height: \"100%\", boxSizing: \"border-box\", display: \"flex\", flexDirection: \"column\", padding: 18, background: \"var(--klun-bg-weak-50)\", borderRight: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 8px 18px\" }}>\n <div style={{ width: 34, height: 34, borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-primary-base)\", color: \"var(--klun-static-static-white)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-currency-line\" style={{ fontSize: 20 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Apex Exchange</span>\n </div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{main.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"20px 12px 8px\" }}>Account</div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{other.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ flex: 1 }} />\n <div style={{ borderRadius: \"var(--klun-radius-xl)\", background: \"var(--klun-bg-strong-950)\", padding: 16, color: \"var(--klun-static-static-white)\" }}>\n <i className=\"ri-vip-crown-2-line\" style={{ fontSize: 22 }} />\n <div style={{ marginTop: 8, font: \"var(--klun-text-label-sm)\" }}>Upgrade to Pro</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-paragraph-xs)\", opacity: .7 }}>0% maker fees & advanced charts.</div>\n </div>\n </aside>\n );\n}\n","// Klun UI crypto — Markets/Portfolio screen.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Card, Table, Badge, SegmentedControl, Button } from \"../../index\";\n\nfunction Stat({ label, value, delta, trend = \"up\", tint = \"feature\", icon }: {\n label: ReactNode; value: ReactNode; delta?: ReactNode; trend?: \"up\" | \"down\";\n tint?: \"feature\" | \"success\" | \"warning\" | \"information\" | \"error\"; icon?: ReactNode;\n}) {\n const dc = trend === \"up\" ? \"success\" : \"error\";\n return (\n <Card variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\" }}>\n <span style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22, background: `var(--klun-state-${tint}-lighter)`, color: `var(--klun-state-${tint}-base)` }}>{icon}</span>\n {delta != null ? (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 2, height: 20, padding: \"0 6px\", borderRadius: \"var(--klun-radius-capsule)\", font: \"var(--klun-text-label-xs)\", background: `var(--klun-state-${dc}-lighter)`, color: `var(--klun-state-${dc}-base)` }}>\n <i className={trend === \"up\" ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} style={{ fontSize: 14 }} />{delta}\n </span>\n ) : null}\n </div>\n <div style={{ marginTop: 16, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{label}</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{value}</div>\n </Card>\n );\n}\nimport type { TableColumn } from \"../../index\";\n\nfunction coinStyle(sym: string): [string, string] {\n const map: Record<string, [string, string]> = {\n BTC: [\"#F7931A22\", \"#F7931A\"], ETH: [\"#627EEA22\", \"#627EEA\"], SOL: [\"#9945FF22\", \"#9945FF\"],\n XRP: [\"#23292F22\", \"#23292F\"], BNB: [\"#F3BA2F22\", \"#C99A2C\"], USDC: [\"#2775CA22\", \"#2775CA\"],\n AVAX: [\"#E8414222\", \"#E84142\"], ADA: [\"#0033AD22\", \"#0033AD\"],\n };\n return map[sym] || [\"var(--klun-bg-weak-50)\", \"var(--klun-text-sub-600)\"];\n}\n\ninterface CoinIconProps {\n sym: string;\n size?: number;\n}\n\nfunction CoinIcon({ sym, size = 32 }: CoinIconProps) {\n const [bg, fg] = coinStyle(sym);\n return <span style={{ width: size, height: size, borderRadius: \"var(--klun-radius-pill)\", background: bg, color: fg, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-label-xs)\", fontWeight: 600, flexShrink: 0 }}>{sym.slice(0, 3)}</span>;\n}\n\ninterface SparkProps {\n up: boolean;\n w?: number;\n h?: number;\n}\n\nfunction Spark({ up, w = 96, h = 32 }: SparkProps) {\n const pts = up ? [10, 12, 8, 14, 11, 16, 13, 20, 18, 24, 22, 28] : [26, 22, 24, 18, 20, 16, 18, 12, 14, 10, 12, 8];\n const step = w / (pts.length - 1);\n const d = pts.map((p, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${(h - p).toFixed(1)}`).join(\" \");\n const c = up ? \"var(--klun-state-success-base)\" : \"var(--klun-state-error-base)\";\n return <svg width={w} height={h}><path d={d} fill=\"none\" stroke={c} strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\n}\n\ninterface Holding {\n sym: string;\n name: string;\n price: string;\n amount: string;\n value: string;\n chg: string;\n up: boolean;\n}\n\nexport function MarketsScreen() {\n const [range, setRange] = useState(\"1w\");\n\n const holdings: Holding[] = [\n { sym: \"BTC\", name: \"Bitcoin\", price: \"$64,210\", amount: \"0.842 BTC\", value: \"$54,065\", chg: \"+2.4%\", up: true },\n { sym: \"ETH\", name: \"Ethereum\", price: \"$3,180\", amount: \"6.20 ETH\", value: \"$19,716\", chg: \"+1.3%\", up: true },\n { sym: \"SOL\", name: \"Solana\", price: \"$142.50\", amount: \"84.0 SOL\", value: \"$11,970\", chg: \"-2.3%\", up: false },\n { sym: \"XRP\", name: \"XRP\", price: \"$0.62\", amount: \"9,400 XRP\", value: \"$5,828\", chg: \"-0.2%\", up: false },\n { sym: \"BNB\", name: \"BNB\", price: \"$590.10\", amount: \"12.0 BNB\", value: \"$7,081\", chg: \"-1.5%\", up: false },\n ];\n const columns: TableColumn<Holding>[] = [\n { key: \"name\", header: \"Asset\", render: (r) => (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <CoinIcon sym={r.sym} />\n <div><div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{r.sym}</div></div>\n </div>) },\n { key: \"price\", header: \"Price\", render: (r) => <span style={{ font: \"var(--klun-text-label-sm)\" }}>{r.price}</span> },\n { key: \"amount\", header: \"Holdings\", render: (r) => <span style={{ color: \"var(--klun-text-sub-600)\" }}>{r.amount}</span> },\n { key: \"chg\", header: \"24h\", render: (r) => <Badge color={r.up ? \"green\" : \"red\"} variant=\"light\" size=\"small\" leadingIcon={<i className={r.up ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} />}>{r.chg}</Badge> },\n { key: \"value\", header: \"Value\", align: \"right\", render: (r) => <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.value}</span> },\n { key: \"spark\", header: \"\", width: 110, align: \"right\", render: (r) => <Spark up={r.up} /> },\n ];\n\n return (\n <div style={{ padding: 28, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1.6fr 1fr 1fr\", gap: 16 }}>\n <div style={{ gridColumn: \"1 / -1\", display: \"grid\", gridTemplateColumns: \"repeat(3, 1fr)\", gap: 16 }}>\n <Stat label=\"Total balance\" value=\"$98,659.40\" delta=\"3.8%\" trend=\"up\" tint=\"feature\" icon={<i className=\"ri-wallet-3-line\" />} />\n <Stat label=\"24h P&L\" value=\"+$1,842.10\" delta=\"1.9%\" trend=\"up\" tint=\"success\" icon={<i className=\"ri-line-chart-line\" />} />\n <Stat label=\"Available\" value=\"$12,430.00\" delta=\"0.0%\" trend=\"up\" tint=\"information\" icon={<i className=\"ri-cash-line\" />} />\n </div>\n </div>\n\n <div style={{ background: \"var(--klun-bg-white-0)\", borderRadius: \"var(--klun-radius-2xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", padding: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: 8 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <CoinIcon sym=\"BTC\" size={36} />\n <div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>$64,210.40</span>\n <Badge color=\"green\" variant=\"light\" size=\"small\" leadingIcon={<i className=\"ri-arrow-up-line\" />}>2.4%</Badge>\n </div>\n <div style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>Bitcoin · BTC/USD</div>\n </div>\n </div>\n <SegmentedControl value={range} onChange={setRange} items={[{ value: \"1d\", label: \"1D\" }, { value: \"1w\", label: \"1W\" }, { value: \"1m\", label: \"1M\" }, { value: \"1y\", label: \"1Y\" }]} />\n </div>\n <AreaChart />\n </div>\n\n <div style={{ background: \"var(--klun-bg-white-0)\", borderRadius: \"var(--klun-radius-2xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", overflow: \"hidden\" }}>\n <div style={{ padding: \"16px 20px\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Your holdings</span>\n <Button variant=\"primary\" size=\"small\" leadingIcon={<i className=\"ri-add-line\" />}>Buy crypto</Button>\n </div>\n <Table columns={columns} rows={holdings} getRowId={(r) => r.sym} style={{ borderRadius: 0, boxShadow: \"none\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }} />\n </div>\n </div>\n );\n}\n\nfunction AreaChart(): ReactNode {\n const pts = [40, 44, 38, 52, 48, 60, 55, 72, 68, 84, 78, 96, 90, 108, 118];\n const w = 1000, h = 160, max = 130;\n const step = w / (pts.length - 1);\n const line = pts.map((p, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${(h - (p / max) * h).toFixed(1)}`).join(\" \");\n const area = `${line} L${w},${h} L0,${h} Z`;\n return (\n <svg viewBox={`0 0 ${w} ${h}`} preserveAspectRatio=\"none\" style={{ width: \"100%\", height: 160, display: \"block\" }}>\n <defs>\n <linearGradient id=\"cryptoFill\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"var(--klun-primary-base)\" stopOpacity=\"0.18\" />\n <stop offset=\"100%\" stopColor=\"var(--klun-primary-base)\" stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n <path d={area} fill=\"url(#cryptoFill)\" />\n <path d={line} fill=\"none\" stroke=\"var(--klun-primary-base)\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n","// Klun UI crypto — trading dashboard template.\n// Markets/portfolio starting point — balance cards, area chart, holdings table.\nimport { useState } from \"react\";\nimport { Badge, Button } from \"../../index\";\nimport { CryptoSidebar } from \"./CryptoSidebar\";\nimport { MarketsScreen } from \"./MarketsScreen\";\n\nexport function CryptoTemplate() {\n const [active, setActive] = useState(\"portfolio\");\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <CryptoSidebar active={active} onNavigate={setActive} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", overflow: \"hidden\" }}>\n <header style={{ display: \"flex\", alignItems: \"center\", gap: 16, padding: \"16px 28px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <div style={{ flex: 1 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>Portfolio</h1>\n <Badge color=\"green\" variant=\"light\" size=\"small\" dot>Markets open</Badge>\n </div>\n </div>\n <div style={{ position: \"relative\" }}>\n <i className=\"ri-search-line\" style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }}></i>\n <input placeholder=\"Search assets\" style={{ width: 220, boxSizing: \"border-box\", height: 36, padding: \"0 12px 0 36px\", borderRadius: \"var(--klun-radius-lg)\", border: \"none\", background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-strong-950)\", outline: \"none\" }} />\n </div>\n <Button iconOnly variant=\"neutral\" appearance=\"stroke\" icon={<i className=\"ri-notification-3-line\" />} />\n <Button variant=\"primary\" leadingIcon={<i className=\"ri-arrow-left-right-line\" />}>Trade</Button>\n </header>\n <main style={{ flex: 1, overflow: \"auto\", background: \"var(--klun-bg-weak-50)\" }}>\n <MarketsScreen />\n </main>\n </div>\n </div>\n );\n}\n","// Klun UI marketing — top nav.\nimport { Button } from \"../../index\";\n\nexport function MarketingNav() {\n const links = [\"Product\", \"Solutions\", \"Pricing\", \"Customers\", \"Docs\"];\n return (\n <header style={{ position: \"sticky\", top: 0, zIndex: 20, background: \"color-mix(in srgb, var(--klun-bg-white-0) 80%, transparent)\", backdropFilter: \"blur(12px)\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ maxWidth: 1120, margin: \"0 auto\", display: \"flex\", alignItems: \"center\", gap: 24, padding: \"14px 24px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <div style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-shapes-line\" style={{ fontSize: 18 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Klun</span>\n </div>\n <nav style={{ display: \"flex\", gap: 4, flex: 1 }}>\n {links.map((l) => (\n <a key={l} href=\"#\" style={{ padding: \"6px 12px\", borderRadius: \"var(--klun-radius-md)\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", textDecoration: \"none\" }}>{l}</a>\n ))}\n </nav>\n <a href=\"#\" style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", textDecoration: \"none\" }}>Sign in</a>\n <Button variant=\"neutral\" size=\"small\" trailingIcon={<i className=\"ri-arrow-right-line\" />}>Start free</Button>\n </div>\n </header>\n );\n}\n","// Klun UI marketing — page sections.\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { Badge, Button, Card, Accordion, Avatar } from \"../../index\";\n\nfunction Stat({ label, value, delta, trend = \"up\", tint = \"feature\", icon }: {\n label: ReactNode; value: ReactNode; delta?: ReactNode; trend?: \"up\" | \"down\";\n tint?: \"feature\" | \"success\" | \"warning\" | \"information\" | \"error\"; icon?: ReactNode;\n}) {\n const dc = trend === \"up\" ? \"success\" : \"error\";\n return (\n <Card variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\" }}>\n <span style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22, background: `var(--klun-state-${tint}-lighter)`, color: `var(--klun-state-${tint}-base)` }}>{icon}</span>\n {delta != null ? (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 2, height: 20, padding: \"0 6px\", borderRadius: \"var(--klun-radius-capsule)\", font: \"var(--klun-text-label-xs)\", background: `var(--klun-state-${dc}-lighter)`, color: `var(--klun-state-${dc}-base)` }}>\n <i className={trend === \"up\" ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} style={{ fontSize: 14 }} />{delta}\n </span>\n ) : null}\n </div>\n <div style={{ marginTop: 16, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{label}</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{value}</div>\n </Card>\n );\n}\n\ninterface Feature {\n icon: string;\n t: string;\n d: string;\n}\n\ninterface PricingTier {\n name: string;\n price: string;\n note: string;\n feats: string[];\n cta: string;\n featured: boolean;\n}\n\ninterface FooterColumn {\n h: string;\n l: string[];\n}\n\nexport function MarketingSections() {\n const wrap: CSSProperties = { maxWidth: 1120, margin: \"0 auto\", padding: \"0 24px\" };\n\n const features: Feature[] = [\n { icon: \"ri-contrast-drop-line\", t: \"Semantic tokens\", d: \"Every color, radius and space is a named token that re-themes in one line.\" },\n { icon: \"ri-moon-clear-line\", t: \"Dark mode built-in\", d: \"Light and dark resolve automatically — no duplicate components.\" },\n { icon: \"ri-palette-line\", t: \"Four accent themes\", d: \"Blue, purple, orange or green. Switch with a single data attribute.\" },\n { icon: \"ri-puzzle-2-line\", t: \"50+ components\", d: \"Buttons to command menus, all composable and accessible.\" },\n { icon: \"ri-layout-grid-line\", t: \"Product templates\", d: \"Dashboards, AI chat and trading screens ready to fork.\" },\n { icon: \"ri-code-s-slash-line\", t: \"Figma to code\", d: \"Tokens and structure map straight to your codebase.\" },\n ];\n\n const tiers: PricingTier[] = [\n { name: \"Starter\", price: \"$0\", note: \"for solo makers\", feats: [\"Core tokens\", \"30 components\", \"Community support\"], cta: \"Get started\", featured: false },\n { name: \"Pro\", price: \"$29\", note: \"per editor / month\", feats: [\"All 50+ components\", \"Product templates\", \"Dark mode & themes\", \"Priority support\"], cta: \"Start free trial\", featured: true },\n { name: \"Team\", price: \"Custom\", note: \"for organizations\", feats: [\"Everything in Pro\", \"SSO & roles\", \"Design ops review\", \"SLA\"], cta: \"Contact sales\", featured: false },\n ];\n\n const footerColumns: FooterColumn[] = [\n { h: \"Product\", l: [\"Components\", \"Tokens\", \"Templates\", \"Changelog\"] },\n { h: \"Company\", l: [\"About\", \"Careers\", \"Blog\", \"Contact\"] },\n { h: \"Legal\", l: [\"Privacy\", \"Terms\", \"License\"] },\n ];\n\n return (\n <main>\n {/* Hero */}\n <section style={{ ...wrap, textAlign: \"center\", padding: \"80px 24px 64px\" }}>\n <div style={{ display: \"inline-flex\", marginBottom: 20 }}>\n <Badge color=\"purple\" variant=\"lighter\" leadingIcon={<i className=\"ri-sparkling-2-fill\" />}>Klun UI 2.0 is here</Badge>\n </div>\n <h1 style={{ margin: \"0 auto\", maxWidth: 760, font: \"var(--klun-text-title-h1)\", letterSpacing: \"var(--klun-title-h1-tracking)\", color: \"var(--klun-text-strong-950)\" }}>\n The design system that ships with you\n </h1>\n <p style={{ margin: \"20px auto 0\", maxWidth: 560, font: \"var(--klun-text-paragraph-lg)\", color: \"var(--klun-text-sub-600)\" }}>\n Tokens, components and full product templates — themeable, dark-mode ready, and built to move from Figma to production without the redraw.\n </p>\n <div style={{ display: \"flex\", gap: 12, justifyContent: \"center\", marginTop: 28 }}>\n <Button variant=\"primary\" size=\"large\" trailingIcon={<i className=\"ri-arrow-right-line\" />}>Start building free</Button>\n <Button variant=\"neutral\" appearance=\"stroke\" size=\"large\" leadingIcon={<i className=\"ri-github-fill\" />}>View on GitHub</Button>\n </div>\n <div style={{ marginTop: 40, height: 280, borderRadius: \"var(--klun-radius-3xl)\", background: \"linear-gradient(180deg, var(--klun-bg-weak-50), var(--klun-bg-white-0))\", boxShadow: \"var(--klun-shadow-lg), inset 0 0 0 1px var(--klun-stroke-soft-200)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", color: \"var(--klun-text-disabled-300)\" }}>\n <i className=\"ri-layout-masonry-line\" style={{ fontSize: 56 }} />\n </div>\n </section>\n\n {/* Social proof */}\n <section style={{ ...wrap, padding: \"8px 24px 56px\" }}>\n <p style={{ textAlign: \"center\", font: \"var(--klun-text-subheading-xs)\", letterSpacing: \"var(--klun-subheading-xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", marginBottom: 20 }}>Trusted by teams at</p>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 40, justifyContent: \"center\", alignItems: \"center\", color: \"var(--klun-text-disabled-300)\" }}>\n {[\"ri-google-fill\", \"ri-microsoft-fill\", \"ri-slack-fill\", \"ri-notion-fill\", \"ri-figma-fill\", \"ri-amazon-fill\"].map((i) => (\n <i key={i} className={i} style={{ fontSize: 30 }} />\n ))}\n </div>\n </section>\n\n {/* Stats */}\n <section style={{ ...wrap, padding: \"16px 24px 64px\" }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\", gap: 16 }}>\n <Stat label=\"Components\" value=\"50+\" delta=\"2.0 release\" trend=\"up\" tint=\"feature\" icon={<i className=\"ri-puzzle-2-line\" />} />\n <Stat label=\"Design tokens\" value=\"700+\" delta=\"9 collections\" trend=\"up\" tint=\"information\" icon={<i className=\"ri-palette-line\" />} />\n <Stat label=\"Icons\" value=\"4,200+\" delta=\"line & fill\" trend=\"up\" tint=\"success\" icon={<i className=\"ri-shapes-line\" />} />\n <Stat label=\"Themes\" value=\"4 + dark\" delta=\"instant\" trend=\"up\" tint=\"warning\" icon={<i className=\"ri-contrast-2-line\" />} />\n </div>\n </section>\n\n {/* Features */}\n <section style={{ ...wrap, padding: \"56px 24px\" }}>\n <div style={{ textAlign: \"center\", maxWidth: 560, margin: \"0 auto 40px\" }}>\n <h2 style={{ margin: 0, font: \"var(--klun-text-title-h3)\", letterSpacing: \"var(--klun-title-h3-tracking)\", color: \"var(--klun-text-strong-950)\" }}>Everything you need to design fast</h2>\n <p style={{ margin: \"12px 0 0\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\" }}>One coherent system from the smallest token to the full screen.</p>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(3, 1fr)\", gap: 16 }}>\n {features.map((f) => (\n <Card key={f.t} variant=\"stroke\" padding={24}>\n <div style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-primary-lighter)\", color: \"var(--klun-primary-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22, marginBottom: 16 }}>\n <i className={f.icon} />\n </div>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 6 }}>{f.t}</div>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{f.d}</p>\n </Card>\n ))}\n </div>\n </section>\n\n {/* Pricing */}\n <section style={{ ...wrap, padding: \"56px 24px\" }}>\n <div style={{ textAlign: \"center\", marginBottom: 40 }}>\n <h2 style={{ margin: 0, font: \"var(--klun-text-title-h3)\", letterSpacing: \"var(--klun-title-h3-tracking)\", color: \"var(--klun-text-strong-950)\" }}>Simple, fair pricing</h2>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(3, 1fr)\", gap: 16, alignItems: \"start\" }}>\n {tiers.map((p) => (\n <div key={p.name} style={{\n borderRadius: \"var(--klun-radius-3xl)\", padding: 28,\n background: p.featured ? \"var(--klun-bg-strong-950)\" : \"var(--klun-bg-white-0)\",\n color: p.featured ? \"var(--klun-static-static-white)\" : \"var(--klun-text-strong-950)\",\n boxShadow: p.featured ? \"var(--klun-shadow-lg)\" : \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\" }}>{p.name}</span>\n {p.featured ? <Badge color=\"purple\" variant=\"filled\" size=\"small\">Popular</Badge> : null}\n </div>\n <div style={{ marginTop: 16, display: \"flex\", alignItems: \"baseline\", gap: 6 }}>\n <span style={{ font: \"var(--klun-text-title-h2)\", letterSpacing: \"var(--klun-title-h2-tracking)\" }}>{p.price}</span>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", opacity: .7 }}>{p.note}</span>\n </div>\n <div style={{ margin: \"20px 0\", display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {p.feats.map((f) => (\n <div key={f} style={{ display: \"flex\", alignItems: \"center\", gap: 8, font: \"var(--klun-text-paragraph-sm)\", opacity: p.featured ? .9 : 1 }}>\n <i className=\"ri-checkbox-circle-fill\" style={{ fontSize: 18, color: p.featured ? \"var(--klun-static-static-white)\" : \"var(--klun-state-success-base)\" }} />{f}\n </div>\n ))}\n </div>\n <button style={{\n width: \"100%\", height: 44, border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", font: \"var(--klun-text-label-md)\",\n background: p.featured ? \"var(--klun-static-static-white)\" : \"var(--klun-primary-base)\",\n color: p.featured ? \"var(--klun-static-static-black)\" : \"var(--klun-static-static-white)\",\n }}>{p.cta}</button>\n </div>\n ))}\n </div>\n </section>\n\n {/* Testimonial */}\n <section style={{ ...wrap, padding: \"56px 24px\" }}>\n <Card variant=\"flat\" padding={40} style={{ textAlign: \"center\", borderRadius: \"var(--klun-radius-4xl)\" }}>\n <div style={{ display: \"flex\", justifyContent: \"center\", gap: 4, color: \"var(--klun-state-away-base)\", marginBottom: 16 }}>\n {[0, 1, 2, 3, 4].map((i) => <i key={i} className=\"ri-star-fill\" style={{ fontSize: 20 }} />)}\n </div>\n <p style={{ margin: \"0 auto\", maxWidth: 680, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\", fontFamily: \"var(--klun-font-display)\" }}>\n “We replaced three internal libraries with Klun UI and shipped our dashboard a month early. The token system alone paid for itself.”\n </p>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", gap: 12, marginTop: 24 }}>\n <Avatar size=\"48\" initials=\"SW\" color=\"purple\" />\n <div style={{ textAlign: \"left\" }}>\n <div style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Sophia Williams</div>\n <div style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>Head of Design, Northwind</div>\n </div>\n </div>\n </Card>\n </section>\n\n {/* FAQ */}\n <section style={{ maxWidth: 720, margin: \"0 auto\", padding: \"56px 24px\" }}>\n <h2 style={{ margin: \"0 0 28px\", textAlign: \"center\", font: \"var(--klun-text-title-h3)\", letterSpacing: \"var(--klun-title-h3-tracking)\", color: \"var(--klun-text-strong-950)\" }}>Frequently asked</h2>\n <Accordion defaultOpen=\"a\" items={[\n { id: \"a\", title: \"Is Klun UI free to use?\", content: \"The Starter tier with core tokens and 30 components is free forever. Pro unlocks the full component set, templates and themes.\" },\n { id: \"b\", title: \"Does it work with my framework?\", content: \"Components ship as framework-agnostic patterns driven by CSS custom properties — drop the tokens into React, Vue, Svelte or plain HTML.\" },\n { id: \"c\", title: \"Can I customize the theme?\", content: \"Yes. Swap the accent (blue/purple/orange/green) and neutral ramp (gray/slate) with a single data attribute, or override any token.\" },\n { id: \"d\", title: \"Do you offer dark mode?\", content: \"Dark mode is built in. Set data-theme=\\\"dark\\\" and every component re-themes through its semantic tokens.\" },\n ]} />\n </section>\n\n {/* CTA */}\n <section style={{ ...wrap, padding: \"40px 24px 80px\" }}>\n <div style={{ borderRadius: \"var(--klun-radius-4xl)\", padding: \"56px 24px\", textAlign: \"center\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-static-static-white)\" }}>\n <h2 style={{ margin: 0, font: \"var(--klun-text-title-h2)\", letterSpacing: \"var(--klun-title-h2-tracking)\" }}>Start designing in harmony</h2>\n <p style={{ margin: \"12px auto 0\", maxWidth: 480, font: \"var(--klun-text-paragraph-lg)\", opacity: .8 }}>Free to start. No credit card required.</p>\n <div style={{ display: \"flex\", gap: 12, justifyContent: \"center\", marginTop: 28 }}>\n <button style={{ height: 48, padding: \"0 24px\", border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", font: \"var(--klun-text-label-md)\", background: \"var(--klun-static-static-white)\", color: \"var(--klun-static-static-black)\" }}>Start free</button>\n <button style={{ height: 48, padding: \"0 24px\", border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", font: \"var(--klun-text-label-md)\", background: \"var(--klun-alpha-white-alpha-16)\", color: \"var(--klun-static-static-white)\" }}>Book a demo</button>\n </div>\n </div>\n </section>\n\n {/* Footer */}\n <footer style={{ borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ ...wrap, display: \"flex\", gap: 24, flexWrap: \"wrap\", justifyContent: \"space-between\", padding: \"40px 24px\" }}>\n <div style={{ maxWidth: 260 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, marginBottom: 12 }}>\n <div style={{ width: 28, height: 28, borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}><i className=\"ri-shapes-line\" style={{ fontSize: 16 }} /></div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Klun</span>\n </div>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>The design system that ships with you.</p>\n </div>\n {footerColumns.map((c) => (\n <div key={c.h}>\n <div style={{ font: \"var(--klun-text-subheading-xs)\", letterSpacing: \"var(--klun-subheading-xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", marginBottom: 12 }}>{c.h}</div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n {c.l.map((x) => <a key={x} href=\"#\" style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\", textDecoration: \"none\" }}>{x}</a>)}\n </div>\n </div>\n ))}\n </div>\n <div style={{ ...wrap, display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", padding: \"20px 24px\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>© 2026 Klun. All rights reserved.</span>\n <div style={{ display: \"flex\", gap: 14, color: \"var(--klun-icon-soft-400)\" }}>\n {[\"ri-twitter-x-fill\", \"ri-github-fill\", \"ri-linkedin-fill\"].map((i) => <i key={i} className={i} style={{ fontSize: 18 }} />)}\n </div>\n </div>\n </footer>\n </main>\n );\n}\n","// Klun UI marketing template — SaaS landing page composition.\nimport { MarketingNav } from \"./MarketingNav\";\nimport { MarketingSections } from \"./MarketingSections\";\n\n/** Marketing site starting point — hero, features, pricing, FAQ, footer. */\nexport function MarketingTemplate() {\n return (\n <div>\n <MarketingNav />\n <MarketingSections />\n </div>\n );\n}\n","// Klun UI calendar template — month grid with period nav, filters, event chips\n// and an agenda list. Single-page composition built from klun-ui components.\nimport { useState } from \"react\";\nimport {\n HorizontalFilter,\n Button,\n SegmentedControl,\n AvatarGroup,\n Chip,\n ContentLabel,\n} from \"../../index\";\nimport type { ChipColor } from \"../../index\";\n\ninterface Category {\n color: ChipColor;\n label: string;\n}\n\nconst DOW = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\nconst CAT: Record<string, Category> = {\n meeting: { color: \"blue\", label: \"Meeting\" },\n focus: { color: \"purple\", label: \"Focus\" },\n review: { color: \"green\", label: \"Review\" },\n travel: { color: \"orange\", label: \"Travel\" },\n};\n\ninterface DayEvent {\n c: keyof typeof CAT;\n t: string;\n}\n\n// March 2026 starts on a Sunday; offset so Monday-first grid leads with 6 blanks.\nconst EVENTS: Record<number, DayEvent[]> = {\n 3: [{ c: \"meeting\", t: \"Standup\" }],\n 4: [{ c: \"focus\", t: \"Design review\" }, { c: \"review\", t: \"PR #482\" }],\n 6: [{ c: \"travel\", t: \"Flight SFO\" }],\n 9: [{ c: \"meeting\", t: \"1:1 Mia\" }],\n 12: [{ c: \"meeting\", t: \"Roadmap\" }, { c: \"focus\", t: \"Spec draft\" }, { c: \"review\", t: \"QA pass\" }],\n 17: [{ c: \"review\", t: \"Release\" }],\n 18: [{ c: \"focus\", t: \"Deep work\" }],\n 20: [{ c: \"meeting\", t: \"All-hands\" }],\n 24: [{ c: \"travel\", t: \"Offsite\" }],\n 25: [{ c: \"travel\", t: \"Offsite\" }],\n 27: [{ c: \"meeting\", t: \"Demo day\" }],\n};\n\ninterface DayCellProps {\n day: number;\n today: boolean;\n}\n\nfunction DayCell({ day, today }: DayCellProps) {\n const evs = EVENTS[day] || [];\n return (\n <div style={{ minHeight: 116, padding: 8, background: \"var(--klun-bg-white-0)\", boxShadow: \"inset -1px -1px 0 var(--klun-stroke-soft-200)\", display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <span style={{\n alignSelf: \"flex-start\", display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\",\n minWidth: 24, height: 24, padding: \"0 6px\", borderRadius: \"var(--klun-radius-pill)\",\n font: \"var(--klun-text-label-xs)\", fontVariantNumeric: \"tabular-nums\",\n background: today ? \"var(--klun-primary-base)\" : \"transparent\",\n color: today ? \"var(--klun-static-static-white)\" : \"var(--klun-text-sub-600)\",\n }}>{day}</span>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n {evs.slice(0, 3).map((e, i) => {\n const cat = CAT[e.c];\n return (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 6, padding: \"3px 6px\", borderRadius: \"var(--klun-radius-sm)\", background: `var(--klun-${cat.color}-50)`, font: \"var(--klun-text-label-xs)\", color: `var(--klun-${cat.color}-600, var(--klun-text-sub-600))`, overflow: \"hidden\", whiteSpace: \"nowrap\", textOverflow: \"ellipsis\" }}>\n <span style={{ width: 6, height: 6, borderRadius: \"var(--klun-radius-pill)\", background: `var(--klun-${cat.color}-500)`, flex: \"none\" }} />\n <span style={{ overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{e.t}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface AgendaEntry {\n t: string;\n time: string;\n c: keyof typeof CAT;\n}\n\nconst AGENDA: AgendaEntry[] = [\n { t: \"Roadmap planning\", time: \"10:00 – 11:00\", c: \"meeting\" },\n { t: \"Spec draft\", time: \"13:30 – 15:00\", c: \"focus\" },\n { t: \"QA pass\", time: \"16:00 – 16:30\", c: \"review\" },\n];\n\n/** Calendar starting point — month grid, period nav, filters and agenda. */\nexport function CalendarTemplate() {\n const [filter, setFilter] = useState(\"all\");\n const [view, setView] = useState(\"month\");\n // 6 leading blanks (March 1 2026 = Sunday, Monday-first grid), 31 days.\n const cells: (number | null)[] = [...Array<null>(6).fill(null), ...Array.from({ length: 31 }, (_, i) => i + 1)];\n return (\n <div style={{ maxWidth: 1120, margin: \"0 auto\", padding: \"40px 32px 80px\" }}>\n <header style={{ display: \"flex\", alignItems: \"flex-start\", gap: 16, width: \"100%\", padding: \"0 0 20px\", boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4, flex: 1, minWidth: 0 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-0.01em\" }}>Calendar</h1>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>March 2026 · 11 events this month</p>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flex: \"none\" }}><Button leadingIcon={<i className=\"ri-add-line\" />}>New event</Button></div>\n </header>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16, flexWrap: \"wrap\", margin: \"24px 0 16px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <div style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6, height: 36, padding: \"0 4px 0 10px\", borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <button type=\"button\" aria-label=\"Previous period\" onClick={() => {}} style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 28, height: 28, border: \"none\", background: \"transparent\", color: \"var(--klun-icon-sub-600)\", cursor: \"pointer\", fontSize: 18, borderRadius: \"var(--klun-radius-sm)\" }}><i className=\"ri-arrow-left-s-line\" /></button>\n <i className=\"ri-calendar-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\", whiteSpace: \"nowrap\", padding: \"0 2px\" }}>Mar 1<span style={{ color: \"var(--klun-text-soft-400)\" }}>→</span>Mar 31</span>\n <button type=\"button\" aria-label=\"Next period\" onClick={() => {}} style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 28, height: 28, border: \"none\", background: \"transparent\", color: \"var(--klun-icon-sub-600)\", cursor: \"pointer\", fontSize: 18, borderRadius: \"var(--klun-radius-sm)\" }}><i className=\"ri-arrow-right-s-line\" /></button>\n </div>\n <Button variant=\"neutral\" appearance=\"ghost\" size=\"small\">Today</Button>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <AvatarGroup variant=\"stroke\" size=\"24\" avatars={[{ initials: \"AT\", color: \"blue\" }, { initials: \"MB\", color: \"green\" }, { initials: \"JK\", color: \"orange\" }, { initials: \"RP\" }]} />\n <SegmentedControl value={view} onChange={setView} items={[{ value: \"month\", label: \"Month\" }, { value: \"week\", label: \"Week\" }, { value: \"day\", label: \"Day\" }]} />\n </div>\n </div>\n <div style={{ marginBottom: 16 }}>\n <HorizontalFilter value={filter} onChange={setFilter} items={[\n { value: \"all\", label: \"All\", count: 11 },\n { value: \"meeting\", label: \"Meetings\", count: 5, icon: <i className=\"ri-group-line\" /> },\n { value: \"focus\", label: \"Focus\", count: 3 },\n { value: \"review\", label: \"Reviews\", count: 3 },\n { value: \"travel\", label: \"Travel\", count: 3 },\n ]} />\n </div>\n <div style={{ borderRadius: \"var(--klun-radius-2xl)\", overflow: \"hidden\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(7, 1fr)\" }}>\n {DOW.map((d) => (\n <div key={d} style={{ padding: \"10px 8px\", font: \"var(--klun-text-subheading-2xs, var(--klun-text-label-xs))\", letterSpacing: \".06em\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset -1px -1px 0 var(--klun-stroke-soft-200)\" }}>{d}</div>\n ))}\n {cells.map((day, i) => day == null\n ? <div key={i} style={{ minHeight: 116, background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset -1px -1px 0 var(--klun-stroke-soft-200)\" }} />\n : <DayCell key={i} day={day} today={day === 12} />)}\n </div>\n </div>\n <div style={{ marginTop: 28 }}>\n <ContentLabel icon={<i className=\"ri-calendar-event-line\" />}>Up next · today</ContentLabel>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8, marginTop: 12 }}>\n {AGENDA.map((e, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 14, padding: \"12px 16px\", borderRadius: \"var(--klun-radius-xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <span style={{ width: 4, height: 36, borderRadius: \"var(--klun-radius-pill)\", background: `var(--klun-${CAT[e.c].color}-500)`, flex: \"none\" }} />\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{e.t}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{e.time}</div>\n </div>\n <Chip color={CAT[e.c].color} dot>{CAT[e.c].label}</Chip>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","// Klun UI pricing template — plan toggle, tier cards and an FAQ. Single-page\n// composition built from klun-ui components.\nimport { useState } from \"react\";\nimport {\n SegmentedControl,\n Badge,\n Button,\n ContentLabel,\n Accordion,\n Alert,\n Divider,\n} from \"../../index\";\nimport type { AccordionItem } from \"../../index\";\n\ntype Cycle = \"monthly\" | \"yearly\";\n\ninterface Plan {\n id: string;\n name: string;\n tagline: string;\n monthly: number | null;\n yearly: number | null;\n cta: string;\n featured?: boolean;\n features: string[];\n}\n\nconst PLANS: Plan[] = [\n {\n id: \"starter\", name: \"Starter\", tagline: \"For individuals getting started.\", monthly: 0, yearly: 0, cta: \"Start for free\",\n features: [\"1 workspace\", \"Up to 3 projects\", \"Community support\", \"1 GB storage\"],\n },\n {\n id: \"pro\", name: \"Pro\", tagline: \"For growing teams that ship fast.\", monthly: 24, yearly: 19, cta: \"Start 14-day trial\", featured: true,\n features: [\"Unlimited workspaces\", \"Unlimited projects\", \"Priority support\", \"100 GB storage\", \"Advanced analytics\", \"Custom roles\"],\n },\n {\n id: \"enterprise\", name: \"Enterprise\", tagline: \"For organizations at scale.\", monthly: null, yearly: null, cta: \"Contact sales\",\n features: [\"Everything in Pro\", \"SSO & SCIM\", \"Audit logs\", \"Dedicated manager\", \"99.9% SLA\", \"Custom contracts\"],\n },\n];\n\ninterface PriceProps {\n plan: Plan;\n cycle: Cycle;\n}\n\nfunction Price({ plan, cycle }: PriceProps) {\n if (plan.monthly == null) {\n return <div style={{ font: \"var(--klun-text-title-h3)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.02em\" }}>Custom</div>;\n }\n const amt = cycle === \"yearly\" ? plan.yearly : plan.monthly;\n return (\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 4 }}>\n <span style={{ font: \"var(--klun-text-title-h2)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.02em\" }}>${amt}</span>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>/ mo</span>\n </div>\n );\n}\n\ninterface PlanCardProps {\n plan: Plan;\n cycle: Cycle;\n}\n\nfunction PlanCard({ plan, cycle }: PlanCardProps) {\n const featured = plan.featured;\n return (\n <div style={{\n position: \"relative\", display: \"flex\", flexDirection: \"column\", gap: 20, padding: 28, flex: 1, minWidth: 0,\n borderRadius: \"var(--klun-radius-4xl, 24px)\", background: \"var(--klun-bg-white-0)\",\n boxShadow: featured\n ? \"inset 0 0 0 2px var(--klun-primary-base), var(--klun-shadow-lg, 0 24px 48px -16px rgba(14,18,27,.16))\"\n : \"inset 0 0 0 1px var(--klun-stroke-soft-200), var(--klun-shadow-xs, 0 1px 2px rgba(10,13,20,.03))\",\n }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>{plan.name}</span>\n {featured ? <Badge color=\"blue\" variant=\"lighter\">Most popular</Badge> : null}\n </div>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\", minHeight: 40, textWrap: \"pretty\" }}>{plan.tagline}</p>\n <Price plan={plan} cycle={cycle} />\n {featured\n ? <Button kind=\"fancy\" fullWidth>{plan.cta}</Button>\n : <Button fullWidth variant=\"neutral\" appearance=\"stroke\">{plan.cta}</Button>}\n <Divider />\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n {plan.features.map((f, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 10, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n <i className=\"ri-check-line\" style={{ fontSize: 18, color: \"var(--klun-state-success-base)\" }} />{f}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nconst FAQ: AccordionItem[] = [\n { id: \"f1\", title: \"Can I change plans later?\", content: \"Yes — upgrade or downgrade anytime. Changes are prorated to your billing cycle.\" },\n { id: \"f2\", title: \"Do you offer a free trial?\", content: \"Every paid plan includes a 14-day trial. No card required to start.\" },\n { id: \"f3\", title: \"What payment methods do you accept?\", content: \"All major cards and ACH for annual plans. Enterprise can pay by invoice.\" },\n { id: \"f4\", title: \"Is there a discount for annual billing?\", content: \"Annual billing saves roughly 20% versus paying monthly.\" },\n];\n\n/** Pricing starting point — plan toggle, tier cards and an FAQ. */\nexport function PricingTemplate() {\n const [cycle, setCycle] = useState<Cycle>(\"monthly\");\n return (\n <div style={{ maxWidth: 1080, margin: \"0 auto\", padding: \"72px 32px 96px\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 16, textAlign: \"center\", marginBottom: 40 }}>\n <ContentLabel color=\"blue\" icon={<i className=\"ri-price-tag-3-line\" />}>Pricing</ContentLabel>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h1)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.03em\", maxWidth: 640, textWrap: \"balance\" }}>Simple pricing that scales with you</h1>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-lg)\", color: \"var(--klun-text-sub-600)\", maxWidth: 520, textWrap: \"pretty\" }}>Start free, then pick a plan when your team is ready. No hidden fees.</p>\n <div style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10, marginTop: 8 }}>\n <SegmentedControl\n value={cycle} onChange={(v) => setCycle(v as Cycle)}\n items={[{ value: \"monthly\", label: \"Monthly\" }, { value: \"yearly\", label: \"Yearly\" }]}\n />\n <Badge color=\"green\" variant=\"lighter\">Save 20%</Badge>\n </div>\n </div>\n <div style={{ display: \"flex\", gap: 20, alignItems: \"stretch\", flexWrap: \"wrap\" }}>\n {PLANS.map((p) => <PlanCard key={p.id} plan={p} cycle={cycle} />)}\n </div>\n <Alert status=\"information\" title=\"Education & nonprofits\" icon={<i className=\"ri-lightbulb-line\" />} style={{ marginTop: 24 }}>Qualifying teams get 50% off any paid plan — reach out to sales to verify eligibility.</Alert>\n <div style={{ marginTop: 72 }}>\n <h2 style={{ margin: \"0 0 8px\", font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.02em\", textAlign: \"center\" }}>Frequently asked questions</h2>\n <p style={{ margin: \"0 0 28px\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\", textAlign: \"center\" }}>Everything you need to know about plans and billing.</p>\n <div style={{ maxWidth: 720, margin: \"0 auto\" }}>\n <Accordion items={FAQ} />\n </div>\n </div>\n </div>\n );\n}\n","// Klun UI settings template — tabbed account settings with a profile form,\n// notification toggles and integrations. Single-page composition built from\n// klun-ui components.\nimport { useState } from \"react\";\nimport type { ChangeEvent, ReactNode } from \"react\";\nimport {\n Alert,\n Tabs,\n Button,\n Input,\n Textarea,\n Label,\n Switch,\n SelectMenu,\n ImageUpload,\n ContentLabel,\n CharacterCounter,\n Badge,\n} from \"../../index\";\nimport type { TabItem } from \"../../index\";\n\ninterface RowProps {\n label: ReactNode;\n hint?: ReactNode;\n children: ReactNode;\n top?: boolean;\n}\n\nfunction Row({ label, hint, children, top }: RowProps) {\n return (\n <div style={{ display: \"grid\", gridTemplateColumns: \"240px 1fr\", gap: 24, padding: \"20px 0\", alignItems: top ? \"flex-start\" : \"center\", boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Label>{label}</Label>\n {hint ? <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\", textWrap: \"pretty\" }}>{hint}</span> : null}\n </div>\n <div style={{ minWidth: 0 }}>{children}</div>\n </div>\n );\n}\n\nfunction Panel({ children }: { children: ReactNode }) {\n return <div style={{ background: \"var(--klun-bg-white-0)\", borderRadius: \"var(--klun-radius-2xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", padding: \"8px 24px 24px\" }}>{children}</div>;\n}\n\nfunction ProfileTab() {\n const [bio, setBio] = useState(\"Product designer focused on systems and tooling.\");\n return (\n <Panel>\n <Row label=\"Photo\" hint=\"PNG or JPG, up to 5MB.\" top>\n <ImageUpload label=\"Upload new photo\" hint=\"Recommended 400×400px\" onRemove={() => {}} src=\"\" />\n </Row>\n <Row label=\"Full name\">\n <div style={{ display: \"flex\", gap: 12 }}>\n <Input defaultValue=\"Arthur\" placeholder=\"First name\" />\n <Input defaultValue=\"Taylor\" placeholder=\"Last name\" />\n </div>\n </Row>\n <Row label=\"Email address\" hint=\"Used for sign-in and notifications.\">\n <Input type=\"email\" defaultValue=\"arthur@klunui.com\" leadingIcon={<i className=\"ri-mail-line\" />} />\n </Row>\n <Row label=\"Role\">\n <SelectMenu value=\"design\" onChange={() => {}} options={[\n { value: \"design\", label: \"Designer\", icon: <i className=\"ri-pencil-ruler-2-line\" /> },\n { value: \"eng\", label: \"Engineer\", icon: <i className=\"ri-code-s-slash-line\" /> },\n { value: \"pm\", label: \"Product manager\", icon: <i className=\"ri-compass-3-line\" /> },\n ]} />\n </Row>\n <Row label=\"Bio\" hint=\"A short description for your profile.\" top>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Textarea value={bio} onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setBio(e.target.value)} rows={3} maxLength={160} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}><CharacterCounter value={bio.length} max={160} /></div>\n </div>\n </Row>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 10, paddingTop: 20 }}>\n <Button variant=\"neutral\" appearance=\"stroke\">Cancel</Button>\n <Button>Save changes</Button>\n </div>\n </Panel>\n );\n}\n\ninterface NotificationItemDef {\n k: string;\n label: string;\n hint: string;\n}\n\nfunction NotificationsTab() {\n const [s, setS] = useState<Record<string, boolean>>({ product: true, weekly: true, mentions: true, security: true, marketing: false });\n const set = (k: string) => setS((p) => ({ ...p, [k]: !p[k] }));\n const items: NotificationItemDef[] = [\n { k: \"product\", label: \"Product updates\", hint: \"New features and improvements.\" },\n { k: \"weekly\", label: \"Weekly digest\", hint: \"A summary of activity every Monday.\" },\n { k: \"mentions\", label: \"Mentions & comments\", hint: \"When someone @mentions you.\" },\n { k: \"security\", label: \"Security alerts\", hint: \"Sign-ins and password changes.\" },\n { k: \"marketing\", label: \"Marketing emails\", hint: \"Tips, offers and news.\" },\n ];\n return (\n <Panel>\n <ContentLabel style={{ paddingTop: 20, display: \"block\" }}>Email</ContentLabel>\n {items.map((it) => (\n <Row key={it.k} label={it.label} hint={it.hint}>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>\n <Switch checked={s[it.k]} onChange={() => set(it.k)} />\n </div>\n </Row>\n ))}\n <Alert status=\"information\" icon={<i className=\"ri-information-2-line\" />} style={{ marginTop: 20 }}>Security alerts can't be turned off — they protect your account.</Alert>\n </Panel>\n );\n}\n\ninterface IntegrationDef {\n k: string;\n name: string;\n icon: string;\n desc: string;\n}\n\nfunction IntegrationsTab() {\n const [c, setC] = useState<Record<string, boolean>>({ slack: true, github: true, figma: false, linear: false });\n const set = (k: string) => setC((p) => ({ ...p, [k]: !p[k] }));\n const rows: IntegrationDef[] = [\n { k: \"slack\", name: \"Slack\", icon: \"ri-slack-line\", desc: \"Post notifications to a channel.\" },\n { k: \"github\", name: \"GitHub\", icon: \"ri-github-line\", desc: \"Link commits and pull requests.\" },\n { k: \"figma\", name: \"Figma\", icon: \"ri-figma-line\", desc: \"Embed frames and prototypes.\" },\n { k: \"linear\", name: \"Linear\", icon: \"ri-flashlight-line\", desc: \"Sync issues two ways.\" },\n ];\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n {rows.map((r) => (\n <div key={r.k} style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: 16, borderRadius: \"var(--klun-radius-2xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <span style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 40, height: 40, flex: \"none\", borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", color: \"var(--klun-icon-sub-600)\", fontSize: 22 }}><i className={r.icon} /></span>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, flex: 1, minWidth: 0 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.name}</span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{r.desc}</span>\n </div>\n <Switch checked={c[r.k]} onChange={() => set(r.k)} />\n </div>\n ))}\n </div>\n );\n}\n\nconst TABS: TabItem[] = [\n { value: \"profile\", label: \"Profile\" },\n { value: \"notifications\", label: \"Notifications\" },\n { value: \"integrations\", label: \"Integrations\", badge: \"4\" },\n];\n\n/** Account settings starting point — tabbed sections, profile form, notifications, integrations. */\nexport function SettingsTemplate() {\n const [tab, setTab] = useState(\"profile\");\n return (\n <div style={{ maxWidth: 880, margin: \"0 auto\", padding: \"48px 32px 80px\" }}>\n <header style={{ display: \"flex\", alignItems: \"flex-start\", gap: 16, width: \"100%\", padding: \"0 0 20px\", boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4, flex: 1, minWidth: 0 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-0.01em\" }}>Settings</h1>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>Manage your profile, notifications and connected apps.</p>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flex: \"none\" }}><Badge color=\"green\" variant=\"lighter\" dot>All changes saved</Badge></div>\n </header>\n <div style={{ margin: \"24px 0 28px\" }}>\n <Tabs items={TABS} value={tab} onChange={setTab} />\n </div>\n {tab === \"profile\" ? <ProfileTab /> : tab === \"notifications\" ? <NotificationsTab /> : <IntegrationsTab />}\n </div>\n );\n}\n","// Metronic example — app sidebar: brand, navigation (badge + a nested group)\n// and the signed-in user card.\nimport { useState } from \"react\";\nimport { Avatar } from \"../../index\";\n\nexport interface MetronicNavChild {\n key: string;\n label: string;\n}\n\nexport interface MetronicNavItem {\n key: string;\n label: string;\n /** Remix Icon class, e.g. `ri-dashboard-line`. */\n icon: string;\n badge?: string;\n children?: MetronicNavChild[];\n}\n\nexport interface MetronicSidebarProps {\n /** Active item key. */\n active: string;\n onNavigate: (key: string) => void;\n}\n\nconst ITEMS: MetronicNavItem[] = [\n { key: \"dashboard\", label: \"Dashboard\", icon: \"ri-dashboard-line\" },\n { key: \"orders\", label: \"Orders\", icon: \"ri-shopping-bag-line\", badge: \"5\" },\n { key: \"products\", label: \"Products\", icon: \"ri-archive-line\" },\n { key: \"customers\", label: \"Customers\", icon: \"ri-team-line\" },\n { key: \"users\", label: \"Users\", icon: \"ri-user-3-line\" },\n { key: \"roles\", label: \"Roles\", icon: \"ri-shield-keyhole-line\" },\n {\n key: \"reports\",\n label: \"Reports\",\n icon: \"ri-bar-chart-box-line\",\n children: [\n { key: \"sales\", label: \"Sales\" },\n { key: \"traffic\", label: \"Traffic\" },\n ],\n },\n { key: \"settings\", label: \"Settings\", icon: \"ri-settings-3-line\" },\n];\n\nexport function MetronicSidebar({ active, onNavigate }: MetronicSidebarProps) {\n const [reportsOpen, setReportsOpen] = useState(false);\n\n const Item = ({ item }: { item: MetronicNavItem }) => {\n const on = active === item.key;\n const hasKids = Boolean(item.children?.length);\n return (\n <button\n onClick={() => {\n if (hasKids) setReportsOpen((o) => !o);\n else onNavigate(item.key);\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n width: \"100%\",\n height: 38,\n padding: \"0 12px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: on ? \"var(--klun-primary-lighter)\" : \"transparent\",\n color: on ? \"var(--klun-primary-base)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n <i\n className={item.icon}\n style={{ fontSize: 19, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }}\n />\n <span style={{ flex: 1 }}>{item.label}</span>\n {item.badge ? (\n <span\n style={{\n font: \"var(--klun-text-label-xs)\",\n padding: \"1px 7px\",\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-text-sub-600)\",\n }}\n >\n {item.badge}\n </span>\n ) : null}\n {hasKids ? (\n <i\n className=\"ri-arrow-down-s-line\"\n style={{ fontSize: 16, transform: reportsOpen ? \"rotate(180deg)\" : \"none\", transition: \"transform .15s ease\" }}\n />\n ) : null}\n </button>\n );\n };\n\n return (\n <aside\n style={{\n width: 248,\n flexShrink: 0,\n height: \"100%\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 14,\n padding: \"16px 12px\",\n background: \"var(--klun-bg-white-0)\",\n borderRight: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 8px 6px\" }}>\n <span\n style={{\n width: 30,\n height: 30,\n borderRadius: \"var(--klun-radius-md)\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-text-white-0)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n font: \"var(--klun-text-label-md)\",\n }}\n >\n M\n </span>\n <b style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Metronic</b>\n </div>\n\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {ITEMS.map((item) => (\n <div key={item.key}>\n <Item item={item} />\n {item.children && reportsOpen ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, padding: \"4px 0 4px 30px\" }}>\n {item.children.map((kid) => (\n <button\n key={kid.key}\n onClick={() => onNavigate(kid.key)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: active === kid.key ? \"var(--klun-primary-lighter)\" : \"transparent\",\n color: active === kid.key ? \"var(--klun-primary-base)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n {kid.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ))}\n </nav>\n\n <div\n style={{\n marginTop: \"auto\",\n padding: 10,\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n }}\n >\n <Avatar size=\"32\" initials=\"AK\" color=\"blue\" status=\"online\" />\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Anna Krause</div>\n <div style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>Admin</div>\n </div>\n </div>\n </aside>\n );\n}\n","// Metronic example — top bar: search field on the left, quick actions right.\nimport { Button, Input } from \"../../index\";\n\nexport function MetronicTopBar() {\n return (\n <header\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"10px 24px\",\n background: \"var(--klun-bg-white-0)\",\n borderBottom: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n <div style={{ width: 300, maxWidth: \"45%\" }}>\n <Input size=\"small\" placeholder=\"Search…\" leadingIcon={<i className=\"ri-search-line\" />} />\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" size=\"small\" icon={<i className=\"ri-notification-3-line\" />} aria-label=\"Notifications\" />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" size=\"small\" icon={<i className=\"ri-question-line\" />} aria-label=\"Help\" />\n <span style={{ width: 1, height: 20, background: \"var(--klun-stroke-soft-200)\", margin: \"0 4px\" }} />\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />}>\n New order\n </Button>\n </div>\n </header>\n );\n}\n","// Metronic example — inline SVG charts (sparkline / bars / donut).\n// Dependency-free: no chart library is needed, so the template can be copied\n// as-is. All colors come from semantic tokens, so the charts follow the\n// Metronic skin (and dark mode) automatically.\nimport { useId } from \"react\";\n\n/** Semantic tone → chart color. */\nexport type ChartTone = \"primary\" | \"success\" | \"danger\" | \"info\" | \"warning\" | \"feature\";\n\nconst TONE: Record<ChartTone, string> = {\n primary: \"var(--klun-primary-base)\",\n success: \"var(--klun-state-success-base)\",\n danger: \"var(--klun-state-error-base)\",\n info: \"var(--klun-state-information-base)\",\n warning: \"var(--klun-state-warning-base)\",\n feature: \"var(--klun-state-feature-base)\",\n};\n\nexport interface SparklineProps {\n data: number[];\n tone?: ChartTone;\n width?: number;\n height?: number;\n}\n\n/** KPI sparkline — a soft area line for stat cards. */\nexport function Sparkline({ data, tone = \"primary\", width = 200, height = 40 }: SparklineProps) {\n const gid = useId();\n const color = TONE[tone];\n const max = Math.max(...data);\n const min = Math.min(...data);\n const span = max - min || 1;\n const step = width / (data.length - 1);\n const y = (v: number) => height - 3 - ((v - min) / span) * (height - 8);\n const line = data.map((v, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${y(v).toFixed(1)}`).join(\" \");\n const area = `${line} L${width},${height} L0,${height} Z`;\n return (\n <svg\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"none\"\n style={{ width: \"100%\", height, display: \"block\" }}\n aria-hidden\n >\n <defs>\n <linearGradient id={gid} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color} stopOpacity=\"0.22\" />\n <stop offset=\"100%\" stopColor={color} stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n <path d={area} fill={`url(#${gid})`} />\n <path d={line} fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nexport interface BarChartProps {\n data: Array<{ label: string; value: number }>;\n tone?: ChartTone;\n height?: number;\n showValues?: boolean;\n}\n\n/** Column chart with optional value labels. */\nexport function BarChart({ data, tone = \"primary\", height = 200, showValues = true }: BarChartProps) {\n const max = Math.max(...data.map((d) => d.value), 1);\n const color = TONE[tone];\n const maxBar = height - (showValues ? 44 : 26);\n return (\n <div style={{ display: \"flex\", alignItems: \"flex-end\", gap: 10, height, paddingTop: 4 }}>\n {data.map((d) => (\n <div\n key={d.label}\n style={{\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: 6,\n height: \"100%\",\n }}\n >\n {showValues ? (\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{d.value}</span>\n ) : null}\n <div\n style={{\n width: \"100%\",\n maxWidth: 34,\n height: Math.max(4, Math.round((d.value / max) * maxBar)),\n borderRadius: \"var(--klun-radius-md) var(--klun-radius-md) 3px 3px\",\n background: color,\n opacity: 0.9,\n }}\n />\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\" }}>{d.label}</span>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface DonutChartProps {\n data: Array<{ label: string; value: number }>;\n centerValue?: string;\n centerLabel?: string;\n size?: number;\n thickness?: number;\n}\n\n/** Ring chart with a center metric and a legend. */\nexport function DonutChart({\n data,\n centerValue,\n centerLabel,\n size = 168,\n thickness = 22,\n}: DonutChartProps) {\n const r = (size - thickness) / 2;\n const c = 2 * Math.PI * r;\n const total = data.reduce((s, d) => s + d.value, 0) || 1;\n const palette = [TONE.primary, TONE.success, TONE.info, TONE.feature, TONE.warning];\n let acc = 0;\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 20, flexWrap: \"wrap\" }}>\n <div style={{ position: \"relative\", width: size, height: size, flexShrink: 0 }}>\n <svg\n viewBox={`0 0 ${size} ${size}`}\n width={size}\n height={size}\n style={{ display: \"block\", transform: \"rotate(-90deg)\" }}\n aria-hidden\n >\n {data.map((d, i) => {\n const frac = d.value / total;\n const dash = `${(frac * c).toFixed(2)} ${(c - frac * c).toFixed(2)}`;\n const offset = -acc * c;\n acc += frac;\n return (\n <circle\n key={d.label}\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={palette[i % palette.length]}\n strokeWidth={thickness}\n strokeDasharray={dash}\n strokeDashoffset={offset}\n />\n );\n })}\n </svg>\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 2,\n }}\n >\n {centerValue ? (\n <span style={{ font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>\n {centerValue}\n </span>\n ) : null}\n {centerLabel ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {centerLabel}\n </span>\n ) : null}\n </div>\n </div>\n <ul\n style={{\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n flex: 1,\n minWidth: 140,\n }}\n >\n {data.map((d, i) => (\n <li key={d.label} style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"var(--klun-radius-pill)\",\n background: palette[i % palette.length],\n flexShrink: 0,\n }}\n />\n <span style={{ flex: 1, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {d.label}\n </span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {Math.round((d.value / total) * 100)}%\n </span>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\nexport interface AreaChartProps {\n data: number[];\n /** Optional x-axis labels rendered under the plot. */\n labels?: string[];\n tone?: ChartTone;\n height?: number;\n /** Format the y-axis ticks; defaults to a compact 12k style. */\n formatValue?: (v: number) => string;\n}\n\n/** Full-width area chart with grid lines and y/x labels. */\nexport function AreaChart({ data, labels, tone = \"primary\", height = 220, formatValue }: AreaChartProps) {\n const gid = useId();\n const color = TONE[tone];\n const W = 720;\n const H = 240;\n const max = Math.max(...data, 1) * 1.08;\n const step = W / (data.length - 1);\n const y = (v: number) => H - (v / max) * H;\n const line = data.map((v, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${y(v).toFixed(1)}`).join(\" \");\n const area = `${line} L${W},${H} L0,${H} Z`;\n const fmt = formatValue ?? ((v: number) => (v >= 1000 ? `${Math.round(v / 100) / 10}k` : String(Math.round(v))));\n const ticks = [1, 0.75, 0.5, 0.25, 0];\n return (\n <div style={{ display: \"flex\", gap: 10 }}>\n <div\n style={{\n width: 46,\n flexShrink: 0,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n paddingBottom: labels ? 24 : 0,\n textAlign: \"right\",\n }}\n >\n {ticks.map((t) => (\n <span key={t} style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {fmt(max * t)}\n </span>\n ))}\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ height }}>\n <svg\n viewBox={`0 0 ${W} ${H}`}\n preserveAspectRatio=\"none\"\n style={{ width: \"100%\", height: \"100%\", display: \"block\" }}\n aria-hidden\n >\n <defs>\n <linearGradient id={gid} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color} stopOpacity=\"0.22\" />\n <stop offset=\"100%\" stopColor={color} stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n {ticks.slice(0, -1).map((t) => (\n <line\n key={t}\n x1=\"0\"\n x2={W}\n y1={(H * (1 - t)).toFixed(1)}\n y2={(H * (1 - t)).toFixed(1)}\n stroke=\"var(--klun-stroke-soft-200)\"\n strokeWidth=\"1\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ))}\n <path d={area} fill={`url(#${gid})`} />\n <path\n d={line}\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n </div>\n {labels ? (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", marginTop: 6 }}>\n {labels.map((l) => (\n <span key={l} style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {l}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","// Metronic example — shared page widgets used by the business screens.\nimport type { ReactNode } from \"react\";\nimport { Card } from \"../../index\";\nimport { Sparkline } from \"./charts\";\nimport type { ChartTone } from \"./charts\";\n\n/** Chart tone → the matching `--klun-state-*` token family. */\nconst STATE_TOKEN: Record<Exclude<ChartTone, \"primary\">, string> = {\n success: \"success\",\n danger: \"error\",\n info: \"information\",\n warning: \"warning\",\n feature: \"feature\",\n};\n\n/** Resolve a tone to its foreground/background token pair. */\nexport function toneVars(tone: ChartTone): { fg: string; bg: string } {\n if (tone === \"primary\") {\n return { fg: \"var(--klun-primary-base)\", bg: \"var(--klun-primary-lighter)\" };\n }\n const s = STATE_TOKEN[tone];\n return { fg: `var(--klun-state-${s}-base)`, bg: `var(--klun-state-${s}-lighter)` };\n}\n\nexport interface KpiProps {\n label: string;\n value: string;\n delta: string;\n trend?: \"up\" | \"down\";\n tone?: ChartTone;\n icon: ReactNode;\n spark: number[];\n}\n\n/** KPI tile with an icon, a trend delta and a sparkline. */\nexport function Kpi({ label, value, delta, trend = \"up\", tone = \"primary\", icon, spark }: KpiProps) {\n const { fg, bg } = toneVars(tone);\n const deltaTone = trend === \"up\" ? \"success\" : \"error\";\n return (\n <Card variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 8 }}>\n <span\n style={{\n font: \"var(--klun-text-label-xs)\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n {label}\n </span>\n <span\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--klun-radius-md)\",\n background: bg,\n color: fg,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 16,\n }}\n >\n {icon}\n </span>\n </div>\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 10, marginTop: 10, flexWrap: \"wrap\" }}>\n <span style={{ font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\", lineHeight: 1 }}>\n {value}\n </span>\n <span\n style={{\n font: \"var(--klun-text-label-sm)\",\n color: `var(--klun-state-${deltaTone}-base)`,\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <i className={trend === \"up\" ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} style={{ fontSize: 14 }} />\n {delta}\n </span>\n </div>\n <div style={{ marginTop: 10 }}>\n <Sparkline data={spark} tone={tone} height={36} />\n </div>\n </Card>\n );\n}\n\nexport interface MiniStatProps {\n label: string;\n value: ReactNode;\n hint?: ReactNode;\n /** Tints the optional hint line. */\n tone?: ChartTone;\n}\n\n/** Compact stat tile — label, value and an optional tinted hint. */\nexport function MiniStat({ label, value, hint, tone = \"primary\" }: MiniStatProps) {\n const { fg } = toneVars(tone);\n return (\n <Card variant=\"stroke\" padding={16}>\n <div\n style={{\n font: \"var(--klun-text-label-xs)\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n {label}\n </div>\n <div style={{ marginTop: 6, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>\n {value}\n </div>\n {hint ? (\n <div style={{ marginTop: 2, font: \"var(--klun-text-label-xs)\", color: fg }}>{hint}</div>\n ) : null}\n </Card>\n );\n}\n","// Metronic example — dashboard screen: page header, KPI tiles with sparklines,\n// a performance bar chart + traffic donut, and the recent-orders table.\nimport { useState } from \"react\";\nimport {\n Avatar,\n AvatarGroup,\n Badge,\n Button,\n Card,\n Table,\n Tabs,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { BarChart, DonutChart } from \"./charts\";\nimport { Kpi } from \"./widgets\";\n\n/* ---- orders table ---- */\n\ninterface Order {\n id: string;\n customer: string;\n date: string;\n status: \"Paid\" | \"Pending\" | \"Refunded\";\n total: string;\n}\n\nconst ORDERS: Order[] = [\n { id: \"#A-1042\", customer: \"Anna Krause\", date: \"Jun 18\", status: \"Paid\", total: \"$420.00\" },\n { id: \"#A-1041\", customer: \"Ben Ortiz\", date: \"Jun 18\", status: \"Pending\", total: \"$215.50\" },\n { id: \"#A-1040\", customer: \"Chloe Lin\", date: \"Jun 17\", status: \"Paid\", total: \"$980.00\" },\n { id: \"#A-1039\", customer: \"Dmitri Volkov\", date: \"Jun 17\", status: \"Refunded\", total: \"$120.00\" },\n { id: \"#A-1038\", customer: \"Erin Walsh\", date: \"Jun 16\", status: \"Paid\", total: \"$66.00\" },\n];\n\nconst STATUS_COLOR = { Paid: \"green\", Pending: \"yellow\", Refunded: \"gray\" } as const;\n\nconst customerInitials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\nconst ORDER_COLUMNS: TableColumn<Order>[] = [\n {\n key: \"id\",\n header: \"Order\",\n render: (r) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.id}</span>\n ),\n },\n {\n key: \"customer\",\n header: \"Customer\",\n render: (r) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Avatar size=\"24\" initials={customerInitials(r.customer)} color=\"blue\" />\n {r.customer}\n </span>\n ),\n },\n { key: \"date\", header: \"Date\" },\n {\n key: \"status\",\n header: \"Status\",\n render: (r) => (\n <Badge color={STATUS_COLOR[r.status]} variant=\"light\" size=\"small\" dot>\n {r.status}\n </Badge>\n ),\n },\n {\n key: \"total\",\n header: \"Total\",\n align: \"right\",\n render: (r) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.total}</span>\n ),\n },\n];\n\n/* ---- screen ---- */\n\nexport function DashboardScreen() {\n const [tab, setTab] = useState(\"revenue\");\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16 }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Dashboard\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Welcome back — here's your store today.\n </p>\n </div>\n <AvatarGroup\n size=\"32\"\n max={4}\n avatars={[\n { initials: \"AK\", color: \"blue\" },\n { initials: \"BO\", color: \"green\" },\n { initials: \"CL\", color: \"purple\" },\n { initials: \"DV\", color: \"orange\" },\n { initials: \"EW\", color: \"gray\" },\n ]}\n />\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(240px, 1fr))\", gap: 16 }}>\n <Kpi\n label=\"Revenue\"\n value=\"$84,920\"\n delta=\"12.4%\"\n tone=\"primary\"\n icon={<i className=\"ri-money-dollar-circle-line\" />}\n spark={[10, 14, 12, 18, 16, 24, 22, 30]}\n />\n <Kpi\n label=\"Orders\"\n value=\"1,284\"\n delta=\"6.1%\"\n tone=\"success\"\n icon={<i className=\"ri-shopping-bag-line\" />}\n spark={[8, 10, 9, 14, 13, 16, 18, 22]}\n />\n <Kpi\n label=\"Customers\"\n value=\"9,402\"\n delta=\"2.3%\"\n trend=\"down\"\n tone=\"danger\"\n icon={<i className=\"ri-team-line\" />}\n spark={[20, 18, 19, 15, 16, 14, 13, 12]}\n />\n <Kpi\n label=\"Conversion\"\n value=\"3.6%\"\n delta=\"0.8%\"\n tone=\"info\"\n icon={<i className=\"ri-percent-line\" />}\n spark={[2, 3, 2.5, 3.2, 3, 3.4, 3.5, 3.6]}\n />\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"minmax(0, 1.6fr) minmax(0, 1fr)\", gap: 16, alignItems: \"start\" }}>\n <Card variant=\"stroke\" padding={20}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, marginBottom: 16 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Performance</span>\n <Tabs\n variant=\"pill\"\n value={tab}\n onChange={setTab}\n items={[\n { value: \"revenue\", label: \"Revenue\" },\n { value: \"orders\", label: \"Orders\" },\n ]}\n />\n </div>\n <BarChart\n height={200}\n tone={tab === \"revenue\" ? \"primary\" : \"success\"}\n data={\n tab === \"revenue\"\n ? [\n { label: \"Mon\", value: 32 },\n { label: \"Tue\", value: 48 },\n { label: \"Wed\", value: 40 },\n { label: \"Thu\", value: 64 },\n { label: \"Fri\", value: 58 },\n { label: \"Sat\", value: 30 },\n { label: \"Sun\", value: 22 },\n ]\n : [\n { label: \"Mon\", value: 120 },\n { label: \"Tue\", value: 168 },\n { label: \"Wed\", value: 142 },\n { label: \"Thu\", value: 210 },\n { label: \"Fri\", value: 196 },\n { label: \"Sat\", value: 88 },\n { label: \"Sun\", value: 64 },\n ]\n }\n />\n </Card>\n\n <Card variant=\"stroke\" padding={20}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 16 }}>\n Traffic sources\n </div>\n <DonutChart\n centerValue=\"68%\"\n centerLabel=\"Organic\"\n data={[\n { label: \"Organic\", value: 68 },\n { label: \"Direct\", value: 18 },\n { label: \"Referral\", value: 9 },\n { label: \"Social\", value: 5 },\n ]}\n />\n </Card>\n </div>\n\n <Card variant=\"stroke\" padding={0}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, padding: \"16px 20px\" }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Recent orders</span>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\">\n View all\n </Button>\n </div>\n <Table\n columns={ORDER_COLUMNS}\n rows={ORDERS}\n getRowId={(r) => r.id}\n style={{ borderRadius: 0, boxShadow: \"none\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}\n />\n </Card>\n </div>\n );\n}\n","// Metronic example — Orders: a full data-grid business page built on the\n// klun-ui Table (selection + bulk actions, filters, sorting, CSV export,\n// pagination and a client-side search in the toolbar).\nimport { useMemo, useState } from \"react\";\nimport { Avatar, Badge, Button, Input, Money, Table } from \"../../index\";\nimport type { TableColumn } from \"../../index\";\n\ninterface Order {\n id: string;\n date: string;\n customer: string;\n items: number;\n status: \"Fulfilled\" | \"Processing\" | \"Pending\" | \"Refunded\";\n payment: string;\n total: number;\n}\n\nconst ORDERS: Order[] = [\n { id: \"#A-1042\", date: \"2026-09-16\", customer: \"Anna Krause\", items: 3, status: \"Fulfilled\", payment: \"Visa •• 4242\", total: 420.0 },\n { id: \"#A-1041\", date: \"2026-09-16\", customer: \"Ben Ortiz\", items: 1, status: \"Pending\", payment: \"PayPal\", total: 215.5 },\n { id: \"#A-1040\", date: \"2026-09-15\", customer: \"Chloe Lin\", items: 6, status: \"Fulfilled\", payment: \"Visa •• 1881\", total: 980.0 },\n { id: \"#A-1039\", date: \"2026-09-15\", customer: \"Dmitri Volkov\", items: 2, status: \"Refunded\", payment: \"Mastercard •• 5501\", total: 120.0 },\n { id: \"#A-1038\", date: \"2026-09-14\", customer: \"Erin Walsh\", items: 1, status: \"Fulfilled\", payment: \"Apple Pay\", total: 66.0 },\n { id: \"#A-1037\", date: \"2026-09-14\", customer: \"Farid Haddad\", items: 4, status: \"Processing\", payment: \"Visa •• 9034\", total: 512.4 },\n { id: \"#A-1036\", date: \"2026-09-13\", customer: \"Grace Miller\", items: 2, status: \"Fulfilled\", payment: \"PayPal\", total: 148.0 },\n { id: \"#A-1035\", date: \"2026-09-12\", customer: \"Hugo Silva\", items: 5, status: \"Processing\", payment: \"Mastercard •• 2210\", total: 764.9 },\n { id: \"#A-1034\", date: \"2026-09-12\", customer: \"Ivy Chen\", items: 1, status: \"Pending\", payment: \"Visa •• 7742\", total: 89.0 },\n { id: \"#A-1033\", date: \"2026-09-11\", customer: \"Jonas Weber\", items: 3, status: \"Fulfilled\", payment: \"Bank transfer\", total: 355.0 },\n { id: \"#A-1032\", date: \"2026-09-10\", customer: \"Karla Novak\", items: 2, status: \"Refunded\", payment: \"PayPal\", total: 210.0 },\n { id: \"#A-1031\", date: \"2026-09-10\", customer: \"Liam Byrne\", items: 7, status: \"Fulfilled\", payment: \"Visa •• 3360\", total: 1284.0 },\n];\n\nconst STATUS_COLOR = {\n Fulfilled: \"green\",\n Processing: \"blue\",\n Pending: \"yellow\",\n Refunded: \"gray\",\n} as const;\n\nconst initials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\nexport function OrdersScreen() {\n const [query, setQuery] = useState(\"\");\n const [selected, setSelected] = useState<Array<string | number>>([]);\n\n const rows = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return ORDERS;\n return ORDERS.filter(\n (o) => o.id.toLowerCase().includes(q) || o.customer.toLowerCase().includes(q),\n );\n }, [query]);\n\n const columns: TableColumn<Order>[] = [\n {\n key: \"id\",\n header: \"Order\",\n render: (r) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.id}</span>\n ),\n },\n { key: \"date\", header: \"Date\" },\n {\n key: \"customer\",\n header: \"Customer\",\n render: (r) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Avatar size=\"24\" initials={initials(r.customer)} color=\"blue\" />\n {r.customer}\n </span>\n ),\n },\n { key: \"items\", header: \"Items\", align: \"center\" },\n {\n key: \"status\",\n header: \"Status\",\n filters: [\n { label: \"Fulfilled\", value: \"Fulfilled\" },\n { label: \"Processing\", value: \"Processing\" },\n { label: \"Pending\", value: \"Pending\" },\n { label: \"Refunded\", value: \"Refunded\" },\n ],\n render: (r) => (\n <Badge color={STATUS_COLOR[r.status]} variant=\"light\" size=\"small\" dot>\n {r.status}\n </Badge>\n ),\n },\n { key: \"payment\", header: \"Payment\" },\n {\n key: \"total\",\n header: \"Total\",\n align: \"right\",\n render: (r) => (\n <Money\n value={r.total}\n currency=\"USD\"\n locale=\"en-US\"\n tone={r.status === \"Refunded\" ? \"refund\" : \"default\"}\n style={{ font: \"var(--klun-text-label-sm)\" }}\n />\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16, flexWrap: \"wrap\" }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Orders\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Track, filter and fulfil every order in one place.\n </p>\n </div>\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button variant=\"neutral\" appearance=\"stroke\" size=\"small\" leadingIcon={<i className=\"ri-download-2-line\" />}>\n Export\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />}>\n New order\n </Button>\n </div>\n </div>\n\n <Table\n columns={columns}\n rows={rows}\n getRowId={(r) => r.id}\n title=\"All orders\"\n toolbar={\n <div style={{ width: 220 }}>\n <Input\n size=\"small\"\n placeholder=\"Search orders…\"\n leadingIcon={<i className=\"ri-search-line\" />}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n }\n selectable\n selected={selected}\n onSelectRow={(id) =>\n setSelected((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]))\n }\n onSelectAll={(ids) => setSelected(ids)}\n selectionActions={(rowsSelected, clear) => (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {rowsSelected.length} selected\n </span>\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-check-line\" />}>\n Mark fulfilled\n </Button>\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"ghost\" onClick={clear}>\n Clear\n </Button>\n </div>\n )}\n sortable\n exportable={{ filename: \"orders.csv\" }}\n pagination={{ defaultPageSize: 6, pageSizeOptions: [6, 12] }}\n />\n </div>\n );\n}\n","// Metronic example — shared product model for the CRUD screens.\n// The list, the modal quick-edit and the route-style wizard all share these\n// types and helpers.\n\nexport type ProductStatus = \"Active\" | \"Low stock\" | \"Out of stock\";\n\nexport interface Product {\n id: string;\n name: string;\n sku: string;\n category: string;\n price: number;\n stock: number;\n capacity: number;\n status: ProductStatus;\n description?: string;\n}\n\n/** Everything an editor form edits (id is assigned on create). */\nexport type ProductDraft = Omit<Product, \"id\">;\n\nexport const CATEGORIES = [\"Peripherals\", \"Displays\", \"Accessories\", \"Audio\", \"Office\", \"Video\"] as const;\n\nexport const STATUS_COLOR = { Active: \"green\", \"Low stock\": \"yellow\", \"Out of stock\": \"gray\" } as const;\n\n/** Status follows stock level — editors never set it directly. */\nexport const deriveStatus = (stock: number, capacity: number): ProductStatus =>\n stock === 0 ? \"Out of stock\" : stock / capacity < 0.25 ? \"Low stock\" : \"Active\";\n\nexport function emptyDraft(): ProductDraft {\n return {\n name: \"\",\n sku: \"\",\n category: \"Accessories\",\n price: 0,\n stock: 0,\n capacity: 100,\n status: \"Active\",\n description: \"\",\n };\n}\n","// Metronic example — Products: route-style editor.\n// The full-page alternative to the modal quick-edit: a three-step wizard\n// (basics → pricing & stock → review) built on the klun-ui Wizard component.\n// With a router, mount this at /products/new and /products/:id/edit.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n Badge,\n Breadcrumb,\n Button,\n Card,\n CounterInput,\n Input,\n Label,\n Money,\n Select,\n Wizard,\n} from \"../../index\";\nimport type { WizardStep } from \"../../index\";\nimport { CATEGORIES, STATUS_COLOR, deriveStatus } from \"./productModel\";\nimport type { ProductDraft } from \"./productModel\";\n\nexport interface ProductWizardPageProps {\n mode: \"create\" | \"edit\";\n initial: ProductDraft;\n onCancel: () => void;\n onSave: (draft: ProductDraft) => void;\n}\n\nfunction Field({\n label,\n hint,\n children,\n}: {\n label: string;\n hint?: ReactNode;\n children: ReactNode;\n}) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>{label}</Label>\n {children}\n {hint ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{hint}</span>\n ) : null}\n </div>\n );\n}\n\nfunction ReviewRow({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16, padding: \"10px 0\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-soft-400)\" }}>{label}</span>\n <span\n style={{\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n }}\n >\n {children}\n </span>\n </div>\n );\n}\n\nexport function ProductWizardPage({ mode, initial, onCancel, onSave }: ProductWizardPageProps) {\n const [draft, setDraft] = useState<ProductDraft>(initial);\n const [step, setStep] = useState(0);\n const [triedNext, setTriedNext] = useState(false);\n\n const set = (patch: Partial<ProductDraft>) => setDraft((d) => ({ ...d, ...patch }));\n\n const nameError = triedNext && step === 0 && draft.name.trim().length === 0;\n const skuError = triedNext && step === 0 && draft.sku.trim().length === 0;\n const stockError = triedNext && step === 1 && (draft.stock < 0 || draft.stock > draft.capacity);\n\n const nextStatus = deriveStatus(draft.stock, draft.capacity);\n const title = mode === \"create\" ? \"New product\" : \"Edit product\";\n\n const steps: WizardStep[] = [\n {\n title: \"Basics\",\n content: (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"2fr 1fr\", gap: 16 }}>\n <Field label=\"Name\" hint={nameError ? \"A product name is required.\" : undefined}>\n <Input\n error={nameError}\n value={draft.name}\n placeholder=\"Aero Wireless Keyboard\"\n onChange={(e) => set({ name: e.target.value })}\n />\n </Field>\n <Field label=\"SKU\" hint={skuError ? \"A unique SKU is required.\" : undefined}>\n <Input\n error={skuError}\n value={draft.sku}\n placeholder=\"KB-1042\"\n onChange={(e) => set({ sku: e.target.value })}\n />\n </Field>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 16 }}>\n <Field label=\"Category\">\n <Select value={draft.category} onChange={(e) => set({ category: e.target.value })}>\n {CATEGORIES.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </Select>\n </Field>\n </div>\n <Field label=\"Description\" hint=\"Shown to teammates in the inventory — not on the storefront.\">\n <Input\n value={draft.description ?? \"\"}\n placeholder=\"Short internal description\"\n onChange={(e) => set({ description: e.target.value })}\n />\n </Field>\n </div>\n ),\n },\n {\n title: \"Pricing & stock\",\n content: (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 16 }}>\n <Field label=\"Price (USD)\">\n <Input\n type=\"number\"\n value={String(draft.price)}\n leadingIcon={<i className=\"ri-money-dollar-circle-line\" />}\n onChange={(e) => set({ price: Number(e.target.value) || 0 })}\n />\n </Field>\n <Field label=\"Capacity\" hint=\"Used for the stock bar — how many units fit.\">\n <CounterInput value={draft.capacity} min={1} max={1000} step={10} onChange={(v) => set({ capacity: v })} />\n </Field>\n </div>\n <Field\n label=\"Stock on hand\"\n hint={stockError ? \"Stock must be between 0 and capacity.\" : \"Status is derived from this level.\"}\n >\n <CounterInput value={draft.stock} min={0} max={draft.capacity} onChange={(v) => set({ stock: v })} />\n </Field>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"12px 14px\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n }}\n >\n <i className=\"ri-information-line\" style={{ fontSize: 18, color: \"var(--klun-icon-sub-600)\" }} />\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n With this stock level the product will be saved as\n </span>\n <Badge color={STATUS_COLOR[nextStatus]} variant=\"light\" size=\"small\" dot>\n {nextStatus}\n </Badge>\n </div>\n </div>\n ),\n },\n {\n title: \"Review\",\n content: (\n <div>\n <div style={{ boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <ReviewRow label=\"Name\">{draft.name || \"—\"}</ReviewRow>\n <ReviewRow label=\"SKU\">{draft.sku || \"—\"}</ReviewRow>\n <ReviewRow label=\"Category\">{draft.category}</ReviewRow>\n <ReviewRow label=\"Description\">{draft.description || \"—\"}</ReviewRow>\n </div>\n <div style={{ boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <ReviewRow label=\"Price\">\n <Money value={draft.price} currency=\"USD\" locale=\"en-US\" />\n </ReviewRow>\n <ReviewRow label=\"Stock\">\n {draft.stock} of {draft.capacity}\n </ReviewRow>\n <ReviewRow label=\"Status\">\n <Badge color={STATUS_COLOR[nextStatus]} variant=\"light\" size=\"small\" dot>\n {nextStatus}\n </Badge>\n </ReviewRow>\n </div>\n <span\n style={{\n display: \"block\",\n marginTop: 14,\n font: \"var(--klun-text-paragraph-xs)\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n Click Finish to save — the product {mode === \"create\" ? \"is added to\" : \"is updated in\"} the inventory.\n </span>\n </div>\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div>\n <Breadcrumb\n items={[\n { label: \"Products\" },\n { label: mode === \"create\" ? \"New product\" : draft.name || \"Edit product\" },\n ]}\n />\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n gap: 16,\n marginTop: 8,\n flexWrap: \"wrap\",\n }}\n >\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n {title}\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Route-style editor — three steps, saved at the end.\n </p>\n </div>\n <Button\n variant=\"neutral\"\n appearance=\"stroke\"\n size=\"small\"\n leadingIcon={<i className=\"ri-arrow-left-line\" />}\n onClick={onCancel}\n >\n Back to list\n </Button>\n </div>\n </div>\n\n <Card variant=\"stroke\" padding={20}>\n <Wizard\n steps={steps}\n current={step}\n onStepChange={(n) => {\n // gate forward navigation on the current step's validation\n if (n > step) {\n setTriedNext(true);\n if (step === 0 && (draft.name.trim() === \"\" || draft.sku.trim() === \"\")) return;\n if (step === 1 && (draft.stock < 0 || draft.stock > draft.capacity)) return;\n }\n setTriedNext(false);\n setStep(n);\n }}\n onFinish={() => onSave({ ...draft, status: nextStatus })}\n />\n </Card>\n </div>\n );\n}\n","// Metronic example — Products: full CRUD with two editor flows.\n// – list (filters / sort / column settings / export) + detail drawer\n// – quick add/edit in a MODAL, and a route-style full-page WIZARD editor\n// (mount `ProductWizardPage` at /products/new · /products/:id/edit with a\n// router — here the \"route\" is local state)\n// Deletes run through the imperative Confirm dialog. Local state only — wire\n// the handlers to your API.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n Badge,\n Button,\n Confirm,\n CounterInput,\n Drawer,\n Dropdown,\n Input,\n Label,\n Modal,\n Money,\n ProgressBar,\n Select,\n Table,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { MiniStat } from \"./widgets\";\nimport { ProductWizardPage } from \"./ProductWizardPage\";\nimport { CATEGORIES, STATUS_COLOR, deriveStatus, emptyDraft } from \"./productModel\";\nimport type { Product, ProductDraft } from \"./productModel\";\n\nconst INITIAL_PRODUCTS: Product[] = [\n { id: \"p1\", name: \"Aero Wireless Keyboard\", sku: \"KB-1042\", category: \"Peripherals\", price: 129.0, stock: 84, capacity: 120, status: \"Active\" },\n { id: \"p2\", name: \"Lumen 27\\\" 4K Monitor\", sku: \"MN-2210\", category: \"Displays\", price: 549.0, stock: 12, capacity: 80, status: \"Low stock\" },\n { id: \"p3\", name: \"Pulse USB-C Dock\", sku: \"DK-3301\", category: \"Accessories\", price: 89.5, stock: 0, capacity: 60, status: \"Out of stock\" },\n { id: \"p4\", name: \"Nimbus Laptop Stand\", sku: \"ST-1187\", category: \"Accessories\", price: 45.0, stock: 132, capacity: 200, status: \"Active\" },\n { id: \"p5\", name: \"Vertex Mechanical Mouse\", sku: \"MS-2205\", category: \"Peripherals\", price: 79.0, stock: 18, capacity: 100, status: \"Low stock\" },\n { id: \"p6\", name: \"Echo Conference Speaker\", sku: \"SP-4402\", category: \"Audio\", price: 219.0, stock: 47, capacity: 90, status: \"Active\" },\n { id: \"p7\", name: \"Flux Desk Lamp\", sku: \"LP-0913\", category: \"Office\", price: 64.0, stock: 0, capacity: 40, status: \"Out of stock\" },\n { id: \"p8\", name: \"Orbit Webcam 4K\", sku: \"WC-5520\", category: \"Video\", price: 149.0, stock: 63, capacity: 120, status: \"Active\" },\n];\n\nconst CATEGORY_TONE: Record<string, { bg: string; fg: string; icon: string }> = {\n Peripherals: { bg: \"var(--klun-state-feature-lighter)\", fg: \"var(--klun-state-feature-base)\", icon: \"ri-keyboard-line\" },\n Displays: { bg: \"var(--klun-state-information-lighter)\", fg: \"var(--klun-state-information-base)\", icon: \"ri-computer-line\" },\n Accessories: { bg: \"var(--klun-state-success-lighter)\", fg: \"var(--klun-state-success-base)\", icon: \"ri-plug-line\" },\n Audio: { bg: \"var(--klun-state-warning-lighter)\", fg: \"var(--klun-state-warning-base)\", icon: \"ri-volume-up-line\" },\n Office: { bg: \"var(--klun-state-error-lighter)\", fg: \"var(--klun-state-error-base)\", icon: \"ri-lightbulb-line\" },\n Video: { bg: \"var(--klun-primary-lighter)\", fg: \"var(--klun-primary-base)\", icon: \"ri-vidicon-line\" },\n};\n\nconst stockColor = (p: Product) =>\n p.stock === 0 ? \"error\" : p.stock / p.capacity < 0.25 ? \"warning\" : \"success\";\n\nfunction Field({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>{label}</Label>\n {children}\n </div>\n );\n}\n\n/* ---- create / edit (modal form) ---- */\n\ninterface ProductEditorProps {\n open: boolean;\n mode: \"create\" | \"edit\";\n draft: ProductDraft;\n onChange: (patch: Partial<ProductDraft>) => void;\n onClose: () => void;\n onSave: () => void;\n}\n\nfunction ProductEditor({ open, mode, draft, onChange, onClose, onSave }: ProductEditorProps) {\n const valid = draft.name.trim().length > 0 && draft.sku.trim().length > 0;\n return (\n <Modal\n open={open}\n onClose={onClose}\n title={mode === \"create\" ? \"New product\" : \"Edit product\"}\n description={\n mode === \"create\"\n ? \"The product appears in the inventory as soon as you save it.\"\n : draft.sku\n }\n okText={mode === \"create\" ? \"Create product\" : \"Save changes\"}\n okButtonProps={{ disabled: !valid }}\n onOk={() => valid && onSave()}\n width={560}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"2fr 1fr\", gap: 14 }}>\n <Field label=\"Name\">\n <Input\n value={draft.name}\n placeholder=\"Aero Wireless Keyboard\"\n onChange={(e) => onChange({ name: e.target.value })}\n />\n </Field>\n <Field label=\"SKU\">\n <Input\n value={draft.sku}\n placeholder=\"KB-1042\"\n onChange={(e) => onChange({ sku: e.target.value })}\n />\n </Field>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <Field label=\"Category\">\n <Select value={draft.category} onChange={(e) => onChange({ category: e.target.value })}>\n {CATEGORIES.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </Select>\n </Field>\n <Field label=\"Price (USD)\">\n <Input\n type=\"number\"\n value={String(draft.price)}\n leadingIcon={<i className=\"ri-money-dollar-circle-line\" />}\n onChange={(e) => onChange({ price: Number(e.target.value) || 0 })}\n />\n </Field>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <Field label=\"Stock on hand\">\n <CounterInput value={draft.stock} min={0} max={draft.capacity} onChange={(v) => onChange({ stock: v })} />\n </Field>\n <Field label=\"Capacity\">\n <CounterInput value={draft.capacity} min={1} max={1000} step={10} onChange={(v) => onChange({ capacity: v })} />\n </Field>\n </div>\n <Field label=\"Description\">\n <Input\n value={draft.description ?? \"\"}\n placeholder=\"Short internal description\"\n onChange={(e) => onChange({ description: e.target.value })}\n />\n </Field>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Status follows stock: 0 = out of stock, below 25% of capacity = low stock.\n </span>\n </div>\n </Modal>\n );\n}\n\n/* ---- read (detail drawer) ---- */\n\nfunction DetailRow({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-soft-400)\" }}>{label}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{children}</span>\n </div>\n );\n}\n\ninterface ProductDetailProps {\n product: Product | null;\n onClose: () => void;\n onEdit: (p: Product) => void;\n onOpenPage: (p: Product) => void;\n onDelete: (p: Product) => void;\n}\n\nfunction ProductDetail({ product, onClose, onEdit, onOpenPage, onDelete }: ProductDetailProps) {\n return (\n <Drawer\n open={product !== null}\n onClose={onClose}\n title=\"Product details\"\n width={420}\n footer={\n product ? (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: 8, width: \"100%\" }}>\n <Button\n size=\"small\"\n variant=\"error\"\n appearance=\"lighter\"\n leadingIcon={<i className=\"ri-delete-bin-line\" />}\n onClick={() => onDelete(product)}\n >\n Delete\n </Button>\n <span style={{ display: \"flex\", gap: 8 }}>\n <Button size=\"small\" variant=\"neutral\" appearance=\"ghost\" onClick={() => onOpenPage(product)}>\n Full editor\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-edit-line\" />} onClick={() => onEdit(product)}>\n Edit product\n </Button>\n </span>\n </div>\n ) : null\n }\n >\n {product ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <Thumb category={product.category} />\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>\n {product.name}\n </div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {product.sku}\n </div>\n </div>\n <span style={{ marginLeft: \"auto\" }}>\n <Badge color={STATUS_COLOR[product.status]} variant=\"light\" size=\"small\" dot>\n {product.status}\n </Badge>\n </span>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n <DetailRow label=\"Category\">{product.category}</DetailRow>\n <DetailRow label=\"Price\">\n <Money value={product.price} currency=\"USD\" locale=\"en-US\" />\n </DetailRow>\n <DetailRow label=\"Stock\">\n {product.stock} of {product.capacity}\n </DetailRow>\n </div>\n\n <ProgressBar value={product.stock} max={product.capacity} color={stockColor(product)} />\n\n {product.description ? (\n <span\n style={{\n font: \"var(--klun-text-paragraph-sm)\",\n color: \"var(--klun-text-sub-600)\",\n boxShadow: \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n paddingTop: 16,\n }}\n >\n {product.description}\n </span>\n ) : null}\n </div>\n ) : null}\n </Drawer>\n );\n}\n\nfunction Thumb({ category }: { category: string }) {\n const tone = CATEGORY_TONE[category] ?? CATEGORY_TONE.Accessories;\n return (\n <span\n style={{\n width: 34,\n height: 34,\n borderRadius: \"var(--klun-radius-md)\",\n background: tone.bg,\n color: tone.fg,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 17,\n flexShrink: 0,\n }}\n >\n <i className={tone.icon} />\n </span>\n );\n}\n\nexport function ProductsScreen() {\n const [products, setProducts] = useState<Product[]>(INITIAL_PRODUCTS);\n const [editor, setEditor] = useState<{ mode: \"create\" | \"edit\"; product?: Product } | null>(null);\n const [draft, setDraft] = useState<ProductDraft>(emptyDraft);\n const [detail, setDetail] = useState<Product | null>(null);\n // \"Route\" state — swap for real routes (/products/new · /products/:id/edit)\n // when the app has a router; the wizard page renders instead of the list.\n const [route, setRoute] = useState<{ name: \"list\" | \"create\" | \"edit\"; product?: Product }>({\n name: \"list\",\n });\n\n const toDraft = (p: Product): ProductDraft => {\n const { id: _id, ...rest } = p;\n return rest;\n };\n\n /** Shared save path for the modal editor and the wizard page. */\n const upsert = (d: ProductDraft, mode: \"create\" | \"edit\", id?: string) => {\n if (mode === \"create\") {\n setProducts((prev) => [{ id: `p${Date.now()}`, ...d }, ...prev]);\n return;\n }\n if (id) {\n setProducts((prev) => prev.map((p) => (p.id === id ? { ...p, ...d } : p)));\n setDetail((x) => (x && x.id === id ? { ...x, ...d } : x));\n }\n };\n\n if (route.name !== \"list\") {\n const mode = route.name;\n const editing = mode === \"edit\" ? route.product : undefined;\n return (\n <ProductWizardPage\n mode={mode}\n initial={editing ? toDraft(editing) : emptyDraft()}\n onCancel={() => setRoute({ name: \"list\" })}\n onSave={(d) => {\n upsert(d, mode, editing?.id);\n setRoute({ name: \"list\" });\n }}\n />\n );\n }\n\n const totals = {\n skus: products.length,\n low: products.filter((p) => p.status === \"Low stock\").length,\n out: products.filter((p) => p.status === \"Out of stock\").length,\n value: products.reduce((sum, p) => sum + p.price * p.stock, 0),\n };\n\n const openCreate = () => {\n setDraft(emptyDraft());\n setEditor({ mode: \"create\" });\n };\n\n const openEdit = (p: Product) => {\n setDraft(toDraft(p));\n setEditor({ mode: \"edit\", product: p });\n };\n\n const saveDraft = () => {\n const status = deriveStatus(draft.stock, draft.capacity);\n upsert({ ...draft, status }, editor?.mode ?? \"create\", editor?.product?.id);\n setEditor(null);\n };\n\n const removeProduct = async (p: Product) => {\n const res = await Confirm({\n title: `Delete ${p.name}?`,\n description: `${p.sku} will be removed from the inventory. This can't be undone.`,\n intent: \"danger\",\n confirmText: \"Delete product\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setProducts((prev) => prev.filter((x) => x.id !== p.id));\n setDetail((d) => (d && d.id === p.id ? null : d));\n }\n };\n\n const columns: TableColumn<Product>[] = [\n {\n key: \"name\",\n header: \"Product\",\n render: (p) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10 }}>\n <Thumb category={p.category} />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{p.name}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{p.sku}</span>\n </span>\n </span>\n ),\n },\n { key: \"category\", header: \"Category\" },\n {\n key: \"price\",\n header: \"Price\",\n align: \"right\",\n render: (p) => <Money value={p.price} currency=\"USD\" locale=\"en-US\" style={{ font: \"var(--klun-text-label-sm)\" }} />,\n },\n {\n key: \"stock\",\n header: \"Stock\",\n width: 190,\n render: (p) => (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 150 }}>\n <span style={{ flex: 1 }}>\n <ProgressBar value={p.stock} max={p.capacity} color={stockColor(p)} />\n </span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\", width: 32, textAlign: \"right\" }}>\n {p.stock}\n </span>\n </span>\n ),\n },\n {\n key: \"status\",\n header: \"Status\",\n filters: [\n { label: \"Active\", value: \"Active\" },\n { label: \"Low stock\", value: \"Low stock\" },\n { label: \"Out of stock\", value: \"Out of stock\" },\n ],\n render: (p) => (\n <Badge color={STATUS_COLOR[p.status]} variant=\"light\" size=\"small\" dot>\n {p.status}\n </Badge>\n ),\n },\n {\n key: \"actions\",\n header: \"\",\n width: 56,\n align: \"right\",\n exportable: false,\n render: (p) => (\n <Dropdown\n align=\"right\"\n width={190}\n trigger={\n <Button\n kind=\"compact\"\n appearance=\"ghost\"\n icon={<i className=\"ri-more-2-line\" />}\n aria-label={`Actions for ${p.name}`}\n />\n }\n items={[\n { label: \"View details\", icon: <i className=\"ri-eye-line\" />, onClick: () => setDetail(p) },\n { label: \"Quick edit — modal\", icon: <i className=\"ri-edit-line\" />, onClick: () => openEdit(p) },\n { label: \"Edit in page\", icon: <i className=\"ri-layout-top-line\" />, onClick: () => setRoute({ name: \"edit\", product: p }) },\n { label: \"Duplicate\", icon: <i className=\"ri-file-copy-line\" />, onClick: () => openCreate() },\n { divider: true },\n { label: \"Delete product\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void removeProduct(p) },\n ]}\n />\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16, flexWrap: \"wrap\" }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Products\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Inventory levels, pricing and availability — full create, edit and delete flows.\n </p>\n </div>\n <Dropdown\n align=\"right\"\n width={220}\n trigger={\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />}>\n Add product\n </Button>\n }\n items={[\n { label: \"Quick add — modal\", icon: <i className=\"ri-add-box-line\" />, onClick: openCreate },\n {\n label: \"Full-page editor\",\n icon: <i className=\"ri-layout-top-line\" />,\n onClick: () => setRoute({ name: \"create\" }),\n },\n ]}\n />\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\", gap: 16 }}>\n <MiniStat label=\"SKUs\" value={totals.skus} hint=\"across 6 categories\" />\n <MiniStat label=\"Low stock\" value={totals.low} hint=\"needs restocking\" tone=\"warning\" />\n <MiniStat label=\"Out of stock\" value={totals.out} hint=\"not purchasable\" tone=\"danger\" />\n <MiniStat label=\"Inventory value\" value={<Money value={totals.value} currency=\"USD\" locale=\"en-US\" size=\"lg\" />} hint=\"at cost price\" tone=\"success\" />\n </div>\n\n <Table\n columns={columns}\n rows={products}\n getRowId={(p) => p.id}\n title=\"Inventory\"\n toolbar={\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-filter-3-line\" />}>\n Filters\n </Button>\n }\n sortable\n columnSettings\n exportable={{ filename: \"products.csv\" }}\n />\n\n <ProductEditor\n open={editor !== null}\n mode={editor?.mode ?? \"create\"}\n draft={draft}\n onChange={(patch) => setDraft((d) => ({ ...d, ...patch }))}\n onClose={() => setEditor(null)}\n onSave={saveDraft}\n />\n\n <ProductDetail\n product={detail}\n onClose={() => setDetail(null)}\n onEdit={(p) => {\n setDetail(null);\n openEdit(p);\n }}\n onOpenPage={(p) => {\n setDetail(null);\n setRoute({ name: \"edit\", product: p });\n }}\n onDelete={(p) => void removeProduct(p)}\n />\n </div>\n );\n}\n","// Metronic example — Customers: CRM-style list with segments, lifetime spend\n// and live relative times, plus a summary strip.\nimport { Avatar, Button, Chip, Money, RelativeTime, Table } from \"../../index\";\nimport type { ChipColor, TableColumn } from \"../../index\";\nimport { MiniStat } from \"./widgets\";\n\ninterface Customer {\n id: string;\n name: string;\n email: string;\n segment: \"VIP\" | \"Regular\" | \"New\";\n orders: number;\n spend: number;\n lastSeen: string;\n country: string;\n}\n\nconst CUSTOMERS: Customer[] = [\n { id: \"c1\", name: \"Anna Krause\", email: \"anna@acme.io\", segment: \"VIP\", orders: 42, spend: 18420.0, lastSeen: \"2026-09-16T08:30:00Z\", country: \"Germany\" },\n { id: \"c2\", name: \"Ben Ortiz\", email: \"ben@northwind.co\", segment: \"Regular\", orders: 17, spend: 5210.5, lastSeen: \"2026-09-16T06:10:00Z\", country: \"Mexico\" },\n { id: \"c3\", name: \"Chloe Lin\", email: \"chloe@lumen.dev\", segment: \"VIP\", orders: 55, spend: 24980.0, lastSeen: \"2026-09-15T19:45:00Z\", country: \"Singapore\" },\n { id: \"c4\", name: \"Dmitri Volkov\", email: \"dmitri@volk.io\", segment: \"New\", orders: 2, spend: 340.0, lastSeen: \"2026-09-15T12:05:00Z\", country: \"Georgia\" },\n { id: \"c5\", name: \"Erin Walsh\", email: \"erin@walsh.ie\", segment: \"Regular\", orders: 23, spend: 7690.0, lastSeen: \"2026-09-14T16:20:00Z\", country: \"Ireland\" },\n { id: \"c6\", name: \"Farid Haddad\", email: \"farid@levant.sa\", segment: \"Regular\", orders: 11, spend: 3980.0, lastSeen: \"2026-09-14T09:00:00Z\", country: \"Saudi Arabia\" },\n { id: \"c7\", name: \"Grace Miller\", email: \"grace@miller.us\", segment: \"New\", orders: 1, spend: 148.0, lastSeen: \"2026-09-13T20:12:00Z\", country: \"United States\" },\n { id: \"c8\", name: \"Hugo Silva\", email: \"hugo@silva.br\", segment: \"VIP\", orders: 38, spend: 15340.0, lastSeen: \"2026-09-13T10:40:00Z\", country: \"Brazil\" },\n];\n\nconst SEGMENT_COLOR: Record<Customer[\"segment\"], ChipColor> = {\n VIP: \"purple\",\n Regular: \"blue\",\n New: \"green\",\n};\n\nconst initials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\nexport function CustomersScreen() {\n const totalSpend = CUSTOMERS.reduce((sum, c) => sum + c.spend, 0);\n\n const columns: TableColumn<Customer>[] = [\n {\n key: \"name\",\n header: \"Customer\",\n render: (c) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"32\" initials={initials(c.name)} color=\"blue\" />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{c.name}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{c.email}</span>\n </span>\n </span>\n ),\n },\n {\n key: \"segment\",\n header: \"Segment\",\n filters: [\n { label: \"VIP\", value: \"VIP\" },\n { label: \"Regular\", value: \"Regular\" },\n { label: \"New\", value: \"New\" },\n ],\n render: (c) => (\n <Chip color={SEGMENT_COLOR[c.segment]} dot>\n {c.segment}\n </Chip>\n ),\n },\n { key: \"country\", header: \"Country\" },\n { key: \"orders\", header: \"Orders\", align: \"center\" },\n {\n key: \"spend\",\n header: \"Lifetime spend\",\n align: \"right\",\n render: (c) => (\n <Money\n value={c.spend}\n currency=\"USD\"\n locale=\"en-US\"\n tone={c.segment === \"VIP\" ? \"increase\" : \"default\"}\n style={{ font: \"var(--klun-text-label-sm)\" }}\n />\n ),\n },\n {\n key: \"lastSeen\",\n header: \"Last active\",\n render: (c) => (\n <RelativeTime\n date={c.lastSeen}\n live={false}\n style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}\n />\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16, flexWrap: \"wrap\" }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Customers\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Segments, spend and engagement across your customer base.\n </p>\n </div>\n <Button size=\"small\" leadingIcon={<i className=\"ri-user-add-line\" />}>\n Invite customer\n </Button>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\", gap: 16 }}>\n <MiniStat label=\"Customers\" value=\"9,402\" hint=\"+2.3% this month\" />\n <MiniStat label=\"New (30d)\" value=\"384\" hint=\"+12.4% vs last month\" tone=\"success\" />\n <MiniStat label=\"Repeat rate\" value=\"46%\" hint=\"+1.8 pts\" tone=\"success\" />\n <MiniStat label=\"Lifetime value shown\" value={<Money value={totalSpend} currency=\"USD\" locale=\"en-US\" size=\"lg\" />} hint=\"top 8 customers\" tone=\"feature\" />\n </div>\n\n <Table\n columns={columns}\n rows={CUSTOMERS}\n getRowId={(c) => c.id}\n title=\"All customers\"\n sortable\n exportable={{ filename: \"customers.csv\" }}\n pagination={{ defaultPageSize: 8 }}\n />\n </div>\n );\n}\n","// Metronic example — RBAC: team members (users).\n// Full CRUD on the user list: invite/edit via a modal form, suspend/restore\n// and remove via the imperative Confirm dialog. Local state only — wire the\n// handlers to your API.\nimport { useState } from \"react\";\nimport { Avatar, Badge, Button, Chip, Confirm, Dropdown, Input, Label, Modal, RelativeTime, Select, Switch, Table } from \"../../index\";\nimport type { ChipColor, TableColumn } from \"../../index\";\n\ntype RoleId = \"Owner\" | \"Admin\" | \"Manager\" | \"Editor\" | \"Viewer\";\ntype UserStatus = \"Active\" | \"Invited\" | \"Suspended\";\n\ninterface User {\n id: string;\n name: string;\n email: string;\n role: RoleId;\n status: UserStatus;\n twoFA: boolean;\n lastSeen: string;\n}\n\nconst ROLES: RoleId[] = [\"Owner\", \"Admin\", \"Manager\", \"Editor\", \"Viewer\"];\n\nconst INITIAL_USERS: User[] = [\n { id: \"u1\", name: \"Anna Krause\", email: \"anna@acme.io\", role: \"Owner\", status: \"Active\", twoFA: true, lastSeen: \"2026-09-16T08:30:00Z\" },\n { id: \"u2\", name: \"Ben Ortiz\", email: \"ben@acme.io\", role: \"Admin\", status: \"Active\", twoFA: true, lastSeen: \"2026-09-16T06:10:00Z\" },\n { id: \"u3\", name: \"Chloe Lin\", email: \"chloe@acme.io\", role: \"Manager\", status: \"Active\", twoFA: false, lastSeen: \"2026-09-15T19:45:00Z\" },\n { id: \"u4\", name: \"Dmitri Volkov\", email: \"dmitri@acme.io\", role: \"Editor\", status: \"Invited\", twoFA: false, lastSeen: \"2026-09-15T12:05:00Z\" },\n { id: \"u5\", name: \"Erin Walsh\", email: \"erin@acme.io\", role: \"Editor\", status: \"Active\", twoFA: true, lastSeen: \"2026-09-14T16:20:00Z\" },\n { id: \"u6\", name: \"Farid Haddad\", email: \"farid@acme.io\", role: \"Viewer\", status: \"Suspended\", twoFA: false, lastSeen: \"2026-09-02T09:00:00Z\" },\n { id: \"u7\", name: \"Grace Miller\", email: \"grace@acme.io\", role: \"Viewer\", status: \"Active\", twoFA: false, lastSeen: \"2026-09-13T20:12:00Z\" },\n];\n\nconst ROLE_COLOR: Record<RoleId, ChipColor> = {\n Owner: \"purple\",\n Admin: \"blue\",\n Manager: \"teal\",\n Editor: \"green\",\n Viewer: \"gray\",\n};\n\nconst STATUS_COLOR: Record<UserStatus, \"green\" | \"blue\" | \"gray\"> = {\n Active: \"green\",\n Invited: \"blue\",\n Suspended: \"gray\",\n};\n\nconst initials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\ninterface EditorState {\n mode: \"create\" | \"edit\";\n user?: User;\n}\n\nexport function UsersScreen() {\n const [users, setUsers] = useState<User[]>(INITIAL_USERS);\n const [editor, setEditor] = useState<EditorState | null>(null);\n const [form, setForm] = useState<{ name: string; email: string; role: RoleId; twoFA: boolean }>({\n name: \"\",\n email: \"\",\n role: \"Viewer\",\n twoFA: false,\n });\n\n const openCreate = () => {\n setForm({ name: \"\", email: \"\", role: \"Viewer\", twoFA: false });\n setEditor({ mode: \"create\" });\n };\n\n const openEdit = (user: User) => {\n setForm({ name: user.name, email: user.email, role: user.role, twoFA: user.twoFA });\n setEditor({ mode: \"edit\", user });\n };\n\n const save = () => {\n if (!editor) return;\n if (editor.mode === \"create\") {\n setUsers((prev) => [\n ...prev,\n {\n id: `u${Date.now()}`,\n name: form.name.trim() || \"New teammate\",\n email: form.email.trim() || \"teammate@acme.io\",\n role: form.role,\n status: \"Invited\",\n twoFA: form.twoFA,\n lastSeen: new Date().toISOString(),\n },\n ]);\n } else if (editor.user) {\n setUsers((prev) =>\n prev.map((u) =>\n u.id === editor.user!.id\n ? { ...u, name: form.name.trim() || u.name, email: form.email.trim() || u.email, role: form.role, twoFA: form.twoFA }\n : u,\n ),\n );\n }\n setEditor(null);\n };\n\n const toggleSuspend = (user: User) => {\n setUsers((prev) =>\n prev.map((u) =>\n u.id === user.id ? { ...u, status: u.status === \"Suspended\" ? \"Active\" : \"Suspended\" } : u,\n ),\n );\n };\n\n const remove = async (user: User) => {\n const res = await Confirm({\n title: `Remove ${user.name}?`,\n description: `${user.email} will lose access to the workspace immediately. This can't be undone.`,\n intent: \"danger\",\n confirmText: \"Remove user\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setUsers((prev) => prev.filter((u) => u.id !== user.id));\n }\n };\n\n const columns: TableColumn<User>[] = [\n {\n key: \"name\",\n header: \"User\",\n render: (u) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"32\" initials={initials(u.name)} color=\"blue\" />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{u.name}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{u.email}</span>\n </span>\n </span>\n ),\n },\n {\n key: \"role\",\n header: \"Role\",\n filters: ROLES.map((r) => ({ label: r, value: r })),\n render: (u) => (\n <Chip color={ROLE_COLOR[u.role]} dot>\n {u.role}\n </Chip>\n ),\n },\n {\n key: \"status\",\n header: \"Status\",\n filters: ([\"Active\", \"Invited\", \"Suspended\"] as UserStatus[]).map((s) => ({ label: s, value: s })),\n render: (u) => (\n <Badge color={STATUS_COLOR[u.status]} variant=\"light\" size=\"small\" dot>\n {u.status}\n </Badge>\n ),\n },\n {\n key: \"twoFA\",\n header: \"2FA\",\n align: \"center\",\n render: (u) =>\n u.twoFA ? (\n <Badge color=\"green\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-lock-2-line\" />}>\n On\n </Badge>\n ) : (\n <Badge color=\"gray\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-lock-unlock-line\" />}>\n Off\n </Badge>\n ),\n },\n {\n key: \"lastSeen\",\n header: \"Last active\",\n render: (u) => (\n <RelativeTime\n date={u.lastSeen}\n live={false}\n style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}\n />\n ),\n },\n {\n key: \"actions\",\n header: \"\",\n width: 60,\n align: \"right\",\n exportable: false,\n render: (u) => (\n <Dropdown\n align=\"right\"\n width={190}\n trigger={\n <Button\n kind=\"compact\"\n appearance=\"ghost\"\n icon={<i className=\"ri-more-2-line\" />}\n aria-label={`Actions for ${u.name}`}\n />\n }\n items={[\n { label: \"Edit details\", icon: <i className=\"ri-edit-line\" />, onClick: () => openEdit(u) },\n { label: \"Send reset link\", icon: <i className=\"ri-mail-send-line\" />, onClick: () => {} },\n {\n label: u.status === \"Suspended\" ? \"Restore access\" : \"Suspend access\",\n icon: <i className={u.status === \"Suspended\" ? \"ri-play-circle-line\" : \"ri-pause-circle-line\"} />,\n onClick: () => toggleSuspend(u),\n },\n { divider: true, label: \"\" },\n { label: \"Remove user\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void remove(u) },\n ]}\n />\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16, flexWrap: \"wrap\" }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Team members\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Invite people, assign roles and control access. Roles are managed on the Roles page.\n </p>\n </div>\n <Button size=\"small\" leadingIcon={<i className=\"ri-user-add-line\" />} onClick={openCreate}>\n Invite user\n </Button>\n </div>\n\n <Table\n columns={columns}\n rows={users}\n getRowId={(u) => u.id}\n title={`Members (${users.length})`}\n sortable\n exportable={{ filename: \"team.csv\" }}\n pagination={{ defaultPageSize: 8 }}\n />\n\n <Modal\n open={editor !== null}\n onClose={() => setEditor(null)}\n title={editor?.mode === \"create\" ? \"Invite user\" : \"Edit user\"}\n description={\n editor?.mode === \"create\"\n ? \"They'll receive an email with a link to set their password.\"\n : editor?.user?.email\n }\n okText={editor?.mode === \"create\" ? \"Send invite\" : \"Save changes\"}\n onOk={save}\n width={480}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Full name</Label>\n <Input\n placeholder=\"Jane Cooper\"\n value={form.name}\n onChange={(e) => setForm((f) => ({ ...f, name: e.target.value }))}\n />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Role</Label>\n <Select value={form.role} onChange={(e) => setForm((f) => ({ ...f, role: e.target.value as RoleId }))}>\n {ROLES.map((r) => (\n <option key={r} value={r}>\n {r}\n </option>\n ))}\n </Select>\n </div>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Email address</Label>\n <Input\n type=\"email\"\n placeholder=\"jane@acme.io\"\n leadingIcon={<i className=\"ri-mail-line\" />}\n value={form.email}\n onChange={(e) => setForm((f) => ({ ...f, email: e.target.value }))}\n />\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 16,\n paddingTop: 4,\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n Require two-factor authentication\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n Ask for a second factor at every sign-in.\n </span>\n </div>\n <Switch checked={form.twoFA} onChange={(c) => setForm((f) => ({ ...f, twoFA: c }))} />\n </div>\n </div>\n </Modal>\n </div>\n );\n}\n","// Metronic example — RBAC: roles & permissions.\n// Role list on the left, a module × action permission matrix on the right.\n// Edits are local state (Save marks the baseline); wire `onSave` to your API.\nimport { useState } from \"react\";\nimport { Badge, Button, Card, Checkbox } from \"../../index\";\n\ninterface Role {\n id: string;\n name: string;\n description: string;\n members: number;\n}\n\nconst ROLES: Role[] = [\n { id: \"owner\", name: \"Owner\", description: \"Full access including billing and workspace settings.\", members: 1 },\n { id: \"admin\", name: \"Admin\", description: \"Manages people, roles and everything in the workspace.\", members: 3 },\n { id: \"manager\", name: \"Manager\", description: \"Runs day-to-day operations across orders and products.\", members: 8 },\n { id: \"editor\", name: \"Editor\", description: \"Creates and edits content; cannot delete or manage users.\", members: 14 },\n { id: \"viewer\", name: \"Viewer\", description: \"Read-only access to dashboards and reports.\", members: 46 },\n];\n\nconst MODULES = [\"Dashboard\", \"Orders\", \"Products\", \"Customers\", \"Reports\", \"Users\", \"Billing\"] as const;\nconst ACTIONS = [\"View\", \"Create\", \"Edit\", \"Delete\", \"Manage\"] as const;\n\ntype ModuleName = (typeof MODULES)[number];\ntype Action = (typeof ACTIONS)[number];\ntype PermKey = `${ModuleName}:${Action}`;\ntype RolePerms = Record<PermKey, boolean>;\n\nconst key = (m: ModuleName, a: Action): PermKey => `${m}:${a}`;\n\nfunction seed(fn: (m: ModuleName, a: Action) => boolean): RolePerms {\n const out = {} as RolePerms;\n for (const m of MODULES) for (const a of ACTIONS) out[key(m, a)] = fn(m, a);\n return out;\n}\n\nconst OPERATIONS: ModuleName[] = [\"Orders\", \"Products\", \"Customers\"];\n\nconst INITIAL: Record<string, RolePerms> = {\n owner: seed(() => true),\n admin: seed(() => true),\n manager: seed((m, a) => (OPERATIONS.includes(m) ? a !== \"Manage\" : a === \"View\")),\n editor: seed((m, a) => (OPERATIONS.includes(m) ? a === \"View\" || a === \"Create\" || a === \"Edit\" : a === \"View\")),\n viewer: seed((m, a) => (OPERATIONS.includes(m) ? a === \"View\" : false)),\n};\n\nexport function RolesScreen() {\n const [roleId, setRoleId] = useState(\"manager\");\n const [perms, setPerms] = useState<RolePerms[]>(() => ROLES.map((r) => ({ ...INITIAL[r.id] })));\n const [baseline, setBaseline] = useState<RolePerms[]>(() => ROLES.map((r) => ({ ...INITIAL[r.id] })));\n\n const roleIndex = ROLES.findIndex((r) => r.id === roleId);\n const current = perms[roleIndex];\n const base = baseline[roleIndex];\n const dirty = JSON.stringify(current) !== JSON.stringify(base);\n const role = ROLES[roleIndex];\n\n const setCell = (m: ModuleName, a: Action, value: boolean) => {\n setPerms((prev) => prev.map((p, i) => (i === roleIndex ? { ...p, [key(m, a)]: value } : p)));\n };\n\n const setRow = (m: ModuleName, value: boolean) => {\n setPerms((prev) =>\n prev.map((p, i) => {\n if (i !== roleIndex) return p;\n const next = { ...p };\n for (const a of ACTIONS) next[key(m, a)] = value;\n return next;\n }),\n );\n };\n\n const granted = MODULES.filter((m) => ACTIONS.every((a) => current[key(m, a)])).length;\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Roles &amp; permissions\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Control what each role can see and do. Changes apply to every member of the role.\n </p>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"300px minmax(0, 1fr)\", gap: 20, alignItems: \"start\" }}>\n {/* role list */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {ROLES.map((r) => {\n const on = r.id === roleId;\n return (\n <button\n key={r.id}\n onClick={() => setRoleId(r.id)}\n style={{\n textAlign: \"left\",\n padding: \"12px 14px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-xl)\",\n cursor: \"pointer\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"inset 0 0 0 1px var(--klun-stroke-soft-200), var(--klun-shadow-xs)\" : \"none\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {r.name}\n </span>\n <Badge color=\"gray\" variant=\"lighter\" size=\"small\">\n {r.members}\n </Badge>\n </span>\n <span\n style={{\n display: \"block\",\n marginTop: 2,\n font: \"var(--klun-text-paragraph-xs)\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n {r.description}\n </span>\n </button>\n );\n })}\n </div>\n\n {/* permission matrix */}\n <Card variant=\"stroke\" padding={0}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"16px 20px\",\n boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\",\n flexWrap: \"wrap\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>\n {role.name} permissions\n </span>\n <Badge color=\"blue\" variant=\"light\" size=\"small\">\n {role.members} {role.members === 1 ? \"member\" : \"members\"}\n </Badge>\n {dirty ? (\n <Badge color=\"yellow\" variant=\"light\" size=\"small\" dot>\n Unsaved changes\n </Badge>\n ) : null}\n </div>\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button\n size=\"small\"\n variant=\"neutral\"\n appearance=\"ghost\"\n disabled={!dirty}\n onClick={() =>\n setPerms((prev) => prev.map((p, i) => (i === roleIndex ? { ...base } : p)))\n }\n >\n Reset\n </Button>\n <Button\n size=\"small\"\n disabled={!dirty}\n onClick={() =>\n setBaseline((prev) => prev.map((p, i) => (i === roleIndex ? { ...current } : p)))\n }\n >\n Save changes\n </Button>\n </div>\n </div>\n\n <div style={{ padding: \"8px 20px 20px\" }}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(140px, 1fr) repeat(5, 74px) 64px\",\n alignItems: \"center\",\n gap: 4,\n padding: \"10px 8px\",\n }}\n >\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\", textTransform: \"uppercase\", letterSpacing: \"0.02em\" }}>\n Module\n </span>\n {ACTIONS.map((a) => (\n <span\n key={a}\n style={{\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-soft-400)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n textAlign: \"center\",\n }}\n >\n {a}\n </span>\n ))}\n <span\n style={{\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-soft-400)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n textAlign: \"center\",\n }}\n >\n All\n </span>\n </div>\n\n {MODULES.map((m, i) => {\n const all = ACTIONS.every((a) => current[key(m, a)]);\n const some = !all && ACTIONS.some((a) => current[key(m, a)]);\n return (\n <div\n key={m}\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(140px, 1fr) repeat(5, 74px) 64px\",\n alignItems: \"center\",\n gap: 4,\n padding: \"10px 8px\",\n boxShadow: \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n }}\n >\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{m}</span>\n {ACTIONS.map((a) => (\n <span key={a} style={{ display: \"flex\", justifyContent: \"center\" }}>\n <Checkbox\n size=\"small\"\n checked={current[key(m, a)]}\n onChange={(c) => setCell(m, a, c)}\n />\n </span>\n ))}\n <span style={{ display: \"flex\", justifyContent: \"center\" }}>\n <Checkbox size=\"small\" checked={all} indeterminate={some} onChange={(c) => setRow(m, c)} />\n </span>\n </div>\n );\n })}\n\n <div\n style={{\n marginTop: 14,\n paddingTop: 14,\n boxShadow: \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n flexWrap: \"wrap\",\n }}\n >\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Full access to {granted} of {MODULES.length} modules\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Owner role is always unrestricted\n </span>\n </div>\n </div>\n </Card>\n </div>\n </div>\n );\n}\n","// Metronic example — Reports: analytics page with a range switcher, KPI tiles,\n// a large area chart, a donut breakdown, a \"top\" list and a detail table.\n// `view` switches between the Sales and Traffic report variants.\nimport { useState } from \"react\";\nimport { Card, Money, ProgressBar, SegmentedControl, Table } from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { AreaChart, DonutChart } from \"./charts\";\nimport { Kpi } from \"./widgets\";\n\nexport type ReportsView = \"sales\" | \"traffic\";\n\ntype Range = \"7d\" | \"30d\" | \"90d\";\n\nconst RANGES: Array<{ value: Range; label: string }> = [\n { value: \"7d\", label: \"7d\" },\n { value: \"30d\", label: \"30d\" },\n { value: \"90d\", label: \"90d\" },\n];\n\ninterface Series {\n data: number[];\n labels: string[];\n}\n\nconst SALES_SERIES: Record<Range, Series> = {\n \"7d\": { data: [8200, 9100, 7800, 10400, 12600, 11200, 14800], labels: [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"] },\n \"30d\": { data: [38200, 41600, 39800, 47400, 52100], labels: [\"W1\", \"W2\", \"W3\", \"W4\", \"W5\"] },\n \"90d\": { data: [98200, 110400, 106800, 121600, 134200, 148900], labels: [\"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\"] },\n};\n\nconst TRAFFIC_SERIES: Record<Range, Series> = {\n \"7d\": { data: [12400, 13800, 12950, 15600, 17200, 14900, 18600], labels: [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"] },\n \"30d\": { data: [58600, 61200, 59400, 66800, 72300], labels: [\"W1\", \"W2\", \"W3\", \"W4\", \"W5\"] },\n \"90d\": { data: [142000, 156800, 149500, 168200, 178400, 192600], labels: [\"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\"] },\n};\n\ninterface Row {\n key: string;\n label: string;\n value: number;\n share: number;\n}\n\nconst SALES_REGIONS: Array<{ region: string; orders: number; revenue: number; share: number }> = [\n { region: \"Europe\", orders: 512, revenue: 42860, share: 50 },\n { region: \"North America\", orders: 388, revenue: 26400, share: 31 },\n { region: \"Asia Pacific\", orders: 241, revenue: 11240, share: 13 },\n { region: \"Rest of world\", orders: 143, revenue: 4420, share: 6 },\n];\n\nconst TRAFFIC_DEVICES: Array<{ device: string; sessions: number; share: number }> = [\n { device: \"Desktop\", sessions: 73420, share: 57 },\n { device: \"Mobile\", sessions: 44180, share: 34 },\n { device: \"Tablet\", sessions: 9420, share: 7 },\n { device: \"Other\", sessions: 2520, share: 2 },\n];\n\nconst SALES_TOP: Row[] = [\n { key: \"1\", label: \"Lumen 27\\\" 4K Monitor\", value: 24860, share: 100 },\n { key: \"2\", label: \"Aero Wireless Keyboard\", value: 18240, share: 73 },\n { key: \"3\", label: \"Echo Conference Speaker\", value: 12980, share: 52 },\n { key: \"4\", label: \"Orbit Webcam 4K\", value: 9640, share: 39 },\n { key: \"5\", label: \"Pulse USB-C Dock\", value: 6210, share: 25 },\n];\n\nconst TRAFFIC_TOP: Row[] = [\n { key: \"1\", label: \"/pricing\", value: 12480, share: 100 },\n { key: \"2\", label: \"/docs/getting-started\", value: 9860, share: 79 },\n { key: \"3\", label: \"/blog/design-tokens\", value: 7420, share: 59 },\n { key: \"4\", label: \"/changelog\", value: 5140, share: 41 },\n { key: \"5\", label: \"/contact\", value: 2380, share: 19 },\n];\n\nexport function ReportsScreen({ view = \"sales\" }: { view?: ReportsView }) {\n const [range, setRange] = useState<Range>(\"7d\");\n const sales = view === \"sales\";\n const series = (sales ? SALES_SERIES : TRAFFIC_SERIES)[range];\n\n const regionColumns: TableColumn<(typeof SALES_REGIONS)[number]>[] = [\n { key: \"region\", header: \"Region\" },\n { key: \"orders\", header: \"Orders\", align: \"center\" },\n {\n key: \"revenue\",\n header: \"Revenue\",\n align: \"right\",\n render: (r) => <Money value={r.revenue} currency=\"USD\" locale=\"en-US\" style={{ font: \"var(--klun-text-label-sm)\" }} />,\n },\n {\n key: \"share\",\n header: \"Share\",\n width: 170,\n render: (r) => (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 140 }}>\n <span style={{ flex: 1 }}>\n <ProgressBar value={r.share} />\n </span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\", width: 34, textAlign: \"right\" }}>\n {r.share}%\n </span>\n </span>\n ),\n },\n ];\n\n const deviceColumns: TableColumn<(typeof TRAFFIC_DEVICES)[number]>[] = [\n { key: \"device\", header: \"Device\" },\n {\n key: \"sessions\",\n header: \"Sessions\",\n align: \"center\",\n render: (r) => r.sessions.toLocaleString(\"en-US\"),\n },\n {\n key: \"share\",\n header: \"Share\",\n width: 170,\n render: (r) => (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 140 }}>\n <span style={{ flex: 1 }}>\n <ProgressBar value={r.share} color=\"primary\" />\n </span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\", width: 34, textAlign: \"right\" }}>\n {r.share}%\n </span>\n </span>\n ),\n },\n ];\n\n const top = sales ? SALES_TOP : TRAFFIC_TOP;\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16, flexWrap: \"wrap\" }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n {sales ? \"Sales report\" : \"Traffic report\"}\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {sales\n ? \"Revenue, channels and the products that drive them.\"\n : \"Sessions, sources and where visitors spend their time.\"}\n </p>\n </div>\n <SegmentedControl items={RANGES} value={range} onChange={(v) => setRange(v as Range)} />\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(240px, 1fr))\", gap: 16 }}>\n {sales ? (\n <>\n <Kpi label=\"Revenue\" value=\"$84,920\" delta=\"12.4%\" tone=\"primary\" icon={<i className=\"ri-money-dollar-circle-line\" />} spark={[10, 14, 12, 18, 16, 24, 22, 30]} />\n <Kpi label=\"Orders\" value=\"1,284\" delta=\"6.1%\" tone=\"success\" icon={<i className=\"ri-shopping-bag-line\" />} spark={[8, 10, 9, 14, 13, 16, 18, 22]} />\n <Kpi label=\"Avg. order value\" value=\"$66.10\" delta=\"1.2%\" tone=\"warning\" icon={<i className=\"ri-shopping-cart-2-line\" />} spark={[60, 62, 61, 64, 63, 65, 66, 66]} />\n <Kpi label=\"Conversion\" value=\"3.6%\" delta=\"0.8%\" tone=\"info\" icon={<i className=\"ri-percent-line\" />} spark={[2, 3, 2.5, 3.2, 3, 3.4, 3.5, 3.6]} />\n </>\n ) : (\n <>\n <Kpi label=\"Sessions\" value=\"128,540\" delta=\"8.2%\" tone=\"primary\" icon={<i className=\"ri-line-chart-line\" />} spark={[12, 14, 13, 16, 15, 18, 17, 20]} />\n <Kpi label=\"Users\" value=\"84,210\" delta=\"5.4%\" tone=\"success\" icon={<i className=\"ri-group-line\" />} spark={[8, 9, 8, 10, 9, 11, 10, 12]} />\n <Kpi label=\"Bounce rate\" value=\"32.4%\" delta=\"1.1%\" trend=\"down\" tone=\"danger\" icon={<i className=\"ri-logout-box-r-line\" />} spark={[40, 38, 39, 36, 35, 34, 33, 32]} />\n <Kpi label=\"Avg. session\" value=\"4m 12s\" delta=\"2.0%\" tone=\"info\" icon={<i className=\"ri-timer-line\" />} spark={[3.4, 3.5, 3.7, 3.6, 3.9, 4.0, 4.1, 4.2]} />\n </>\n )}\n </div>\n\n <Card variant=\"stroke\" padding={20}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, marginBottom: 16 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>\n {sales ? \"Revenue over time\" : \"Sessions over time\"}\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Last {range}\n </span>\n </div>\n <AreaChart\n data={series.data}\n labels={series.labels}\n tone={sales ? \"primary\" : \"info\"}\n height={220}\n formatValue={sales ? (v) => `$${v >= 1000 ? `${Math.round(v / 100) / 10}k` : Math.round(v)}` : undefined}\n />\n </Card>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"minmax(0, 1fr) minmax(0, 1fr)\", gap: 16, alignItems: \"start\" }}>\n <Card variant=\"stroke\" padding={20}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 16 }}>\n {sales ? \"Sales by channel\" : \"Traffic sources\"}\n </div>\n <DonutChart\n centerValue={sales ? \"52%\" : \"48%\"}\n centerLabel={sales ? \"Online\" : \"Organic\"}\n data={\n sales\n ? [\n { label: \"Online\", value: 52 },\n { label: \"Retail\", value: 28 },\n { label: \"Partner\", value: 14 },\n { label: \"Other\", value: 6 },\n ]\n : [\n { label: \"Organic\", value: 48 },\n { label: \"Direct\", value: 22 },\n { label: \"Referral\", value: 18 },\n { label: \"Social\", value: 12 },\n ]\n }\n />\n </Card>\n\n <Card variant=\"stroke\" padding={20}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 16 }}>\n {sales ? \"Top products\" : \"Top pages\"}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n {top.map((row) => (\n <div key={row.key} style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", justifyContent: \"space-between\", gap: 12 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {row.label}\n </span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {sales ? `$${row.value.toLocaleString(\"en-US\")}` : `${row.value.toLocaleString(\"en-US\")} views`}\n </span>\n </div>\n <ProgressBar value={row.share} color={sales ? \"primary\" : \"success\"} />\n </div>\n ))}\n </div>\n </Card>\n </div>\n\n {sales ? (\n <Table columns={regionColumns} rows={SALES_REGIONS} getRowId={(r) => r.region} title=\"Regional breakdown\" />\n ) : (\n <Table columns={deviceColumns} rows={TRAFFIC_DEVICES} getRowId={(r) => r.device} title=\"Devices\" />\n )}\n </div>\n );\n}\n","// Klun UI · Metronic example — settings.\n// Port of the design-system `design-system/metronic/examples/` settings card:\n// breadcrumb + left nav column, with profile-photo, personal-information and\n// notification sections. Root carries `data-mode=\"metronic\"` (the Metronic 9.0\n// skin); remove it to fall back to the default theme.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n Avatar,\n Badge,\n Breadcrumb,\n Button,\n Card,\n Input,\n Label,\n Select,\n Switch,\n Textarea,\n} from \"../../index\";\n\n/* ---- small building blocks ---- */\n\nfunction Field({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>{label}</Label>\n {children}\n </div>\n );\n}\n\ninterface SectionProps {\n title: string;\n subtitle?: string;\n children: ReactNode;\n footer?: ReactNode;\n}\n\nfunction Section({ title, subtitle, children, footer }: SectionProps) {\n return (\n <Card variant=\"stroke\" padding={0}>\n <div style={{ padding: \"16px 20px\", boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <div style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>{title}</div>\n {subtitle ? (\n <div style={{ marginTop: 2, font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {subtitle}\n </div>\n ) : null}\n </div>\n <div style={{ padding: 20 }}>{children}</div>\n {footer ? (\n <div\n style={{\n padding: \"14px 20px\",\n boxShadow: \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: 8,\n }}\n >\n {footer}\n </div>\n ) : null}\n </Card>\n );\n}\n\ninterface NavItem {\n key: string;\n label: string;\n /** Remix Icon class. */\n icon: string;\n}\n\nconst NAV: NavItem[] = [\n { key: \"profile\", label: \"Profile\", icon: \"ri-user-line\" },\n { key: \"account\", label: \"Account\", icon: \"ri-shield-user-line\" },\n { key: \"notifications\", label: \"Notifications\", icon: \"ri-notification-3-line\" },\n { key: \"billing\", label: \"Billing\", icon: \"ri-bank-card-line\" },\n { key: \"api\", label: \"API keys\", icon: \"ri-key-2-line\" },\n];\n\nexport function MetronicSettingsTemplate() {\n const [tab, setTab] = useState(\"profile\");\n\n return (\n <div\n data-mode=\"metronic\"\n data-density=\"compact\"\n style={{\n minHeight: \"100%\",\n overflow: \"auto\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n <div\n style={{\n maxWidth: 1000,\n margin: \"0 auto\",\n padding: 28,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 20,\n }}\n >\n <div>\n <Breadcrumb items={[{ label: \"Home\" }, { label: \"Settings\" }]} />\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16, marginTop: 8 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Settings\n </h1>\n <Badge color=\"green\" variant=\"light\" dot>\n All changes saved\n </Badge>\n </div>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"220px minmax(0, 1fr)\", gap: 20, alignItems: \"start\" }}>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {NAV.map((item) => {\n const on = tab === item.key;\n return (\n <button\n key={item.key}\n onClick={() => setTab(item.key)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n height: 36,\n padding: \"0 12px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n <i\n className={item.icon}\n style={{ fontSize: 16, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }}\n />\n {item.label}\n </button>\n );\n })}\n </nav>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <Section title=\"Profile photo\" subtitle=\"PNG or JPG, at least 200×200px.\">\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 20, flexWrap: \"wrap\" }}>\n <div style={{ position: \"relative\", width: 76, height: 76, flexShrink: 0 }}>\n <Avatar size=\"72\" initials=\"AK\" color=\"blue\" />\n <button\n aria-label=\"Change photo\"\n style={{\n position: \"absolute\",\n right: 0,\n bottom: 0,\n width: 26,\n height: 26,\n borderRadius: \"var(--klun-radius-pill)\",\n border: \"2px solid var(--klun-bg-white-0)\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-text-white-0)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n fontSize: 13,\n }}\n >\n <i className=\"ri-camera-line\" />\n </button>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button size=\"small\">Upload new</Button>\n <Button size=\"small\" variant=\"neutral\" appearance=\"ghost\">\n Remove\n </Button>\n </div>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Recommended 400×400px, max 2MB.\n </span>\n </div>\n </div>\n </Section>\n\n <Section\n title=\"Personal information\"\n footer={\n <>\n <Button variant=\"neutral\" appearance=\"ghost\">\n Cancel\n </Button>\n <Button>Save changes</Button>\n </>\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 16 }}>\n <Field label=\"First name\">\n <Input defaultValue=\"Anna\" />\n </Field>\n <Field label=\"Last name\">\n <Input defaultValue=\"Krause\" />\n </Field>\n </div>\n <Field label=\"Email\">\n <Input defaultValue=\"anna@acme.io\" leadingIcon={<i className=\"ri-mail-line\" />} />\n </Field>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 16 }}>\n <Field label=\"Role\">\n <Select defaultValue=\"designer\">\n <option value=\"designer\">Product designer</option>\n <option value=\"eng\">Engineer</option>\n <option value=\"pm\">Product manager</option>\n </Select>\n </Field>\n <Field label=\"Timezone\">\n <Select defaultValue=\"cet\">\n <option value=\"cet\">CET — Berlin</option>\n <option value=\"pst\">PST — San Francisco</option>\n <option value=\"jst\">JST — Tokyo</option>\n </Select>\n </Field>\n </div>\n <Field label=\"Bio\">\n <Textarea rows={3} defaultValue=\"Product designer focused on design systems and tooling.\" />\n </Field>\n </div>\n </Section>\n\n <Section title=\"Notifications\">\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n <ToggleRow\n first\n title=\"Email notifications\"\n desc=\"Order updates, mentions and weekly summaries.\"\n defaultChecked\n />\n <ToggleRow\n title=\"Push notifications\"\n desc=\"Real-time alerts on your devices.\"\n defaultChecked\n />\n <ToggleRow title=\"Product newsletter\" desc=\"Occasional news about new features.\" />\n </div>\n </Section>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\ninterface ToggleRowProps {\n title: string;\n desc: string;\n defaultChecked?: boolean;\n first?: boolean;\n}\n\nfunction ToggleRow({ title, desc, defaultChecked, first }: ToggleRowProps) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 16,\n padding: \"14px 0\",\n boxShadow: first ? \"none\" : \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{title}</b>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{desc}</span>\n </div>\n <Switch defaultChecked={defaultChecked} onChange={() => {}} />\n </div>\n );\n}\n","// Klun UI · Metronic example — admin app shell.\n// Port of the design-system Metronic examples onto klun-ui components, inside\n// the Metronic 9.0 skin (`data-mode=\"metronic\"`). The sidebar drives a set of\n// business screens: dashboard, orders, products, customers, reports\n// (sales / traffic) and settings. Copy this folder as a starting point and\n// drop the attribute to fall back to the default theme.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { MetronicSidebar } from \"./Sidebar\";\nimport { MetronicTopBar } from \"./TopBar\";\nimport { DashboardScreen } from \"./DashboardScreen\";\nimport { OrdersScreen } from \"./OrdersScreen\";\nimport { ProductsScreen } from \"./ProductsScreen\";\nimport { CustomersScreen } from \"./CustomersScreen\";\nimport { UsersScreen } from \"./UsersScreen\";\nimport { RolesScreen } from \"./RolesScreen\";\nimport { ReportsScreen } from \"./ReportsScreen\";\nimport { MetronicSettingsTemplate } from \"../metronic-settings\";\n\nexport { MetronicSidebar } from \"./Sidebar\";\nexport type { MetronicSidebarProps, MetronicNavItem, MetronicNavChild } from \"./Sidebar\";\nexport { MetronicTopBar } from \"./TopBar\";\nexport { DashboardScreen } from \"./DashboardScreen\";\nexport { OrdersScreen } from \"./OrdersScreen\";\nexport { ProductsScreen } from \"./ProductsScreen\";\nexport { ProductWizardPage } from \"./ProductWizardPage\";\nexport type { ProductWizardPageProps } from \"./ProductWizardPage\";\nexport { CATEGORIES, STATUS_COLOR, deriveStatus, emptyDraft } from \"./productModel\";\nexport type { Product, ProductDraft, ProductStatus } from \"./productModel\";\nexport { CustomersScreen } from \"./CustomersScreen\";\nexport { UsersScreen } from \"./UsersScreen\";\nexport { RolesScreen } from \"./RolesScreen\";\nexport { ReportsScreen } from \"./ReportsScreen\";\nexport type { ReportsView } from \"./ReportsScreen\";\nexport { Kpi, MiniStat } from \"./widgets\";\nexport type { KpiProps, MiniStatProps } from \"./widgets\";\nexport { Sparkline, BarChart, DonutChart, AreaChart } from \"./charts\";\nexport type { SparklineProps, BarChartProps, DonutChartProps, AreaChartProps, ChartTone } from \"./charts\";\n\nconst SCREENS: Record<string, ReactNode> = {\n dashboard: <DashboardScreen />,\n orders: <OrdersScreen />,\n products: <ProductsScreen />,\n customers: <CustomersScreen />,\n users: <UsersScreen />,\n roles: <RolesScreen />,\n reports: <ReportsScreen view=\"sales\" />,\n sales: <ReportsScreen view=\"sales\" />,\n traffic: <ReportsScreen view=\"traffic\" />,\n settings: <MetronicSettingsTemplate />,\n};\n\nfunction Placeholder({ name }: { name: string }) {\n return (\n <div\n style={{\n padding: 64,\n textAlign: \"center\",\n color: \"var(--klun-text-soft-400)\",\n font: \"var(--klun-text-paragraph-lg)\",\n }}\n >\n <i className=\"ri-inbox-line\" style={{ fontSize: 40, display: \"block\", marginBottom: 12 }} />\n “{name}” isn't part of this demo.\n </div>\n );\n}\n\nexport function MetronicDashboardTemplate() {\n const [active, setActive] = useState(\"dashboard\");\n return (\n <div\n data-mode=\"metronic\"\n data-density=\"compact\"\n style={{\n display: \"flex\",\n height: \"100%\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n <MetronicSidebar active={active} onNavigate={setActive} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\" }}>\n <MetronicTopBar />\n <main style={{ flex: 1, overflow: \"auto\" }}>{SCREENS[active] ?? <Placeholder name={active} />}</main>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/templates/dashboard/Sidebar.tsx","../../src/templates/dashboard/TopBar.tsx","../../src/templates/dashboard/OverviewScreen.tsx","../../src/templates/dashboard/SettingsScreen.tsx","../../src/templates/dashboard/index.tsx","../../src/templates/ai-assistant/AISidebar.tsx","../../src/templates/ai-assistant/ChatView.tsx","../../src/templates/ai-assistant/Composer.tsx","../../src/templates/ai-assistant/index.tsx","../../src/templates/agent-chat/AgentSidebar.tsx","../../src/templates/agent-chat/AgentThread.tsx","../../src/templates/agent-chat/AgentComposer.tsx","../../src/templates/agent-chat/index.tsx","../../src/templates/crypto/CryptoSidebar.tsx","../../src/templates/crypto/MarketsScreen.tsx","../../src/templates/crypto/index.tsx","../../src/templates/marketing/MarketingNav.tsx","../../src/templates/marketing/MarketingSections.tsx","../../src/templates/marketing/index.tsx","../../src/templates/calendar/index.tsx","../../src/templates/pricing/index.tsx","../../src/templates/settings/index.tsx","../../src/templates/metronic-dashboard/i18n.tsx","../../src/templates/metronic-dashboard/Sidebar.tsx","../../src/templates/metronic-dashboard/TopBar.tsx","../../src/templates/metronic-dashboard/DepartmentsScreen.tsx","../../src/templates/metronic-dashboard/RoleTreeScreen.tsx","../../src/templates/metronic-dashboard/TasksScreen.tsx","../../src/templates/metronic-dashboard/AuditScreen.tsx","../../src/templates/metronic-dashboard/usersModel.ts","../../src/templates/metronic-dashboard/charts.tsx","../../src/templates/metronic-dashboard/widgets.tsx","../../src/templates/metronic-dashboard/DashboardScreen.tsx","../../src/templates/metronic-dashboard/OrdersScreen.tsx","../../src/templates/metronic-dashboard/productModel.ts","../../src/templates/metronic-dashboard/ProductWizardPage.tsx","../../src/templates/metronic-dashboard/ProductsScreen.tsx","../../src/templates/metronic-dashboard/CustomersScreen.tsx","../../src/templates/metronic-dashboard/DepartmentFilter.tsx","../../src/templates/metronic-dashboard/UserDetailDrawer.tsx","../../src/templates/metronic-dashboard/UsersScreen.tsx","../../src/templates/metronic-dashboard/RolesScreen.tsx","../../src/templates/metronic-dashboard/ReportsScreen.tsx","../../src/templates/metronic-settings/shared.tsx","../../src/templates/metronic-settings/ProfileSection.tsx","../../src/templates/metronic-settings/AccountSection.tsx","../../src/templates/metronic-settings/NotificationsSection.tsx","../../src/templates/metronic-settings/BillingSection.tsx","../../src/templates/metronic-settings/ApiKeysSection.tsx","../../src/templates/metronic-settings/index.tsx","../../src/templates/metronic-dashboard/index.tsx"],"names":["user","jsxs","jsx","Badge","Button","useState","SegmentedControl","Card","Tabs","ProgressBar","Field","Label","Input","Select","Switch","Divider","useRef","useEffect","Avatar","seed","StatusDot","Spinner","initials","iconBtn","Table","Stat","Accordion","AvatarGroup","HorizontalFilter","ContentLabel","Chip","Alert","ImageUpload","SelectMenu","Textarea","CharacterCounter","locales","useLocale","Dropdown","RelativeTime","useMessage","useMemo","Confirm","Fragment","Modal","Drawer","Tree","key","EVENTS","CopyButton","hoursAgo","useId","AreaChart","STATUS_COLOR","emptyForm","Money","CounterInput","Breadcrumb","Wizard","Cascader","ACTION_COLOR","RESULT_COLOR","Panel","Checkbox","ROLES","ACTIONS","INITIAL","RANGES","EMAIL_RE","DigitInput","PLANS","t","ConfigProvider","CommandMenu"],"mappings":"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","file":"index.cjs","sourcesContent":["// Klun UI dashboard sidebar — brand, nav sections, footer profile.\n\nexport interface SidebarUser {\n name: string;\n email: string;\n initials: string;\n}\n\nexport interface SidebarProps {\n active: string;\n onNavigate: (id: string) => void;\n user: SidebarUser;\n}\n\ninterface NavItem {\n id: string;\n label: string;\n icon: string;\n badge?: string;\n}\n\nexport function Sidebar({ active, onNavigate, user }: SidebarProps) {\n const main: NavItem[] = [\n { id: \"overview\", label: \"Overview\", icon: \"ri-dashboard-line\" },\n { id: \"transactions\", label: \"Transactions\", icon: \"ri-arrow-left-right-line\", badge: \"24\" },\n { id: \"cards\", label: \"Cards\", icon: \"ri-bank-card-line\" },\n { id: \"analytics\", label: \"Analytics\", icon: \"ri-bar-chart-2-line\" },\n { id: \"invoices\", label: \"Invoices\", icon: \"ri-bill-line\" },\n ];\n const other: NavItem[] = [\n { id: \"settings\", label: \"Settings\", icon: \"ri-settings-2-line\" },\n { id: \"support\", label: \"Support\", icon: \"ri-headphone-line\" },\n ];\n const Item = ({ it }: { it: NavItem }) => {\n const on = active === it.id;\n return (\n <button onClick={() => onNavigate(it.id)} style={{\n display: \"flex\", alignItems: \"center\", gap: 10, width: \"100%\", height: 38, padding: \"0 12px\",\n border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: \"pointer\", textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}>\n <i className={it.icon} style={{ fontSize: 20, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }} />\n <span style={{ flex: 1 }}>{it.label}</span>\n {it.badge ? <span style={{ font: \"var(--klun-text-label-xs)\", padding: \"1px 6px\", borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-bg-weak-50)\", color: \"var(--klun-text-sub-600)\" }}>{it.badge}</span> : null}\n </button>\n );\n };\n return (\n <aside style={{ width: 272, flexShrink: 0, height: \"100%\", boxSizing: \"border-box\", display: \"flex\", flexDirection: \"column\", padding: 20, background: \"var(--klun-bg-weak-50)\", borderRight: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 8px 18px\" }}>\n <div style={{ width: 36, height: 36, borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-shapes-line\" style={{ fontSize: 20 }} />\n </div>\n <div style={{ lineHeight: 1.1 }}>\n <div style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Apex Finance</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>Workspace</div>\n </div>\n </div>\n <div style={{ position: \"relative\", marginBottom: 16 }}>\n <i className=\"ri-search-line\" style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n <input placeholder=\"Search\" style={{ width: \"100%\", boxSizing: \"border-box\", height: 36, padding: \"0 12px 0 36px\", borderRadius: \"var(--klun-radius-lg)\", border: \"none\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-strong-950)\", outline: \"none\" }} />\n </div>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"0 12px 8px\" }}>Main</div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{main.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"20px 12px 8px\" }}>Other</div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{other.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ flex: 1 }} />\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: 8, borderRadius: \"var(--klun-radius-xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <span style={{ width: 36, height: 36, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-feature-lighter)\", color: \"var(--klun-state-feature-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-label-sm)\", flexShrink: 0 }}>{user.initials}</span>\n <div style={{ flex: 1, minWidth: 0, lineHeight: 1.2 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{user.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{user.email}</div>\n </div>\n <i className=\"ri-expand-up-down-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n </aside>\n );\n}\n","// Klun UI dashboard top bar — page title, search, actions.\nimport { Button, Badge } from \"../../index\";\n\nexport interface TopBarProps {\n title: string;\n subtitle: string;\n}\n\nexport function TopBar({ title, subtitle }: TopBarProps) {\n return (\n <header style={{ display: \"flex\", alignItems: \"center\", gap: 16, padding: \"20px 32px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <div style={{ flex: 1 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{title}</h1>\n <Badge color=\"gray\" size=\"small\">Live</Badge>\n </div>\n <p style={{ margin: \"2px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{subtitle}</p>\n </div>\n <Button iconOnly variant=\"neutral\" appearance=\"stroke\" icon={<i className=\"ri-notification-3-line\" />} />\n <Button iconOnly variant=\"neutral\" appearance=\"stroke\" icon={<i className=\"ri-calendar-line\" />} />\n <Button variant=\"primary\" leadingIcon={<i className=\"ri-add-line\" />}>New transfer</Button>\n </header>\n );\n}\n","// Klun UI dashboard — Overview screen. Stat cards, balance, recent transactions table.\nimport { useState } from \"react\";\nimport { Card, Badge, Button, ProgressBar, SegmentedControl, Tabs } from \"../../index\";\nimport type { BadgeColor } from \"../../index\";\n\ninterface Stat {\n label: string;\n value: string;\n delta: string;\n up: boolean;\n icon: string;\n tint: string;\n}\n\ninterface Transaction {\n name: string;\n sub: string;\n amt: string;\n date: string;\n status: string;\n color: BadgeColor;\n icon: string;\n bg: string;\n fg: string;\n}\n\nexport function OverviewScreen() {\n const [range, setRange] = useState(\"month\");\n const [tab, setTab] = useState(\"all\");\n\n const stats: Stat[] = [\n { label: \"Total balance\", value: \"$84,920.50\", delta: \"+12.4%\", up: true, icon: \"ri-wallet-3-line\", tint: \"feature\" },\n { label: \"Income\", value: \"$24,300.00\", delta: \"+8.1%\", up: true, icon: \"ri-arrow-down-line\", tint: \"success\" },\n { label: \"Expenses\", value: \"$11,240.80\", delta: \"-3.2%\", up: false, icon: \"ri-arrow-up-line\", tint: \"warning\" },\n { label: \"Savings\", value: \"$13,059.20\", delta: \"+5.7%\", up: true, icon: \"ri-safe-2-line\", tint: \"information\" },\n ];\n const tx: Transaction[] = [\n { name: \"Figma\", sub: \"Subscription\", amt: \"-$45.00\", date: \"Today, 10:24\", status: \"Completed\", color: \"green\", icon: \"ri-pencil-ruler-2-line\", bg: \"var(--klun-state-feature-lighter)\", fg: \"var(--klun-state-feature-base)\" },\n { name: \"Stripe payout\", sub: \"Income\", amt: \"+$2,400.00\", date: \"Today, 08:10\", status: \"Completed\", color: \"green\", icon: \"ri-bank-line\", bg: \"var(--klun-state-success-lighter)\", fg: \"var(--klun-state-success-base)\" },\n { name: \"AWS\", sub: \"Infrastructure\", amt: \"-$312.40\", date: \"Yesterday\", status: \"Pending\", color: \"orange\", icon: \"ri-cloud-line\", bg: \"var(--klun-state-warning-lighter)\", fg: \"var(--klun-state-warning-base)\" },\n { name: \"Linear\", sub: \"Subscription\", amt: \"-$96.00\", date: \"Mar 12\", status: \"Completed\", color: \"green\", icon: \"ri-flow-chart\", bg: \"var(--klun-state-information-lighter)\", fg: \"var(--klun-state-information-base)\" },\n { name: \"Refund · Notion\", sub: \"Income\", amt: \"+$120.00\", date: \"Mar 11\", status: \"Failed\", color: \"red\", icon: \"ri-file-text-line\", bg: \"var(--klun-bg-weak-50)\", fg: \"var(--klun-text-sub-600)\" },\n ];\n const budget: ReadonlyArray<readonly [string, number, string]> = [\n [\"Housing\", 38, \"feature\"],\n [\"Food\", 24, \"success\"],\n [\"Transport\", 18, \"warning\"],\n ];\n\n return (\n <div style={{ padding: 32, display: \"flex\", flexDirection: \"column\", gap: 24 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <SegmentedControl value={range} onChange={setRange} items={[{ value: \"week\", label: \"Week\" }, { value: \"month\", label: \"Month\" }, { value: \"year\", label: \"Year\" }]} />\n <Button variant=\"neutral\" appearance=\"stroke\" size=\"small\" leadingIcon={<i className=\"ri-download-2-line\" />}>Export</Button>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\", gap: 16 }}>\n {stats.map((s) => (\n <Card key={s.label} variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"flex-start\" }}>\n <div style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", background: `var(--klun-state-${s.tint}-lighter)`, color: `var(--klun-state-${s.tint}-base)`, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22 }}><i className={s.icon} /></div>\n <Badge color={s.up ? \"green\" : \"red\"} variant=\"light\" size=\"small\" leadingIcon={<i className={s.up ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} />}>{s.delta}</Badge>\n </div>\n <div style={{ marginTop: 16, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{s.label}</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{s.value}</div>\n </Card>\n ))}\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"1.7fr 1fr\", gap: 16, alignItems: \"start\" }}>\n <Card variant=\"stroke\" padding={0}>\n <div style={{ padding: \"16px 20px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Recent transactions</div>\n <Button variant=\"neutral\" appearance=\"ghost\" size=\"xsmall\" trailingIcon={<i className=\"ri-arrow-right-s-line\" />}>View all</Button>\n </div>\n <div style={{ padding: \"8px 12px\" }}>\n <Tabs value={tab} onChange={setTab} items={[{ value: \"all\", label: \"All\" }, { value: \"income\", label: \"Income\" }, { value: \"expense\", label: \"Expenses\" }]} />\n </div>\n <div>\n {tx.map((t, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"12px 20px\", borderTop: i ? \"1px solid var(--klun-stroke-soft-200)\" : \"none\" }}>\n <div style={{ width: 38, height: 38, borderRadius: \"var(--klun-radius-lg)\", background: t.bg, color: t.fg, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 20, flexShrink: 0 }}><i className={t.icon} /></div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{t.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{t.sub} · {t.date}</div>\n </div>\n <Badge color={t.color} variant=\"light\" size=\"small\">{t.status}</Badge>\n <div style={{ width: 92, textAlign: \"right\", font: \"var(--klun-text-label-sm)\", color: t.amt[0] === \"+\" ? \"var(--klun-state-success-base)\" : \"var(--klun-text-strong-950)\" }}>{t.amt}</div>\n </div>\n ))}\n </div>\n </Card>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Card variant=\"shadow\" padding={20} style={{ background: \"var(--klun-bg-strong-950)\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", color: \"var(--klun-static-static-white)\" }}>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", opacity: .7 }}>Virtual card</span>\n <i className=\"ri-visa-line\" style={{ fontSize: 24 }} />\n </div>\n <div style={{ marginTop: 28, font: \"var(--klun-text-label-lg)\", letterSpacing: \"0.12em\", color: \"var(--klun-static-static-white)\" }}>4218&nbsp;&nbsp;••••&nbsp;&nbsp;••••&nbsp;&nbsp;9042</div>\n <div style={{ marginTop: 16, display: \"flex\", justifyContent: \"space-between\", color: \"var(--klun-static-static-white)\", opacity: .8, font: \"var(--klun-text-paragraph-xs)\" }}>\n <span>Arthur Taylor</span><span>09 / 28</span>\n </div>\n </Card>\n <Card variant=\"stroke\" padding={20}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Monthly budget</span>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>$11,240 / $16,000</span>\n </div>\n <div style={{ marginTop: 14 }}><ProgressBar value={70} /></div>\n <div style={{ marginTop: 16, display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {budget.map(([l, p, c]) => (\n <div key={l} style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ width: 8, height: 8, borderRadius: \"var(--klun-radius-pill)\", background: `var(--klun-state-${c}-base)` }} />\n <span style={{ flex: 1, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{l}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{p}%</span>\n </div>\n ))}\n </div>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n","// Klun UI dashboard — Settings screen (profile form).\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Card, Input, Select, Switch, Label, Button, Badge, Divider } from \"../../index\";\n\ninterface FieldProps {\n label: ReactNode;\n children: ReactNode;\n hint?: ReactNode;\n required?: boolean;\n}\n\nexport function SettingsScreen() {\n const [n, setN] = useState(true);\n const [m, setM] = useState(false);\n const Field = ({ label, children, hint, required }: FieldProps) => (\n <div style={{ display: \"grid\", gridTemplateColumns: \"220px 1fr\", gap: 24, padding: \"20px 0\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div>\n <Label required={required}>{label}</Label>\n {hint ? <div style={{ marginTop: 2, font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{hint}</div> : null}\n </div>\n <div style={{ maxWidth: 420 }}>{children}</div>\n </div>\n );\n return (\n <div style={{ padding: 32, maxWidth: 920 }}>\n <Card variant=\"stroke\" padding={24}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 16 }}>\n <span style={{ width: 64, height: 64, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-feature-lighter)\", color: \"var(--klun-state-feature-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-title-h5)\" }}>AT</span>\n <div style={{ flex: 1 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Arthur Taylor</span>\n <Badge color=\"green\" variant=\"light\" size=\"small\" dot>Verified</Badge>\n </div>\n <div style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>arthur@alignui.com</div>\n </div>\n <Button variant=\"neutral\" appearance=\"stroke\" size=\"small\" leadingIcon={<i className=\"ri-upload-2-line\" />}>Change photo</Button>\n </div>\n\n <div style={{ marginTop: 8 }}>\n <Field label=\"Full name\" required>\n <Input defaultValue=\"Arthur Taylor\" />\n </Field>\n <Field label=\"Email address\" required hint=\"Used for sign-in and receipts.\">\n <Input type=\"email\" defaultValue=\"arthur@alignui.com\" leadingIcon={<i className=\"ri-mail-line\" />} />\n </Field>\n <Field label=\"Role\">\n <Select defaultValue=\"finance\"><option value=\"finance\">Finance lead</option><option value=\"admin\">Administrator</option><option value=\"member\">Member</option></Select>\n </Field>\n <Field label=\"Notifications\" hint=\"How we reach you.\">\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 10, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n <Switch checked={n} onChange={setN} /> Email notifications\n </label>\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 10, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n <Switch checked={m} onChange={setM} /> Marketing updates\n </label>\n </div>\n </Field>\n </div>\n\n <Divider style={{ margin: \"8px 0 20px\" }} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 10 }}>\n <Button variant=\"neutral\" appearance=\"stroke\">Cancel</Button>\n <Button variant=\"primary\">Save changes</Button>\n </div>\n </Card>\n </div>\n );\n}\n","// Klun UI dashboard template — app shell composing sidebar, top bar, and screens.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { SidebarUser } from \"./Sidebar\";\nimport { TopBar } from \"./TopBar\";\nimport { OverviewScreen } from \"./OverviewScreen\";\nimport { SettingsScreen } from \"./SettingsScreen\";\n\nexport { Sidebar } from \"./Sidebar\";\nexport type { SidebarProps, SidebarUser } from \"./Sidebar\";\nexport { TopBar } from \"./TopBar\";\nexport type { TopBarProps } from \"./TopBar\";\nexport { OverviewScreen } from \"./OverviewScreen\";\nexport { SettingsScreen } from \"./SettingsScreen\";\n\ninterface Page {\n title: string;\n subtitle: string;\n render: () => ReactNode;\n}\n\nconst PAGES: Record<string, Page> = {\n overview: { title: \"Overview\", subtitle: \"Your money at a glance, March 2026.\", render: () => <OverviewScreen /> },\n settings: { title: \"Settings\", subtitle: \"Manage your profile and preferences.\", render: () => <SettingsScreen /> },\n};\n\nexport function DashboardTemplate() {\n const [active, setActive] = useState(\"overview\");\n const page: Page = PAGES[active] ?? {\n title: active[0].toUpperCase() + active.slice(1),\n subtitle: \"Coming soon in this demo.\",\n render: () => (\n <div style={{ padding: 64, textAlign: \"center\", color: \"var(--klun-text-soft-400)\", font: \"var(--klun-text-paragraph-lg)\" }}>\n <i className=\"ri-inbox-line\" style={{ fontSize: 40, display: \"block\", marginBottom: 12 }} />\n This screen isn't part of the demo — try Overview or Settings.\n </div>\n ),\n };\n const user: SidebarUser = { name: \"Arthur Taylor\", email: \"arthur@alignui.com\", initials: \"AT\" };\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <Sidebar active={active} onNavigate={setActive} user={user} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", overflow: \"hidden\" }}>\n <TopBar title={page.title} subtitle={page.subtitle} />\n <main style={{ flex: 1, overflow: \"auto\", background: \"var(--klun-bg-weak-50)\" }}>{page.render()}</main>\n </div>\n </div>\n );\n}\n","// Klun UI AI assistant — conversations sidebar.\n\nexport interface AIConversation {\n id: string;\n group: \"today\" | \"week\";\n title: string;\n}\n\nexport interface AIUser {\n name: string;\n initials: string;\n}\n\nexport interface AISidebarProps {\n conversations: AIConversation[];\n activeId: string;\n onSelect: (id: string) => void;\n onNew: () => void;\n user: AIUser;\n}\n\nexport function AISidebar({ conversations, activeId, onSelect, onNew, user }: AISidebarProps) {\n const groups = [\n { label: \"Today\", items: conversations.filter((c) => c.group === \"today\") },\n { label: \"Previous 7 days\", items: conversations.filter((c) => c.group === \"week\") },\n ];\n return (\n <aside style={{ width: 280, flexShrink: 0, height: \"100%\", boxSizing: \"border-box\", display: \"flex\", flexDirection: \"column\", padding: 16, background: \"var(--klun-bg-weak-50)\", borderRight: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 6px 16px\" }}>\n <div style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-sparkling-2-fill\" style={{ fontSize: 18 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Klun AI</span>\n </div>\n\n <button onClick={onNew} style={{ display: \"flex\", alignItems: \"center\", gap: 8, width: \"100%\", height: 40, padding: \"0 12px\", marginBottom: 16, border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: \"pointer\", background: \"var(--klun-primary-base)\", color: \"var(--klun-static-static-white)\", font: \"var(--klun-text-label-sm)\" }}>\n <i className=\"ri-add-line\" style={{ fontSize: 20 }} /> New chat\n </button>\n\n <div style={{ position: \"relative\", marginBottom: 16 }}>\n <i className=\"ri-search-line\" style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n <input placeholder=\"Search chats\" style={{ width: \"100%\", boxSizing: \"border-box\", height: 36, padding: \"0 12px 0 36px\", borderRadius: \"var(--klun-radius-lg)\", border: \"none\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-strong-950)\", outline: \"none\" }} />\n </div>\n\n <div style={{ flex: 1, overflow: \"auto\", display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n {groups.map((g) => g.items.length ? (\n <div key={g.label}>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"0 8px 6px\" }}>{g.label}</div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {g.items.map((c) => {\n const on = c.id === activeId;\n return (\n <button key={c.id} onClick={() => onSelect(c.id)} style={{\n display: \"flex\", alignItems: \"center\", gap: 8, width: \"100%\", height: 36, padding: \"0 10px\",\n border: \"none\", borderRadius: \"var(--klun-radius-md)\", cursor: \"pointer\", textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\", font: \"var(--klun-text-label-sm)\",\n }}>\n <i className=\"ri-chat-1-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\", flexShrink: 0 }} />\n <span style={{ flex: 1, whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{c.title}</span>\n </button>\n );\n })}\n </div>\n </div>\n ) : null)}\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: 8, marginTop: 8, borderRadius: \"var(--klun-radius-xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <span style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-feature-lighter)\", color: \"var(--klun-state-feature-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-label-xs)\", flexShrink: 0 }}>{user.initials}</span>\n <div style={{ flex: 1, minWidth: 0, lineHeight: 1.2 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{user.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>Free plan</div>\n </div>\n <i className=\"ri-settings-3-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n </aside>\n );\n}\n","// Klun UI AI assistant — chat thread + welcome state.\nimport { useEffect, useRef } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Avatar } from \"../../index\";\n\nfunction Bubble({ from = \"them\", avatar, children }: { from?: \"me\" | \"them\"; avatar?: ReactNode; children?: ReactNode }) {\n const me = from === \"me\";\n return (\n <div style={{ display: \"flex\", flexDirection: me ? \"row-reverse\" : \"row\", gap: 10, alignItems: \"flex-end\" }}>\n {avatar ? <span style={{ flexShrink: 0 }}>{avatar}</span> : null}\n <div style={{ maxWidth: \"76%\", display: \"flex\", flexDirection: \"column\", gap: 4, alignItems: me ? \"flex-end\" : \"flex-start\" }}>\n <div style={{ padding: \"10px 14px\", font: \"var(--klun-text-paragraph-sm)\", borderRadius: me ? \"var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-sm) var(--klun-radius-2xl)\" : \"var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-sm)\", background: me ? \"var(--klun-primary-base)\" : \"var(--klun-bg-weak-50)\", color: me ? \"var(--klun-static-static-white)\" : \"var(--klun-text-strong-950)\" }}>{children}</div>\n </div>\n </div>\n );\n}\n\nexport interface AIMessage {\n from: \"me\" | \"them\";\n text: string;\n}\n\nexport interface AIChatViewProps {\n messages: AIMessage[];\n busy: boolean;\n userInitials: string;\n onSuggest: (text: string) => void;\n}\n\nexport function AIChatView({ messages, busy, userInitials, onSuggest }: AIChatViewProps) {\n const endRef = useRef<HTMLDivElement>(null);\n useEffect(() => { endRef.current?.scrollTo?.(0, endRef.current.scrollHeight); }, [messages, busy]);\n\n const suggestions = [\n { icon: \"ri-file-list-3-line\", text: \"Summarize my unread invoices\" },\n { icon: \"ri-line-chart-line\", text: \"Compare Q1 and Q2 revenue\" },\n { icon: \"ri-mail-send-line\", text: \"Draft a follow-up email to a client\" },\n { icon: \"ri-calendar-todo-line\", text: \"Plan my week around 3 deadlines\" },\n ];\n\n if (messages.length === 0) {\n return (\n <div style={{ flex: 1, display: \"flex\", flexDirection: \"column\", alignItems: \"center\", justifyContent: \"center\", padding: 32, textAlign: \"center\" }}>\n <div style={{ width: 56, height: 56, borderRadius: \"var(--klun-radius-2xl)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 28, marginBottom: 20 }}>\n <i className=\"ri-sparkling-2-fill\" />\n </div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>How can I help, Arthur?</h1>\n <p style={{ margin: \"8px 0 28px\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\" }}>Ask anything, or start from a suggestion below.</p>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 12, maxWidth: 540, width: \"100%\" }}>\n {suggestions.map((s) => (\n <button key={s.text} onClick={() => onSuggest(s.text)} style={{\n display: \"flex\", alignItems: \"center\", gap: 10, padding: \"14px 16px\", textAlign: \"left\",\n border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\",\n }}>\n <i className={s.icon} style={{ fontSize: 20, color: \"var(--klun-primary-base)\" }} />\n <span>{s.text}</span>\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={endRef} style={{ flex: 1, overflow: \"auto\" }}>\n <div style={{ maxWidth: 720, margin: \"0 auto\", padding: \"24px 24px 8px\", display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n {messages.map((m, i) => (\n <Bubble key={i} from={m.from}\n avatar={m.from === \"me\"\n ? <Avatar size=\"32\" initials={userInitials} color=\"purple\" />\n : <span style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16 }}><i className=\"ri-sparkling-2-fill\" /></span>}\n >{m.text}</Bubble>\n ))}\n {busy ? (\n <Bubble from=\"them\" avatar={<span style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16 }}><i className=\"ri-sparkling-2-fill\" /></span>}>\n <span className=\"ai-typing\"><span></span><span></span><span></span></span>\n </Bubble>\n ) : null}\n </div>\n </div>\n );\n}\n","// Klun UI AI assistant — prompt composer with model select, attachments, send.\nimport { useRef, useState, type ChangeEvent, type CSSProperties } from \"react\";\n\nexport interface AIComposerProps {\n onSend: (text: string) => void;\n busy: boolean;\n}\n\nexport function AIComposer({ onSend, busy }: AIComposerProps) {\n const [text, setText] = useState(\"\");\n const [model, setModel] = useState(\"Klun-4o\");\n const taRef = useRef<HTMLTextAreaElement>(null);\n const send = () => {\n const t = text.trim();\n if (!t || busy) return;\n onSend(t);\n setText(\"\");\n if (taRef.current) taRef.current.style.height = \"auto\";\n };\n const grow = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setText(e.target.value);\n e.target.style.height = \"auto\";\n e.target.style.height = Math.min(e.target.scrollHeight, 160) + \"px\";\n };\n return (\n <div style={{ padding: \"0 24px 20px\" }}>\n <div style={{ maxWidth: 720, margin: \"0 auto\", borderRadius: \"var(--klun-radius-3xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"var(--klun-shadow-md), inset 0 0 0 1px var(--klun-stroke-soft-200)\", padding: 12 }}>\n <textarea\n ref={taRef}\n value={text}\n onChange={grow}\n onKeyDown={(e) => { if (e.key === \"Enter\" && !e.shiftKey) { e.preventDefault(); send(); } }}\n placeholder=\"Ask Klun AI anything…\"\n rows={1}\n style={{ width: \"100%\", boxSizing: \"border-box\", border: \"none\", outline: \"none\", resize: \"none\", background: \"transparent\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-strong-950)\", padding: \"6px 6px 10px\", maxHeight: 160 }}\n />\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <button title=\"Attach file\" style={iconBtn}><i className=\"ri-attachment-2\" /></button>\n <button title=\"Add image\" style={iconBtn}><i className=\"ri-image-line\" /></button>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 4, height: 32, padding: \"0 8px 0 10px\", borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-weak-50)\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", cursor: \"pointer\" }}>\n <i className=\"ri-cpu-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n <select value={model} onChange={(e) => setModel(e.target.value)} style={{ appearance: \"none\", WebkitAppearance: \"none\", border: \"none\", outline: \"none\", background: \"transparent\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", cursor: \"pointer\" }}>\n <option>Klun-4o</option><option>Klun-4 Turbo</option><option>Klun-mini</option>\n </select>\n <i className=\"ri-arrow-down-s-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n <div style={{ flex: 1 }} />\n <button onClick={send} disabled={!text.trim() || busy} title=\"Send\" style={{\n display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 36, height: 36,\n border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: text.trim() && !busy ? \"pointer\" : \"not-allowed\",\n background: text.trim() && !busy ? \"var(--klun-primary-base)\" : \"var(--klun-bg-soft-200)\",\n color: text.trim() && !busy ? \"var(--klun-static-static-white)\" : \"var(--klun-text-soft-400)\", fontSize: 20,\n }}><i className=\"ri-arrow-up-line\" /></button>\n </div>\n </div>\n <div style={{ maxWidth: 720, margin: \"8px auto 0\", textAlign: \"center\", font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Klun AI can make mistakes. Check important info.\n </div>\n </div>\n );\n}\n\nconst iconBtn: CSSProperties = { display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 32, height: 32, border: \"none\", borderRadius: \"var(--klun-radius-md)\", background: \"transparent\", color: \"var(--klun-icon-sub-600)\", cursor: \"pointer\", fontSize: 18 };\n","// Klun UI AI assistant — full template composition.\nimport { useState } from \"react\";\nimport { Badge, Button } from \"../../index\";\nimport { AISidebar, type AIConversation, type AIUser } from \"./AISidebar\";\nimport { AIChatView, type AIMessage } from \"./ChatView\";\nimport { AIComposer } from \"./Composer\";\n\nconst REPLIES = [\n \"Here's a quick summary: you have 3 unread invoices totaling $4,512. Two are overdue — Apex Ltd ($2,400) and Northwind ($1,800).\",\n \"Happy to help with that. Based on your data, Q2 revenue is up 12.4% over Q1, driven mainly by recurring subscriptions.\",\n \"Done — I've drafted a friendly follow-up. Want me to adjust the tone or add a payment link?\",\n \"Got it. I've blocked focus time around your 3 deadlines and left buffers for review. Shall I add them to your calendar?\",\n];\n\nexport function AIAssistantTemplate() {\n const seed: AIConversation[] = [\n { id: \"c1\", group: \"today\", title: \"Q2 revenue breakdown\" },\n { id: \"c2\", group: \"today\", title: \"Follow-up email draft\" },\n { id: \"c3\", group: \"week\", title: \"Invoice reminders\" },\n { id: \"c4\", group: \"week\", title: \"Weekly planning\" },\n ];\n const [convs] = useState<AIConversation[]>(seed);\n const [activeId, setActiveId] = useState(\"new\");\n const [threads, setThreads] = useState<Record<string, AIMessage[]>>({ new: [] });\n const [busy, setBusy] = useState(false);\n const user: AIUser = { name: \"Arthur Taylor\", initials: \"AT\" };\n const messages = threads[activeId] || [];\n\n const ask = (text: string) => {\n setThreads((t) => ({ ...t, [activeId]: [...(t[activeId] || []), { from: \"me\", text }] }));\n setBusy(true);\n setTimeout(() => {\n const reply = REPLIES[Math.floor(Math.random() * REPLIES.length)];\n setThreads((t) => ({ ...t, [activeId]: [...(t[activeId] || []), { from: \"them\", text: reply }] }));\n setBusy(false);\n }, 1100);\n };\n\n const newChat = () => { setActiveId(\"new\"); setThreads((t) => ({ ...t, new: [] })); };\n\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <AISidebar conversations={convs} activeId={activeId} onSelect={(id) => { setActiveId(id); setThreads((t) => t[id] ? t : { ...t, [id]: [] }); }} onNew={newChat} user={user} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\" }}>\n <header style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"14px 24px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>New chat</span>\n <Badge color=\"purple\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-flashlight-fill\" />}>Klun-4o</Badge>\n <div style={{ flex: 1 }} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-share-line\" />} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-more-2-fill\" />} />\n </header>\n <AIChatView messages={messages} busy={busy} userInitials={user.initials} onSuggest={ask} />\n <AIComposer onSend={ask} busy={busy} />\n </div>\n </div>\n );\n}\n","// Klun UI agent chat — sessions sidebar.\nimport { StatusDot } from \"../../index\";\n\nexport interface AgentSession {\n id: string;\n group: \"today\" | \"week\";\n title: string;\n /** Live state shown as a leading dot. */\n state?: \"running\" | \"done\" | \"idle\";\n}\n\nexport interface AgentUser {\n name: string;\n initials: string;\n plan?: string;\n}\n\nexport interface AgentSidebarProps {\n sessions: AgentSession[];\n activeId: string;\n onSelect: (id: string) => void;\n onNew: () => void;\n user: AgentUser;\n}\n\nconst DOT_TONE = { running: \"warn\", done: \"ok\", idle: \"neutral\" } as const;\n\nexport function AgentSidebar({ sessions, activeId, onSelect, onNew, user }: AgentSidebarProps) {\n const groups = [\n { label: \"Today\", items: sessions.filter((c) => c.group === \"today\") },\n { label: \"Previous 7 days\", items: sessions.filter((c) => c.group === \"week\") },\n ];\n return (\n <aside\n style={{\n width: 280,\n flexShrink: 0,\n height: \"100%\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: 16,\n background: \"var(--klun-bg-weak-50)\",\n borderRight: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 6px 16px\" }}>\n <div\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--klun-radius-md)\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <i className=\"ri-sparkling-2-fill\" style={{ fontSize: 18 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Klun Agent</span>\n </div>\n\n <button\n onClick={onNew}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n height: 40,\n padding: \"0 12px\",\n marginBottom: 16,\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-static-static-white)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n <i className=\"ri-add-line\" style={{ fontSize: 20 }} /> New task\n </button>\n\n <div style={{ position: \"relative\", marginBottom: 16 }}>\n <i\n className=\"ri-search-line\"\n style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }}\n />\n <input\n placeholder=\"Search tasks\"\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n height: 36,\n padding: \"0 12px 0 36px\",\n borderRadius: \"var(--klun-radius-lg)\",\n border: \"none\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n font: \"var(--klun-text-paragraph-sm)\",\n color: \"var(--klun-text-strong-950)\",\n outline: \"none\",\n }}\n />\n </div>\n\n <div style={{ flex: 1, overflow: \"auto\", display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n {groups.map((g) =>\n g.items.length ? (\n <div key={g.label}>\n <div\n style={{\n font: \"var(--klun-text-subheading-2xs)\",\n letterSpacing: \"var(--klun-subheading-2xs-tracking)\",\n textTransform: \"uppercase\",\n color: \"var(--klun-text-soft-400)\",\n padding: \"0 8px 6px\",\n }}\n >\n {g.label}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {g.items.map((c) => {\n const on = c.id === activeId;\n return (\n <button\n key={c.id}\n onClick={() => onSelect(c.id)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n height: 36,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n {c.state ? (\n <StatusDot tone={DOT_TONE[c.state]} size=\"sm\" pulse={c.state === \"running\"} />\n ) : (\n <i className=\"ri-chat-1-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\", flexShrink: 0 }} />\n )}\n <span style={{ flex: 1, whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{c.title}</span>\n </button>\n );\n })}\n </div>\n </div>\n ) : null,\n )}\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: 8,\n marginTop: 8,\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n }}\n >\n <span\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-state-feature-lighter)\",\n color: \"var(--klun-state-feature-base)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n font: \"var(--klun-text-label-xs)\",\n flexShrink: 0,\n }}\n >\n {user.initials}\n </span>\n <div style={{ flex: 1, minWidth: 0, lineHeight: 1.2 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{user.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{user.plan || \"Free plan\"}</div>\n </div>\n <i className=\"ri-settings-3-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n </aside>\n );\n}\n","// Klun UI agent chat — message thread that renders an agent run: reasoning,\n// task plan, tool calls and the streamed final answer.\nimport { useEffect, useRef, useState } from \"react\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { Avatar, Badge, Spinner, StatusDot } from \"../../index\";\n\n/* ------------------------------------------------------------------ types -- */\n\nexport type AgentStepStatus = \"todo\" | \"active\" | \"done\";\nexport interface AgentStep {\n text: string;\n status: AgentStepStatus;\n}\n\nexport type AgentToolStatus = \"running\" | \"done\" | \"error\";\n\n/** A collapsible chain-of-thought block. While `seconds` is undefined the agent\n * is still thinking; once set, the block collapses to a one-line summary. */\nexport interface AgentThinkingBlock {\n kind: \"thinking\";\n text: string;\n seconds?: number;\n}\n/** A task list the agent committed to before acting. */\nexport interface AgentPlanBlock {\n kind: \"plan\";\n title?: string;\n steps: AgentStep[];\n}\n/** A single tool invocation with request preview, status and result. */\nexport interface AgentToolBlock {\n kind: \"tool\";\n name: string;\n icon?: string;\n request?: string;\n status: AgentToolStatus;\n result?: string;\n}\n/** Plain (possibly still-streaming) assistant prose. */\nexport interface AgentTextBlock {\n kind: \"text\";\n text: string;\n}\nexport type AgentBlock = AgentThinkingBlock | AgentPlanBlock | AgentToolBlock | AgentTextBlock;\n\nexport interface AgentMessage {\n id: string;\n from: \"me\" | \"agent\";\n /** User turns. */\n text?: string;\n /** Agent turns are a sequence of blocks. */\n blocks?: AgentBlock[];\n /** True while the agent is still producing this turn. */\n streaming?: boolean;\n}\n\nexport interface AgentSuggestion {\n icon: string;\n text: string;\n}\n\nexport interface AgentThreadProps {\n messages: AgentMessage[];\n userInitials: string;\n agentName: string;\n suggestions: AgentSuggestion[];\n onSuggest: (text: string) => void;\n}\n\n/* -------------------------------------------------------------- primitives -- */\n\nfunction AgentMark({ size = 32 }: { size?: number }) {\n return (\n <span\n style={{\n width: size,\n height: size,\n flexShrink: 0,\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: size * 0.5,\n }}\n >\n <i className=\"ri-sparkling-2-fill\" />\n </span>\n );\n}\n\nconst cardBase: CSSProperties = {\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n overflow: \"hidden\",\n};\n\nconst cardHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n padding: \"10px 12px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n textAlign: \"left\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n};\n\nfunction Chevron({ open }: { open: boolean }) {\n return (\n <i\n className=\"ri-arrow-down-s-line\"\n style={{\n marginLeft: \"auto\",\n fontSize: 18,\n color: \"var(--klun-icon-soft-400)\",\n transform: open ? \"rotate(180deg)\" : \"none\",\n transition: \"transform var(--klun-duration-fast, .15s) var(--klun-ease-out, ease)\",\n }}\n />\n );\n}\n\n/* --- thinking ----------------------------------------------------------- */\n\nfunction ThinkingBlock({ block }: { block: AgentThinkingBlock }) {\n const done = block.seconds != null;\n const [open, setOpen] = useState(!done);\n // Auto-collapse once thinking finishes.\n const wasDone = useRef(done);\n useEffect(() => {\n if (done && !wasDone.current) setOpen(false);\n wasDone.current = done;\n }, [done]);\n\n return (\n <div style={cardBase}>\n <button type=\"button\" style={cardHeader} onClick={() => setOpen((o) => !o)}>\n <i\n className={done ? \"ri-brain-line\" : \"ri-loader-4-line\"}\n style={{\n fontSize: 18,\n color: \"var(--klun-state-feature-base)\",\n animation: done ? undefined : \"klun-agent-spin .9s linear infinite\",\n }}\n />\n <span style={{ color: \"var(--klun-text-sub-600)\" }}>\n {done ? `Thought for ${block.seconds}s` : \"Thinking…\"}\n </span>\n <Chevron open={open} />\n </button>\n {open ? (\n <div\n style={{\n padding: \"0 12px 12px 38px\",\n font: \"var(--klun-text-paragraph-sm)\",\n fontStyle: \"italic\",\n color: \"var(--klun-text-sub-600)\",\n whiteSpace: \"pre-wrap\",\n lineHeight: 1.6,\n }}\n >\n {block.text}\n </div>\n ) : null}\n </div>\n );\n}\n\n/* --- plan --------------------------------------------------------------- */\n\nconst STEP_ICON: Record<AgentStepStatus, ReactNode> = {\n done: <i className=\"ri-checkbox-circle-fill\" style={{ color: \"var(--klun-state-success-base)\" }} />,\n active: <Spinner size=\"sm\" color=\"var(--klun-primary-base)\" />,\n todo: <i className=\"ri-checkbox-blank-circle-line\" style={{ color: \"var(--klun-icon-soft-400)\" }} />,\n};\n\nfunction PlanBlock({ block }: { block: AgentPlanBlock }) {\n const done = block.steps.filter((s) => s.status === \"done\").length;\n return (\n <div style={{ ...cardBase, padding: \"12px 14px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n marginBottom: 10,\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n <i className=\"ri-list-check-2\" style={{ fontSize: 18, color: \"var(--klun-icon-sub-600)\" }} />\n <span>{block.title || \"Plan\"}</span>\n <span style={{ marginLeft: \"auto\", font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {done}/{block.steps.length}\n </span>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n {block.steps.map((s, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ width: 16, height: 16, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16, flexShrink: 0 }}>\n {STEP_ICON[s.status]}\n </span>\n <span\n style={{\n font: \"var(--klun-text-paragraph-sm)\",\n color: s.status === \"todo\" ? \"var(--klun-text-soft-400)\" : \"var(--klun-text-strong-950)\",\n textDecoration: s.status === \"done\" ? \"line-through\" : \"none\",\n textDecorationColor: \"var(--klun-text-soft-400)\",\n }}\n >\n {s.text}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n/* --- tool call ---------------------------------------------------------- */\n\nconst TOOL_TONE: Record<AgentToolStatus, { dot: \"warn\" | \"ok\" | \"err\"; label: string }> = {\n running: { dot: \"warn\", label: \"Running\" },\n done: { dot: \"ok\", label: \"Done\" },\n error: { dot: \"err\", label: \"Stopped\" },\n};\n\nfunction ToolBlock({ block }: { block: AgentToolBlock }) {\n const [open, setOpen] = useState(false);\n const tone = TOOL_TONE[block.status];\n return (\n <div style={cardBase}>\n <button type=\"button\" style={cardHeader} onClick={() => setOpen((o) => !o)}>\n <i className={block.icon || \"ri-terminal-box-line\"} style={{ fontSize: 18, color: \"var(--klun-icon-sub-600)\" }} />\n <span style={{ color: \"var(--klun-text-soft-400)\" }}>Tool</span>\n <code\n style={{\n font: \"var(--klun-text-label-sm)\",\n fontFamily: \"var(--klun-font-mono, ui-monospace, monospace)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n {block.name}\n </code>\n {block.status === \"running\" ? (\n <Spinner size=\"xs\" color=\"var(--klun-state-warning-base)\" />\n ) : (\n <StatusDot tone={tone.dot} size=\"sm\" />\n )}\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{tone.label}</span>\n <Chevron open={open} />\n </button>\n {open ? (\n <div style={{ padding: \"0 12px 12px\", display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {block.request ? <Snippet label=\"Request\" body={block.request} /> : null}\n {block.result ? (\n <Snippet label=\"Result\" body={block.result} tone={block.status === \"error\" ? \"error\" : \"default\"} />\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction Snippet({ label, body, tone = \"default\" }: { label: string; body: string; tone?: \"default\" | \"error\" }) {\n return (\n <div>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", marginBottom: 4 }}>\n {label}\n </div>\n <pre\n style={{\n margin: 0,\n padding: \"8px 10px\",\n borderRadius: \"var(--klun-radius-md)\",\n background: tone === \"error\" ? \"var(--klun-state-error-lighter)\" : \"var(--klun-bg-weak-50)\",\n font: \"var(--klun-text-paragraph-xs)\",\n fontFamily: \"var(--klun-font-mono, ui-monospace, monospace)\",\n color: tone === \"error\" ? \"var(--klun-state-error-base)\" : \"var(--klun-text-sub-600)\",\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n }}\n >\n {body}\n </pre>\n </div>\n );\n}\n\n/* --- text --------------------------------------------------------------- */\n\nfunction TextBlock({ block, streaming }: { block: AgentTextBlock; streaming?: boolean }) {\n return (\n <div\n style={{\n font: \"var(--klun-text-paragraph-md)\",\n color: \"var(--klun-text-strong-950)\",\n lineHeight: 1.65,\n whiteSpace: \"pre-wrap\",\n }}\n >\n {block.text}\n {streaming ? <span className=\"klun-agent-caret\" /> : null}\n </div>\n );\n}\n\n/* ----------------------------------------------------------------- render -- */\n\nfunction AgentTurn({ msg }: { msg: AgentMessage }) {\n const blocks = msg.blocks || [];\n const lastTextIdx = blocks.map((b) => b.kind).lastIndexOf(\"text\");\n const onlyThinking = blocks.length > 0 && blocks.every((b) => b.kind === \"thinking\");\n return (\n <div style={{ display: \"flex\", gap: 12, alignItems: \"flex-start\" }}>\n <AgentMark />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: 10, paddingTop: 4 }}>\n {blocks.map((b, i) => {\n if (b.kind === \"thinking\") return <ThinkingBlock key={i} block={b} />;\n if (b.kind === \"plan\") return <PlanBlock key={i} block={b} />;\n if (b.kind === \"tool\") return <ToolBlock key={i} block={b} />;\n return <TextBlock key={i} block={b} streaming={msg.streaming && i === lastTextIdx} />;\n })}\n {/* No text yet but still working → show a typing affordance. */}\n {msg.streaming && lastTextIdx === -1 && !onlyThinking ? (\n <span className=\"klun-agent-typing\"><span /><span /><span /></span>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction UserTurn({ msg, initials }: { msg: AgentMessage; initials: string }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"row-reverse\", gap: 12, alignItems: \"flex-start\" }}>\n <Avatar size=\"32\" initials={initials} color=\"purple\" />\n <div\n style={{\n maxWidth: \"78%\",\n padding: \"10px 14px\",\n borderRadius: \"var(--klun-radius-2xl) var(--klun-radius-2xl) var(--klun-radius-sm) var(--klun-radius-2xl)\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-static-static-white)\",\n font: \"var(--klun-text-paragraph-sm)\",\n lineHeight: 1.55,\n whiteSpace: \"pre-wrap\",\n }}\n >\n {msg.text}\n </div>\n </div>\n );\n}\n\nexport function AgentThread({ messages, userInitials, agentName, suggestions, onSuggest }: AgentThreadProps) {\n const scrollRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n scrollRef.current?.scrollTo?.(0, scrollRef.current.scrollHeight);\n }, [messages]);\n\n if (messages.length === 0) {\n return (\n <div style={{ flex: 1, display: \"flex\", flexDirection: \"column\", alignItems: \"center\", justifyContent: \"center\", padding: 32, textAlign: \"center\" }}>\n <div\n style={{\n width: 56,\n height: 56,\n borderRadius: \"var(--klun-radius-2xl)\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 28,\n marginBottom: 20,\n }}\n >\n <i className=\"ri-sparkling-2-fill\" />\n </div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n What should {agentName} work on?\n </h1>\n <p style={{ margin: \"8px 0 28px\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\" }}>\n Describe a task — the agent will plan, use tools, and report back.\n </p>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 12, maxWidth: 560, width: \"100%\" }}>\n {suggestions.map((s) => (\n <button\n key={s.text}\n onClick={() => onSuggest(s.text)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"14px 16px\",\n textAlign: \"left\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-xl)\",\n cursor: \"pointer\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n <i className={s.icon} style={{ fontSize: 20, color: \"var(--klun-primary-base)\" }} />\n <span>{s.text}</span>\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={scrollRef} style={{ flex: 1, overflow: \"auto\" }}>\n <div style={{ maxWidth: 760, margin: \"0 auto\", padding: \"24px 24px 8px\", display: \"flex\", flexDirection: \"column\", gap: 24 }}>\n {messages.map((m) =>\n m.from === \"me\" ? (\n <UserTurn key={m.id} msg={m} initials={userInitials} />\n ) : (\n <AgentTurn key={m.id} msg={m} />\n ),\n )}\n </div>\n </div>\n );\n}\n\n/** Small status pill for the thread header. */\nexport function AgentRunBadge({ busy }: { busy: boolean }) {\n return busy ? (\n <Badge color=\"orange\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-loader-4-line\" style={{ animation: \"klun-agent-spin .9s linear infinite\" }} />}>\n Working\n </Badge>\n ) : (\n <Badge color=\"green\" variant=\"lighter\" size=\"small\" leadingIcon={<i className=\"ri-check-line\" />}>\n Idle\n </Badge>\n );\n}\n","// Klun UI agent chat — composer with model picker, tool toggle and a send\n// button that flips to a stop control while the agent is running.\nimport { useRef, useState, type ChangeEvent, type CSSProperties } from \"react\";\n\nexport interface AgentComposerProps {\n onSend: (text: string) => void;\n onStop: () => void;\n busy: boolean;\n /** Whether the agent is allowed to call tools this turn. */\n toolsOn: boolean;\n onToggleTools: (on: boolean) => void;\n}\n\nexport function AgentComposer({ onSend, onStop, busy, toolsOn, onToggleTools }: AgentComposerProps) {\n const [text, setText] = useState(\"\");\n const [model, setModel] = useState(\"Klun Agent-1\");\n const taRef = useRef<HTMLTextAreaElement>(null);\n\n const send = () => {\n const t = text.trim();\n if (!t || busy) return;\n onSend(t);\n setText(\"\");\n if (taRef.current) taRef.current.style.height = \"auto\";\n };\n const grow = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setText(e.target.value);\n e.target.style.height = \"auto\";\n e.target.style.height = Math.min(e.target.scrollHeight, 160) + \"px\";\n };\n\n const canSend = !!text.trim() && !busy;\n\n return (\n <div style={{ padding: \"0 24px 20px\" }}>\n <div\n style={{\n maxWidth: 760,\n margin: \"0 auto\",\n borderRadius: \"var(--klun-radius-3xl)\",\n background: \"var(--klun-bg-white-0)\",\n boxShadow: \"var(--klun-shadow-md), inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n padding: 12,\n }}\n >\n <textarea\n ref={taRef}\n value={text}\n onChange={grow}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n send();\n }\n }}\n placeholder=\"Give the agent a task…\"\n rows={1}\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n resize: \"none\",\n background: \"transparent\",\n font: \"var(--klun-text-paragraph-md)\",\n color: \"var(--klun-text-strong-950)\",\n padding: \"6px 6px 10px\",\n maxHeight: 160,\n }}\n />\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <button title=\"Attach file\" style={iconBtn}>\n <i className=\"ri-attachment-2\" />\n </button>\n <button\n type=\"button\"\n onClick={() => onToggleTools(!toolsOn)}\n title=\"Toggle tools\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 6,\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n cursor: \"pointer\",\n font: \"var(--klun-text-label-sm)\",\n background: toolsOn ? \"var(--klun-state-feature-lighter)\" : \"var(--klun-bg-weak-50)\",\n color: toolsOn ? \"var(--klun-state-feature-base)\" : \"var(--klun-text-sub-600)\",\n }}\n >\n <i className=\"ri-tools-line\" style={{ fontSize: 16 }} />\n Tools\n </button>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n height: 32,\n padding: \"0 8px 0 10px\",\n borderRadius: \"var(--klun-radius-md)\",\n background: \"var(--klun-bg-weak-50)\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-sub-600)\",\n cursor: \"pointer\",\n }}\n >\n <i className=\"ri-cpu-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n <select\n value={model}\n onChange={(e) => setModel(e.target.value)}\n style={{\n appearance: \"none\",\n WebkitAppearance: \"none\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-sub-600)\",\n cursor: \"pointer\",\n }}\n >\n <option>Klun Agent-1</option>\n <option>Klun Agent-1 Mini</option>\n <option>Klun Agent-1 Pro</option>\n </select>\n <i className=\"ri-arrow-down-s-line\" style={{ fontSize: 16, color: \"var(--klun-icon-soft-400)\" }} />\n </div>\n <div style={{ flex: 1 }} />\n {busy ? (\n <button\n onClick={onStop}\n title=\"Stop\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 36,\n height: 36,\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n background: \"var(--klun-bg-strong-950)\",\n color: \"var(--klun-text-white-0)\",\n fontSize: 18,\n }}\n >\n <i className=\"ri-stop-fill\" />\n </button>\n ) : (\n <button\n onClick={send}\n disabled={!canSend}\n title=\"Send\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 36,\n height: 36,\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: canSend ? \"pointer\" : \"not-allowed\",\n background: canSend ? \"var(--klun-primary-base)\" : \"var(--klun-bg-soft-200)\",\n color: canSend ? \"var(--klun-static-static-white)\" : \"var(--klun-text-soft-400)\",\n fontSize: 20,\n }}\n >\n <i className=\"ri-arrow-up-line\" />\n </button>\n )}\n </div>\n </div>\n <div\n style={{\n maxWidth: 760,\n margin: \"8px auto 0\",\n textAlign: \"center\",\n font: \"var(--klun-text-paragraph-xs)\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n The agent can run tools and make mistakes. Review its actions.\n </div>\n </div>\n );\n}\n\nconst iconBtn: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 32,\n height: 32,\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n background: \"transparent\",\n color: \"var(--klun-icon-sub-600)\",\n cursor: \"pointer\",\n fontSize: 18,\n};\n","// Klun UI agent chat — full template composition. A simulated agent run that\n// reasons, lays out a plan, calls tools and streams its final answer, with a\n// working Stop control that aborts the run mid-flight.\nimport { useEffect, useRef, useState } from \"react\";\nimport { Button } from \"../../index\";\nimport { AgentSidebar, type AgentSession, type AgentUser } from \"./AgentSidebar\";\nimport {\n AgentThread,\n AgentRunBadge,\n type AgentBlock,\n type AgentMessage,\n type AgentPlanBlock,\n type AgentStep,\n type AgentSuggestion,\n type AgentTextBlock,\n} from \"./AgentThread\";\nimport { AgentComposer } from \"./AgentComposer\";\n\n/* --------------------------------------------------------------- scenarios -- */\n\ninterface Scenario {\n thinking: string;\n thinkSeconds: number;\n planTitle: string;\n /** One label per tool, plus a final \"compose the answer\" step. */\n steps: string[];\n tools: { name: string; icon: string; request: string; result: string }[];\n answer: string;\n}\n\nconst SCENARIOS: Scenario[] = [\n {\n thinking:\n \"The user wants the Q2 numbers summarized. I'll search the knowledge base for the latest financials, read the segment breakdown, then write a short summary with the key drivers. I won't make up figures — everything comes from the files.\",\n thinkSeconds: 3,\n planTitle: \"Plan\",\n steps: [\"Search the knowledge base\", \"Read the matching records\", \"Write the summary\"],\n tools: [\n {\n name: \"search_kb\",\n icon: \"ri-search-2-line\",\n request: 'query: \"Q2 revenue by segment\"\\nlimit: 5',\n result: \"5 documents found:\\n• 2024-Q2-financials.pdf (0.94)\\n• segment-breakdown.csv (0.91)\\n• board-notes.md (0.83)\",\n },\n {\n name: \"read_file\",\n icon: \"ri-file-text-line\",\n request: 'path: \"segment-breakdown.csv\"',\n result: \"segment,revenue,growth\\nSubscriptions,1.82M,+18%\\nServices,0.64M,+4%\\nOne-off,0.21M,-7%\",\n },\n ],\n answer:\n \"Here's the Q2 breakdown: total revenue was $2.67M, up 12.4% over Q1. Growth came almost entirely from subscriptions (+18%, $1.82M), while one-off sales slipped 7%. Want me to chart this or draft a board summary?\",\n },\n {\n thinking:\n \"They want a follow-up email for an overdue invoice. I'll look up the contact, draft the message, and save it as a draft — I will not send anything without explicit confirmation.\",\n thinkSeconds: 2,\n planTitle: \"Plan\",\n steps: [\"Look up the contact\", \"Draft the message\", \"Prepare the draft\"],\n tools: [\n {\n name: \"get_contact\",\n icon: \"ri-contacts-line\",\n request: 'name: \"Apex Ltd\"',\n result: '{ \"name\": \"Apex Ltd\", \"email\": \"ap@apex.example\", \"owner\": \"Arthur\" }',\n },\n {\n name: \"create_draft\",\n icon: \"ri-mail-add-line\",\n request: 'to: \"ap@apex.example\"\\nsubject: \"Friendly reminder — invoice #1042\"',\n result: \"Draft saved (id: dr_7c21). Not sent.\",\n },\n ],\n answer:\n \"I've drafted a friendly reminder to Apex Ltd about invoice #1042 ($2,400, 6 days overdue) and saved it as a draft — I did not send it. Want me to add a payment link, soften the tone, or go ahead and send?\",\n },\n];\n\nconst SUGGESTIONS: AgentSuggestion[] = [\n { icon: \"ri-search-2-line\", text: \"Research our Q2 revenue and summarize it\" },\n { icon: \"ri-mail-send-line\", text: \"Draft and queue an overdue-invoice reminder\" },\n { icon: \"ri-bug-line\", text: \"Find the failing checkout test and propose a fix\" },\n { icon: \"ri-calendar-todo-line\", text: \"Plan my week around 3 deadlines\" },\n];\n\n/* ----------------------------------------------------------------- helpers -- */\n\nfunction mapLastKind<K extends AgentBlock[\"kind\"]>(\n blocks: AgentBlock[],\n kind: K,\n fn: (b: Extract<AgentBlock, { kind: K }>) => AgentBlock,\n): AgentBlock[] {\n for (let i = blocks.length - 1; i >= 0; i--) {\n if (blocks[i].kind === kind) {\n const next = blocks.slice();\n next[i] = fn(blocks[i] as Extract<AgentBlock, { kind: K }>);\n return next;\n }\n }\n return blocks;\n}\n\n/* ------------------------------------------------------------------- view -- */\n\nconst STYLES = `\n@keyframes klun-agent-spin { to { transform: rotate(360deg); } }\n@keyframes klun-agent-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }\n@keyframes klun-agent-bounce { 0%, 80%, 100% { transform: translateY(0); opacity: .4; } 40% { transform: translateY(-4px); opacity: 1; } }\n.klun-agent-caret { display: inline-block; width: 7px; height: 1.05em; margin-left: 2px; transform: translateY(2px); border-radius: 1px; background: var(--klun-primary-base); animation: klun-agent-blink 1s steps(2) infinite; }\n.klun-agent-typing { display: inline-flex; gap: 4px; padding: 6px 2px; }\n.klun-agent-typing span { width: 6px; height: 6px; border-radius: 50%; background: var(--klun-icon-soft-400); animation: klun-agent-bounce 1.2s infinite ease-in-out; }\n.klun-agent-typing span:nth-child(2) { animation-delay: .15s; }\n.klun-agent-typing span:nth-child(3) { animation-delay: .3s; }\n`;\n\nexport function AgentChatTemplate() {\n const user: AgentUser = { name: \"Arthur Taylor\", initials: \"AT\", plan: \"Pro plan\" };\n\n const [sessions, setSessions] = useState<AgentSession[]>([\n { id: \"s1\", group: \"today\", title: \"Q2 revenue summary\", state: \"done\" },\n { id: \"s2\", group: \"today\", title: \"Invoice reminder draft\", state: \"done\" },\n { id: \"s3\", group: \"week\", title: \"Fix checkout flake\", state: \"idle\" },\n ]);\n const [activeId, setActiveId] = useState(\"new\");\n const [threads, setThreads] = useState<Record<string, AgentMessage[]>>({ new: [] });\n const [busy, setBusy] = useState(false);\n const [toolsOn, setToolsOn] = useState(true);\n\n const messages = threads[activeId] || [];\n\n // Run bookkeeping. runId invalidates in-flight timers so Stop unwinds cleanly.\n const runIdRef = useRef(0);\n const idRef = useRef(0);\n const runThreadRef = useRef(\"new\");\n const agentMsgIdRef = useRef(\"\");\n const timersRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n const toolsOnRef = useRef(toolsOn);\n toolsOnRef.current = toolsOn;\n const scenarioRef = useRef(0);\n\n useEffect(() => () => timersRef.current.forEach(clearTimeout), []);\n\n const nextId = (p: string) => `${p}${(idRef.current += 1)}`;\n\n const sleep = (ms: number, token: number) =>\n new Promise<void>((resolve, reject) => {\n const id = setTimeout(() => {\n if (token === runIdRef.current) resolve();\n else reject(new Error(\"aborted\"));\n }, ms);\n timersRef.current.push(id);\n });\n\n const setSessionState = (id: string, state: AgentSession[\"state\"]) =>\n setSessions((ss) => ss.map((s) => (s.id === id ? { ...s, state } : s)));\n\n const run = async (prompt: string) => {\n const token = (runIdRef.current += 1);\n const threadId = activeId;\n const agentId = nextId(\"a\");\n runThreadRef.current = threadId;\n agentMsgIdRef.current = agentId;\n\n const sc = SCENARIOS[scenarioRef.current % SCENARIOS.length];\n scenarioRef.current += 1;\n const useTools = toolsOnRef.current;\n\n // Scoped helpers that always target this run's agent message.\n const patch = (updater: (blocks: AgentBlock[]) => AgentBlock[]) =>\n setThreads((t) => {\n const msgs = t[threadId];\n if (!msgs) return t;\n const idx = msgs.findIndex((m) => m.id === agentId);\n if (idx < 0) return t;\n const next = msgs.slice();\n next[idx] = { ...next[idx], blocks: updater(next[idx].blocks || []) };\n return { ...t, [threadId]: next };\n });\n const setStreaming = (streaming: boolean) =>\n setThreads((t) => {\n const msgs = t[threadId];\n if (!msgs) return t;\n const idx = msgs.findIndex((m) => m.id === agentId);\n if (idx < 0) return t;\n const next = msgs.slice();\n next[idx] = { ...next[idx], streaming };\n return { ...t, [threadId]: next };\n });\n const push = (b: AgentBlock) => patch((bl) => [...bl, b]);\n\n setBusy(true);\n if (threadId !== \"new\") setSessionState(threadId, \"running\");\n setThreads((t) => ({\n ...t,\n [threadId]: [...(t[threadId] || []), { id: agentId, from: \"agent\", blocks: [], streaming: true }],\n }));\n\n try {\n // 1. Reason.\n push({ kind: \"thinking\", text: sc.thinking });\n await sleep(1500, token);\n patch((bl) => mapLastKind(bl, \"thinking\", (b) => ({ ...b, seconds: sc.thinkSeconds })));\n\n if (useTools) {\n // 2. Plan.\n const steps: AgentStep[] = sc.steps.map((text, i) => ({ text, status: i === 0 ? \"active\" : \"todo\" }));\n push({ kind: \"plan\", title: sc.planTitle, steps });\n await sleep(700, token);\n\n // 3. Tools — advance the plan as each completes.\n for (let i = 0; i < sc.tools.length; i++) {\n const tool = sc.tools[i];\n push({ kind: \"tool\", name: tool.name, icon: tool.icon, request: tool.request, status: \"running\" });\n await sleep(1500, token);\n patch((bl) => mapLastKind(bl, \"tool\", (b) => ({ ...b, status: \"done\", result: tool.result })));\n patch((bl) =>\n mapLastKind(bl, \"plan\", (p: AgentPlanBlock) => ({\n ...p,\n steps: p.steps.map((s, k) =>\n k === i ? { ...s, status: \"done\" } : k === i + 1 ? { ...s, status: \"active\" } : s,\n ),\n })),\n );\n await sleep(450, token);\n }\n }\n\n // 4. Stream the answer.\n push({ kind: \"text\", text: \"\" });\n const words = sc.answer.split(\" \");\n let acc = \"\";\n for (let i = 0; i < words.length; i++) {\n acc += (i === 0 ? \"\" : \" \") + words[i];\n const cur = acc;\n patch((bl) => mapLastKind(bl, \"text\", (b) => ({ ...b, text: cur })));\n await sleep(28, token);\n }\n\n // 5. Done — close out the plan.\n if (useTools) {\n patch((bl) =>\n mapLastKind(bl, \"plan\", (p: AgentPlanBlock) => ({\n ...p,\n steps: p.steps.map((s) => ({ ...s, status: \"done\" as const })),\n })),\n );\n }\n setStreaming(false);\n if (threadId !== \"new\") setSessionState(threadId, \"done\");\n setBusy(false);\n } catch {\n // Aborted via Stop — handled there.\n }\n };\n\n const stop = () => {\n if (!busy) return;\n runIdRef.current += 1; // invalidate: the in-flight sleep will reject and unwind\n const threadId = runThreadRef.current;\n const agentId = agentMsgIdRef.current;\n setThreads((t) => {\n const msgs = t[threadId];\n if (!msgs) return t;\n const idx = msgs.findIndex((m) => m.id === agentId);\n if (idx < 0) return t;\n const msg = msgs[idx];\n let blocks: AgentBlock[] = (msg.blocks || []).map((b) =>\n b.kind === \"tool\" && b.status === \"running\" ? { ...b, status: \"error\", result: \"Stopped by user.\" } : b,\n );\n const last = blocks[blocks.length - 1];\n if (last && last.kind === \"text\" && !(last as AgentTextBlock).text) blocks = blocks.slice(0, -1);\n blocks = [...blocks, { kind: \"text\", text: \"⏹ Stopped.\" }];\n const next = msgs.slice();\n next[idx] = { ...msg, blocks, streaming: false };\n return { ...t, [threadId]: next };\n });\n if (threadId !== \"new\") setSessionState(threadId, \"idle\");\n setBusy(false);\n };\n\n const ask = (text: string) => {\n if (busy) return;\n setThreads((t) => ({ ...t, [activeId]: [...(t[activeId] || []), { id: nextId(\"u\"), from: \"me\", text }] }));\n run(text);\n };\n\n const newTask = () => {\n if (busy) stop();\n setActiveId(\"new\");\n setThreads((t) => ({ ...t, new: [] }));\n };\n\n const select = (id: string) => {\n setActiveId(id);\n setThreads((t) => (t[id] ? t : { ...t, [id]: [] }));\n };\n\n const title = activeId === \"new\" ? \"New task\" : sessions.find((s) => s.id === activeId)?.title || \"Task\";\n\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <style>{STYLES}</style>\n <AgentSidebar sessions={sessions} activeId={activeId} onSelect={select} onNew={newTask} user={user} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\" }}>\n <header\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n padding: \"14px 24px\",\n borderBottom: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>{title}</span>\n <AgentRunBadge busy={busy} />\n <div style={{ flex: 1 }} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-share-line\" />} />\n <Button iconOnly variant=\"neutral\" appearance=\"ghost\" icon={<i className=\"ri-more-2-fill\" />} />\n </header>\n <AgentThread\n messages={messages}\n userInitials={user.initials}\n agentName=\"the agent\"\n suggestions={SUGGESTIONS}\n onSuggest={ask}\n />\n <AgentComposer onSend={ask} onStop={stop} busy={busy} toolsOn={toolsOn} onToggleTools={setToolsOn} />\n </div>\n </div>\n );\n}\n","// Klun UI crypto — trading sidebar.\n\ninterface NavItem {\n id: string;\n label: string;\n icon: string;\n badge?: string;\n}\n\nexport interface CryptoSidebarProps {\n active: string;\n onNavigate: (id: string) => void;\n}\n\nexport function CryptoSidebar({ active, onNavigate }: CryptoSidebarProps) {\n const main: NavItem[] = [\n { id: \"markets\", label: \"Markets\", icon: \"ri-line-chart-line\" },\n { id: \"portfolio\", label: \"Portfolio\", icon: \"ri-pie-chart-2-line\" },\n { id: \"trade\", label: \"Trade\", icon: \"ri-swap-line\" },\n { id: \"wallet\", label: \"Wallet\", icon: \"ri-wallet-3-line\" },\n { id: \"earn\", label: \"Earn\", icon: \"ri-funds-line\", badge: \"New\" },\n ];\n const other: NavItem[] = [\n { id: \"activity\", label: \"Activity\", icon: \"ri-history-line\" },\n { id: \"settings\", label: \"Settings\", icon: \"ri-settings-2-line\" },\n ];\n const Item = ({ it }: { it: NavItem }) => {\n const on = active === it.id;\n return (\n <button onClick={() => onNavigate(it.id)} style={{\n display: \"flex\", alignItems: \"center\", gap: 10, width: \"100%\", height: 38, padding: \"0 12px\",\n border: \"none\", borderRadius: \"var(--klun-radius-lg)\", cursor: \"pointer\", textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\", font: \"var(--klun-text-label-sm)\",\n }}>\n <i className={it.icon} style={{ fontSize: 20, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }} />\n <span style={{ flex: 1 }}>{it.label}</span>\n {it.badge ? <span style={{ font: \"var(--klun-text-subheading-2xs)\", padding: \"1px 6px\", borderRadius: \"var(--klun-radius-pill)\", background: \"var(--klun-state-success-lighter)\", color: \"var(--klun-state-success-base)\" }}>{it.badge}</span> : null}\n </button>\n );\n };\n return (\n <aside style={{ width: 256, flexShrink: 0, height: \"100%\", boxSizing: \"border-box\", display: \"flex\", flexDirection: \"column\", padding: 18, background: \"var(--klun-bg-weak-50)\", borderRight: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 8px 18px\" }}>\n <div style={{ width: 34, height: 34, borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-primary-base)\", color: \"var(--klun-static-static-white)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-currency-line\" style={{ fontSize: 20 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Apex Exchange</span>\n </div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{main.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ font: \"var(--klun-text-subheading-2xs)\", letterSpacing: \"var(--klun-subheading-2xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", padding: \"20px 12px 8px\" }}>Account</div>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>{other.map((it) => <Item key={it.id} it={it} />)}</nav>\n <div style={{ flex: 1 }} />\n <div style={{ borderRadius: \"var(--klun-radius-xl)\", background: \"var(--klun-bg-strong-950)\", padding: 16, color: \"var(--klun-static-static-white)\" }}>\n <i className=\"ri-vip-crown-2-line\" style={{ fontSize: 22 }} />\n <div style={{ marginTop: 8, font: \"var(--klun-text-label-sm)\" }}>Upgrade to Pro</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-paragraph-xs)\", opacity: .7 }}>0% maker fees & advanced charts.</div>\n </div>\n </aside>\n );\n}\n","// Klun UI crypto — Markets/Portfolio screen.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Card, Table, Badge, SegmentedControl, Button } from \"../../index\";\n\nfunction Stat({ label, value, delta, trend = \"up\", tint = \"feature\", icon }: {\n label: ReactNode; value: ReactNode; delta?: ReactNode; trend?: \"up\" | \"down\";\n tint?: \"feature\" | \"success\" | \"warning\" | \"information\" | \"error\"; icon?: ReactNode;\n}) {\n const dc = trend === \"up\" ? \"success\" : \"error\";\n return (\n <Card variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\" }}>\n <span style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22, background: `var(--klun-state-${tint}-lighter)`, color: `var(--klun-state-${tint}-base)` }}>{icon}</span>\n {delta != null ? (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 2, height: 20, padding: \"0 6px\", borderRadius: \"var(--klun-radius-capsule)\", font: \"var(--klun-text-label-xs)\", background: `var(--klun-state-${dc}-lighter)`, color: `var(--klun-state-${dc}-base)` }}>\n <i className={trend === \"up\" ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} style={{ fontSize: 14 }} />{delta}\n </span>\n ) : null}\n </div>\n <div style={{ marginTop: 16, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{label}</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{value}</div>\n </Card>\n );\n}\nimport type { TableColumn } from \"../../index\";\n\nfunction coinStyle(sym: string): [string, string] {\n const map: Record<string, [string, string]> = {\n BTC: [\"#F7931A22\", \"#F7931A\"], ETH: [\"#627EEA22\", \"#627EEA\"], SOL: [\"#9945FF22\", \"#9945FF\"],\n XRP: [\"#23292F22\", \"#23292F\"], BNB: [\"#F3BA2F22\", \"#C99A2C\"], USDC: [\"#2775CA22\", \"#2775CA\"],\n AVAX: [\"#E8414222\", \"#E84142\"], ADA: [\"#0033AD22\", \"#0033AD\"],\n };\n return map[sym] || [\"var(--klun-bg-weak-50)\", \"var(--klun-text-sub-600)\"];\n}\n\ninterface CoinIconProps {\n sym: string;\n size?: number;\n}\n\nfunction CoinIcon({ sym, size = 32 }: CoinIconProps) {\n const [bg, fg] = coinStyle(sym);\n return <span style={{ width: size, height: size, borderRadius: \"var(--klun-radius-pill)\", background: bg, color: fg, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", font: \"var(--klun-text-label-xs)\", fontWeight: 600, flexShrink: 0 }}>{sym.slice(0, 3)}</span>;\n}\n\ninterface SparkProps {\n up: boolean;\n w?: number;\n h?: number;\n}\n\nfunction Spark({ up, w = 96, h = 32 }: SparkProps) {\n const pts = up ? [10, 12, 8, 14, 11, 16, 13, 20, 18, 24, 22, 28] : [26, 22, 24, 18, 20, 16, 18, 12, 14, 10, 12, 8];\n const step = w / (pts.length - 1);\n const d = pts.map((p, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${(h - p).toFixed(1)}`).join(\" \");\n const c = up ? \"var(--klun-state-success-base)\" : \"var(--klun-state-error-base)\";\n return <svg width={w} height={h}><path d={d} fill=\"none\" stroke={c} strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\n}\n\ninterface Holding {\n sym: string;\n name: string;\n price: string;\n amount: string;\n value: string;\n chg: string;\n up: boolean;\n}\n\nexport function MarketsScreen() {\n const [range, setRange] = useState(\"1w\");\n\n const holdings: Holding[] = [\n { sym: \"BTC\", name: \"Bitcoin\", price: \"$64,210\", amount: \"0.842 BTC\", value: \"$54,065\", chg: \"+2.4%\", up: true },\n { sym: \"ETH\", name: \"Ethereum\", price: \"$3,180\", amount: \"6.20 ETH\", value: \"$19,716\", chg: \"+1.3%\", up: true },\n { sym: \"SOL\", name: \"Solana\", price: \"$142.50\", amount: \"84.0 SOL\", value: \"$11,970\", chg: \"-2.3%\", up: false },\n { sym: \"XRP\", name: \"XRP\", price: \"$0.62\", amount: \"9,400 XRP\", value: \"$5,828\", chg: \"-0.2%\", up: false },\n { sym: \"BNB\", name: \"BNB\", price: \"$590.10\", amount: \"12.0 BNB\", value: \"$7,081\", chg: \"-1.5%\", up: false },\n ];\n const columns: TableColumn<Holding>[] = [\n { key: \"name\", header: \"Asset\", render: (r) => (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <CoinIcon sym={r.sym} />\n <div><div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.name}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{r.sym}</div></div>\n </div>) },\n { key: \"price\", header: \"Price\", render: (r) => <span style={{ font: \"var(--klun-text-label-sm)\" }}>{r.price}</span> },\n { key: \"amount\", header: \"Holdings\", render: (r) => <span style={{ color: \"var(--klun-text-sub-600)\" }}>{r.amount}</span> },\n { key: \"chg\", header: \"24h\", render: (r) => <Badge color={r.up ? \"green\" : \"red\"} variant=\"light\" size=\"small\" leadingIcon={<i className={r.up ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} />}>{r.chg}</Badge> },\n { key: \"value\", header: \"Value\", align: \"right\", render: (r) => <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.value}</span> },\n { key: \"spark\", header: \"\", width: 110, align: \"right\", render: (r) => <Spark up={r.up} /> },\n ];\n\n return (\n <div style={{ padding: 28, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1.6fr 1fr 1fr\", gap: 16 }}>\n <div style={{ gridColumn: \"1 / -1\", display: \"grid\", gridTemplateColumns: \"repeat(3, 1fr)\", gap: 16 }}>\n <Stat label=\"Total balance\" value=\"$98,659.40\" delta=\"3.8%\" trend=\"up\" tint=\"feature\" icon={<i className=\"ri-wallet-3-line\" />} />\n <Stat label=\"24h P&L\" value=\"+$1,842.10\" delta=\"1.9%\" trend=\"up\" tint=\"success\" icon={<i className=\"ri-line-chart-line\" />} />\n <Stat label=\"Available\" value=\"$12,430.00\" delta=\"0.0%\" trend=\"up\" tint=\"information\" icon={<i className=\"ri-cash-line\" />} />\n </div>\n </div>\n\n <div style={{ background: \"var(--klun-bg-white-0)\", borderRadius: \"var(--klun-radius-2xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", padding: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: 8 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <CoinIcon sym=\"BTC\" size={36} />\n <div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>$64,210.40</span>\n <Badge color=\"green\" variant=\"light\" size=\"small\" leadingIcon={<i className=\"ri-arrow-up-line\" />}>2.4%</Badge>\n </div>\n <div style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>Bitcoin · BTC/USD</div>\n </div>\n </div>\n <SegmentedControl value={range} onChange={setRange} items={[{ value: \"1d\", label: \"1D\" }, { value: \"1w\", label: \"1W\" }, { value: \"1m\", label: \"1M\" }, { value: \"1y\", label: \"1Y\" }]} />\n </div>\n <AreaChart />\n </div>\n\n <div style={{ background: \"var(--klun-bg-white-0)\", borderRadius: \"var(--klun-radius-2xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", overflow: \"hidden\" }}>\n <div style={{ padding: \"16px 20px\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Your holdings</span>\n <Button variant=\"primary\" size=\"small\" leadingIcon={<i className=\"ri-add-line\" />}>Buy crypto</Button>\n </div>\n <Table columns={columns} rows={holdings} getRowId={(r) => r.sym} style={{ borderRadius: 0, boxShadow: \"none\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }} />\n </div>\n </div>\n );\n}\n\nfunction AreaChart(): ReactNode {\n const pts = [40, 44, 38, 52, 48, 60, 55, 72, 68, 84, 78, 96, 90, 108, 118];\n const w = 1000, h = 160, max = 130;\n const step = w / (pts.length - 1);\n const line = pts.map((p, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${(h - (p / max) * h).toFixed(1)}`).join(\" \");\n const area = `${line} L${w},${h} L0,${h} Z`;\n return (\n <svg viewBox={`0 0 ${w} ${h}`} preserveAspectRatio=\"none\" style={{ width: \"100%\", height: 160, display: \"block\" }}>\n <defs>\n <linearGradient id=\"cryptoFill\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"var(--klun-primary-base)\" stopOpacity=\"0.18\" />\n <stop offset=\"100%\" stopColor=\"var(--klun-primary-base)\" stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n <path d={area} fill=\"url(#cryptoFill)\" />\n <path d={line} fill=\"none\" stroke=\"var(--klun-primary-base)\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n","// Klun UI crypto — trading dashboard template.\n// Markets/portfolio starting point — balance cards, area chart, holdings table.\nimport { useState } from \"react\";\nimport { Badge, Button } from \"../../index\";\nimport { CryptoSidebar } from \"./CryptoSidebar\";\nimport { MarketsScreen } from \"./MarketsScreen\";\n\nexport function CryptoTemplate() {\n const [active, setActive] = useState(\"portfolio\");\n return (\n <div style={{ display: \"flex\", height: \"100%\" }}>\n <CryptoSidebar active={active} onNavigate={setActive} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", overflow: \"hidden\" }}>\n <header style={{ display: \"flex\", alignItems: \"center\", gap: 16, padding: \"16px 28px\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <div style={{ flex: 1 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>Portfolio</h1>\n <Badge color=\"green\" variant=\"light\" size=\"small\" dot>Markets open</Badge>\n </div>\n </div>\n <div style={{ position: \"relative\" }}>\n <i className=\"ri-search-line\" style={{ position: \"absolute\", left: 12, top: \"50%\", transform: \"translateY(-50%)\", fontSize: 18, color: \"var(--klun-icon-soft-400)\" }}></i>\n <input placeholder=\"Search assets\" style={{ width: 220, boxSizing: \"border-box\", height: 36, padding: \"0 12px 0 36px\", borderRadius: \"var(--klun-radius-lg)\", border: \"none\", background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-strong-950)\", outline: \"none\" }} />\n </div>\n <Button iconOnly variant=\"neutral\" appearance=\"stroke\" icon={<i className=\"ri-notification-3-line\" />} />\n <Button variant=\"primary\" leadingIcon={<i className=\"ri-arrow-left-right-line\" />}>Trade</Button>\n </header>\n <main style={{ flex: 1, overflow: \"auto\", background: \"var(--klun-bg-weak-50)\" }}>\n <MarketsScreen />\n </main>\n </div>\n </div>\n );\n}\n","// Klun UI marketing — top nav.\nimport { Button } from \"../../index\";\n\nexport function MarketingNav() {\n const links = [\"Product\", \"Solutions\", \"Pricing\", \"Customers\", \"Docs\"];\n return (\n <header style={{ position: \"sticky\", top: 0, zIndex: 20, background: \"color-mix(in srgb, var(--klun-bg-white-0) 80%, transparent)\", backdropFilter: \"blur(12px)\", borderBottom: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ maxWidth: 1120, margin: \"0 auto\", display: \"flex\", alignItems: \"center\", gap: 24, padding: \"14px 24px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <div style={{ width: 32, height: 32, borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <i className=\"ri-shapes-line\" style={{ fontSize: 18 }} />\n </div>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Klun</span>\n </div>\n <nav style={{ display: \"flex\", gap: 4, flex: 1 }}>\n {links.map((l) => (\n <a key={l} href=\"#\" style={{ padding: \"6px 12px\", borderRadius: \"var(--klun-radius-md)\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", textDecoration: \"none\" }}>{l}</a>\n ))}\n </nav>\n <a href=\"#\" style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\", textDecoration: \"none\" }}>Sign in</a>\n <Button variant=\"neutral\" size=\"small\" trailingIcon={<i className=\"ri-arrow-right-line\" />}>Start free</Button>\n </div>\n </header>\n );\n}\n","// Klun UI marketing — page sections.\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { Badge, Button, Card, Accordion, Avatar } from \"../../index\";\n\nfunction Stat({ label, value, delta, trend = \"up\", tint = \"feature\", icon }: {\n label: ReactNode; value: ReactNode; delta?: ReactNode; trend?: \"up\" | \"down\";\n tint?: \"feature\" | \"success\" | \"warning\" | \"information\" | \"error\"; icon?: ReactNode;\n}) {\n const dc = trend === \"up\" ? \"success\" : \"error\";\n return (\n <Card variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\" }}>\n <span style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22, background: `var(--klun-state-${tint}-lighter)`, color: `var(--klun-state-${tint}-base)` }}>{icon}</span>\n {delta != null ? (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 2, height: 20, padding: \"0 6px\", borderRadius: \"var(--klun-radius-capsule)\", font: \"var(--klun-text-label-xs)\", background: `var(--klun-state-${dc}-lighter)`, color: `var(--klun-state-${dc}-base)` }}>\n <i className={trend === \"up\" ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} style={{ fontSize: 14 }} />{delta}\n </span>\n ) : null}\n </div>\n <div style={{ marginTop: 16, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{label}</div>\n <div style={{ marginTop: 2, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>{value}</div>\n </Card>\n );\n}\n\ninterface Feature {\n icon: string;\n t: string;\n d: string;\n}\n\ninterface PricingTier {\n name: string;\n price: string;\n note: string;\n feats: string[];\n cta: string;\n featured: boolean;\n}\n\ninterface FooterColumn {\n h: string;\n l: string[];\n}\n\nexport function MarketingSections() {\n const wrap: CSSProperties = { maxWidth: 1120, margin: \"0 auto\", padding: \"0 24px\" };\n\n const features: Feature[] = [\n { icon: \"ri-contrast-drop-line\", t: \"Semantic tokens\", d: \"Every color, radius and space is a named token that re-themes in one line.\" },\n { icon: \"ri-moon-clear-line\", t: \"Dark mode built-in\", d: \"Light and dark resolve automatically — no duplicate components.\" },\n { icon: \"ri-palette-line\", t: \"Four accent themes\", d: \"Blue, purple, orange or green. Switch with a single data attribute.\" },\n { icon: \"ri-puzzle-2-line\", t: \"50+ components\", d: \"Buttons to command menus, all composable and accessible.\" },\n { icon: \"ri-layout-grid-line\", t: \"Product templates\", d: \"Dashboards, AI chat and trading screens ready to fork.\" },\n { icon: \"ri-code-s-slash-line\", t: \"Figma to code\", d: \"Tokens and structure map straight to your codebase.\" },\n ];\n\n const tiers: PricingTier[] = [\n { name: \"Starter\", price: \"$0\", note: \"for solo makers\", feats: [\"Core tokens\", \"30 components\", \"Community support\"], cta: \"Get started\", featured: false },\n { name: \"Pro\", price: \"$29\", note: \"per editor / month\", feats: [\"All 50+ components\", \"Product templates\", \"Dark mode & themes\", \"Priority support\"], cta: \"Start free trial\", featured: true },\n { name: \"Team\", price: \"Custom\", note: \"for organizations\", feats: [\"Everything in Pro\", \"SSO & roles\", \"Design ops review\", \"SLA\"], cta: \"Contact sales\", featured: false },\n ];\n\n const footerColumns: FooterColumn[] = [\n { h: \"Product\", l: [\"Components\", \"Tokens\", \"Templates\", \"Changelog\"] },\n { h: \"Company\", l: [\"About\", \"Careers\", \"Blog\", \"Contact\"] },\n { h: \"Legal\", l: [\"Privacy\", \"Terms\", \"License\"] },\n ];\n\n return (\n <main>\n {/* Hero */}\n <section style={{ ...wrap, textAlign: \"center\", padding: \"80px 24px 64px\" }}>\n <div style={{ display: \"inline-flex\", marginBottom: 20 }}>\n <Badge color=\"purple\" variant=\"lighter\" leadingIcon={<i className=\"ri-sparkling-2-fill\" />}>Klun UI 2.0 is here</Badge>\n </div>\n <h1 style={{ margin: \"0 auto\", maxWidth: 760, font: \"var(--klun-text-title-h1)\", letterSpacing: \"var(--klun-title-h1-tracking)\", color: \"var(--klun-text-strong-950)\" }}>\n The design system that ships with you\n </h1>\n <p style={{ margin: \"20px auto 0\", maxWidth: 560, font: \"var(--klun-text-paragraph-lg)\", color: \"var(--klun-text-sub-600)\" }}>\n Tokens, components and full product templates — themeable, dark-mode ready, and built to move from Figma to production without the redraw.\n </p>\n <div style={{ display: \"flex\", gap: 12, justifyContent: \"center\", marginTop: 28 }}>\n <Button variant=\"primary\" size=\"large\" trailingIcon={<i className=\"ri-arrow-right-line\" />}>Start building free</Button>\n <Button variant=\"neutral\" appearance=\"stroke\" size=\"large\" leadingIcon={<i className=\"ri-github-fill\" />}>View on GitHub</Button>\n </div>\n <div style={{ marginTop: 40, height: 280, borderRadius: \"var(--klun-radius-3xl)\", background: \"linear-gradient(180deg, var(--klun-bg-weak-50), var(--klun-bg-white-0))\", boxShadow: \"var(--klun-shadow-lg), inset 0 0 0 1px var(--klun-stroke-soft-200)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", color: \"var(--klun-text-disabled-300)\" }}>\n <i className=\"ri-layout-masonry-line\" style={{ fontSize: 56 }} />\n </div>\n </section>\n\n {/* Social proof */}\n <section style={{ ...wrap, padding: \"8px 24px 56px\" }}>\n <p style={{ textAlign: \"center\", font: \"var(--klun-text-subheading-xs)\", letterSpacing: \"var(--klun-subheading-xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", marginBottom: 20 }}>Trusted by teams at</p>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 40, justifyContent: \"center\", alignItems: \"center\", color: \"var(--klun-text-disabled-300)\" }}>\n {[\"ri-google-fill\", \"ri-microsoft-fill\", \"ri-slack-fill\", \"ri-notion-fill\", \"ri-figma-fill\", \"ri-amazon-fill\"].map((i) => (\n <i key={i} className={i} style={{ fontSize: 30 }} />\n ))}\n </div>\n </section>\n\n {/* Stats */}\n <section style={{ ...wrap, padding: \"16px 24px 64px\" }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\", gap: 16 }}>\n <Stat label=\"Components\" value=\"50+\" delta=\"2.0 release\" trend=\"up\" tint=\"feature\" icon={<i className=\"ri-puzzle-2-line\" />} />\n <Stat label=\"Design tokens\" value=\"700+\" delta=\"9 collections\" trend=\"up\" tint=\"information\" icon={<i className=\"ri-palette-line\" />} />\n <Stat label=\"Icons\" value=\"4,200+\" delta=\"line & fill\" trend=\"up\" tint=\"success\" icon={<i className=\"ri-shapes-line\" />} />\n <Stat label=\"Themes\" value=\"4 + dark\" delta=\"instant\" trend=\"up\" tint=\"warning\" icon={<i className=\"ri-contrast-2-line\" />} />\n </div>\n </section>\n\n {/* Features */}\n <section style={{ ...wrap, padding: \"56px 24px\" }}>\n <div style={{ textAlign: \"center\", maxWidth: 560, margin: \"0 auto 40px\" }}>\n <h2 style={{ margin: 0, font: \"var(--klun-text-title-h3)\", letterSpacing: \"var(--klun-title-h3-tracking)\", color: \"var(--klun-text-strong-950)\" }}>Everything you need to design fast</h2>\n <p style={{ margin: \"12px 0 0\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\" }}>One coherent system from the smallest token to the full screen.</p>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(3, 1fr)\", gap: 16 }}>\n {features.map((f) => (\n <Card key={f.t} variant=\"stroke\" padding={24}>\n <div style={{ width: 40, height: 40, borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-primary-lighter)\", color: \"var(--klun-primary-base)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 22, marginBottom: 16 }}>\n <i className={f.icon} />\n </div>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 6 }}>{f.t}</div>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{f.d}</p>\n </Card>\n ))}\n </div>\n </section>\n\n {/* Pricing */}\n <section style={{ ...wrap, padding: \"56px 24px\" }}>\n <div style={{ textAlign: \"center\", marginBottom: 40 }}>\n <h2 style={{ margin: 0, font: \"var(--klun-text-title-h3)\", letterSpacing: \"var(--klun-title-h3-tracking)\", color: \"var(--klun-text-strong-950)\" }}>Simple, fair pricing</h2>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(3, 1fr)\", gap: 16, alignItems: \"start\" }}>\n {tiers.map((p) => (\n <div key={p.name} style={{\n borderRadius: \"var(--klun-radius-3xl)\", padding: 28,\n background: p.featured ? \"var(--klun-bg-strong-950)\" : \"var(--klun-bg-white-0)\",\n color: p.featured ? \"var(--klun-static-static-white)\" : \"var(--klun-text-strong-950)\",\n boxShadow: p.featured ? \"var(--klun-shadow-lg)\" : \"inset 0 0 0 1px var(--klun-stroke-soft-200)\",\n }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\" }}>{p.name}</span>\n {p.featured ? <Badge color=\"purple\" variant=\"filled\" size=\"small\">Popular</Badge> : null}\n </div>\n <div style={{ marginTop: 16, display: \"flex\", alignItems: \"baseline\", gap: 6 }}>\n <span style={{ font: \"var(--klun-text-title-h2)\", letterSpacing: \"var(--klun-title-h2-tracking)\" }}>{p.price}</span>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", opacity: .7 }}>{p.note}</span>\n </div>\n <div style={{ margin: \"20px 0\", display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {p.feats.map((f) => (\n <div key={f} style={{ display: \"flex\", alignItems: \"center\", gap: 8, font: \"var(--klun-text-paragraph-sm)\", opacity: p.featured ? .9 : 1 }}>\n <i className=\"ri-checkbox-circle-fill\" style={{ fontSize: 18, color: p.featured ? \"var(--klun-static-static-white)\" : \"var(--klun-state-success-base)\" }} />{f}\n </div>\n ))}\n </div>\n <button style={{\n width: \"100%\", height: 44, border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", font: \"var(--klun-text-label-md)\",\n background: p.featured ? \"var(--klun-static-static-white)\" : \"var(--klun-primary-base)\",\n color: p.featured ? \"var(--klun-static-static-black)\" : \"var(--klun-static-static-white)\",\n }}>{p.cta}</button>\n </div>\n ))}\n </div>\n </section>\n\n {/* Testimonial */}\n <section style={{ ...wrap, padding: \"56px 24px\" }}>\n <Card variant=\"flat\" padding={40} style={{ textAlign: \"center\", borderRadius: \"var(--klun-radius-4xl)\" }}>\n <div style={{ display: \"flex\", justifyContent: \"center\", gap: 4, color: \"var(--klun-state-away-base)\", marginBottom: 16 }}>\n {[0, 1, 2, 3, 4].map((i) => <i key={i} className=\"ri-star-fill\" style={{ fontSize: 20 }} />)}\n </div>\n <p style={{ margin: \"0 auto\", maxWidth: 680, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\", fontFamily: \"var(--klun-font-display)\" }}>\n “We replaced three internal libraries with Klun UI and shipped our dashboard a month early. The token system alone paid for itself.”\n </p>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", gap: 12, marginTop: 24 }}>\n <Avatar size=\"48\" initials=\"SW\" color=\"purple\" />\n <div style={{ textAlign: \"left\" }}>\n <div style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Sophia Williams</div>\n <div style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>Head of Design, Northwind</div>\n </div>\n </div>\n </Card>\n </section>\n\n {/* FAQ */}\n <section style={{ maxWidth: 720, margin: \"0 auto\", padding: \"56px 24px\" }}>\n <h2 style={{ margin: \"0 0 28px\", textAlign: \"center\", font: \"var(--klun-text-title-h3)\", letterSpacing: \"var(--klun-title-h3-tracking)\", color: \"var(--klun-text-strong-950)\" }}>Frequently asked</h2>\n <Accordion defaultOpen=\"a\" items={[\n { id: \"a\", title: \"Is Klun UI free to use?\", content: \"The Starter tier with core tokens and 30 components is free forever. Pro unlocks the full component set, templates and themes.\" },\n { id: \"b\", title: \"Does it work with my framework?\", content: \"Components ship as framework-agnostic patterns driven by CSS custom properties — drop the tokens into React, Vue, Svelte or plain HTML.\" },\n { id: \"c\", title: \"Can I customize the theme?\", content: \"Yes. Swap the accent (blue/purple/orange/green) and neutral ramp (gray/slate) with a single data attribute, or override any token.\" },\n { id: \"d\", title: \"Do you offer dark mode?\", content: \"Dark mode is built in. Set data-theme=\\\"dark\\\" and every component re-themes through its semantic tokens.\" },\n ]} />\n </section>\n\n {/* CTA */}\n <section style={{ ...wrap, padding: \"40px 24px 80px\" }}>\n <div style={{ borderRadius: \"var(--klun-radius-4xl)\", padding: \"56px 24px\", textAlign: \"center\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-static-static-white)\" }}>\n <h2 style={{ margin: 0, font: \"var(--klun-text-title-h2)\", letterSpacing: \"var(--klun-title-h2-tracking)\" }}>Start designing in harmony</h2>\n <p style={{ margin: \"12px auto 0\", maxWidth: 480, font: \"var(--klun-text-paragraph-lg)\", opacity: .8 }}>Free to start. No credit card required.</p>\n <div style={{ display: \"flex\", gap: 12, justifyContent: \"center\", marginTop: 28 }}>\n <button style={{ height: 48, padding: \"0 24px\", border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", font: \"var(--klun-text-label-md)\", background: \"var(--klun-static-static-white)\", color: \"var(--klun-static-static-black)\" }}>Start free</button>\n <button style={{ height: 48, padding: \"0 24px\", border: \"none\", borderRadius: \"var(--klun-radius-xl)\", cursor: \"pointer\", font: \"var(--klun-text-label-md)\", background: \"var(--klun-alpha-white-alpha-16)\", color: \"var(--klun-static-static-white)\" }}>Book a demo</button>\n </div>\n </div>\n </section>\n\n {/* Footer */}\n <footer style={{ borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <div style={{ ...wrap, display: \"flex\", gap: 24, flexWrap: \"wrap\", justifyContent: \"space-between\", padding: \"40px 24px\" }}>\n <div style={{ maxWidth: 260 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, marginBottom: 12 }}>\n <div style={{ width: 28, height: 28, borderRadius: \"var(--klun-radius-md)\", background: \"var(--klun-bg-strong-950)\", color: \"var(--klun-text-white-0)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}><i className=\"ri-shapes-line\" style={{ fontSize: 16 }} /></div>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Klun</span>\n </div>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>The design system that ships with you.</p>\n </div>\n {footerColumns.map((c) => (\n <div key={c.h}>\n <div style={{ font: \"var(--klun-text-subheading-xs)\", letterSpacing: \"var(--klun-subheading-xs-tracking)\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", marginBottom: 12 }}>{c.h}</div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n {c.l.map((x) => <a key={x} href=\"#\" style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\", textDecoration: \"none\" }}>{x}</a>)}\n </div>\n </div>\n ))}\n </div>\n <div style={{ ...wrap, display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", padding: \"20px 24px\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>© 2026 Klun. All rights reserved.</span>\n <div style={{ display: \"flex\", gap: 14, color: \"var(--klun-icon-soft-400)\" }}>\n {[\"ri-twitter-x-fill\", \"ri-github-fill\", \"ri-linkedin-fill\"].map((i) => <i key={i} className={i} style={{ fontSize: 18 }} />)}\n </div>\n </div>\n </footer>\n </main>\n );\n}\n","// Klun UI marketing template — SaaS landing page composition.\nimport { MarketingNav } from \"./MarketingNav\";\nimport { MarketingSections } from \"./MarketingSections\";\n\n/** Marketing site starting point — hero, features, pricing, FAQ, footer. */\nexport function MarketingTemplate() {\n return (\n <div>\n <MarketingNav />\n <MarketingSections />\n </div>\n );\n}\n","// Klun UI calendar template — month grid with period nav, filters, event chips\n// and an agenda list. Single-page composition built from klun-ui components.\nimport { useState } from \"react\";\nimport {\n HorizontalFilter,\n Button,\n SegmentedControl,\n AvatarGroup,\n Chip,\n ContentLabel,\n} from \"../../index\";\nimport type { ChipColor } from \"../../index\";\n\ninterface Category {\n color: ChipColor;\n label: string;\n}\n\nconst DOW = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\nconst CAT: Record<string, Category> = {\n meeting: { color: \"blue\", label: \"Meeting\" },\n focus: { color: \"purple\", label: \"Focus\" },\n review: { color: \"green\", label: \"Review\" },\n travel: { color: \"orange\", label: \"Travel\" },\n};\n\ninterface DayEvent {\n c: keyof typeof CAT;\n t: string;\n}\n\n// March 2026 starts on a Sunday; offset so Monday-first grid leads with 6 blanks.\nconst EVENTS: Record<number, DayEvent[]> = {\n 3: [{ c: \"meeting\", t: \"Standup\" }],\n 4: [{ c: \"focus\", t: \"Design review\" }, { c: \"review\", t: \"PR #482\" }],\n 6: [{ c: \"travel\", t: \"Flight SFO\" }],\n 9: [{ c: \"meeting\", t: \"1:1 Mia\" }],\n 12: [{ c: \"meeting\", t: \"Roadmap\" }, { c: \"focus\", t: \"Spec draft\" }, { c: \"review\", t: \"QA pass\" }],\n 17: [{ c: \"review\", t: \"Release\" }],\n 18: [{ c: \"focus\", t: \"Deep work\" }],\n 20: [{ c: \"meeting\", t: \"All-hands\" }],\n 24: [{ c: \"travel\", t: \"Offsite\" }],\n 25: [{ c: \"travel\", t: \"Offsite\" }],\n 27: [{ c: \"meeting\", t: \"Demo day\" }],\n};\n\ninterface DayCellProps {\n day: number;\n today: boolean;\n}\n\nfunction DayCell({ day, today }: DayCellProps) {\n const evs = EVENTS[day] || [];\n return (\n <div style={{ minHeight: 116, padding: 8, background: \"var(--klun-bg-white-0)\", boxShadow: \"inset -1px -1px 0 var(--klun-stroke-soft-200)\", display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <span style={{\n alignSelf: \"flex-start\", display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\",\n minWidth: 24, height: 24, padding: \"0 6px\", borderRadius: \"var(--klun-radius-pill)\",\n font: \"var(--klun-text-label-xs)\", fontVariantNumeric: \"tabular-nums\",\n background: today ? \"var(--klun-primary-base)\" : \"transparent\",\n color: today ? \"var(--klun-static-static-white)\" : \"var(--klun-text-sub-600)\",\n }}>{day}</span>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n {evs.slice(0, 3).map((e, i) => {\n const cat = CAT[e.c];\n return (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 6, padding: \"3px 6px\", borderRadius: \"var(--klun-radius-sm)\", background: `var(--klun-${cat.color}-50)`, font: \"var(--klun-text-label-xs)\", color: `var(--klun-${cat.color}-600, var(--klun-text-sub-600))`, overflow: \"hidden\", whiteSpace: \"nowrap\", textOverflow: \"ellipsis\" }}>\n <span style={{ width: 6, height: 6, borderRadius: \"var(--klun-radius-pill)\", background: `var(--klun-${cat.color}-500)`, flex: \"none\" }} />\n <span style={{ overflow: \"hidden\", textOverflow: \"ellipsis\" }}>{e.t}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface AgendaEntry {\n t: string;\n time: string;\n c: keyof typeof CAT;\n}\n\nconst AGENDA: AgendaEntry[] = [\n { t: \"Roadmap planning\", time: \"10:00 – 11:00\", c: \"meeting\" },\n { t: \"Spec draft\", time: \"13:30 – 15:00\", c: \"focus\" },\n { t: \"QA pass\", time: \"16:00 – 16:30\", c: \"review\" },\n];\n\n/** Calendar starting point — month grid, period nav, filters and agenda. */\nexport function CalendarTemplate() {\n const [filter, setFilter] = useState(\"all\");\n const [view, setView] = useState(\"month\");\n // 6 leading blanks (March 1 2026 = Sunday, Monday-first grid), 31 days.\n const cells: (number | null)[] = [...Array<null>(6).fill(null), ...Array.from({ length: 31 }, (_, i) => i + 1)];\n return (\n <div style={{ maxWidth: 1120, margin: \"0 auto\", padding: \"40px 32px 80px\" }}>\n <header style={{ display: \"flex\", alignItems: \"flex-start\", gap: 16, width: \"100%\", padding: \"0 0 20px\", boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4, flex: 1, minWidth: 0 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-0.01em\" }}>Calendar</h1>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>March 2026 · 11 events this month</p>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flex: \"none\" }}><Button leadingIcon={<i className=\"ri-add-line\" />}>New event</Button></div>\n </header>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16, flexWrap: \"wrap\", margin: \"24px 0 16px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <div style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6, height: 36, padding: \"0 4px 0 10px\", borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <button type=\"button\" aria-label=\"Previous period\" onClick={() => {}} style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 28, height: 28, border: \"none\", background: \"transparent\", color: \"var(--klun-icon-sub-600)\", cursor: \"pointer\", fontSize: 18, borderRadius: \"var(--klun-radius-sm)\" }}><i className=\"ri-arrow-left-s-line\" /></button>\n <i className=\"ri-calendar-line\" style={{ fontSize: 18, color: \"var(--klun-icon-soft-400)\" }} />\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\", whiteSpace: \"nowrap\", padding: \"0 2px\" }}>Mar 1<span style={{ color: \"var(--klun-text-soft-400)\" }}>→</span>Mar 31</span>\n <button type=\"button\" aria-label=\"Next period\" onClick={() => {}} style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 28, height: 28, border: \"none\", background: \"transparent\", color: \"var(--klun-icon-sub-600)\", cursor: \"pointer\", fontSize: 18, borderRadius: \"var(--klun-radius-sm)\" }}><i className=\"ri-arrow-right-s-line\" /></button>\n </div>\n <Button variant=\"neutral\" appearance=\"ghost\" size=\"small\">Today</Button>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <AvatarGroup variant=\"stroke\" size=\"24\" avatars={[{ initials: \"AT\", color: \"blue\" }, { initials: \"MB\", color: \"green\" }, { initials: \"JK\", color: \"orange\" }, { initials: \"RP\" }]} />\n <SegmentedControl value={view} onChange={setView} items={[{ value: \"month\", label: \"Month\" }, { value: \"week\", label: \"Week\" }, { value: \"day\", label: \"Day\" }]} />\n </div>\n </div>\n <div style={{ marginBottom: 16 }}>\n <HorizontalFilter value={filter} onChange={setFilter} items={[\n { value: \"all\", label: \"All\", count: 11 },\n { value: \"meeting\", label: \"Meetings\", count: 5, icon: <i className=\"ri-group-line\" /> },\n { value: \"focus\", label: \"Focus\", count: 3 },\n { value: \"review\", label: \"Reviews\", count: 3 },\n { value: \"travel\", label: \"Travel\", count: 3 },\n ]} />\n </div>\n <div style={{ borderRadius: \"var(--klun-radius-2xl)\", overflow: \"hidden\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", background: \"var(--klun-bg-white-0)\" }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(7, 1fr)\" }}>\n {DOW.map((d) => (\n <div key={d} style={{ padding: \"10px 8px\", font: \"var(--klun-text-subheading-2xs, var(--klun-text-label-xs))\", letterSpacing: \".06em\", textTransform: \"uppercase\", color: \"var(--klun-text-soft-400)\", background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset -1px -1px 0 var(--klun-stroke-soft-200)\" }}>{d}</div>\n ))}\n {cells.map((day, i) => day == null\n ? <div key={i} style={{ minHeight: 116, background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset -1px -1px 0 var(--klun-stroke-soft-200)\" }} />\n : <DayCell key={i} day={day} today={day === 12} />)}\n </div>\n </div>\n <div style={{ marginTop: 28 }}>\n <ContentLabel icon={<i className=\"ri-calendar-event-line\" />}>Up next · today</ContentLabel>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8, marginTop: 12 }}>\n {AGENDA.map((e, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 14, padding: \"12px 16px\", borderRadius: \"var(--klun-radius-xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <span style={{ width: 4, height: 36, borderRadius: \"var(--klun-radius-pill)\", background: `var(--klun-${CAT[e.c].color}-500)`, flex: \"none\" }} />\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{e.t}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{e.time}</div>\n </div>\n <Chip color={CAT[e.c].color} dot>{CAT[e.c].label}</Chip>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","// Klun UI pricing template — plan toggle, tier cards and an FAQ. Single-page\n// composition built from klun-ui components.\nimport { useState } from \"react\";\nimport {\n SegmentedControl,\n Badge,\n Button,\n ContentLabel,\n Accordion,\n Alert,\n Divider,\n} from \"../../index\";\nimport type { AccordionItem } from \"../../index\";\n\ntype Cycle = \"monthly\" | \"yearly\";\n\ninterface Plan {\n id: string;\n name: string;\n tagline: string;\n monthly: number | null;\n yearly: number | null;\n cta: string;\n featured?: boolean;\n features: string[];\n}\n\nconst PLANS: Plan[] = [\n {\n id: \"starter\", name: \"Starter\", tagline: \"For individuals getting started.\", monthly: 0, yearly: 0, cta: \"Start for free\",\n features: [\"1 workspace\", \"Up to 3 projects\", \"Community support\", \"1 GB storage\"],\n },\n {\n id: \"pro\", name: \"Pro\", tagline: \"For growing teams that ship fast.\", monthly: 24, yearly: 19, cta: \"Start 14-day trial\", featured: true,\n features: [\"Unlimited workspaces\", \"Unlimited projects\", \"Priority support\", \"100 GB storage\", \"Advanced analytics\", \"Custom roles\"],\n },\n {\n id: \"enterprise\", name: \"Enterprise\", tagline: \"For organizations at scale.\", monthly: null, yearly: null, cta: \"Contact sales\",\n features: [\"Everything in Pro\", \"SSO & SCIM\", \"Audit logs\", \"Dedicated manager\", \"99.9% SLA\", \"Custom contracts\"],\n },\n];\n\ninterface PriceProps {\n plan: Plan;\n cycle: Cycle;\n}\n\nfunction Price({ plan, cycle }: PriceProps) {\n if (plan.monthly == null) {\n return <div style={{ font: \"var(--klun-text-title-h3)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.02em\" }}>Custom</div>;\n }\n const amt = cycle === \"yearly\" ? plan.yearly : plan.monthly;\n return (\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 4 }}>\n <span style={{ font: \"var(--klun-text-title-h2)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.02em\" }}>${amt}</span>\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>/ mo</span>\n </div>\n );\n}\n\ninterface PlanCardProps {\n plan: Plan;\n cycle: Cycle;\n}\n\nfunction PlanCard({ plan, cycle }: PlanCardProps) {\n const featured = plan.featured;\n return (\n <div style={{\n position: \"relative\", display: \"flex\", flexDirection: \"column\", gap: 20, padding: 28, flex: 1, minWidth: 0,\n borderRadius: \"var(--klun-radius-4xl, 24px)\", background: \"var(--klun-bg-white-0)\",\n boxShadow: featured\n ? \"inset 0 0 0 2px var(--klun-primary-base), var(--klun-shadow-lg, 0 24px 48px -16px rgba(14,18,27,.16))\"\n : \"inset 0 0 0 1px var(--klun-stroke-soft-200), var(--klun-shadow-xs, 0 1px 2px rgba(10,13,20,.03))\",\n }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>{plan.name}</span>\n {featured ? <Badge color=\"blue\" variant=\"lighter\">Most popular</Badge> : null}\n </div>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\", minHeight: 40, textWrap: \"pretty\" }}>{plan.tagline}</p>\n <Price plan={plan} cycle={cycle} />\n {featured\n ? <Button kind=\"fancy\" fullWidth>{plan.cta}</Button>\n : <Button fullWidth variant=\"neutral\" appearance=\"stroke\">{plan.cta}</Button>}\n <Divider />\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n {plan.features.map((f, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 10, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n <i className=\"ri-check-line\" style={{ fontSize: 18, color: \"var(--klun-state-success-base)\" }} />{f}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nconst FAQ: AccordionItem[] = [\n { id: \"f1\", title: \"Can I change plans later?\", content: \"Yes — upgrade or downgrade anytime. Changes are prorated to your billing cycle.\" },\n { id: \"f2\", title: \"Do you offer a free trial?\", content: \"Every paid plan includes a 14-day trial. No card required to start.\" },\n { id: \"f3\", title: \"What payment methods do you accept?\", content: \"All major cards and ACH for annual plans. Enterprise can pay by invoice.\" },\n { id: \"f4\", title: \"Is there a discount for annual billing?\", content: \"Annual billing saves roughly 20% versus paying monthly.\" },\n];\n\n/** Pricing starting point — plan toggle, tier cards and an FAQ. */\nexport function PricingTemplate() {\n const [cycle, setCycle] = useState<Cycle>(\"monthly\");\n return (\n <div style={{ maxWidth: 1080, margin: \"0 auto\", padding: \"72px 32px 96px\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 16, textAlign: \"center\", marginBottom: 40 }}>\n <ContentLabel color=\"blue\" icon={<i className=\"ri-price-tag-3-line\" />}>Pricing</ContentLabel>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h1)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.03em\", maxWidth: 640, textWrap: \"balance\" }}>Simple pricing that scales with you</h1>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-lg)\", color: \"var(--klun-text-sub-600)\", maxWidth: 520, textWrap: \"pretty\" }}>Start free, then pick a plan when your team is ready. No hidden fees.</p>\n <div style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10, marginTop: 8 }}>\n <SegmentedControl\n value={cycle} onChange={(v) => setCycle(v as Cycle)}\n items={[{ value: \"monthly\", label: \"Monthly\" }, { value: \"yearly\", label: \"Yearly\" }]}\n />\n <Badge color=\"green\" variant=\"lighter\">Save 20%</Badge>\n </div>\n </div>\n <div style={{ display: \"flex\", gap: 20, alignItems: \"stretch\", flexWrap: \"wrap\" }}>\n {PLANS.map((p) => <PlanCard key={p.id} plan={p} cycle={cycle} />)}\n </div>\n <Alert status=\"information\" title=\"Education & nonprofits\" icon={<i className=\"ri-lightbulb-line\" />} style={{ marginTop: 24 }}>Qualifying teams get 50% off any paid plan — reach out to sales to verify eligibility.</Alert>\n <div style={{ marginTop: 72 }}>\n <h2 style={{ margin: \"0 0 8px\", font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-.02em\", textAlign: \"center\" }}>Frequently asked questions</h2>\n <p style={{ margin: \"0 0 28px\", font: \"var(--klun-text-paragraph-md)\", color: \"var(--klun-text-sub-600)\", textAlign: \"center\" }}>Everything you need to know about plans and billing.</p>\n <div style={{ maxWidth: 720, margin: \"0 auto\" }}>\n <Accordion items={FAQ} />\n </div>\n </div>\n </div>\n );\n}\n","// Klun UI settings template — tabbed account settings with a profile form,\n// notification toggles and integrations. Single-page composition built from\n// klun-ui components.\nimport { useState } from \"react\";\nimport type { ChangeEvent, ReactNode } from \"react\";\nimport {\n Alert,\n Tabs,\n Button,\n Input,\n Textarea,\n Label,\n Switch,\n SelectMenu,\n ImageUpload,\n ContentLabel,\n CharacterCounter,\n Badge,\n} from \"../../index\";\nimport type { TabItem } from \"../../index\";\n\ninterface RowProps {\n label: ReactNode;\n hint?: ReactNode;\n children: ReactNode;\n top?: boolean;\n}\n\nfunction Row({ label, hint, children, top }: RowProps) {\n return (\n <div style={{ display: \"grid\", gridTemplateColumns: \"240px 1fr\", gap: 24, padding: \"20px 0\", alignItems: top ? \"flex-start\" : \"center\", boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Label>{label}</Label>\n {hint ? <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\", textWrap: \"pretty\" }}>{hint}</span> : null}\n </div>\n <div style={{ minWidth: 0 }}>{children}</div>\n </div>\n );\n}\n\nfunction Panel({ children }: { children: ReactNode }) {\n return <div style={{ background: \"var(--klun-bg-white-0)\", borderRadius: \"var(--klun-radius-2xl)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", padding: \"8px 24px 24px\" }}>{children}</div>;\n}\n\nfunction ProfileTab() {\n const [bio, setBio] = useState(\"Product designer focused on systems and tooling.\");\n return (\n <Panel>\n <Row label=\"Photo\" hint=\"PNG or JPG, up to 5MB.\" top>\n <ImageUpload label=\"Upload new photo\" hint=\"Recommended 400×400px\" onRemove={() => {}} src=\"\" />\n </Row>\n <Row label=\"Full name\">\n <div style={{ display: \"flex\", gap: 12 }}>\n <Input defaultValue=\"Arthur\" placeholder=\"First name\" />\n <Input defaultValue=\"Taylor\" placeholder=\"Last name\" />\n </div>\n </Row>\n <Row label=\"Email address\" hint=\"Used for sign-in and notifications.\">\n <Input type=\"email\" defaultValue=\"arthur@klunui.com\" leadingIcon={<i className=\"ri-mail-line\" />} />\n </Row>\n <Row label=\"Role\">\n <SelectMenu value=\"design\" onChange={() => {}} options={[\n { value: \"design\", label: \"Designer\", icon: <i className=\"ri-pencil-ruler-2-line\" /> },\n { value: \"eng\", label: \"Engineer\", icon: <i className=\"ri-code-s-slash-line\" /> },\n { value: \"pm\", label: \"Product manager\", icon: <i className=\"ri-compass-3-line\" /> },\n ]} />\n </Row>\n <Row label=\"Bio\" hint=\"A short description for your profile.\" top>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Textarea value={bio} onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setBio(e.target.value)} rows={3} maxLength={160} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}><CharacterCounter value={bio.length} max={160} /></div>\n </div>\n </Row>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 10, paddingTop: 20 }}>\n <Button variant=\"neutral\" appearance=\"stroke\">Cancel</Button>\n <Button>Save changes</Button>\n </div>\n </Panel>\n );\n}\n\ninterface NotificationItemDef {\n k: string;\n label: string;\n hint: string;\n}\n\nfunction NotificationsTab() {\n const [s, setS] = useState<Record<string, boolean>>({ product: true, weekly: true, mentions: true, security: true, marketing: false });\n const set = (k: string) => setS((p) => ({ ...p, [k]: !p[k] }));\n const items: NotificationItemDef[] = [\n { k: \"product\", label: \"Product updates\", hint: \"New features and improvements.\" },\n { k: \"weekly\", label: \"Weekly digest\", hint: \"A summary of activity every Monday.\" },\n { k: \"mentions\", label: \"Mentions & comments\", hint: \"When someone @mentions you.\" },\n { k: \"security\", label: \"Security alerts\", hint: \"Sign-ins and password changes.\" },\n { k: \"marketing\", label: \"Marketing emails\", hint: \"Tips, offers and news.\" },\n ];\n return (\n <Panel>\n <ContentLabel style={{ paddingTop: 20, display: \"block\" }}>Email</ContentLabel>\n {items.map((it) => (\n <Row key={it.k} label={it.label} hint={it.hint}>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>\n <Switch checked={s[it.k]} onChange={() => set(it.k)} />\n </div>\n </Row>\n ))}\n <Alert status=\"information\" icon={<i className=\"ri-information-2-line\" />} style={{ marginTop: 20 }}>Security alerts can't be turned off — they protect your account.</Alert>\n </Panel>\n );\n}\n\ninterface IntegrationDef {\n k: string;\n name: string;\n icon: string;\n desc: string;\n}\n\nfunction IntegrationsTab() {\n const [c, setC] = useState<Record<string, boolean>>({ slack: true, github: true, figma: false, linear: false });\n const set = (k: string) => setC((p) => ({ ...p, [k]: !p[k] }));\n const rows: IntegrationDef[] = [\n { k: \"slack\", name: \"Slack\", icon: \"ri-slack-line\", desc: \"Post notifications to a channel.\" },\n { k: \"github\", name: \"GitHub\", icon: \"ri-github-line\", desc: \"Link commits and pull requests.\" },\n { k: \"figma\", name: \"Figma\", icon: \"ri-figma-line\", desc: \"Embed frames and prototypes.\" },\n { k: \"linear\", name: \"Linear\", icon: \"ri-flashlight-line\", desc: \"Sync issues two ways.\" },\n ];\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n {rows.map((r) => (\n <div key={r.k} style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: 16, borderRadius: \"var(--klun-radius-2xl)\", background: \"var(--klun-bg-white-0)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" }}>\n <span style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", width: 40, height: 40, flex: \"none\", borderRadius: \"var(--klun-radius-lg)\", background: \"var(--klun-bg-weak-50)\", boxShadow: \"inset 0 0 0 1px var(--klun-stroke-soft-200)\", color: \"var(--klun-icon-sub-600)\", fontSize: 22 }}><i className={r.icon} /></span>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, flex: 1, minWidth: 0 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.name}</span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{r.desc}</span>\n </div>\n <Switch checked={c[r.k]} onChange={() => set(r.k)} />\n </div>\n ))}\n </div>\n );\n}\n\nconst TABS: TabItem[] = [\n { value: \"profile\", label: \"Profile\" },\n { value: \"notifications\", label: \"Notifications\" },\n { value: \"integrations\", label: \"Integrations\", badge: \"4\" },\n];\n\n/** Account settings starting point — tabbed sections, profile form, notifications, integrations. */\nexport function SettingsTemplate() {\n const [tab, setTab] = useState(\"profile\");\n return (\n <div style={{ maxWidth: 880, margin: \"0 auto\", padding: \"48px 32px 80px\" }}>\n <header style={{ display: \"flex\", alignItems: \"flex-start\", gap: 16, width: \"100%\", padding: \"0 0 20px\", boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4, flex: 1, minWidth: 0 }}>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\", letterSpacing: \"-0.01em\" }}>Settings</h1>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>Manage your profile, notifications and connected apps.</p>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flex: \"none\" }}><Badge color=\"green\" variant=\"lighter\" dot>All changes saved</Badge></div>\n </header>\n <div style={{ margin: \"24px 0 28px\" }}>\n <Tabs items={TABS} value={tab} onChange={setTab} />\n </div>\n {tab === \"profile\" ? <ProfileTab /> : tab === \"notifications\" ? <NotificationsTab /> : <IntegrationsTab />}\n </div>\n );\n}\n","// Klun UI · Metronic demo — app-level i18n.\n// klun-ui ships 17 component locale packs (`locales`); this file adds the\n// demo's own copy so the shell can switch language end-to-end: component\n// strings come from the pack, app copy from the dictionary below. Locales\n// without a dictionary fall back to English while components still localise.\nimport type { ReactNode } from \"react\";\nimport { locales, useLocale } from \"../../index\";\n\n/** Locale dictionary keyed by BCP-47 code (matches `Locale.locale`). */\nconst LOCALES_BY_CODE = Object.values(locales).reduce<Record<string, (typeof locales)[\"enUS\"]>>((acc, l) => {\n acc[l.locale] = l;\n return acc;\n}, {});\n\n/** Native names for the language menu. */\nconst NATIVE_NAMES: Record<string, string> = {\n \"en-US\": \"English\",\n \"zh-CN\": \"简体中文\",\n \"zh-TW\": \"繁體中文\",\n \"ja-JP\": \"日本語\",\n \"ko-KR\": \"한국어\",\n \"fr-FR\": \"Français\",\n \"de-DE\": \"Deutsch\",\n \"es-ES\": \"Español\",\n \"pt-BR\": \"Português (BR)\",\n \"ru-RU\": \"Русский\",\n \"ar-SA\": \"العربية\",\n \"it-IT\": \"Italiano\",\n \"nl-NL\": \"Nederlands\",\n \"pl-PL\": \"Polski\",\n \"tr-TR\": \"Türkçe\",\n \"vi-VN\": \"Tiếng Việt\",\n \"id-ID\": \"Bahasa Indonesia\",\n};\n\n/** Every locale the design system ships, as a menu-friendly list. */\nexport const LOCALE_OPTIONS = Object.values(locales).map((l) => ({\n code: l.locale,\n label: NATIVE_NAMES[l.locale] ?? l.locale,\n}));\n\n/** Right-to-left locales — the provider flips the whole layout. */\nexport const RTL_LOCALES = [\"ar-SA\", \"he-IL\", \"fa-IR\"];\n\n/** Resolve a code to its component dictionary (falls back to en-US). */\nexport const localeByCode = (code: string) => LOCALES_BY_CODE[code] ?? locales.enUS;\n\nexport interface DemoPageCopy {\n title: string;\n subtitle: string;\n}\n\nexport interface DemoText {\n nav: Record<string, string>;\n shell: Record<string, string>;\n common: Record<string, string>;\n pages: Record<string, DemoPageCopy>;\n}\n\n/** Demo copy — add a language by copying a block and translating the strings. */\nexport const DEMO_TEXT: Record<string, DemoText> = {\n \"en-US\": {\n nav: {\n dashboard: \"Dashboard\",\n orders: \"Orders\",\n products: \"Products\",\n customers: \"Customers\",\n users: \"Team\",\n roles: \"Roles\",\n roleTree: \"Role tree\",\n departments: \"Departments\",\n tasks: \"Scheduled tasks\",\n audit: \"Audit log\",\n reports: \"Reports\",\n sales: \"Sales\",\n traffic: \"Traffic\",\n settings: \"Settings\",\n },\n shell: {\n search: \"Search or jump to…\",\n newOrder: \"New order\",\n notifications: \"Notifications\",\n markAllRead: \"Mark all as read\",\n noUnread: \"No unread notifications\",\n caughtUp: \"You're all caught up.\",\n notificationSettings: \"Notification settings\",\n help: \"Help\",\n commandPalette: \"Command palette\",\n documentation: \"Documentation\",\n shortcuts: \"Keyboard shortcuts\",\n contactSupport: \"Contact support\",\n appearance: \"Appearance\",\n lightTheme: \"Light theme\",\n darkTheme: \"Dark theme\",\n comfortable: \"Comfortable density\",\n compact: \"Compact density\",\n language: \"Language\",\n signOut: \"Sign out\",\n online: \"Online\",\n twoFA: \"2FA enabled\",\n profilePhoto: \"Profile & photo\",\n billing: \"Billing & plan\",\n teamRoles: \"Team & roles\",\n account: \"Account\",\n },\n common: {\n search: \"Search\",\n export: \"Export\",\n create: \"Create\",\n edit: \"Edit\",\n delete: \"Delete\",\n cancel: \"Cancel\",\n save: \"Save\",\n runNow: \"Run now\",\n refresh: \"Refresh\",\n filters: \"Filters\",\n },\n pages: {\n dashboard: { title: \"Dashboard\", subtitle: \"Welcome back — here's your store today.\" },\n orders: { title: \"Orders\", subtitle: \"Track, filter and fulfil every order in one place.\" },\n products: {\n title: \"Products\",\n subtitle: \"Inventory levels, pricing and availability — full create, edit and delete flows.\",\n },\n customers: { title: \"Customers\", subtitle: \"Segments, spend and engagement across your customer base.\" },\n users: {\n title: \"Team members\",\n subtitle: \"Invite people, assign roles and control access. Roles are managed on the Roles page.\",\n },\n roles: {\n title: \"Roles & permissions\",\n subtitle: \"Control what each role can see and do. Changes apply to every member of the role.\",\n },\n roleTree: {\n title: \"Role hierarchy\",\n subtitle: \"How roles inherit from each other — child roles receive every permission of their parent.\",\n },\n departments: { title: \"Departments\", subtitle: \"Your organisation chart — teams, managers, headcount and budget.\" },\n tasks: { title: \"Scheduled tasks\", subtitle: \"Background jobs, their schedule and the last few runs.\" },\n audit: { title: \"Audit log\", subtitle: \"Every sensitive action, who did it and from where.\" },\n sales: { title: \"Sales report\", subtitle: \"Revenue, channels and the products that drive them.\" },\n traffic: { title: \"Traffic report\", subtitle: \"Sessions, sources and where visitors spend their time.\" },\n settings: { title: \"Settings\", subtitle: \"Your photo, name and public details.\" },\n },\n },\n\n \"zh-CN\": {\n nav: {\n dashboard: \"仪表盘\",\n orders: \"订单\",\n products: \"商品\",\n customers: \"客户\",\n users: \"团队成员\",\n roles: \"角色\",\n roleTree: \"角色树\",\n departments: \"部门树\",\n tasks: \"计划任务\",\n audit: \"审计日志\",\n reports: \"报表\",\n sales: \"销售报表\",\n traffic: \"流量报表\",\n settings: \"设置\",\n },\n shell: {\n search: \"搜索或跳转…\",\n newOrder: \"新建订单\",\n notifications: \"通知\",\n markAllRead: \"全部标为已读\",\n noUnread: \"没有未读通知\",\n caughtUp: \"已全部读完\",\n notificationSettings: \"通知设置\",\n help: \"帮助\",\n commandPalette: \"命令面板\",\n documentation: \"文档\",\n shortcuts: \"键盘快捷键\",\n contactSupport: \"联系支持\",\n appearance: \"外观\",\n lightTheme: \"浅色主题\",\n darkTheme: \"深色主题\",\n comfortable: \"舒适密度\",\n compact: \"紧凑密度\",\n language: \"语言\",\n signOut: \"退出登录\",\n online: \"在线\",\n twoFA: \"已启用两步验证\",\n profilePhoto: \"资料与头像\",\n billing: \"账单与套餐\",\n teamRoles: \"团队与角色\",\n account: \"账户\",\n },\n common: {\n search: \"搜索\",\n export: \"导出\",\n create: \"新建\",\n edit: \"编辑\",\n delete: \"删除\",\n cancel: \"取消\",\n save: \"保存\",\n runNow: \"立即运行\",\n refresh: \"刷新\",\n filters: \"筛选\",\n },\n pages: {\n dashboard: { title: \"仪表盘\", subtitle: \"欢迎回来 — 这是您店铺今天的情况。\" },\n orders: { title: \"订单\", subtitle: \"集中跟踪、筛选并履行每一笔订单。\" },\n products: { title: \"商品\", subtitle: \"库存、价格与上下架 — 新建、编辑、删除全流程。\" },\n customers: { title: \"客户\", subtitle: \"客户分层、消费与活跃度一览。\" },\n users: { title: \"团队成员\", subtitle: \"邀请成员、分配角色并控制权限,角色在“角色”页管理。\" },\n roles: { title: \"角色与权限\", subtitle: \"控制每个角色能看到和能做什么,改动对该角色所有成员生效。\" },\n roleTree: { title: \"角色继承树\", subtitle: \"角色之间的继承关系 — 子角色自动获得父角色的全部权限。\" },\n departments: { title: \"部门树\", subtitle: \"组织架构 — 部门、负责人、人数与预算。\" },\n tasks: { title: \"计划任务\", subtitle: \"后台作业、调度周期与最近的执行记录。\" },\n audit: { title: \"审计日志\", subtitle: \"所有敏感操作、操作人与来源。\" },\n sales: { title: \"销售报表\", subtitle: \"收入、渠道以及带动增长的商品。\" },\n traffic: { title: \"流量报表\", subtitle: \"会话、来源与访客停留情况。\" },\n settings: { title: \"设置\", subtitle: \"您的头像、姓名与公开资料。\" },\n },\n },\n\n \"zh-TW\": {\n nav: {\n dashboard: \"儀表板\",\n orders: \"訂單\",\n products: \"商品\",\n customers: \"客戶\",\n users: \"團隊成員\",\n roles: \"角色\",\n roleTree: \"角色樹\",\n departments: \"部門樹\",\n tasks: \"排程任務\",\n audit: \"稽核日誌\",\n reports: \"報表\",\n sales: \"銷售報表\",\n traffic: \"流量報表\",\n settings: \"設定\",\n },\n shell: {\n search: \"搜尋或跳至…\",\n newOrder: \"新增訂單\",\n notifications: \"通知\",\n markAllRead: \"全部標為已讀\",\n noUnread: \"沒有未讀通知\",\n caughtUp: \"已全部讀完\",\n notificationSettings: \"通知設定\",\n help: \"說明\",\n commandPalette: \"命令面板\",\n documentation: \"文件\",\n shortcuts: \"鍵盤快速鍵\",\n contactSupport: \"聯絡支援\",\n appearance: \"外觀\",\n lightTheme: \"淺色主題\",\n darkTheme: \"深色主題\",\n comfortable: \"舒適密度\",\n compact: \"緊湊密度\",\n language: \"語言\",\n signOut: \"登出\",\n online: \"線上\",\n twoFA: \"已啟用兩步驟驗證\",\n profilePhoto: \"個人資料與大頭貼\",\n billing: \"帳單與方案\",\n teamRoles: \"團隊與角色\",\n account: \"帳號\",\n },\n common: {\n search: \"搜尋\",\n export: \"匯出\",\n create: \"新增\",\n edit: \"編輯\",\n delete: \"刪除\",\n cancel: \"取消\",\n save: \"儲存\",\n runNow: \"立即執行\",\n refresh: \"重新整理\",\n filters: \"篩選\",\n },\n pages: {\n dashboard: { title: \"儀表板\", subtitle: \"歡迎回來 — 這是您商店今天的情況。\" },\n orders: { title: \"訂單\", subtitle: \"集中追蹤、篩選並履行每一筆訂單。\" },\n products: { title: \"商品\", subtitle: \"庫存、價格與上架狀態 — 新增、編輯、刪除全流程。\" },\n customers: { title: \"客戶\", subtitle: \"客戶分層、消費與互動情形一覽。\" },\n users: { title: \"團隊成員\", subtitle: \"邀請成員、指派角色並控管權限,角色於「角色」頁管理。\" },\n roles: { title: \"角色與權限\", subtitle: \"控制每個角色能看到與能做什麼,變更對該角色所有成員生效。\" },\n roleTree: { title: \"角色繼承樹\", subtitle: \"角色之間的繼承關係 — 子角色自動取得父角色的全部權限。\" },\n departments: { title: \"部門樹\", subtitle: \"組織架構 — 部門、主管、人數與預算。\" },\n tasks: { title: \"排程任務\", subtitle: \"背景作業、排程週期與最近的執行紀錄。\" },\n audit: { title: \"稽核日誌\", subtitle: \"所有敏感操作、操作人與來源。\" },\n sales: { title: \"銷售報表\", subtitle: \"營收、通路以及帶動成長的商品。\" },\n traffic: { title: \"流量報表\", subtitle: \"工作階段、來源與訪客停留情形。\" },\n settings: { title: \"設定\", subtitle: \"您的頭像、姓名與公開資料。\" },\n },\n },\n\n \"ja-JP\": {\n nav: {\n dashboard: \"ダッシュボード\",\n orders: \"注文\",\n products: \"商品\",\n customers: \"顧客\",\n users: \"チーム\",\n roles: \"ロール\",\n roleTree: \"ロール階層\",\n departments: \"部署ツリー\",\n tasks: \"定期タスク\",\n audit: \"監査ログ\",\n reports: \"レポート\",\n sales: \"売上\",\n traffic: \"トラフィック\",\n settings: \"設定\",\n },\n shell: {\n search: \"検索またはジャンプ…\",\n newOrder: \"新規注文\",\n notifications: \"通知\",\n markAllRead: \"すべて既読にする\",\n noUnread: \"未読の通知はありません\",\n caughtUp: \"すべて確認済みです\",\n notificationSettings: \"通知設定\",\n help: \"ヘルプ\",\n commandPalette: \"コマンドパレット\",\n documentation: \"ドキュメント\",\n shortcuts: \"キーボードショートカット\",\n contactSupport: \"サポートに問い合わせ\",\n appearance: \"外観\",\n lightTheme: \"ライトテーマ\",\n darkTheme: \"ダークテーマ\",\n comfortable: \"ゆったり表示\",\n compact: \"コンパクト表示\",\n language: \"言語\",\n signOut: \"ログアウト\",\n online: \"オンライン\",\n twoFA: \"2段階認証を有効化済み\",\n profilePhoto: \"プロフィールと写真\",\n billing: \"請求とプラン\",\n teamRoles: \"チームとロール\",\n account: \"アカウント\",\n },\n common: {\n search: \"検索\",\n export: \"エクスポート\",\n create: \"新規作成\",\n edit: \"編集\",\n delete: \"削除\",\n cancel: \"キャンセル\",\n save: \"保存\",\n runNow: \"今すぐ実行\",\n refresh: \"更新\",\n filters: \"フィルター\",\n },\n pages: {\n dashboard: { title: \"ダッシュボード\", subtitle: \"おかえりなさい — 今日のストアの状況です。\" },\n orders: { title: \"注文\", subtitle: \"すべての注文をまとめて追跡・絞り込み・処理できます。\" },\n products: { title: \"商品\", subtitle: \"在庫・価格・公開状態 — 作成、編集、削除の一連のフロー。\" },\n customers: { title: \"顧客\", subtitle: \"セグメント、購入額、エンゲージメントをひと目で。\" },\n users: { title: \"チームメンバー\", subtitle: \"メンバーの招待、ロールの割り当てと権限管理。ロールは「ロール」ページで管理します。\" },\n roles: { title: \"ロールと権限\", subtitle: \"各ロールが見られる範囲と操作を制御します。変更はそのロールの全メンバーに適用されます。\" },\n roleTree: { title: \"ロール階層\", subtitle: \"ロールの継承関係 — 子ロールは親ロールの権限をすべて引き継ぎます。\" },\n departments: { title: \"部署ツリー\", subtitle: \"組織図 — 部署、責任者、人数、予算。\" },\n tasks: { title: \"定期タスク\", subtitle: \"バックグラウンドジョブ、スケジュール、最近の実行履歴。\" },\n audit: { title: \"監査ログ\", subtitle: \"重要な操作、実行者、アクセス元を記録します。\" },\n sales: { title: \"売上レポート\", subtitle: \"売上、チャネル、成長を牽引する商品。\" },\n traffic: { title: \"トラフィックレポート\", subtitle: \"セッション、流入元、滞在時間。\" },\n settings: { title: \"設定\", subtitle: \"写真、名前、公開情報。\" },\n },\n },\n};\n\n/** Demo copy for a locale code — falls back to English. */\nexport const demoTextFor = (code: string): DemoText => DEMO_TEXT[code] ?? DEMO_TEXT[\"en-US\"];\n\n/** Active demo copy — falls back to English for locales without a dictionary. */\nexport function useDemoText(): DemoText {\n const { locale } = useLocale();\n return demoTextFor(locale);\n}\n\nexport interface PageHeaderProps {\n /** Key into `pages`. */\n page: string;\n /** Right-aligned slot for page actions. */\n extra?: ReactNode;\n}\n\n/** Localised `<h1>` + subtitle used at the top of every demo screen. */\nexport function PageHeader({ page, extra }: PageHeaderProps) {\n const t = useDemoText();\n const copy = t.pages[page] ?? { title: page, subtitle: \"\" };\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n gap: 16,\n flexWrap: \"wrap\",\n }}\n >\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n {copy.title}\n </h1>\n {copy.subtitle ? (\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {copy.subtitle}\n </p>\n ) : null}\n </div>\n {extra}\n </div>\n );\n}\n","// Metronic example — app sidebar: brand, navigation (badges, nested groups,\n// hairline section breaks) and the signed-in user card. Labels come from the\n// demo i18n dictionary, so the whole nav follows the active locale.\nimport { useState } from \"react\";\nimport { Avatar } from \"../../index\";\nimport { useDemoText } from \"./i18n\";\n\nexport interface MetronicNavChild {\n key: string;\n /** Optional override — otherwise resolved from the demo dictionary. */\n label?: string;\n}\n\nexport interface MetronicNavItem {\n key: string;\n label?: string;\n /** Remix Icon class, e.g. `ri-dashboard-line`. */\n icon: string;\n badge?: string;\n children?: MetronicNavChild[];\n /** Render a hairline above this item (section break). */\n dividerBefore?: boolean;\n}\n\nexport interface MetronicSidebarProps {\n /** Active item key. */\n active: string;\n onNavigate: (key: string) => void;\n}\n\nconst ITEMS: MetronicNavItem[] = [\n { key: \"dashboard\", icon: \"ri-dashboard-line\" },\n { key: \"orders\", icon: \"ri-shopping-bag-line\", badge: \"5\" },\n { key: \"products\", icon: \"ri-archive-line\" },\n { key: \"customers\", icon: \"ri-team-line\" },\n { key: \"users\", icon: \"ri-user-3-line\", dividerBefore: true },\n { key: \"roles\", icon: \"ri-shield-keyhole-line\" },\n { key: \"roleTree\", icon: \"ri-git-branch-line\" },\n { key: \"departments\", icon: \"ri-node-tree\", dividerBefore: true },\n { key: \"tasks\", icon: \"ri-timer-2-line\" },\n { key: \"audit\", icon: \"ri-file-shield-2-line\" },\n {\n key: \"reports\",\n icon: \"ri-bar-chart-box-line\",\n dividerBefore: true,\n children: [{ key: \"sales\" }, { key: \"traffic\" }],\n },\n { key: \"settings\", icon: \"ri-settings-3-line\" },\n];\n\nexport function MetronicSidebar({ active, onNavigate }: MetronicSidebarProps) {\n const t = useDemoText();\n const [open, setOpen] = useState<Record<string, boolean>>({ reports: true });\n const labelOf = (item: { key: string; label?: string }) => item.label ?? t.nav[item.key] ?? item.key;\n const rows = ITEMS;\n\n const Item = ({ item }: { item: MetronicNavItem }) => {\n const on = active === item.key;\n const hasKids = Boolean(item.children?.length);\n const isOpen = Boolean(open[item.key]);\n return (\n <button\n onClick={() => {\n if (hasKids) setOpen((o) => ({ ...o, [item.key]: !o[item.key] }));\n else onNavigate(item.key);\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n width: \"100%\",\n height: 38,\n padding: \"0 12px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: on ? \"var(--klun-primary-lighter)\" : \"transparent\",\n color: on ? \"var(--klun-primary-base)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n <i\n className={item.icon}\n style={{ fontSize: 19, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }}\n />\n <span style={{ flex: 1 }}>{labelOf(item)}</span>\n {item.badge ? (\n <span\n style={{\n font: \"var(--klun-text-label-xs)\",\n padding: \"1px 7px\",\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-text-sub-600)\",\n }}\n >\n {item.badge}\n </span>\n ) : null}\n {hasKids ? (\n <i\n className=\"ri-arrow-down-s-line\"\n style={{ fontSize: 16, transform: isOpen ? \"rotate(180deg)\" : \"none\", transition: \"transform .15s ease\" }}\n />\n ) : null}\n </button>\n );\n };\n\n return (\n <aside\n style={{\n width: 248,\n flexShrink: 0,\n height: \"100%\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 14,\n padding: \"16px 12px\",\n background: \"var(--klun-bg-white-0)\",\n borderRight: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"4px 8px 6px\" }}>\n <span\n style={{\n width: 30,\n height: 30,\n borderRadius: \"var(--klun-radius-md)\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-text-white-0)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n font: \"var(--klun-text-label-md)\",\n }}\n >\n M\n </span>\n <b style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>Metronic</b>\n </div>\n\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {rows.map((item) => (\n <div key={item.key}>\n {item.dividerBefore ? (\n <div\n style={{\n height: 1,\n margin: \"8px 12px\",\n background: \"var(--klun-stroke-soft-200)\",\n }}\n />\n ) : null}\n <Item item={item} />\n {item.children && open[item.key] ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, padding: \"4px 0 4px 30px\" }}>\n {item.children.map((kid) => (\n <button\n key={kid.key}\n onClick={() => onNavigate(kid.key)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-md)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: active === kid.key ? \"var(--klun-primary-lighter)\" : \"transparent\",\n color: active === kid.key ? \"var(--klun-primary-base)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n {labelOf(kid)}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ))}\n </nav>\n\n <div\n style={{\n marginTop: \"auto\",\n padding: 10,\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n }}\n >\n <Avatar size=\"32\" initials=\"AK\" color=\"blue\" status=\"online\" />\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Anna Krause</div>\n <div style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>Admin</div>\n </div>\n </div>\n </aside>\n );\n}\n","// Metronic example — top bar.\n// Everything here is wired: the search box opens the ⌘K command palette, the\n// bell is a notification centre, the palette icon switches theme / density /\n// skin, and the avatar opens the account menu. `New order` triggers the same\n// create dialog as the orders page.\nimport type { ReactNode } from \"react\";\nimport { Avatar, Badge, Button, Dropdown, RelativeTime } from \"../../index\";\nimport { LOCALE_OPTIONS, useDemoText } from \"./i18n\";\n\n/** Accent skins shipped by the design system (`data-mode`). */\nexport const DEMO_SKINS = [\"metronic\", \"blue\", \"purple\", \"orange\", \"green\", \"slate\"] as const;\nexport type DemoSkin = (typeof DEMO_SKINS)[number];\n\nexport interface DemoNotification {\n id: string;\n title: string;\n body: string;\n /** ISO timestamp. */\n time: string;\n icon: string;\n tone: \"primary\" | \"success\" | \"warning\" | \"error\";\n read: boolean;\n}\n\nexport interface MetronicTopBarProps {\n /** Open the ⌘K command palette (the search box does this too). */\n onOpenPalette?: () => void;\n /** Platform hint rendered in the search box. */\n paletteHint?: string;\n\n theme: \"light\" | \"dark\";\n onThemeChange?: (theme: \"light\" | \"dark\") => void;\n density: \"default\" | \"compact\";\n onDensityChange?: (density: \"default\" | \"compact\") => void;\n skin: DemoSkin;\n onSkinChange?: (skin: DemoSkin) => void;\n\n /** Active BCP-47 locale code (`en-US`, `zh-CN`, …). */\n localeCode?: string;\n onLocaleChange?: (code: string) => void;\n\n notifications?: DemoNotification[];\n onNotificationClick?: (notification: DemoNotification) => void;\n onMarkAllRead?: () => void;\n\n /** Navigate to another screen. */\n onNavigate?: (key: string) => void;\n /** Opens the create-order dialog. */\n onNewOrder?: () => void;\n /** Sign out (the demo just shows a toast). */\n onSignOut?: () => void;\n}\n\nconst TONE_COLOR: Record<DemoNotification[\"tone\"], string> = {\n primary: \"var(--klun-primary-base)\",\n success: \"var(--klun-state-success-base)\",\n warning: \"var(--klun-state-warning-base)\",\n error: \"var(--klun-state-error-base)\",\n};\n\nconst TONE_BG: Record<DemoNotification[\"tone\"], string> = {\n primary: \"var(--klun-primary-lighter)\",\n success: \"var(--klun-state-success-lighter)\",\n warning: \"var(--klun-state-warning-lighter)\",\n error: \"var(--klun-state-error-lighter)\",\n};\n\n/** Icon button matching the footprint of the klun-ui `small` button. */\nfunction BarButton({\n icon,\n label,\n onClick,\n dot,\n active,\n}: {\n icon: string;\n label: string;\n onClick?: () => void;\n dot?: boolean;\n active?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n title={label}\n onClick={onClick}\n style={{\n position: \"relative\",\n width: 32,\n height: 32,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: active ? \"var(--klun-primary-lighter)\" : \"transparent\",\n color: active ? \"var(--klun-primary-base)\" : \"var(--klun-text-sub-600)\",\n cursor: \"pointer\",\n fontSize: 16,\n padding: 0,\n }}\n >\n <i className={icon} />\n {dot ? (\n <span\n style={{\n position: \"absolute\",\n top: 5,\n right: 5,\n width: 8,\n height: 8,\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-state-error-base)\",\n border: \"1.5px solid var(--klun-bg-white-0)\",\n }}\n />\n ) : null}\n </button>\n );\n}\n\n/** Two-line menu row used inside the dropdown panels. */\nfunction MenuRow({ title, desc, icon }: { title: ReactNode; desc: ReactNode; icon: string }) {\n return (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 0 }}>\n <span\n style={{\n width: 28,\n height: 28,\n flexShrink: 0,\n borderRadius: \"var(--klun-radius-md)\",\n background: \"var(--klun-bg-weak-50)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 15,\n }}\n >\n <i className={icon} />\n </span>\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 1, minWidth: 0 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{title}</b>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{desc}</span>\n </span>\n </span>\n );\n}\n\nconst check = (on: boolean) =>\n on ? <i className=\"ri-check-line\" /> : <span style={{ display: \"inline-block\", width: 14 }} />;\n\nexport function MetronicTopBar({\n onOpenPalette,\n paletteHint = \"⌘K\",\n theme,\n onThemeChange,\n density,\n onDensityChange,\n skin,\n onSkinChange,\n localeCode = \"en-US\",\n onLocaleChange,\n notifications = [],\n onNotificationClick,\n onMarkAllRead,\n onNavigate,\n onNewOrder,\n onSignOut,\n}: MetronicTopBarProps) {\n const t = useDemoText();\n const unread = notifications.filter((n) => !n.read).length;\n const currentLocale = LOCALE_OPTIONS.find((l) => l.code === localeCode);\n\n return (\n <header\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"10px 24px\",\n background: \"var(--klun-bg-white-0)\",\n borderBottom: \"1px solid var(--klun-stroke-soft-200)\",\n }}\n >\n {/* search → command palette */}\n <button\n type=\"button\"\n onClick={onOpenPalette}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: 300,\n maxWidth: \"45%\",\n height: 32,\n padding: \"0 10px\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-text-soft-400)\",\n font: \"var(--klun-text-label-sm)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n }}\n >\n <i className=\"ri-search-line\" style={{ fontSize: 15 }} />\n <span style={{ flex: 1, minWidth: 0 }}>{t.shell.search}</span>\n <kbd\n style={{\n padding: \"1px 6px\",\n borderRadius: \"var(--klun-radius-sm)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n background: \"var(--klun-bg-white-0)\",\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n {paletteHint}\n </kbd>\n </button>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n {/* notification centre */}\n <Dropdown\n align=\"right\"\n width={340}\n trigger={<BarButton icon=\"ri-notification-3-line\" label={t.shell.notifications} dot={unread > 0} />}\n items={[\n ...(notifications.length\n ? notifications.map((n) => ({\n label: (\n <span style={{ display: \"flex\", alignItems: \"flex-start\", gap: 10, minWidth: 0 }}>\n <span\n style={{\n width: 28,\n height: 28,\n flexShrink: 0,\n borderRadius: \"var(--klun-radius-md)\",\n background: TONE_BG[n.tone],\n color: TONE_COLOR[n.tone],\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 15,\n }}\n >\n <i className={n.icon} />\n </span>\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 1, minWidth: 0, flex: 1 }}>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {n.title}\n </b>\n {!n.read ? (\n <span\n style={{\n width: 6,\n height: 6,\n borderRadius: \"var(--klun-radius-pill)\",\n background: \"var(--klun-primary-base)\",\n }}\n />\n ) : null}\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {n.body}{\" \"}\n <RelativeTime\n date={n.time}\n live={false}\n style={{ color: \"var(--klun-text-soft-400)\" }}\n />\n </span>\n </span>\n </span>\n ),\n onClick: () => onNotificationClick?.(n),\n }))\n : [{ label: t.shell.caughtUp, icon: <i className=\"ri-check-double-line\" /> }]),\n { divider: true, label: \"\" },\n {\n label: unread ? t.shell.markAllRead : t.shell.noUnread,\n icon: <i className=\"ri-mail-open-line\" />,\n onClick: onMarkAllRead,\n },\n {\n label: t.shell.notificationSettings,\n icon: <i className=\"ri-settings-3-line\" />,\n onClick: () => onNavigate?.(\"settings\"),\n },\n ]}\n />\n\n {/* help */}\n <Dropdown\n align=\"right\"\n width={250}\n trigger={<BarButton icon=\"ri-question-line\" label={t.shell.help} />}\n items={[\n {\n label: t.shell.commandPalette,\n icon: <i className=\"ri-command-line\" />,\n shortcut: paletteHint,\n onClick: onOpenPalette,\n },\n { label: t.shell.documentation, icon: <i className=\"ri-book-open-line\" />, onClick: () => onNavigate?.(\"dashboard\") },\n { label: t.shell.shortcuts, icon: <i className=\"ri-keyboard-line\" />, onClick: onOpenPalette },\n { divider: true, label: \"\" },\n { label: t.shell.contactSupport, icon: <i className=\"ri-customer-service-2-line\" /> },\n ]}\n />\n\n {/* appearance: theme / density / skin */}\n <Dropdown\n align=\"right\"\n width={240}\n trigger={\n <BarButton icon=\"ri-palette-line\" label={t.shell.appearance} active={theme === \"dark\" || density === \"compact\"} />\n }\n items={[\n { label: t.shell.lightTheme, icon: check(theme === \"light\"), onClick: () => onThemeChange?.(\"light\") },\n { label: t.shell.darkTheme, icon: check(theme === \"dark\"), onClick: () => onThemeChange?.(\"dark\") },\n { divider: true, label: \"\" },\n { label: t.shell.comfortable, icon: check(density === \"default\"), onClick: () => onDensityChange?.(\"default\") },\n { label: t.shell.compact, icon: check(density === \"compact\"), onClick: () => onDensityChange?.(\"compact\") },\n { divider: true, label: \"\" },\n ...DEMO_SKINS.map((s) => ({\n label: `Skin · ${s}`,\n icon: check(skin === s),\n onClick: () => onSkinChange?.(s),\n })),\n ]}\n />\n\n {/* language — swaps the klun-ui locale pack and the demo dictionary */}\n <Dropdown\n align=\"right\"\n width={230}\n trigger={\n <BarButton\n icon=\"ri-translate-2\"\n label={`${t.shell.language}: ${currentLocale?.label ?? localeCode}`}\n active={localeCode !== \"en-US\"}\n />\n }\n items={[\n {\n label: (\n <span style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {t.shell.language}\n </span>\n <code style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{localeCode}</code>\n </span>\n ),\n },\n { divider: true, label: \"\" },\n ...LOCALE_OPTIONS.map((l) => ({\n label: l.label,\n icon: check(l.code === localeCode),\n shortcut: l.code === localeCode ? \"✓\" : undefined,\n onClick: () => onLocaleChange?.(l.code),\n })),\n ]}\n />\n\n <span style={{ width: 1, height: 20, background: \"var(--klun-stroke-soft-200)\", margin: \"0 4px\" }} />\n\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />} onClick={onNewOrder}>\n {t.shell.newOrder}\n </Button>\n\n <Dropdown\n align=\"right\"\n width={240}\n trigger={\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6, cursor: \"pointer\", paddingLeft: 4 }}>\n <Avatar size=\"32\" initials=\"AK\" color=\"blue\" status=\"online\" />\n <i className=\"ri-arrow-down-s-line\" style={{ color: \"var(--klun-icon-sub-600)\" }} />\n </span>\n }\n items={[\n {\n label: <MenuRow title=\"Anna Krause\" desc=\"anna@acme.io\" icon=\"ri-user-line\" />,\n onClick: () => onNavigate?.(\"settings\"),\n },\n { divider: true, label: \"\" },\n { label: t.shell.profilePhoto, icon: <i className=\"ri-user-settings-line\" />, onClick: () => onNavigate?.(\"settings\") },\n { label: t.shell.notifications, icon: <i className=\"ri-notification-3-line\" />, onClick: () => onNavigate?.(\"settings\") },\n { label: t.shell.billing, icon: <i className=\"ri-bank-card-line\" />, onClick: () => onNavigate?.(\"settings\") },\n { label: t.shell.teamRoles, icon: <i className=\"ri-team-line\" />, onClick: () => onNavigate?.(\"users\") },\n {\n label: (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Badge color=\"green\" variant=\"lighter\" size=\"small\" dot>\n {t.shell.online}\n </Badge>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {t.shell.twoFA}\n </span>\n </span>\n ),\n },\n { divider: true, label: \"\" },\n { label: t.shell.signOut, icon: <i className=\"ri-logout-box-r-line\" />, danger: true, onClick: onSignOut },\n ]}\n />\n </div>\n </header>\n );\n}\n\n","// Metronic example — Departments (organisation tree).\n// A tree-table built on the klun-ui Table (`tree` + `childrenKey`): expandable\n// departments with manager, headcount, budget usage and full CRUD (add child,\n// edit, delete behind Confirm) plus a details drawer.\nimport { useMemo, useState } from \"react\";\nimport {\n Avatar,\n AvatarGroup,\n Badge,\n Button,\n Confirm,\n Drawer,\n Dropdown,\n Input,\n Label,\n Modal,\n ProgressBar,\n Select,\n Table,\n useMessage,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { PageHeader, useDemoText } from \"./i18n\";\n\ninterface Department {\n id: string;\n name: string;\n manager: string;\n managerEmail: string;\n headcount: number;\n budgetUsed: number;\n budgetTotal: number;\n location: string;\n children?: Department[];\n}\n\nconst INITIAL: Department[] = [\n {\n id: \"hq\",\n name: \"Acme HQ\",\n manager: \"Anna Krause\",\n managerEmail: \"anna@acme.io\",\n headcount: 48,\n budgetUsed: 684_000,\n budgetTotal: 900_000,\n location: \"Berlin, DE\",\n children: [\n {\n id: \"eng\",\n name: \"Engineering\",\n manager: \"Ben Ortiz\",\n managerEmail: \"ben@acme.io\",\n headcount: 22,\n budgetUsed: 412_000,\n budgetTotal: 500_000,\n location: \"Berlin, DE\",\n children: [\n { id: \"fe\", name: \"Frontend\", manager: \"Chloe Lin\", managerEmail: \"chloe@acme.io\", headcount: 8, budgetUsed: 148_000, budgetTotal: 180_000, location: \"Berlin, DE\" },\n { id: \"platform\", name: \"Platform\", manager: \"Hugo Silva\", managerEmail: \"hugo@acme.io\", headcount: 9, budgetUsed: 196_000, budgetTotal: 220_000, location: \"Lisbon, PT\" },\n ],\n },\n {\n id: \"product\",\n name: \"Product & design\",\n manager: \"Dmitri Volkov\",\n managerEmail: \"dmitri@acme.io\",\n headcount: 11,\n budgetUsed: 168_000,\n budgetTotal: 210_000,\n location: \"Berlin, DE\",\n children: [\n { id: \"design\", name: \"Design\", manager: \"Erin Walsh\", managerEmail: \"erin@acme.io\", headcount: 6, budgetUsed: 92_000, budgetTotal: 120_000, location: \"Berlin, DE\" },\n { id: \"research\", name: \"Research\", manager: \"Ivy Chen\", managerEmail: \"ivy@acme.io\", headcount: 3, budgetUsed: 44_000, budgetTotal: 60_000, location: \"Shanghai, CN\" },\n ],\n },\n {\n id: \"gtm\",\n name: \"Go-to-market\",\n manager: \"Farid Haddad\",\n managerEmail: \"farid@acme.io\",\n headcount: 15,\n budgetUsed: 104_000,\n budgetTotal: 190_000,\n location: \"New York, US\",\n children: [\n { id: \"sales\", name: \"Sales\", manager: \"Grace Miller\", managerEmail: \"grace@acme.io\", headcount: 9, budgetUsed: 68_000, budgetTotal: 130_000, location: \"New York, US\" },\n { id: \"support\", name: \"Support\", manager: \"Jonas Weber\", managerEmail: \"jonas@acme.io\", headcount: 6, budgetUsed: 36_000, budgetTotal: 60_000, location: \"Berlin, DE\" },\n ],\n },\n ],\n },\n];\n\nconst MANAGERS = [\n { value: \"Anna Krause\", email: \"anna@acme.io\" },\n { value: \"Ben Ortiz\", email: \"ben@acme.io\" },\n { value: \"Chloe Lin\", email: \"chloe@acme.io\" },\n { value: \"Dmitri Volkov\", email: \"dmitri@acme.io\" },\n { value: \"Erin Walsh\", email: \"erin@acme.io\" },\n { value: \"Farid Haddad\", email: \"farid@acme.io\" },\n { value: \"Grace Miller\", email: \"grace@acme.io\" },\n { value: \"Hugo Silva\", email: \"hugo@acme.io\" },\n { value: \"Ivy Chen\", email: \"ivy@acme.io\" },\n { value: \"Jonas Weber\", email: \"jonas@acme.io\" },\n];\n\nconst LOCATIONS = [\"Berlin, DE\", \"Lisbon, PT\", \"New York, US\", \"Shanghai, CN\", \"Remote\"];\n\nconst initials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\nconst money = (n: number) => `$${Math.round(n / 1000)}k`;\n\n/** Walk the tree, returning a new tree with `fn` applied to the matching node. */\nfunction updateNode(nodes: Department[], id: string, fn: (d: Department) => Department): Department[] {\n return nodes.map((n) => {\n if (n.id === id) return fn(n);\n if (n.children) return { ...n, children: updateNode(n.children, id, fn) };\n return n;\n });\n}\n\nfunction removeNode(nodes: Department[], id: string): Department[] {\n return nodes\n .filter((n) => n.id !== id)\n .map((n) => (n.children ? { ...n, children: removeNode(n.children, id) } : n));\n}\n\n/** Deep search for a department by id. */\nfunction findNode(nodes: Department[], id: string): Department | null {\n for (const n of nodes) {\n if (n.id === id) return n;\n if (n.children) {\n const hit = findNode(n.children, id);\n if (hit) return hit;\n }\n }\n return null;\n}\n\n/** Keep a department when it (or any descendant) matches the query. */\nfunction filterTree(nodes: Department[], q: string): Department[] {\n return nodes.flatMap((n) => {\n const kids = n.children ? filterTree(n.children, q) : [];\n const hit = n.name.toLowerCase().includes(q) || n.manager.toLowerCase().includes(q);\n if (hit) return [n];\n if (kids.length) return [{ ...n, children: kids }];\n return [];\n });\n}\n\nexport interface DepartmentsScreenProps {\n /** Jump to the team page (the drawer links to members), focused on a department. */\n onOpenTeam?: (departmentName?: string) => void;\n}\n\nexport function DepartmentsScreen({ onOpenTeam }: DepartmentsScreenProps = {}) {\n const t = useDemoText();\n const [message, holder] = useMessage();\n const [tree, setTree] = useState<Department[]>(INITIAL);\n const [query, setQuery] = useState(\"\");\n const [detailId, setDetailId] = useState<string | null>(null);\n const [editor, setEditor] = useState<{ mode: \"create\" | \"edit\"; parentId?: string; node?: Department } | null>(null);\n const [form, setForm] = useState({ name: \"\", manager: MANAGERS[0].value, location: LOCATIONS[0], headcount: \"4\", budget: \"120000\" });\n\n const rows = useMemo(() => {\n const q = query.trim().toLowerCase();\n return q ? filterTree(tree, q) : tree;\n }, [tree, query]);\n\n const detail = detailId ? findNode(tree, detailId) : null;\n\n const openCreate = (parentId?: string) => {\n const parent = parentId ? findNode(tree, parentId) : null;\n setForm({\n name: \"\",\n manager: parent?.manager ?? MANAGERS[0].value,\n location: parent?.location ?? LOCATIONS[0],\n headcount: \"4\",\n budget: \"120000\",\n });\n setEditor({ mode: \"create\", parentId });\n };\n\n const openEdit = (node: Department) => {\n setForm({\n name: node.name,\n manager: node.manager,\n location: node.location,\n headcount: String(node.headcount),\n budget: String(node.budgetTotal),\n });\n setEditor({ mode: \"edit\", node });\n };\n\n const save = () => {\n if (!form.name.trim()) {\n message.error({ content: \"Department name is required.\", key: \"dept\" });\n return;\n }\n const manager = MANAGERS.find((m) => m.value === form.manager) ?? MANAGERS[0];\n const totals = {\n name: form.name.trim(),\n manager: manager.value,\n managerEmail: manager.email,\n location: form.location,\n headcount: Math.max(0, Number(form.headcount) || 0),\n budgetTotal: Math.max(0, Number(form.budget) || 0),\n };\n\n if (editor?.mode === \"edit\" && editor.node) {\n const id = editor.node.id;\n setTree((prev) => updateNode(prev, id, (d) => ({ ...d, ...totals })));\n message.success({ content: `${totals.name} updated.`, key: \"dept\" });\n } else {\n const node: Department = { id: `d${Date.now()}`, budgetUsed: 0, ...totals };\n setTree((prev) =>\n editor?.parentId\n ? updateNode(prev, editor.parentId, (d) => ({ ...d, children: [...(d.children ?? []), node] }))\n : [...prev, node],\n );\n message.success({ content: `${totals.name} created.`, key: \"dept\" });\n }\n setEditor(null);\n };\n\n const remove = async (node: Department) => {\n const kids = node.children?.length ?? 0;\n const res = await Confirm({\n title: `Delete ${node.name}?`,\n description: kids\n ? `${kids} sub-department${kids === 1 ? \"\" : \"s\"} will move to the parent level. Members stay in the workspace.`\n : `${node.headcount} members will become unassigned.`,\n intent: \"danger\",\n confirmText: \"Delete department\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setTree((prev) => removeNode(prev, node.id));\n if (detailId === node.id) setDetailId(null);\n message.info({ content: `${node.name} deleted.`, key: \"dept\" });\n }\n };\n\n const columns: TableColumn<Department>[] = [\n {\n key: \"name\",\n header: \"Department\",\n render: (d) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <i className={d.children?.length ? \"ri-node-tree\" : \"ri-community-line\"} style={{ color: \"var(--klun-icon-sub-600)\" }} />\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{d.name}</b>\n {d.children?.length ? (\n <Badge color=\"gray\" variant=\"lighter\" size=\"small\">\n {d.children.length}\n </Badge>\n ) : null}\n </span>\n ),\n },\n {\n key: \"manager\",\n header: \"Manager\",\n render: (d) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Avatar size=\"24\" initials={initials(d.manager)} color=\"purple\" />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{d.manager}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{d.managerEmail}</span>\n </span>\n </span>\n ),\n },\n { key: \"headcount\", header: \"People\", align: \"center\", sortable: true },\n {\n key: \"budget\",\n header: \"Budget used\",\n width: 180,\n sortable: true,\n sortAccessor: (d) => (d.budgetTotal ? d.budgetUsed / d.budgetTotal : 0),\n render: (d) => {\n const pct = d.budgetTotal ? Math.round((d.budgetUsed / d.budgetTotal) * 100) : 0;\n return (\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 6, minWidth: 140 }}>\n <span style={{ display: \"flex\", justifyContent: \"space-between\", font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n <span>\n {money(d.budgetUsed)} / {money(d.budgetTotal)}\n </span>\n <span>{pct}%</span>\n </span>\n <ProgressBar value={pct} color={pct >= 90 ? \"warning\" : \"primary\"} />\n </span>\n );\n },\n },\n {\n key: \"location\",\n header: \"Location\",\n filters: LOCATIONS.map((l) => ({ label: l, value: l })),\n render: (d) => <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>{d.location}</span>,\n },\n {\n key: \"actions\",\n header: \"\",\n width: 60,\n align: \"right\",\n exportable: false,\n render: (d) => (\n <Dropdown\n align=\"right\"\n width={210}\n trigger={<Button kind=\"compact\" appearance=\"ghost\" icon={<i className=\"ri-more-2-line\" />} aria-label={`Actions for ${d.name}`} />}\n items={[\n { label: \"View department\", icon: <i className=\"ri-eye-line\" />, onClick: () => setDetailId(d.id) },\n { label: \"Add sub-department\", icon: <i className=\"ri-add-line\" />, onClick: () => openCreate(d.id) },\n { label: \"Edit details\", icon: <i className=\"ri-edit-line\" />, onClick: () => openEdit(d) },\n { divider: true, label: \"\" },\n { label: \"Delete department\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void remove(d) },\n ]}\n />\n ),\n },\n ];\n\n return (\n <>\n {holder}\n\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"departments\"\n extra={\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-download-2-line\" />} onClick={() => message.success({ content: \"org-chart.csv exported.\", key: \"dept\" })}>\n {t.common.export}\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />} onClick={() => openCreate()}>\n New department\n </Button>\n </div>\n }\n />\n\n <Table\n columns={columns}\n rows={rows}\n getRowId={(d) => d.id}\n tree\n childrenKey=\"children\"\n defaultExpandedRowKeys={[\"hq\", \"eng\", \"product\"]}\n title={`Organisation (${rows.length} top level)`}\n toolbar={\n <div style={{ width: 240 }}>\n <Input\n size=\"small\"\n placeholder=\"Search department or manager…\"\n leadingIcon={<i className=\"ri-search-line\" />}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n }\n sortable\n exportable={{ filename: \"departments.csv\" }}\n onRowClick={(d) => setDetailId(d.id)}\n />\n </div>\n\n <Modal\n open={editor !== null}\n onClose={() => setEditor(null)}\n title={editor?.mode === \"edit\" ? `Edit ${editor.node?.name}` : editor?.parentId ? \"New sub-department\" : \"New department\"}\n description={\n editor?.parentId && editor?.mode === \"create\"\n ? `It will be nested under ${findNode(tree, editor.parentId)?.name ?? \"the selected department\"}.`\n : \"Departments group teammates, budgets and permissions.\"\n }\n okText={editor?.mode === \"edit\" ? t.common.save : t.common.create}\n onOk={save}\n width={520}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Department name</Label>\n <Input placeholder=\"Customer success\" leadingIcon={<i className=\"ri-community-line\" />} value={form.name} onChange={(e) => setForm((f) => ({ ...f, name: e.target.value }))} />\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Manager</Label>\n <Select value={form.manager} onChange={(e) => setForm((f) => ({ ...f, manager: e.target.value }))}>\n {MANAGERS.map((m) => (\n <option key={m.value} value={m.value}>\n {m.value}\n </option>\n ))}\n </Select>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Location</Label>\n <Select value={form.location} onChange={(e) => setForm((f) => ({ ...f, location: e.target.value }))}>\n {LOCATIONS.map((l) => (\n <option key={l} value={l}>\n {l}\n </option>\n ))}\n </Select>\n </div>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Headcount</Label>\n <Input type=\"number\" min={0} value={form.headcount} onChange={(e) => setForm((f) => ({ ...f, headcount: e.target.value }))} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Annual budget (USD)</Label>\n <Input type=\"number\" min={0} step=\"1000\" value={form.budget} onChange={(e) => setForm((f) => ({ ...f, budget: e.target.value }))} />\n </div>\n </div>\n </div>\n </Modal>\n\n <Drawer\n open={detail !== null}\n onClose={() => setDetailId(null)}\n title={detail?.name ?? \"\"}\n placement=\"right\"\n width={400}\n extra={\n detail ? (\n <Badge color=\"blue\" variant=\"lighter\" size=\"small\">\n {detail.headcount} people\n </Badge>\n ) : null\n }\n footer={\n detail ? (\n <>\n <Button variant=\"neutral\" appearance=\"ghost\" onClick={() => void remove(detail)}>\n {t.common.delete}\n </Button>\n <Button variant=\"neutral\" appearance=\"stroke\" onClick={() => openEdit(detail)}>\n {t.common.edit}\n </Button>\n <Button onClick={() => openCreate(detail.id)}>Add sub-department</Button>\n </>\n ) : null\n }\n >\n {detail ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 18 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <Avatar size=\"40\" initials={initials(detail.manager)} color=\"purple\" />\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{detail.manager}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {detail.managerEmail} · {detail.location}\n </div>\n </div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n <span>Budget used</span>\n <span>\n {money(detail.budgetUsed)} / {money(detail.budgetTotal)}\n </span>\n </div>\n <ProgressBar value={detail.budgetTotal ? Math.round((detail.budgetUsed / detail.budgetTotal) * 100) : 0} />\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Team</span>\n <AvatarGroup\n size=\"32\"\n max={5}\n avatars={[\n { initials: initials(detail.manager), color: \"purple\" },\n { initials: \"BO\", color: \"blue\" },\n { initials: \"CL\", color: \"green\" },\n { initials: \"EW\", color: \"orange\" },\n { initials: \"HS\", color: \"gray\" },\n { initials: \"IC\", color: \"blue\" },\n ]}\n />\n {onOpenTeam ? (\n <button\n type=\"button\"\n onClick={() => onOpenTeam?.(detail.name)}\n style={{\n alignSelf: \"flex-start\",\n border: \"none\",\n background: \"none\",\n padding: 0,\n color: \"var(--klun-primary-base)\",\n font: \"var(--klun-text-label-sm)\",\n cursor: \"pointer\",\n }}\n >\n Manage members →\n </button>\n ) : null}\n </div>\n\n {detail.children?.length ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Sub-departments</span>\n {detail.children.map((c) => (\n <button\n key={c.id}\n type=\"button\"\n onClick={() => setDetailId(c.id)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 8,\n padding: \"10px 12px\",\n borderRadius: \"var(--klun-radius-lg)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n background: \"var(--klun-bg-white-0)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n }}\n >\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{c.name}</b>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {c.manager} · {c.headcount} people\n </span>\n </span>\n <i className=\"ri-arrow-right-s-line\" style={{ color: \"var(--klun-icon-sub-600)\" }} />\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n </Drawer>\n </>\n );\n}\n","// Metronic example — Role hierarchy.\n// A two-pane screen: the klun-ui Tree on the left shows how roles inherit from\n// each other, the right pane explains the selected role — its ancestors, the\n// permissions it owns versus the ones it inherits, and its members.\nimport { useMemo, useState } from \"react\";\nimport { Avatar, AvatarGroup, Badge, Button, Chip, Confirm, Divider, Table, Tree, useMessage } from \"../../index\";\nimport type { ChipColor, TableColumn, TreeNode } from \"../../index\";\nimport { PageHeader, useDemoText } from \"./i18n\";\n\ninterface DemoRole {\n id: string;\n name: string;\n description: string;\n color: ChipColor;\n members: string[];\n /** Permissions granted at this level (children inherit them). */\n own: string[];\n children?: DemoRole[];\n}\n\nconst ROLES: DemoRole[] = [\n {\n id: \"owner\",\n name: \"Owner\",\n description: \"The workspace owner. Can transfer ownership, manage billing and everything below.\",\n color: \"purple\",\n members: [\"Anna Krause\"],\n own: [\"workspace:transfer\", \"billing:manage\", \"roles:manage\"],\n children: [\n {\n id: \"admin\",\n name: \"Admin\",\n description: \"Runs the workspace day to day — people, settings and reporting.\",\n color: \"blue\",\n members: [\"Ben Ortiz\", \"Chloe Lin\"],\n own: [\"users:manage\", \"settings:manage\", \"billing:view\", \"roles:view\"],\n children: [\n {\n id: \"manager\",\n name: \"Manager\",\n description: \"Owns day-to-day operations: catalogue, orders and customers.\",\n color: \"teal\",\n members: [\"Dmitri Volkov\", \"Erin Walsh\", \"Farid Haddad\"],\n own: [\"orders:write\", \"products:write\", \"customers:write\", \"reports:view\"],\n children: [\n {\n id: \"editor\",\n name: \"Editor\",\n description: \"Creates and updates content, but can't see billing or people.\",\n color: \"green\",\n members: [\"Grace Miller\", \"Hugo Silva\", \"Ivy Chen\", \"Jonas Weber\", \"Karla Novak\"],\n own: [\"orders:write\", \"products:write\"],\n },\n {\n id: \"viewer\",\n name: \"Viewer\",\n description: \"Read-only access to orders, products and customers.\",\n color: \"gray\",\n members: [\"Liam Byrne\", \"Mia Novak\", \"Noah Weber\", \"Olivia Chen\", \"Priya Nair\", \"Quinn Silva\"],\n own: [\"customers:view\"],\n },\n ],\n },\n {\n id: \"support\",\n name: \"Support\",\n description: \"Front-line support — reads orders and customers, writes tickets.\",\n color: \"orange\",\n members: [\"Ruby Ortiz\", \"Sam Haddad\", \"Tara Lin\", \"Umar Weber\"],\n own: [\"tickets:write\"],\n },\n ],\n },\n ],\n },\n];\n\n/** Path of roles from the root down to `id`. */\nfunction pathTo(nodes: DemoRole[], id: string, trail: DemoRole[] = []): DemoRole[] | null {\n for (const n of nodes) {\n const next = [...trail, n];\n if (n.id === id) return next;\n if (n.children) {\n const hit = pathTo(n.children, id, next);\n if (hit) return hit;\n }\n }\n return null;\n}\n\nfunction findRole(nodes: DemoRole[], id: string): DemoRole | null {\n const path = pathTo(nodes, id);\n return path ? path[path.length - 1] : null;\n}\n\nconst toTreeNodes = (roles: DemoRole[]): TreeNode[] =>\n roles.map((r) => ({\n key: r.id,\n title: (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.name}</span>\n <Badge color=\"gray\" variant=\"lighter\" size=\"small\">\n {r.members.length}\n </Badge>\n </span>\n ),\n children: r.children ? toTreeNodes(r.children) : undefined,\n }));\n\nconst ACTION_TONE = (permission: string): ChipColor => {\n const [module] = permission.split(\":\");\n if (module === \"workspace\" || module === \"billing\") return \"purple\";\n if (permission.endsWith(\":manage\")) return \"blue\";\n if (permission.endsWith(\":write\")) return \"orange\";\n return \"gray\";\n};\n\nexport interface RoleTreeScreenProps {\n /** Jump to the roles & permissions matrix. */\n onOpenRoles?: () => void;\n}\n\nexport function RoleTreeScreen({ onOpenRoles }: RoleTreeScreenProps = {}) {\n const t = useDemoText();\n const [message, holder] = useMessage();\n const [roles, setRoles] = useState<DemoRole[]>(ROLES);\n const [selectedId, setSelectedId] = useState(\"manager\");\n const [expanded, setExpanded] = useState<string[]>([\"owner\", \"admin\", \"manager\"]);\n\n const treeData = useMemo(() => toTreeNodes(roles), [roles]);\n const chain = useMemo(() => pathTo(roles, selectedId) ?? [], [roles, selectedId]);\n const role: DemoRole | null = chain.length ? chain[chain.length - 1] : null;\n\n const inherited = chain.slice(0, -1).flatMap((r) => r.own);\n const own = role?.own ?? [];\n\n /** Direct children (one level) for the comparison table. */\n const columns: TableColumn<DemoRole>[] = [\n {\n key: \"name\",\n header: \"Child role\",\n render: (r) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Chip color={r.color} dot>\n {r.name}\n </Chip>\n </span>\n ),\n },\n {\n key: \"own\",\n header: \"Adds\",\n render: (r) => (\n <span style={{ display: \"inline-flex\", flexWrap: \"wrap\", gap: 4 }}>\n {r.own.map((p) => (\n <Chip key={p} color={ACTION_TONE(p)}>\n {p}\n </Chip>\n ))}\n </span>\n ),\n },\n {\n key: \"members\",\n header: \"Members\",\n align: \"center\",\n render: (r) => <span style={{ font: \"var(--klun-text-label-sm)\" }}>{r.members.length}</span>,\n },\n {\n key: \"total\",\n header: \"Effective permissions\",\n align: \"center\",\n render: (r) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {own.length + inherited.length + r.own.length}\n </span>\n ),\n },\n ];\n\n const removeRole = async (target: DemoRole) => {\n const children = target.children?.length ?? 0;\n const res = await Confirm({\n title: `Delete the ${target.name} role?`,\n description: children\n ? `${children} child role${children === 1 ? \"\" : \"s\"} will keep their permission sets but lose this parent.`\n : `${target.members.length} member${target.members.length === 1 ? \"\" : \"s\"} will be moved to Viewer.`,\n intent: \"danger\",\n confirmText: \"Delete role\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setRoles((prev) => {\n const strip = (nodes: DemoRole[]): DemoRole[] =>\n nodes.flatMap((n) => {\n if (n.id === target.id) return n.children ?? [];\n return [{ ...n, children: n.children ? strip(n.children) : undefined }];\n });\n return strip(prev);\n });\n setSelectedId(\"owner\");\n message.info({ content: `${target.name} role deleted.`, key: \"role\" });\n }\n };\n\n const cloneRole = (target: DemoRole) => {\n const id = `clone-${Date.now()}`;\n setRoles((prev) => {\n const insert = (nodes: DemoRole[]): DemoRole[] =>\n nodes.map((n) =>\n n.id === target.id\n ? { ...n, children: [...(n.children ?? []), { ...target, id, name: `${target.name} (copy)`, members: [], children: undefined }] }\n : { ...n, children: n.children ? insert(n.children) : undefined },\n );\n return insert(prev);\n });\n setSelectedId(id);\n message.success({ content: `${target.name} cloned — assign members and trim permissions.`, key: \"role\" });\n };\n\n return (\n <>\n {holder}\n\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"roleTree\"\n extra={\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-table-line\" />} onClick={onOpenRoles}>\n Permission matrix\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />} onClick={() => onOpenRoles?.()}>\n New role\n </Button>\n </div>\n }\n />\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"300px minmax(0, 1fr)\", gap: 20, alignItems: \"start\" }}>\n <div\n style={{\n background: \"var(--klun-bg-white-0)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-xl)\",\n padding: 12,\n }}\n >\n <div style={{ padding: \"4px 8px 10px\", font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n Role hierarchy\n </div>\n <Tree\n treeData={treeData}\n selectedKey={selectedId}\n expandedKeys={expanded}\n onExpand={setExpanded}\n onSelect={(key) => setSelectedId(key)}\n showLine\n />\n </div>\n\n {role ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div\n style={{\n background: \"var(--klun-bg-white-0)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-xl)\",\n padding: 20,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 14,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, flexWrap: \"wrap\" }}>\n <Chip color={role.color} dot>\n {role.name}\n </Chip>\n <Badge color=\"gray\" variant=\"lighter\" size=\"small\">\n {role.members.length} member{role.members.length === 1 ? \"\" : \"s\"}\n </Badge>\n <Badge color=\"blue\" variant=\"lighter\" size=\"small\">\n {own.length + inherited.length} effective permissions\n </Badge>\n <span style={{ marginLeft: \"auto\", display: \"flex\", gap: 8 }}>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-file-copy-line\" />} onClick={() => cloneRole(role)}>\n Clone\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-shield-keyhole-line\" />} onClick={onOpenRoles}>\n Edit permissions\n </Button>\n </span>\n </div>\n <p style={{ margin: 0, font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>{role.description}</p>\n\n {chain.length > 1 ? (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flexWrap: \"wrap\" }}>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>Inherits from</span>\n {chain.slice(0, -1).map((r, i) => (\n <span key={r.id} style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n {i > 0 ? <i className=\"ri-arrow-right-s-line\" style={{ color: \"var(--klun-icon-sub-600)\" }} /> : null}\n <button\n type=\"button\"\n onClick={() => setSelectedId(r.id)}\n style={{\n border: \"none\",\n background: \"var(--klun-bg-weak-50)\",\n borderRadius: \"var(--klun-radius-md)\",\n padding: \"3px 8px\",\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-sub-600)\",\n cursor: \"pointer\",\n }}\n >\n {r.name}\n </button>\n </span>\n ))}\n </div>\n ) : (\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Top of the hierarchy — nothing is inherited.\n </span>\n )}\n </div>\n\n <div\n style={{\n background: \"var(--klun-bg-white-0)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-xl)\",\n padding: 20,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 14,\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n Granted directly ({own.length})\n </span>\n <span style={{ display: \"flex\", flexWrap: \"wrap\", gap: 6 }}>\n {own.map((p) => (\n <Chip key={p} color={ACTION_TONE(p)} dot>\n {p}\n </Chip>\n ))}\n </span>\n </div>\n\n <Divider />\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n Inherited from parents ({inherited.length})\n </span>\n <span style={{ display: \"flex\", flexWrap: \"wrap\", gap: 6 }}>\n {inherited.map((p) => (\n <Chip key={p} color=\"gray\">\n {p}\n </Chip>\n ))}\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Permissions are additive: a child role can add to its parent, never remove.\n </span>\n </div>\n\n <Divider />\n\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, flexWrap: \"wrap\" }}>\n <AvatarGroup\n size=\"32\"\n max={6}\n avatars={role.members.map((m, i) => ({\n initials: m\n .split(\" \")\n .map((s) => s[0])\n .join(\"\"),\n color: ([\"blue\", \"green\", \"purple\", \"orange\", \"gray\"] as const)[i % 5],\n }))}\n />\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {role.members.length ? role.members.join(\", \") : \"No members yet\"}\n </span>\n </div>\n\n {role.id !== \"owner\" ? (\n <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>\n <Button size=\"small\" variant=\"error\" appearance=\"ghost\" onClick={() => void removeRole(role)}>\n {t.common.delete} role\n </Button>\n </div>\n ) : (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n The Owner role can’t be deleted or edited.\n </span>\n )}\n </div>\n\n {role.children?.length ? (\n <>\n <Table\n columns={columns}\n rows={role.children}\n getRowId={(r) => r.id}\n title={`Child roles (${role.children.length})`}\n onRowClick={(r) => setSelectedId(r.id)}\n />\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Click a row to inspect that role — each level only sees what its ancestors grant.\n </div>\n </>\n ) : (\n <div\n style={{\n padding: 20,\n borderRadius: \"var(--klun-radius-xl)\",\n border: \"1px dashed var(--klun-stroke-soft-200)\",\n font: \"var(--klun-text-paragraph-sm)\",\n color: \"var(--klun-text-sub-600)\",\n }}\n >\n “{role.name}” is a leaf role — it inherits {own.length + inherited.length} permissions and grants none of its own.\n </div>\n )}\n </div>\n ) : null}\n </div>\n </div>\n </>\n );\n}\n","// Metronic example — Scheduled tasks.\n// Cron-style background jobs: human-readable schedule, last/next run, inline\n// enable switch, \"run now\" with a simulated execution, a per-task run history\n// drawer and a create/edit dialog with schedule presets.\nimport { useState } from \"react\";\nimport {\n Badge,\n Button,\n Confirm,\n Drawer,\n Dropdown,\n Input,\n Label,\n Modal,\n RelativeTime,\n Select,\n Switch,\n Table,\n Textarea,\n useMessage,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { PageHeader, useDemoText } from \"./i18n\";\n\ntype RunStatus = \"success\" | \"failed\" | \"running\";\n\ninterface TaskRun {\n id: string;\n started: string;\n status: RunStatus;\n duration: string;\n trigger: \"schedule\" | \"manual\";\n output?: string;\n}\n\ninterface ScheduledTask {\n id: string;\n name: string;\n description: string;\n cron: string;\n human: string;\n timezone: string;\n lastRun: string | null;\n lastStatus: RunStatus | null;\n nextRun: string;\n duration: string;\n enabled: boolean;\n notifyOnFailure: boolean;\n retries: number;\n runs: TaskRun[];\n}\n\nconst PRESETS = [\n { value: \"*/5 * * * *\", label: \"Every 5 minutes — */5 * * * *\" },\n { value: \"*/15 * * * *\", label: \"Every 15 minutes — */15 * * * *\" },\n { value: \"0 * * * *\", label: \"Hourly, on the hour — 0 * * * *\" },\n { value: \"0 3 * * *\", label: \"Daily at 03:00 — 0 3 * * *\" },\n { value: \"0 9 * * 1\", label: \"Weekly, Monday 09:00 — 0 9 * * 1\" },\n { value: \"0 6 1 * *\", label: \"Monthly, 1st at 06:00 — 0 6 1 * *\" },\n { value: \"custom\", label: \"Custom cron expression…\" },\n];\n\nconst TIMEZONES = [\"UTC\", \"CET — Europe/Berlin\", \"PST — America/Los_Angeles\", \"JST — Asia/Tokyo\"];\n\nconst minutesAgo = (m: number) => new Date(Date.now() - m * 60_000).toISOString();\nconst minutesAhead = (m: number) => new Date(Date.now() + m * 60_000).toISOString();\n\nconst INITIAL_TASKS: ScheduledTask[] = [\n {\n id: \"t1\",\n name: \"Sync inventory from ERP\",\n description: \"Pulls stock levels from NetSuite and writes them back to the catalogue.\",\n cron: \"*/15 * * * *\",\n human: \"Every 15 minutes\",\n timezone: \"UTC\",\n lastRun: minutesAgo(4),\n lastStatus: \"success\",\n nextRun: minutesAhead(11),\n duration: \"42s\",\n enabled: true,\n notifyOnFailure: true,\n retries: 2,\n runs: [\n { id: \"r1\", started: minutesAgo(4), status: \"success\", duration: \"42s\", trigger: \"schedule\", output: \"1,284 SKUs updated · 0 conflicts\" },\n { id: \"r2\", started: minutesAgo(19), status: \"success\", duration: \"39s\", trigger: \"schedule\", output: \"1,281 SKUs updated · 3 skipped\" },\n { id: \"r3\", started: minutesAgo(34), status: \"failed\", duration: \"1m 02s\", trigger: \"schedule\", output: \"NetSuite API 504 (gateway timeout) — retried twice\" },\n ],\n },\n {\n id: \"t2\",\n name: \"Reindex product search\",\n description: \"Rebuilds the Algolia index for the storefront search.\",\n cron: \"0 3 * * *\",\n human: \"Daily at 03:00\",\n timezone: \"CET — Europe/Berlin\",\n lastRun: minutesAgo(60 * 9),\n lastStatus: \"success\",\n nextRun: minutesAhead(60 * 15),\n duration: \"6m 12s\",\n enabled: true,\n notifyOnFailure: true,\n retries: 1,\n runs: [\n { id: \"r4\", started: minutesAgo(60 * 9), status: \"success\", duration: \"6m 12s\", trigger: \"schedule\", output: \"12,940 documents indexed\" },\n { id: \"r5\", started: minutesAgo(60 * 33), status: \"success\", duration: \"6m 04s\", trigger: \"schedule\", output: \"12,806 documents indexed\" },\n ],\n },\n {\n id: \"t3\",\n name: \"Send abandoned-cart emails\",\n description: \"Queues the 24h cart-recovery sequence and hands it to the ESP.\",\n cron: \"0 * * * *\",\n human: \"Hourly, on the hour\",\n timezone: \"UTC\",\n lastRun: minutesAgo(20),\n lastStatus: \"failed\",\n nextRun: minutesAhead(40),\n duration: \"1m 03s\",\n enabled: true,\n notifyOnFailure: true,\n retries: 3,\n runs: [\n { id: \"r6\", started: minutesAgo(20), status: \"failed\", duration: \"1m 03s\", trigger: \"schedule\", output: \"ESP rate limit (429) after 3 retries\" },\n { id: \"r7\", started: minutesAgo(80), status: \"success\", duration: \"48s\", trigger: \"schedule\", output: \"312 emails queued\" },\n { id: \"r8\", started: minutesAgo(140), status: \"success\", duration: \"51s\", trigger: \"manual\", output: \"298 emails queued\" },\n ],\n },\n {\n id: \"t4\",\n name: \"Export nightly analytics to S3\",\n description: \"Dumps the previous day’s events as Parquet into the analytics bucket.\",\n cron: \"0 2 * * *\",\n human: \"Daily at 02:00\",\n timezone: \"UTC\",\n lastRun: minutesAgo(60 * 10),\n lastStatus: \"success\",\n nextRun: minutesAhead(60 * 14),\n duration: \"3m 40s\",\n enabled: true,\n notifyOnFailure: false,\n retries: 2,\n runs: [{ id: \"r9\", started: minutesAgo(60 * 10), status: \"success\", duration: \"3m 40s\", trigger: \"schedule\", output: \"4.2 GB written · s3://acme-analytics/2026-09-15/\" }],\n },\n {\n id: \"t5\",\n name: \"Recalculate customer segments\",\n description: \"Scores every customer and refreshes the segment memberships.\",\n cron: \"0 4 * * 1\",\n human: \"Weekly, Monday 04:00\",\n timezone: \"CET — Europe/Berlin\",\n lastRun: minutesAgo(60 * 24 * 3),\n lastStatus: \"success\",\n nextRun: minutesAhead(60 * 24 * 4),\n duration: \"12m 08s\",\n enabled: false,\n notifyOnFailure: true,\n retries: 1,\n runs: [{ id: \"r10\", started: minutesAgo(60 * 24 * 3), status: \"success\", duration: \"12m 08s\", trigger: \"schedule\", output: \"9,402 customers scored · 6 segments refreshed\" }],\n },\n {\n id: \"t6\",\n name: \"Purge expired sessions\",\n description: \"Housekeeping for the auth service — deletes sessions past their TTL.\",\n cron: \"*/30 * * * *\",\n human: \"Every 30 minutes\",\n timezone: \"UTC\",\n lastRun: minutesAgo(12),\n lastStatus: \"success\",\n nextRun: minutesAhead(18),\n duration: \"8s\",\n enabled: true,\n notifyOnFailure: false,\n retries: 0,\n runs: [{ id: \"r11\", started: minutesAgo(12), status: \"success\", duration: \"8s\", trigger: \"schedule\", output: \"1,409 rows deleted\" }],\n },\n];\n\nconst STATUS_COLOR: Record<RunStatus, \"green\" | \"red\" | \"blue\"> = {\n success: \"green\",\n failed: \"red\",\n running: \"blue\",\n};\n\nconst STATUS_LABEL: Record<RunStatus, string> = {\n success: \"Success\",\n failed: \"Failed\",\n running: \"Running\",\n};\n\nconst emptyForm = () => ({\n name: \"\",\n description: \"\",\n preset: PRESETS[2].value,\n cron: \"\",\n timezone: TIMEZONES[0],\n retries: \"2\",\n notify: true,\n enabled: true,\n});\n\nexport function TasksScreen() {\n const t = useDemoText();\n const [message, holder] = useMessage();\n const [tasks, setTasks] = useState<ScheduledTask[]>(INITIAL_TASKS);\n const [historyId, setHistoryId] = useState<string | null>(null);\n const [editor, setEditor] = useState<{ mode: \"create\" | \"edit\"; task?: ScheduledTask } | null>(null);\n const [form, setForm] = useState(emptyForm);\n\n const historyTask = historyId ? tasks.find((x) => x.id === historyId) ?? null : null;\n const running = tasks.filter((x) => x.lastStatus === \"running\").length;\n\n const stats = [\n { label: \"Active tasks\", value: String(tasks.filter((x) => x.enabled).length), hint: `of ${tasks.length}`, icon: \"ri-timer-2-line\", tone: \"primary\" as const },\n { label: \"Runs today\", value: \"1,248\", icon: \"ri-play-circle-line\", tone: \"info\" as const },\n { label: \"Failures (24h)\", value: \"3\", icon: \"ri-error-warning-line\", tone: \"error\" as const },\n { label: \"Avg duration\", value: \"2m 41s\", icon: \"ri-speed-up-line\", tone: \"success\" as const },\n ];\n\n const openCreate = () => {\n setForm(emptyForm());\n setEditor({ mode: \"create\" });\n };\n\n const openEdit = (task: ScheduledTask) => {\n setForm({\n name: task.name,\n description: task.description,\n preset: PRESETS.some((p) => p.value === task.cron) ? task.cron : \"custom\",\n cron: task.cron,\n timezone: task.timezone,\n retries: String(task.retries),\n notify: task.notifyOnFailure,\n enabled: task.enabled,\n });\n setEditor({ mode: \"edit\", task });\n };\n\n const save = () => {\n if (!form.name.trim()) {\n message.error({ content: \"Give the task a name.\", key: \"task\" });\n return;\n }\n const cron = form.preset === \"custom\" ? form.cron.trim() : form.preset;\n if (!cron) {\n message.error({ content: \"A cron expression is required.\", key: \"task\" });\n return;\n }\n const human = PRESETS.find((p) => p.value === cron)?.label.split(\" — \")[0] ?? `Custom (${cron})`;\n\n if (editor?.mode === \"edit\" && editor.task) {\n const id = editor.task.id;\n setTasks((prev) =>\n prev.map((x) =>\n x.id === id\n ? {\n ...x,\n name: form.name.trim(),\n description: form.description.trim(),\n cron,\n human,\n timezone: form.timezone,\n retries: Math.max(0, Number(form.retries) || 0),\n notifyOnFailure: form.notify,\n enabled: form.enabled,\n }\n : x,\n ),\n );\n message.success({ content: `${form.name.trim()} updated.`, key: \"task\" });\n } else {\n setTasks((prev) => [\n {\n id: `t${Date.now()}`,\n name: form.name.trim(),\n description: form.description.trim(),\n cron,\n human,\n timezone: form.timezone,\n lastRun: null,\n lastStatus: null,\n nextRun: minutesAhead(15),\n duration: \"—\",\n enabled: form.enabled,\n notifyOnFailure: form.notify,\n retries: Math.max(0, Number(form.retries) || 0),\n runs: [],\n },\n ...prev,\n ]);\n message.success({ content: `${form.name.trim()} scheduled (${human.toLowerCase()}).`, key: \"task\" });\n }\n setEditor(null);\n };\n\n const runNow = (task: ScheduledTask) => {\n const startedAt = new Date().toISOString();\n setTasks((prev) =>\n prev.map((x) => (x.id === task.id ? { ...x, lastStatus: \"running\", lastRun: startedAt } : x)),\n );\n message.loading({ content: `Running “${task.name}”…`, key: \"run\" });\n window.setTimeout(() => {\n const duration = `${8 + Math.round(Math.random() * 40)}s`;\n setTasks((prev) =>\n prev.map((x) =>\n x.id === task.id\n ? {\n ...x,\n lastStatus: \"success\",\n duration,\n nextRun: minutesAhead(15),\n runs: [\n { id: `r${Date.now()}`, started: startedAt, status: \"success\", duration, trigger: \"manual\", output: \"Completed without errors.\" },\n ...x.runs,\n ],\n }\n : x,\n ),\n );\n message.success({ content: `“${task.name}” finished in ${duration}.`, key: \"run\" });\n }, 1400);\n };\n\n const toggle = (task: ScheduledTask, enabled: boolean) => {\n setTasks((prev) => prev.map((x) => (x.id === task.id ? { ...x, enabled } : x)));\n message.info({ content: `${task.name} ${enabled ? \"enabled\" : \"paused\"}.`, key: \"task\" });\n };\n\n const remove = async (task: ScheduledTask) => {\n const res = await Confirm({\n title: `Delete “${task.name}”?`,\n description: \"The schedule and its run history are removed. Running executions are not cancelled.\",\n intent: \"danger\",\n confirmText: \"Delete task\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setTasks((prev) => prev.filter((x) => x.id !== task.id));\n if (historyId === task.id) setHistoryId(null);\n message.info({ content: `${task.name} deleted.`, key: \"task\" });\n }\n };\n\n const columns: TableColumn<ScheduledTask>[] = [\n {\n key: \"name\",\n header: \"Task\",\n render: (x) => (\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 2, minWidth: 0 }}>\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{x.name}</b>\n {!x.enabled ? (\n <Badge color=\"gray\" variant=\"lighter\" size=\"small\">\n Paused\n </Badge>\n ) : null}\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{x.description}</span>\n </span>\n ),\n },\n {\n key: \"human\",\n header: \"Schedule\",\n render: (x) => (\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{x.human}</span>\n <code style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{x.cron}</code>\n </span>\n ),\n },\n {\n key: \"lastRun\",\n header: \"Last run\",\n sortable: true,\n sortAccessor: (x) => x.lastRun ?? \"\",\n render: (x) =>\n x.lastRun && x.lastStatus ? (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Badge color={STATUS_COLOR[x.lastStatus]} variant=\"light\" size=\"small\" dot>\n {STATUS_LABEL[x.lastStatus]}\n </Badge>\n <RelativeTime date={x.lastRun} live={false} style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }} />\n </span>\n ) : (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-soft-400)\" }}>Never</span>\n ),\n },\n {\n key: \"nextRun\",\n header: \"Next run\",\n render: (x) =>\n x.enabled ? (\n <RelativeTime date={x.nextRun} style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }} />\n ) : (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-soft-400)\" }}>—</span>\n ),\n },\n { key: \"duration\", header: \"Duration\", align: \"right\" },\n {\n key: \"enabled\",\n header: \"Enabled\",\n align: \"center\",\n exportable: false,\n render: (x) => <Switch size=\"small\" checked={x.enabled} onChange={(v) => toggle(x, v)} />,\n },\n {\n key: \"actions\",\n header: \"\",\n width: 60,\n align: \"right\",\n exportable: false,\n render: (x) => (\n <Dropdown\n align=\"right\"\n width={200}\n trigger={<Button kind=\"compact\" appearance=\"ghost\" icon={<i className=\"ri-more-2-line\" />} aria-label={`Actions for ${x.name}`} />}\n items={[\n { label: t.common.runNow, icon: <i className=\"ri-play-circle-line\" />, onClick: () => runNow(x) },\n { label: \"Run history\", icon: <i className=\"ri-history-line\" />, onClick: () => setHistoryId(x.id) },\n { label: t.common.edit, icon: <i className=\"ri-edit-line\" />, onClick: () => openEdit(x) },\n { divider: true, label: \"\" },\n { label: \"Delete task\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void remove(x) },\n ]}\n />\n ),\n },\n ];\n\n return (\n <>\n {holder}\n\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"tasks\"\n extra={\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button\n size=\"small\"\n variant=\"neutral\"\n appearance=\"stroke\"\n leadingIcon={<i className=\"ri-refresh-line\" />}\n onClick={() => message.success({ content: \"Schedules refreshed from the scheduler service.\", key: \"task\" })}\n >\n {t.common.refresh}\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />} onClick={openCreate}>\n New task\n </Button>\n </div>\n }\n />\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\", gap: 12 }}>\n {stats.map((s) => {\n const token = s.tone === \"primary\" ? \"primary\" : s.tone === \"info\" ? \"information\" : s.tone === \"error\" ? \"error\" : \"success\";\n return (\n <div\n key={s.label}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n padding: \"14px 16px\",\n background: \"var(--klun-bg-white-0)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-xl)\",\n }}\n >\n <span\n style={{\n width: 34,\n height: 34,\n borderRadius: \"var(--klun-radius-lg)\",\n background: `var(--klun-state-${token}-lighter)`,\n color: `var(--klun-state-${token}-base)`,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 17,\n }}\n >\n <i className={s.icon} />\n </span>\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{s.label}</div>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {s.value}\n {s.hint ? <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\", marginLeft: 6 }}>{s.hint}</span> : null}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {running ? (\n <div\n style={{\n padding: \"10px 14px\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-state-information-lighter)\",\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-sub-600)\",\n }}\n >\n <i className=\"ri-loader-4-line\" style={{ marginRight: 6 }} />\n {running} task{running === 1 ? \"\" : \"s\"} running right now…\n </div>\n ) : null}\n\n <Table\n columns={columns}\n rows={tasks}\n getRowId={(x) => x.id}\n title={`Scheduled tasks (${tasks.length})`}\n sortable\n exportable={{ filename: \"scheduled-tasks.csv\" }}\n onRowClick={(x) => setHistoryId(x.id)}\n />\n </div>\n\n <Modal\n open={editor !== null}\n onClose={() => setEditor(null)}\n title={editor?.mode === \"edit\" ? `Edit “${editor.task?.name}”` : \"New scheduled task\"}\n description=\"Cron schedules run in the selected timezone and retry on failure.\"\n okText={editor?.mode === \"edit\" ? t.common.save : \"Create task\"}\n onOk={save}\n width={560}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Task name</Label>\n <Input placeholder=\"Sync inventory from ERP\" leadingIcon={<i className=\"ri-timer-2-line\" />} value={form.name} onChange={(e) => setForm((f) => ({ ...f, name: e.target.value }))} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Description</Label>\n <Textarea rows={2} placeholder=\"What does this job do?\" value={form.description} onChange={(e) => setForm((f) => ({ ...f, description: e.target.value }))} />\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: form.preset === \"custom\" ? \"1fr 1fr\" : \"1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Schedule</Label>\n <Select value={form.preset} onChange={(e) => setForm((f) => ({ ...f, preset: e.target.value }))}>\n {PRESETS.map((p) => (\n <option key={p.value} value={p.value}>\n {p.label}\n </option>\n ))}\n </Select>\n </div>\n {form.preset === \"custom\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Cron expression</Label>\n <Input placeholder=\"0 3 * * *\" value={form.cron} onChange={(e) => setForm((f) => ({ ...f, cron: e.target.value }))} />\n </div>\n ) : null}\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Timezone</Label>\n <Select value={form.timezone} onChange={(e) => setForm((f) => ({ ...f, timezone: e.target.value }))}>\n {TIMEZONES.map((z) => (\n <option key={z} value={z}>\n {z}\n </option>\n ))}\n </Select>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Max retries</Label>\n <Input type=\"number\" min={0} max={5} value={form.retries} onChange={(e) => setForm((f) => ({ ...f, retries: e.target.value }))} />\n </div>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16, paddingTop: 4 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Notify on failure</b>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n Posts to #alerts and emails the owner after the final retry.\n </span>\n </div>\n <Switch checked={form.notify} onChange={(v) => setForm((f) => ({ ...f, notify: v }))} />\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Enabled</b>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n Paused tasks keep their schedule but don't run.\n </span>\n </div>\n <Switch checked={form.enabled} onChange={(v) => setForm((f) => ({ ...f, enabled: v }))} />\n </div>\n </div>\n </Modal>\n\n <Drawer\n open={historyTask !== null}\n onClose={() => setHistoryId(null)}\n title={historyTask ? `${historyTask.name} — runs` : \"\"}\n placement=\"right\"\n width={460}\n extra={\n historyTask ? (\n <Badge color={historyTask.enabled ? \"green\" : \"gray\"} variant=\"light\" size=\"small\" dot>\n {historyTask.enabled ? \"Enabled\" : \"Paused\"}\n </Badge>\n ) : null\n }\n footer={\n historyTask ? (\n <>\n <Button variant=\"neutral\" appearance=\"stroke\" onClick={() => openEdit(historyTask)}>\n {t.common.edit}\n </Button>\n <Button leadingIcon={<i className=\"ri-play-circle-line\" />} onClick={() => runNow(historyTask)}>\n {t.common.runNow}\n </Button>\n </>\n ) : null\n }\n >\n {historyTask ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: 12,\n padding: 14,\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-bg-weak-50)\",\n }}\n >\n {[\n { label: \"Cron\", value: historyTask.cron },\n { label: \"Timezone\", value: historyTask.timezone },\n { label: \"Last duration\", value: historyTask.duration },\n { label: \"Retries\", value: String(historyTask.retries) },\n ].map((row) => (\n <div key={row.label} style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{row.label}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{row.value}</span>\n </div>\n ))}\n </div>\n\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n Recent runs ({historyTask.runs.length})\n </span>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {historyTask.runs.map((run) => (\n <div\n key={run.id}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n padding: \"10px 12px\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-lg)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <Badge color={STATUS_COLOR[run.status]} variant=\"light\" size=\"small\" dot>\n {STATUS_LABEL[run.status]}\n </Badge>\n <RelativeTime date={run.started} live={false} style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\" }} />\n <span style={{ marginLeft: \"auto\", font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {run.duration} · {run.trigger}\n </span>\n </div>\n {run.output ? (\n <code style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\", whiteSpace: \"pre-wrap\" }}>{run.output}</code>\n ) : null}\n </div>\n ))}\n {historyTask.runs.length === 0 ? (\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>\n No runs yet — press “{t.common.runNow}” to execute it.\n </span>\n ) : null}\n </div>\n </div>\n ) : null}\n </Drawer>\n </>\n );\n}\n","// Metronic example — Audit log.\n// Filterable event stream: search, severity + action + range filters, actor and\n// target columns, result badges, CSV export and a drawer showing the request\n// metadata (JSON) behind each entry.\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n Avatar,\n Badge,\n Button,\n Chip,\n CopyButton,\n Drawer,\n RelativeTime,\n SegmentedControl,\n Input,\n Select,\n Table,\n useMessage,\n} from \"../../index\";\nimport type { ChipColor, TableColumn } from \"../../index\";\nimport { PageHeader, useDemoText } from \"./i18n\";\n\ntype Severity = \"info\" | \"warning\" | \"critical\";\ntype ActionResult = \"success\" | \"failed\" | \"blocked\";\n\ninterface AuditEvent {\n id: string;\n at: string;\n actor: string;\n actorEmail: string;\n actorRole: string;\n action: \"create\" | \"update\" | \"delete\" | \"login\" | \"export\" | \"permission\";\n target: string;\n ip: string;\n location: string;\n agent: string;\n severity: Severity;\n result: ActionResult;\n requestId: string;\n metadata: Record<string, unknown>;\n}\n\nconst hoursAgo = (h: number) => new Date(Date.now() - h * 3_600_000).toISOString();\n\nconst EVENTS: AuditEvent[] = [\n {\n id: \"a1\",\n at: hoursAgo(0.2),\n actor: \"Anna Krause\",\n actorEmail: \"anna@acme.io\",\n actorRole: \"Owner\",\n action: \"permission\",\n target: \"Role · Manager\",\n ip: \"84.117.22.8\",\n location: \"Berlin, DE\",\n agent: \"Chrome 129 · macOS 15\",\n severity: \"critical\",\n result: \"success\",\n requestId: \"req_8f21c4\",\n metadata: { from: [\"orders:read\"], to: [\"orders:write\", \"products:write\", \"reports:view\"], reason: \"Quarterly access review\" },\n },\n {\n id: \"a2\",\n at: hoursAgo(0.8),\n actor: \"Ben Ortiz\",\n actorEmail: \"ben@acme.io\",\n actorRole: \"Admin\",\n action: \"delete\",\n target: \"Product · Aurora desk lamp\",\n ip: \"91.64.180.44\",\n location: \"Munich, DE\",\n agent: \"Firefox 130 · Windows 11\",\n severity: \"warning\",\n result: \"success\",\n requestId: \"req_7c9ab1\",\n metadata: { sku: \"AUR-4402\", reason: \"Discontinued by supplier\", cascade: [\"pricing\", \"media\"] },\n },\n {\n id: \"a3\",\n at: hoursAgo(1.4),\n actor: \"Unknown\",\n actorEmail: \"—\",\n actorRole: \"—\",\n action: \"login\",\n target: \"Sign-in attempt · anna@acme.io\",\n ip: \"203.0.113.77\",\n location: \"Unknown (VPN)\",\n agent: \"curl/8.4.0\",\n severity: \"critical\",\n result: \"blocked\",\n requestId: \"req_44e0fe\",\n metadata: { method: \"password\", mfa: \"missing\", blockedBy: \"geo-fence + device fingerprint\" },\n },\n {\n id: \"a4\",\n at: hoursAgo(2.1),\n actor: \"Chloe Lin\",\n actorEmail: \"chloe@acme.io\",\n actorRole: \"Admin\",\n action: \"export\",\n target: \"Customers · 9,402 rows\",\n ip: \"84.117.22.8\",\n location: \"Berlin, DE\",\n agent: \"Klun app · iOS 18.1\",\n severity: \"warning\",\n result: \"success\",\n requestId: \"req_1d77a3\",\n metadata: { format: \"csv\", columns: 14, filteredBy: \"segment=VIP\" },\n },\n {\n id: \"a5\",\n at: hoursAgo(3.6),\n actor: \"Dmitri Volkov\",\n actorEmail: \"dmitri@acme.io\",\n actorRole: \"Manager\",\n action: \"update\",\n target: \"Order · #A-1039\",\n ip: \"178.189.7.19\",\n location: \"Vienna, AT\",\n agent: \"Chrome 129 · macOS 15\",\n severity: \"info\",\n result: \"success\",\n requestId: \"req_9b31c8\",\n metadata: { field: \"status\", from: \"Processing\", to: \"Refunded\", amount: 120.0 },\n },\n {\n id: \"a6\",\n at: hoursAgo(5.2),\n actor: \"Farid Haddad\",\n actorEmail: \"farid@acme.io\",\n actorRole: \"Manager\",\n action: \"create\",\n target: \"API key · Staging sandbox\",\n ip: \"91.64.180.44\",\n location: \"Munich, DE\",\n agent: \"Chrome 129 · Windows 11\",\n severity: \"warning\",\n result: \"success\",\n requestId: \"req_2fa8d0\",\n metadata: { scopes: [\"read:orders\", \"write:orders\", \"admin\"], expiresIn: \"90d\" },\n },\n {\n id: \"a7\",\n at: hoursAgo(8.9),\n actor: \"Grace Miller\",\n actorEmail: \"grace@acme.io\",\n actorRole: \"Editor\",\n action: \"update\",\n target: \"Product · Nimbus headphones\",\n ip: \"84.117.22.8\",\n location: \"Berlin, DE\",\n agent: \"Safari 18 · iPadOS 18\",\n severity: \"info\",\n result: \"success\",\n requestId: \"req_5c02bb\",\n metadata: { field: \"price\", from: 249.0, to: 229.0 },\n },\n {\n id: \"a8\",\n at: hoursAgo(11.5),\n actor: \"Hugo Silva\",\n actorEmail: \"hugo@acme.io\",\n actorRole: \"Editor\",\n action: \"permission\",\n target: \"Role · Viewer\",\n ip: \"185.22.44.10\",\n location: \"Lisbon, PT\",\n agent: \"Chrome 129 · macOS 15\",\n severity: \"critical\",\n result: \"failed\",\n requestId: \"req_77aa19\",\n metadata: { attempted: [\"billing:view\"], error: \"403 — requires roles:manage\" },\n },\n {\n id: \"a9\",\n at: hoursAgo(20.3),\n actor: \"Ivy Chen\",\n actorEmail: \"ivy@acme.io\",\n actorRole: \"Editor\",\n action: \"login\",\n target: \"Sign-in · password + TOTP\",\n ip: \"116.228.9.51\",\n location: \"Shanghai, CN\",\n agent: \"Edge 128 · Windows 11\",\n severity: \"info\",\n result: \"success\",\n requestId: \"req_6ed480\",\n metadata: { mfa: \"totp\", device: \"Windows desktop\" },\n },\n {\n id: \"a10\",\n at: hoursAgo(28.7),\n actor: \"Jonas Weber\",\n actorEmail: \"jonas@acme.io\",\n actorRole: \"Editor\",\n action: \"delete\",\n target: \"Customer · Karla Novak\",\n ip: \"84.117.22.8\",\n location: \"Berlin, DE\",\n agent: \"Chrome 129 · macOS 15\",\n severity: \"warning\",\n result: \"success\",\n requestId: \"req_3b7f21\",\n metadata: { gdpr: \"erasure request #2291\", archived: true },\n },\n {\n id: \"a11\",\n at: hoursAgo(40.1),\n actor: \"System\",\n actorEmail: \"scheduler@klun.io\",\n actorRole: \"Service\",\n action: \"update\",\n target: \"Scheduled task · Reindex product search\",\n ip: \"10.0.4.19\",\n location: \"internal\",\n agent: \"klun-scheduler/2.4\",\n severity: \"info\",\n result: \"success\",\n requestId: \"req_0c19dd\",\n metadata: { duration: \"6m 12s\", documents: 12940 },\n },\n {\n id: \"a12\",\n at: hoursAgo(52.6),\n actor: \"Liam Byrne\",\n actorEmail: \"liam@acme.io\",\n actorRole: \"Viewer\",\n action: \"export\",\n target: \"Orders · 312 rows\",\n ip: \"203.0.113.19\",\n location: \"Dublin, IE\",\n agent: \"Chrome 129 · macOS 15\",\n severity: \"warning\",\n result: \"blocked\",\n requestId: \"req_a5f2c7\",\n metadata: { reason: \"Export requires reports:view — role only grants orders:read\" },\n },\n];\n\nconst ACTION_COLOR: Record<AuditEvent[\"action\"], ChipColor> = {\n create: \"green\",\n update: \"blue\",\n delete: \"red\",\n login: \"purple\",\n export: \"orange\",\n permission: \"teal\",\n};\n\nconst SEVERITY_COLOR: Record<Severity, \"gray\" | \"orange\" | \"red\"> = {\n info: \"gray\",\n warning: \"orange\",\n critical: \"red\",\n};\n\nconst RESULT_COLOR: Record<ActionResult, \"green\" | \"red\" | \"gray\"> = {\n success: \"green\",\n failed: \"red\",\n blocked: \"gray\",\n};\n\nconst SEVERITIES: Array<{ value: string; label: string }> = [\n { value: \"all\", label: \"All\" },\n { value: \"info\", label: \"Info\" },\n { value: \"warning\", label: \"Warning\" },\n { value: \"critical\", label: \"Critical\" },\n];\n\nconst ACTIONS = [\"all\", \"create\", \"update\", \"delete\", \"login\", \"export\", \"permission\"];\n\nconst RANGES: Array<{ value: string; label: string }> = [\n { value: \"24h\", label: \"24h\" },\n { value: \"7d\", label: \"7 days\" },\n { value: \"30d\", label: \"30 days\" },\n];\n\nconst RANGE_HOURS: Record<string, number> = { \"24h\": 24, \"7d\": 168, \"30d\": 720 };\n\nexport interface AuditScreenProps {\n /** Pre-filter the trail by actor (set from the user detail drawer). */\n initialActor?: string;\n}\n\nexport function AuditScreen({ initialActor }: AuditScreenProps = {}) {\n const t = useDemoText();\n const [message, holder] = useMessage();\n const [query, setQuery] = useState(\"\");\n const [severity, setSeverity] = useState(\"all\");\n const [action, setAction] = useState(\"all\");\n const [range, setRange] = useState(\"30d\");\n const [actor, setActor] = useState<string | undefined>(initialActor);\n const [detailId, setDetailId] = useState<string | null>(null);\n\n useEffect(() => {\n if (initialActor) setActor(initialActor);\n }, [initialActor]);\n\n const detail = detailId ? EVENTS.find((e) => e.id === detailId) ?? null : null;\n\n const rows = useMemo(() => {\n const q = query.trim().toLowerCase();\n const since = Date.now() - RANGE_HOURS[range] * 3_600_000;\n return EVENTS.filter((e) => {\n if (new Date(e.at).getTime() < since) return false;\n if (actor && e.actor !== actor && e.actorEmail !== actor) return false;\n if (severity !== \"all\" && e.severity !== severity) return false;\n if (action !== \"all\" && e.action !== action) return false;\n if (!q) return true;\n return (\n e.actor.toLowerCase().includes(q) ||\n e.target.toLowerCase().includes(q) ||\n e.ip.includes(q) ||\n e.requestId.toLowerCase().includes(q)\n );\n });\n }, [query, severity, action, range, actor]);\n\n const criticalCount = rows.filter((e) => e.severity === \"critical\").length;\n const blockedCount = rows.filter((e) => e.result !== \"success\").length;\n\n const columns: TableColumn<AuditEvent>[] = [\n {\n key: \"at\",\n header: \"Time\",\n sortable: true,\n sortAccessor: (e) => e.at,\n render: (e) => (\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\n <RelativeTime date={e.at} live={false} style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }} />\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {new Date(e.at).toISOString().slice(11, 19)} UTC\n </span>\n </span>\n ),\n },\n {\n key: \"actor\",\n header: \"Actor\",\n render: (e) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Avatar\n size=\"24\"\n initials={e.actor === \"System\" || e.actor === \"Unknown\" ? \"?\" : e.actor.split(\" \").map((s) => s[0]).join(\"\")}\n color={e.actor === \"Unknown\" ? \"orange\" : \"blue\"}\n />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{e.actor}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {e.actorRole}\n {e.actorEmail !== \"—\" ? ` · ${e.actorEmail}` : \"\"}\n </span>\n </span>\n </span>\n ),\n },\n {\n key: \"action\",\n header: \"Action\",\n filters: ACTIONS.slice(1).map((a) => ({ label: a, value: a })),\n render: (e) => (\n <Chip color={ACTION_COLOR[e.action]} dot>\n {e.action}\n </Chip>\n ),\n },\n {\n key: \"target\",\n header: \"Target\",\n render: (e) => <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>{e.target}</span>,\n },\n {\n key: \"severity\",\n header: \"Severity\",\n filters: [\n { label: \"Info\", value: \"info\" },\n { label: \"Warning\", value: \"warning\" },\n { label: \"Critical\", value: \"critical\" },\n ],\n render: (e) => (\n <Badge color={SEVERITY_COLOR[e.severity]} variant=\"light\" size=\"small\" dot>\n {e.severity}\n </Badge>\n ),\n },\n {\n key: \"result\",\n header: \"Result\",\n render: (e) => (\n <Badge color={RESULT_COLOR[e.result]} variant=\"lighter\" size=\"small\">\n {e.result}\n </Badge>\n ),\n },\n {\n key: \"ip\",\n header: \"IP / Location\",\n render: (e) => (\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\n <code style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-strong-950)\" }}>{e.ip}</code>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{e.location}</span>\n </span>\n ),\n },\n ];\n\n return (\n <>\n {holder}\n\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"audit\"\n extra={\n <div style={{ display: \"flex\", gap: 8 }}>\n <SegmentedControl items={RANGES} value={range} onChange={(v) => setRange(String(v))} />\n <Button\n size=\"small\"\n variant=\"neutral\"\n appearance=\"stroke\"\n leadingIcon={<i className=\"ri-download-2-line\" />}\n onClick={() => message.success({ content: `audit-log-${range}.csv exported (${rows.length} events).`, key: \"audit\" })}\n >\n {t.common.export}\n </Button>\n </div>\n }\n />\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12, flexWrap: \"wrap\" }}>\n <div style={{ width: 260 }}>\n <Input\n size=\"small\"\n placeholder=\"Search actor, target, IP or request id…\"\n leadingIcon={<i className=\"ri-search-line\" />}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n <div style={{ width: 190 }}>\n <Select size=\"small\" value={action} onChange={(e) => setAction(e.target.value)}>\n {ACTIONS.map((a) => (\n <option key={a} value={a}>\n {a === \"all\" ? \"All actions\" : a}\n </option>\n ))}\n </Select>\n </div>\n <SegmentedControl items={SEVERITIES} value={severity} onChange={(v) => setSeverity(String(v))} />\n {actor ? (\n <Chip color=\"blue\" onDismiss={() => setActor(undefined)}>\n Actor: {actor}\n </Chip>\n ) : null}\n <span style={{ marginLeft: \"auto\", display: \"flex\", gap: 8, alignItems: \"center\" }}>\n <Badge color=\"gray\" variant=\"light\" size=\"small\">\n {rows.length} events\n </Badge>\n <Badge color=\"red\" variant=\"light\" size=\"small\" dot>\n {criticalCount} critical\n </Badge>\n <Badge color=\"orange\" variant=\"light\" size=\"small\" dot>\n {blockedCount} blocked / failed\n </Badge>\n </span>\n </div>\n\n <Table\n columns={columns}\n rows={rows}\n getRowId={(e) => e.id}\n title={`Audit trail · last ${range}`}\n sortable\n exportable={{ filename: `audit-log-${range}.csv` }}\n pagination={{ defaultPageSize: 8, pageSizeOptions: [8, 20] }}\n onRowClick={(e) => setDetailId(e.id)}\n empty={\n <div style={{ padding: 40, textAlign: \"center\", color: \"var(--klun-text-soft-400)\", font: \"var(--klun-text-paragraph-sm)\" }}>\n <i className=\"ri-shield-check-line\" style={{ display: \"block\", fontSize: 32, marginBottom: 8 }} />\n No events match these filters.\n </div>\n }\n />\n </div>\n\n <Drawer\n open={detail !== null}\n onClose={() => setDetailId(null)}\n title={detail ? `Event ${detail.requestId}` : \"\"}\n placement=\"right\"\n width={480}\n extra={\n detail ? (\n <Badge color={SEVERITY_COLOR[detail.severity]} variant=\"light\" size=\"small\" dot>\n {detail.severity}\n </Badge>\n ) : null\n }\n footer={\n detail ? (\n <>\n <Button\n variant=\"neutral\"\n appearance=\"ghost\"\n leadingIcon={<i className=\"ri-user-forbid-line\" />}\n onClick={() => message.warning({ content: `${detail.actor} blocked — sessions revoked.`, key: \"audit\" })}\n >\n Block actor\n </Button>\n <Button\n variant=\"neutral\"\n appearance=\"stroke\"\n leadingIcon={<i className=\"ri-download-2-line\" />}\n onClick={() => message.success({ content: `Event ${detail.requestId} exported as JSON.`, key: \"audit\" })}\n >\n Export JSON\n </Button>\n </>\n ) : null\n }\n >\n {detail ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <Avatar size=\"40\" initials={detail.actor.split(\" \").map((s) => s[0]).join(\"\")} color={detail.actor === \"Unknown\" ? \"orange\" : \"blue\"} />\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{detail.actor}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {detail.actorRole}\n {detail.actorEmail !== \"—\" ? ` · ${detail.actorEmail}` : \"\"}\n </div>\n </div>\n <span style={{ marginLeft: \"auto\" }}>\n <Chip color={ACTION_COLOR[detail.action]} dot>\n {detail.action}\n </Chip>\n </span>\n </div>\n\n <div style={{ padding: \"12px 14px\", borderRadius: \"var(--klun-radius-xl)\", background: \"var(--klun-bg-weak-50)\" }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{detail.target}</div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\", marginTop: 2 }}>\n <RelativeTime date={detail.at} live={false} /> · {new Date(detail.at).toISOString().replace(\"T\", \" \").slice(0, 19)} UTC\n </div>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 12 }}>\n {[\n { label: \"Result\", value: detail.result },\n { label: \"IP address\", value: detail.ip },\n { label: \"Location\", value: detail.location },\n { label: \"Request id\", value: detail.requestId },\n ].map((row) => (\n <div key={row.label} style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{row.label}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{row.value}</span>\n </div>\n ))}\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>User agent</span>\n <code style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\" }}>{detail.agent}</code>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Metadata</span>\n <CopyButton\n size=\"sm\"\n variant=\"ghost\"\n value={JSON.stringify(detail.metadata, null, 2)}\n onCopied={() => message.success({ content: \"Metadata copied.\", key: \"audit\" })}\n />\n </div>\n <pre\n style={{\n margin: 0,\n padding: 12,\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-sub-600)\",\n overflow: \"auto\",\n maxHeight: 280,\n }}\n >\n {JSON.stringify(detail.metadata, null, 2)}\n </pre>\n </div>\n </div>\n ) : null}\n </Drawer>\n </>\n );\n}\n","// Metronic example — user management model.\n// The single source of truth shared by the users list, the user detail drawer\n// and the audit screen: people, their department, roles, direct permission\n// overrides, sessions and recent activity.\nimport type { ChipColor } from \"../../index\";\n\nexport type UserStatus = \"Active\" | \"Invited\" | \"Suspended\" | \"Locked\";\nexport type RoleId = \"Owner\" | \"Admin\" | \"Manager\" | \"Editor\" | \"Viewer\" | \"Support\";\n\nexport interface UserSession {\n id: string;\n device: string;\n icon: string;\n browser: string;\n ip: string;\n location: string;\n lastActive: string;\n current?: boolean;\n}\n\nexport interface UserActivity {\n id: string;\n at: string;\n action: \"create\" | \"update\" | \"delete\" | \"login\" | \"export\" | \"permission\";\n target: string;\n ip: string;\n result: \"success\" | \"failed\" | \"blocked\";\n}\n\nexport interface PermissionOverride {\n id: string;\n permission: string;\n /** Allow grants a permission the roles don't; deny removes one they grant. */\n effect: \"allow\" | \"deny\";\n}\n\nexport interface DemoUser {\n id: string;\n name: string;\n email: string;\n title: string;\n avatarColor: \"blue\" | \"purple\" | \"green\" | \"orange\" | \"gray\";\n /** Department id — see DEPARTMENTS. */\n department: string;\n manager: string;\n location: string;\n timezone: string;\n roles: RoleId[];\n status: UserStatus;\n twoFA: boolean;\n forcePasswordChange: boolean;\n failedLogins: number;\n lastActive: string;\n createdAt: string;\n passwordChangedAt: string;\n overrides: PermissionOverride[];\n sessions: UserSession[];\n activity: UserActivity[];\n}\n\n/* ---- departments (flattened mirror of the departments screen) ---- */\n\nexport interface DepartmentOption {\n id: string;\n name: string;\n path: string;\n}\n\nexport const DEPARTMENTS: DepartmentOption[] = [\n { id: \"hq\", name: \"Acme HQ\", path: \"Acme HQ\" },\n { id: \"eng\", name: \"Engineering\", path: \"Acme HQ / Engineering\" },\n { id: \"fe\", name: \"Frontend\", path: \"Acme HQ / Engineering / Frontend\" },\n { id: \"platform\", name: \"Platform\", path: \"Acme HQ / Engineering / Platform\" },\n { id: \"product\", name: \"Product & design\", path: \"Acme HQ / Product & design\" },\n { id: \"design\", name: \"Design\", path: \"Acme HQ / Product & design / Design\" },\n { id: \"research\", name: \"Research\", path: \"Acme HQ / Product & design / Research\" },\n { id: \"gtm\", name: \"Go-to-market\", path: \"Acme HQ / Go-to-market\" },\n { id: \"sales\", name: \"Sales\", path: \"Acme HQ / Go-to-market / Sales\" },\n { id: \"cs\", name: \"Support\", path: \"Acme HQ / Go-to-market / Support\" },\n];\n\nexport const departmentPath = (id: string) => DEPARTMENTS.find((d) => d.id === id)?.path ?? \"—\";\nexport const departmentName = (id: string) => DEPARTMENTS.find((d) => d.id === id)?.name ?? \"—\";\n\n/** A department plus every descendant — picking a parent filters the whole branch. */\nexport const departmentIdsWithChildren = (id: string): string[] => {\n const node = DEPARTMENTS.find((d) => d.id === id);\n if (!node) return [];\n return DEPARTMENTS.filter((d) => d.id === node.id || d.path.startsWith(`${node.path} / `)).map((d) => d.id);\n};\n\n/** Depth of a department in the tree (0 = root). */\nexport const departmentDepth = (id: string): number => {\n const path = departmentPath(id);\n return path === \"—\" ? 0 : path.split(\" / \").length - 1;\n};\n\n/** Direct children of a department (or the roots when `id` is null). */\nexport const departmentChildren = (id: string | null): DepartmentOption[] =>\n DEPARTMENTS.filter((d) => {\n if (id === null) return !d.path.includes(\" / \");\n const parent = DEPARTMENTS.find((p) => p.id === id);\n if (!parent) return false;\n return d.path.startsWith(`${parent.path} / `) && !d.path.slice(parent.path.length + 3).includes(\" / \");\n });\n\n/** Id path from the root down to `id` — what a Cascader expects as its value. */\nexport const departmentIdPath = (id: string): string[] => {\n const node = DEPARTMENTS.find((d) => d.id === id);\n if (!node) return [];\n const ids: string[] = [];\n let prefix = \"\";\n for (const name of node.path.split(\" / \")) {\n prefix = prefix ? `${prefix} / ${name}` : name;\n const hit = DEPARTMENTS.find((d) => d.path === prefix);\n if (hit) ids.push(hit.id);\n }\n return ids;\n};\n\n/* ---- roles & permissions ---- */\n\nexport const ROLE_IDS: RoleId[] = [\"Owner\", \"Admin\", \"Manager\", \"Editor\", \"Viewer\", \"Support\"];\n\n/** Permissions granted by each role (children inherit their parents'). */\nexport const ROLE_PERMISSIONS: Record<RoleId, string[]> = {\n Owner: [\"workspace:transfer\", \"billing:manage\", \"roles:manage\", \"users:manage\", \"settings:manage\", \"orders:write\", \"products:write\", \"customers:write\", \"reports:view\", \"customers:view\", \"orders:view\", \"products:view\"],\n Admin: [\"users:manage\", \"settings:manage\", \"roles:view\", \"billing:view\", \"reports:view\", \"orders:write\", \"products:write\", \"customers:write\", \"customers:view\", \"orders:view\", \"products:view\"],\n Manager: [\"orders:write\", \"products:write\", \"customers:write\", \"reports:view\", \"orders:view\", \"products:view\", \"customers:view\"],\n Editor: [\"orders:write\", \"products:write\", \"orders:view\", \"products:view\"],\n Viewer: [\"customers:view\", \"orders:view\", \"products:view\"],\n Support: [\"tickets:write\", \"orders:view\", \"customers:view\"],\n};\n\nexport const ROLE_COLOR: Record<RoleId, ChipColor> = {\n Owner: \"purple\",\n Admin: \"blue\",\n Manager: \"teal\",\n Editor: \"green\",\n Viewer: \"gray\",\n Support: \"orange\",\n};\n\n/** Every permission the workspace knows about. */\nexport const ALL_PERMISSIONS = [\n \"orders:view\",\n \"orders:write\",\n \"products:view\",\n \"products:write\",\n \"customers:view\",\n \"customers:write\",\n \"reports:view\",\n \"tickets:write\",\n \"users:manage\",\n \"settings:manage\",\n \"roles:view\",\n \"roles:manage\",\n \"billing:view\",\n \"billing:manage\",\n \"workspace:transfer\",\n];\n\n/** Permissions granted by the user's roles (before overrides). */\nexport const rolePermissions = (roles: RoleId[]): string[] =>\n Array.from(new Set(roles.flatMap((r) => ROLE_PERMISSIONS[r])));\n\n/** Final permission set = role grants + allow overrides − deny overrides. */\nexport const effectivePermissions = (user: DemoUser): string[] => {\n const base = new Set(rolePermissions(user.roles));\n user.overrides.forEach((o) => (o.effect === \"allow\" ? base.add(o.permission) : base.delete(o.permission)));\n return Array.from(base).sort();\n};\n\nexport const USER_STATUS_COLOR: Record<UserStatus, \"green\" | \"blue\" | \"gray\" | \"red\"> = {\n Active: \"green\",\n Invited: \"blue\",\n Suspended: \"gray\",\n Locked: \"red\",\n};\n\nexport const USER_STATUSES: UserStatus[] = [\"Active\", \"Invited\", \"Suspended\", \"Locked\"];\n\n/* ---- helpers ---- */\n\nconst hoursAgo = (h: number) => new Date(Date.now() - h * 3_600_000).toISOString();\nconst daysAgo = (d: number) => new Date(Date.now() - d * 86_400_000).toISOString();\n\nconst DEVICES: Array<Omit<UserSession, \"id\" | \"lastActive\">> = [\n { device: \"MacBook Pro 16″\", icon: \"ri-macbook-line\", browser: \"Chrome 129 · macOS 15\", ip: \"84.117.22.8\", location: \"Berlin, DE\" },\n { device: \"iPhone 15 Pro\", icon: \"ri-smartphone-line\", browser: \"Klun app · iOS 18.1\", ip: \"84.117.22.8\", location: \"Berlin, DE\" },\n { device: \"Windows 11 desktop\", icon: \"ri-computer-line\", browser: \"Edge 128 · Windows 11\", ip: \"91.64.180.44\", location: \"Munich, DE\" },\n { device: \"iPad Air\", icon: \"ri-tablet-line\", browser: \"Safari 18 · iPadOS 18\", ip: \"178.189.7.19\", location: \"Vienna, AT\" },\n];\n\n/** Deterministic pseudo-random so the demo data is stable across renders. */\nconst seeded = (seed: number) => {\n let s = seed;\n return () => {\n s = (s * 1103515245 + 12345) % 2147483648;\n return s / 2147483648;\n };\n};\n\nconst mkSessions = (seed: number, count: number, currentHours: number): UserSession[] => {\n const rnd = seeded(seed);\n return Array.from({ length: count }, (_, i) => {\n const d = DEVICES[Math.floor(rnd() * DEVICES.length)];\n return {\n id: `s${seed}-${i}`,\n ...d,\n lastActive: hoursAgo(currentHours + i * (2 + rnd() * 40)),\n current: i === 0,\n };\n });\n};\n\nconst mkActivity = (seed: number, count: number): UserActivity[] => {\n const rnd = seeded(seed * 7 + 3);\n const actions: UserActivity[\"action\"][] = [\"login\", \"update\", \"create\", \"export\", \"delete\", \"permission\"];\n const targets = [\n \"Order · #A-1042\",\n \"Product · Aurora desk lamp\",\n \"Customer · Karla Novak\",\n \"Role · Viewer\",\n \"API key · Staging sandbox\",\n \"Report · Sales 30d\",\n ];\n const results: UserActivity[\"result\"][] = [\"success\", \"success\", \"success\", \"failed\", \"blocked\"];\n return Array.from({ length: count }, (_, i) => ({\n id: `ev${seed}-${i}`,\n at: hoursAgo(1 + i * (3 + rnd() * 20)),\n action: actions[Math.floor(rnd() * actions.length)],\n target: targets[Math.floor(rnd() * targets.length)],\n ip: rnd() > 0.5 ? \"84.117.22.8\" : \"91.64.180.44\",\n result: results[Math.floor(rnd() * results.length)],\n }));\n};\n\nconst user = (u: Omit<DemoUser, \"sessions\" | \"activity\"> & { seed: number; sessionCount: number; activityCount: number }): DemoUser => {\n const { seed, sessionCount, activityCount, ...rest } = u;\n return { ...rest, sessions: mkSessions(seed, sessionCount, 0.1), activity: mkActivity(seed, activityCount) };\n};\n\nexport const INITIAL_USERS: DemoUser[] = [\n user({\n id: \"u1\",\n seed: 11,\n sessionCount: 3,\n activityCount: 6,\n name: \"Anna Krause\",\n email: \"anna@acme.io\",\n title: \"Founder & CEO\",\n avatarColor: \"purple\",\n department: \"hq\",\n manager: \"—\",\n location: \"Berlin, DE\",\n timezone: \"CET — Berlin\",\n roles: [\"Owner\"],\n status: \"Active\",\n twoFA: true,\n forcePasswordChange: false,\n failedLogins: 0,\n lastActive: hoursAgo(0.1),\n createdAt: daysAgo(920),\n passwordChangedAt: daysAgo(84),\n overrides: [],\n }),\n user({\n id: \"u2\",\n seed: 23,\n sessionCount: 2,\n activityCount: 5,\n name: \"Ben Ortiz\",\n email: \"ben@acme.io\",\n title: \"VP Engineering\",\n avatarColor: \"blue\",\n department: \"eng\",\n manager: \"Anna Krause\",\n location: \"Berlin, DE\",\n timezone: \"CET — Berlin\",\n roles: [\"Admin\"],\n status: \"Active\",\n twoFA: true,\n forcePasswordChange: false,\n failedLogins: 0,\n lastActive: hoursAgo(0.6),\n createdAt: daysAgo(640),\n passwordChangedAt: daysAgo(46),\n overrides: [{ id: \"o1\", permission: \"billing:manage\", effect: \"allow\" }],\n }),\n user({\n id: \"u3\",\n seed: 37,\n sessionCount: 2,\n activityCount: 4,\n name: \"Chloe Lin\",\n email: \"chloe@acme.io\",\n title: \"Head of Design\",\n avatarColor: \"green\",\n department: \"design\",\n manager: \"Dmitri Volkov\",\n location: \"Berlin, DE\",\n timezone: \"CET — Berlin\",\n roles: [\"Manager\"],\n status: \"Active\",\n twoFA: true,\n forcePasswordChange: false,\n failedLogins: 1,\n lastActive: hoursAgo(2.3),\n createdAt: daysAgo(410),\n passwordChangedAt: daysAgo(120),\n overrides: [],\n }),\n user({\n id: \"u4\",\n seed: 41,\n sessionCount: 1,\n activityCount: 3,\n name: \"Dmitri Volkov\",\n email: \"dmitri@acme.io\",\n title: \"Head of Product\",\n avatarColor: \"orange\",\n department: \"product\",\n manager: \"Anna Krause\",\n location: \"Vienna, AT\",\n timezone: \"CET — Berlin\",\n roles: [\"Manager\"],\n status: \"Active\",\n twoFA: false,\n forcePasswordChange: true,\n failedLogins: 0,\n lastActive: hoursAgo(5.1),\n createdAt: daysAgo(380),\n passwordChangedAt: daysAgo(180),\n overrides: [{ id: \"o2\", permission: \"users:manage\", effect: \"deny\" }],\n }),\n user({\n id: \"u5\",\n seed: 53,\n sessionCount: 2,\n activityCount: 4,\n name: \"Erin Walsh\",\n email: \"erin@acme.io\",\n title: \"Senior designer\",\n avatarColor: \"gray\",\n department: \"design\",\n manager: \"Chloe Lin\",\n location: \"Berlin, DE\",\n timezone: \"CET — Berlin\",\n roles: [\"Editor\"],\n status: \"Active\",\n twoFA: true,\n forcePasswordChange: false,\n failedLogins: 0,\n lastActive: hoursAgo(9.4),\n createdAt: daysAgo(300),\n passwordChangedAt: daysAgo(30),\n overrides: [],\n }),\n user({\n id: \"u6\",\n seed: 67,\n sessionCount: 1,\n activityCount: 3,\n name: \"Farid Haddad\",\n email: \"farid@acme.io\",\n title: \"Platform engineer\",\n avatarColor: \"blue\",\n department: \"platform\",\n manager: \"Ben Ortiz\",\n location: \"Munich, DE\",\n timezone: \"CET — Berlin\",\n roles: [\"Editor\", \"Support\"],\n status: \"Active\",\n twoFA: false,\n forcePasswordChange: false,\n failedLogins: 3,\n lastActive: hoursAgo(14.2),\n createdAt: daysAgo(210),\n passwordChangedAt: daysAgo(95),\n overrides: [{ id: \"o3\", permission: \"settings:manage\", effect: \"allow\" }],\n }),\n user({\n id: \"u7\",\n seed: 71,\n sessionCount: 1,\n activityCount: 2,\n name: \"Grace Miller\",\n email: \"grace@acme.io\",\n title: \"Account executive\",\n avatarColor: \"green\",\n department: \"sales\",\n manager: \"Farid Haddad\",\n location: \"New York, US\",\n timezone: \"PST — America/Los_Angeles\",\n roles: [\"Editor\"],\n status: \"Active\",\n twoFA: true,\n forcePasswordChange: false,\n failedLogins: 0,\n lastActive: hoursAgo(1.7),\n createdAt: daysAgo(150),\n passwordChangedAt: daysAgo(12),\n overrides: [],\n }),\n user({\n id: \"u8\",\n seed: 83,\n sessionCount: 0,\n activityCount: 1,\n name: \"Hugo Silva\",\n email: \"hugo@acme.io\",\n title: \"Support specialist\",\n avatarColor: \"orange\",\n department: \"cs\",\n manager: \"Farid Haddad\",\n location: \"Lisbon, PT\",\n timezone: \"GMT — London\",\n roles: [\"Support\"],\n status: \"Locked\",\n twoFA: false,\n forcePasswordChange: true,\n failedLogins: 9,\n lastActive: hoursAgo(26.5),\n createdAt: daysAgo(90),\n passwordChangedAt: daysAgo(200),\n overrides: [],\n }),\n user({\n id: \"u9\",\n seed: 97,\n sessionCount: 0,\n activityCount: 0,\n name: \"Ivy Chen\",\n email: \"ivy@acme.io\",\n title: \"UX researcher\",\n avatarColor: \"gray\",\n department: \"research\",\n manager: \"Chloe Lin\",\n location: \"Shanghai, CN\",\n timezone: \"JST — Asia/Tokyo\",\n roles: [\"Viewer\"],\n status: \"Invited\",\n twoFA: false,\n forcePasswordChange: false,\n failedLogins: 0,\n lastActive: daysAgo(3),\n createdAt: daysAgo(2),\n passwordChangedAt: daysAgo(2),\n overrides: [],\n }),\n user({\n id: \"u10\",\n seed: 101,\n sessionCount: 0,\n activityCount: 0,\n name: \"Jonas Weber\",\n email: \"jonas@acme.io\",\n title: \"Support lead\",\n avatarColor: \"blue\",\n department: \"cs\",\n manager: \"Farid Haddad\",\n location: \"Berlin, DE\",\n timezone: \"CET — Berlin\",\n roles: [\"Viewer\"],\n status: \"Suspended\",\n twoFA: false,\n forcePasswordChange: false,\n failedLogins: 2,\n lastActive: daysAgo(18),\n createdAt: daysAgo(540),\n passwordChangedAt: daysAgo(240),\n overrides: [],\n }),\n];\n\nexport const initialsOf = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n","// Metronic example — inline SVG charts (sparkline / bars / donut).\n// Dependency-free: no chart library is needed, so the template can be copied\n// as-is. All colors come from semantic tokens, so the charts follow the\n// Metronic skin (and dark mode) automatically.\nimport { useId } from \"react\";\n\n/** Semantic tone → chart color. */\nexport type ChartTone = \"primary\" | \"success\" | \"danger\" | \"info\" | \"warning\" | \"feature\";\n\nconst TONE: Record<ChartTone, string> = {\n primary: \"var(--klun-primary-base)\",\n success: \"var(--klun-state-success-base)\",\n danger: \"var(--klun-state-error-base)\",\n info: \"var(--klun-state-information-base)\",\n warning: \"var(--klun-state-warning-base)\",\n feature: \"var(--klun-state-feature-base)\",\n};\n\nexport interface SparklineProps {\n data: number[];\n tone?: ChartTone;\n width?: number;\n height?: number;\n}\n\n/** KPI sparkline — a soft area line for stat cards. */\nexport function Sparkline({ data, tone = \"primary\", width = 200, height = 40 }: SparklineProps) {\n const gid = useId();\n const color = TONE[tone];\n const max = Math.max(...data);\n const min = Math.min(...data);\n const span = max - min || 1;\n const step = width / (data.length - 1);\n const y = (v: number) => height - 3 - ((v - min) / span) * (height - 8);\n const line = data.map((v, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${y(v).toFixed(1)}`).join(\" \");\n const area = `${line} L${width},${height} L0,${height} Z`;\n return (\n <svg\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"none\"\n style={{ width: \"100%\", height, display: \"block\" }}\n aria-hidden\n >\n <defs>\n <linearGradient id={gid} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color} stopOpacity=\"0.22\" />\n <stop offset=\"100%\" stopColor={color} stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n <path d={area} fill={`url(#${gid})`} />\n <path d={line} fill=\"none\" stroke={color} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nexport interface BarChartProps {\n data: Array<{ label: string; value: number }>;\n tone?: ChartTone;\n height?: number;\n showValues?: boolean;\n}\n\n/** Column chart with optional value labels. */\nexport function BarChart({ data, tone = \"primary\", height = 200, showValues = true }: BarChartProps) {\n const max = Math.max(...data.map((d) => d.value), 1);\n const color = TONE[tone];\n const maxBar = height - (showValues ? 44 : 26);\n return (\n <div style={{ display: \"flex\", alignItems: \"flex-end\", gap: 10, height, paddingTop: 4 }}>\n {data.map((d) => (\n <div\n key={d.label}\n style={{\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: 6,\n height: \"100%\",\n }}\n >\n {showValues ? (\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{d.value}</span>\n ) : null}\n <div\n style={{\n width: \"100%\",\n maxWidth: 34,\n height: Math.max(4, Math.round((d.value / max) * maxBar)),\n borderRadius: \"var(--klun-radius-md) var(--klun-radius-md) 3px 3px\",\n background: color,\n opacity: 0.9,\n }}\n />\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\" }}>{d.label}</span>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface DonutChartProps {\n data: Array<{ label: string; value: number }>;\n centerValue?: string;\n centerLabel?: string;\n size?: number;\n thickness?: number;\n}\n\n/** Ring chart with a center metric and a legend. */\nexport function DonutChart({\n data,\n centerValue,\n centerLabel,\n size = 168,\n thickness = 22,\n}: DonutChartProps) {\n const r = (size - thickness) / 2;\n const c = 2 * Math.PI * r;\n const total = data.reduce((s, d) => s + d.value, 0) || 1;\n const palette = [TONE.primary, TONE.success, TONE.info, TONE.feature, TONE.warning];\n let acc = 0;\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 20, flexWrap: \"wrap\" }}>\n <div style={{ position: \"relative\", width: size, height: size, flexShrink: 0 }}>\n <svg\n viewBox={`0 0 ${size} ${size}`}\n width={size}\n height={size}\n style={{ display: \"block\", transform: \"rotate(-90deg)\" }}\n aria-hidden\n >\n {data.map((d, i) => {\n const frac = d.value / total;\n const dash = `${(frac * c).toFixed(2)} ${(c - frac * c).toFixed(2)}`;\n const offset = -acc * c;\n acc += frac;\n return (\n <circle\n key={d.label}\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={palette[i % palette.length]}\n strokeWidth={thickness}\n strokeDasharray={dash}\n strokeDashoffset={offset}\n />\n );\n })}\n </svg>\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 2,\n }}\n >\n {centerValue ? (\n <span style={{ font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>\n {centerValue}\n </span>\n ) : null}\n {centerLabel ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {centerLabel}\n </span>\n ) : null}\n </div>\n </div>\n <ul\n style={{\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n flex: 1,\n minWidth: 140,\n }}\n >\n {data.map((d, i) => (\n <li key={d.label} style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"var(--klun-radius-pill)\",\n background: palette[i % palette.length],\n flexShrink: 0,\n }}\n />\n <span style={{ flex: 1, font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {d.label}\n </span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {Math.round((d.value / total) * 100)}%\n </span>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\nexport interface AreaChartProps {\n data: number[];\n /** Optional x-axis labels rendered under the plot. */\n labels?: string[];\n tone?: ChartTone;\n height?: number;\n /** Format the y-axis ticks; defaults to a compact 12k style. */\n formatValue?: (v: number) => string;\n}\n\n/** Full-width area chart with grid lines and y/x labels. */\nexport function AreaChart({ data, labels, tone = \"primary\", height = 220, formatValue }: AreaChartProps) {\n const gid = useId();\n const color = TONE[tone];\n const W = 720;\n const H = 240;\n const max = Math.max(...data, 1) * 1.08;\n const step = W / (data.length - 1);\n const y = (v: number) => H - (v / max) * H;\n const line = data.map((v, i) => `${i ? \"L\" : \"M\"}${(i * step).toFixed(1)},${y(v).toFixed(1)}`).join(\" \");\n const area = `${line} L${W},${H} L0,${H} Z`;\n const fmt = formatValue ?? ((v: number) => (v >= 1000 ? `${Math.round(v / 100) / 10}k` : String(Math.round(v))));\n const ticks = [1, 0.75, 0.5, 0.25, 0];\n return (\n <div style={{ display: \"flex\", gap: 10 }}>\n <div\n style={{\n width: 46,\n flexShrink: 0,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n paddingBottom: labels ? 24 : 0,\n textAlign: \"right\",\n }}\n >\n {ticks.map((t) => (\n <span key={t} style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {fmt(max * t)}\n </span>\n ))}\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ height }}>\n <svg\n viewBox={`0 0 ${W} ${H}`}\n preserveAspectRatio=\"none\"\n style={{ width: \"100%\", height: \"100%\", display: \"block\" }}\n aria-hidden\n >\n <defs>\n <linearGradient id={gid} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color} stopOpacity=\"0.22\" />\n <stop offset=\"100%\" stopColor={color} stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n {ticks.slice(0, -1).map((t) => (\n <line\n key={t}\n x1=\"0\"\n x2={W}\n y1={(H * (1 - t)).toFixed(1)}\n y2={(H * (1 - t)).toFixed(1)}\n stroke=\"var(--klun-stroke-soft-200)\"\n strokeWidth=\"1\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ))}\n <path d={area} fill={`url(#${gid})`} />\n <path\n d={line}\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n </div>\n {labels ? (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", marginTop: 6 }}>\n {labels.map((l) => (\n <span key={l} style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {l}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","// Metronic example — shared page widgets used by the business screens.\nimport type { ReactNode } from \"react\";\nimport { Card } from \"../../index\";\nimport { Sparkline } from \"./charts\";\nimport type { ChartTone } from \"./charts\";\n\n/** Chart tone → the matching `--klun-state-*` token family. */\nconst STATE_TOKEN: Record<Exclude<ChartTone, \"primary\">, string> = {\n success: \"success\",\n danger: \"error\",\n info: \"information\",\n warning: \"warning\",\n feature: \"feature\",\n};\n\n/** Resolve a tone to its foreground/background token pair. */\nexport function toneVars(tone: ChartTone): { fg: string; bg: string } {\n if (tone === \"primary\") {\n return { fg: \"var(--klun-primary-base)\", bg: \"var(--klun-primary-lighter)\" };\n }\n const s = STATE_TOKEN[tone];\n return { fg: `var(--klun-state-${s}-base)`, bg: `var(--klun-state-${s}-lighter)` };\n}\n\nexport interface KpiProps {\n label: string;\n value: string;\n delta: string;\n trend?: \"up\" | \"down\";\n tone?: ChartTone;\n icon: ReactNode;\n spark: number[];\n}\n\n/** KPI tile with an icon, a trend delta and a sparkline. */\nexport function Kpi({ label, value, delta, trend = \"up\", tone = \"primary\", icon, spark }: KpiProps) {\n const { fg, bg } = toneVars(tone);\n const deltaTone = trend === \"up\" ? \"success\" : \"error\";\n return (\n <Card variant=\"stroke\" padding={18}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 8 }}>\n <span\n style={{\n font: \"var(--klun-text-label-xs)\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n {label}\n </span>\n <span\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--klun-radius-md)\",\n background: bg,\n color: fg,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 16,\n }}\n >\n {icon}\n </span>\n </div>\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 10, marginTop: 10, flexWrap: \"wrap\" }}>\n <span style={{ font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\", lineHeight: 1 }}>\n {value}\n </span>\n <span\n style={{\n font: \"var(--klun-text-label-sm)\",\n color: `var(--klun-state-${deltaTone}-base)`,\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <i className={trend === \"up\" ? \"ri-arrow-up-line\" : \"ri-arrow-down-line\"} style={{ fontSize: 14 }} />\n {delta}\n </span>\n </div>\n <div style={{ marginTop: 10 }}>\n <Sparkline data={spark} tone={tone} height={36} />\n </div>\n </Card>\n );\n}\n\nexport interface MiniStatProps {\n label: string;\n value: ReactNode;\n hint?: ReactNode;\n /** Tints the optional hint line. */\n tone?: ChartTone;\n}\n\n/** Compact stat tile — label, value and an optional tinted hint. */\nexport function MiniStat({ label, value, hint, tone = \"primary\" }: MiniStatProps) {\n const { fg } = toneVars(tone);\n return (\n <Card variant=\"stroke\" padding={16}>\n <div\n style={{\n font: \"var(--klun-text-label-xs)\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n {label}\n </div>\n <div style={{ marginTop: 6, font: \"var(--klun-text-title-h5)\", color: \"var(--klun-text-strong-950)\" }}>\n {value}\n </div>\n {hint ? (\n <div style={{ marginTop: 2, font: \"var(--klun-text-label-xs)\", color: fg }}>{hint}</div>\n ) : null}\n </Card>\n );\n}\n","// Metronic example — dashboard screen: page header, KPI tiles with sparklines,\n// a performance bar chart + traffic donut, and the recent-orders table.\nimport { useState } from \"react\";\nimport {\n Avatar,\n AvatarGroup,\n Badge,\n Button,\n Card,\n Table,\n Tabs,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { PageHeader } from \"./i18n\";\nimport { BarChart, DonutChart } from \"./charts\";\nimport { Kpi } from \"./widgets\";\n\n/* ---- orders table ---- */\n\ninterface Order {\n id: string;\n customer: string;\n date: string;\n status: \"Paid\" | \"Pending\" | \"Refunded\";\n total: string;\n}\n\nconst ORDERS: Order[] = [\n { id: \"#A-1042\", customer: \"Anna Krause\", date: \"Jun 18\", status: \"Paid\", total: \"$420.00\" },\n { id: \"#A-1041\", customer: \"Ben Ortiz\", date: \"Jun 18\", status: \"Pending\", total: \"$215.50\" },\n { id: \"#A-1040\", customer: \"Chloe Lin\", date: \"Jun 17\", status: \"Paid\", total: \"$980.00\" },\n { id: \"#A-1039\", customer: \"Dmitri Volkov\", date: \"Jun 17\", status: \"Refunded\", total: \"$120.00\" },\n { id: \"#A-1038\", customer: \"Erin Walsh\", date: \"Jun 16\", status: \"Paid\", total: \"$66.00\" },\n];\n\nconst STATUS_COLOR = { Paid: \"green\", Pending: \"yellow\", Refunded: \"gray\" } as const;\n\nconst customerInitials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\nconst ORDER_COLUMNS: TableColumn<Order>[] = [\n {\n key: \"id\",\n header: \"Order\",\n render: (r) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.id}</span>\n ),\n },\n {\n key: \"customer\",\n header: \"Customer\",\n render: (r) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Avatar size=\"24\" initials={customerInitials(r.customer)} color=\"blue\" />\n {r.customer}\n </span>\n ),\n },\n { key: \"date\", header: \"Date\" },\n {\n key: \"status\",\n header: \"Status\",\n render: (r) => (\n <Badge color={STATUS_COLOR[r.status]} variant=\"light\" size=\"small\" dot>\n {r.status}\n </Badge>\n ),\n },\n {\n key: \"total\",\n header: \"Total\",\n align: \"right\",\n render: (r) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.total}</span>\n ),\n },\n];\n\n/* ---- screen ---- */\n\nexport interface DashboardScreenProps {\n /** Jump to the orders screen — fired by “View all” and by clicking a recent order. */\n onViewAllOrders?: (orderId?: string) => void;\n}\n\nexport function DashboardScreen({ onViewAllOrders }: DashboardScreenProps = {}) {\n const [tab, setTab] = useState(\"revenue\");\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"dashboard\"\n extra={\n <AvatarGroup\n size=\"32\"\n max={4}\n avatars={[\n { initials: \"AK\", color: \"blue\" },\n { initials: \"BO\", color: \"green\" },\n { initials: \"CL\", color: \"purple\" },\n { initials: \"DV\", color: \"orange\" },\n { initials: \"EW\", color: \"gray\" },\n ]}\n />\n }\n />\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(240px, 1fr))\", gap: 16 }}>\n <Kpi\n label=\"Revenue\"\n value=\"$84,920\"\n delta=\"12.4%\"\n tone=\"primary\"\n icon={<i className=\"ri-money-dollar-circle-line\" />}\n spark={[10, 14, 12, 18, 16, 24, 22, 30]}\n />\n <Kpi\n label=\"Orders\"\n value=\"1,284\"\n delta=\"6.1%\"\n tone=\"success\"\n icon={<i className=\"ri-shopping-bag-line\" />}\n spark={[8, 10, 9, 14, 13, 16, 18, 22]}\n />\n <Kpi\n label=\"Customers\"\n value=\"9,402\"\n delta=\"2.3%\"\n trend=\"down\"\n tone=\"danger\"\n icon={<i className=\"ri-team-line\" />}\n spark={[20, 18, 19, 15, 16, 14, 13, 12]}\n />\n <Kpi\n label=\"Conversion\"\n value=\"3.6%\"\n delta=\"0.8%\"\n tone=\"info\"\n icon={<i className=\"ri-percent-line\" />}\n spark={[2, 3, 2.5, 3.2, 3, 3.4, 3.5, 3.6]}\n />\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"minmax(0, 1.6fr) minmax(0, 1fr)\", gap: 16, alignItems: \"start\" }}>\n <Card variant=\"stroke\" padding={20}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, marginBottom: 16 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Performance</span>\n <Tabs\n variant=\"pill\"\n value={tab}\n onChange={setTab}\n items={[\n { value: \"revenue\", label: \"Revenue\" },\n { value: \"orders\", label: \"Orders\" },\n ]}\n />\n </div>\n <BarChart\n height={200}\n tone={tab === \"revenue\" ? \"primary\" : \"success\"}\n data={\n tab === \"revenue\"\n ? [\n { label: \"Mon\", value: 32 },\n { label: \"Tue\", value: 48 },\n { label: \"Wed\", value: 40 },\n { label: \"Thu\", value: 64 },\n { label: \"Fri\", value: 58 },\n { label: \"Sat\", value: 30 },\n { label: \"Sun\", value: 22 },\n ]\n : [\n { label: \"Mon\", value: 120 },\n { label: \"Tue\", value: 168 },\n { label: \"Wed\", value: 142 },\n { label: \"Thu\", value: 210 },\n { label: \"Fri\", value: 196 },\n { label: \"Sat\", value: 88 },\n { label: \"Sun\", value: 64 },\n ]\n }\n />\n </Card>\n\n <Card variant=\"stroke\" padding={20}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 16 }}>\n Traffic sources\n </div>\n <DonutChart\n centerValue=\"68%\"\n centerLabel=\"Organic\"\n data={[\n { label: \"Organic\", value: 68 },\n { label: \"Direct\", value: 18 },\n { label: \"Referral\", value: 9 },\n { label: \"Social\", value: 5 },\n ]}\n />\n </Card>\n </div>\n\n <Card variant=\"stroke\" padding={0}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, padding: \"16px 20px\" }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>Recent orders</span>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" onClick={() => onViewAllOrders?.()}>\n View all\n </Button>\n </div>\n <Table\n columns={ORDER_COLUMNS}\n rows={ORDERS}\n getRowId={(r) => r.id}\n onRowClick={(r) => onViewAllOrders?.(String(r.id))}\n style={{ borderRadius: 0, boxShadow: \"none\", borderTop: \"1px solid var(--klun-stroke-soft-200)\" }}\n />\n </Card>\n </div>\n );\n}\n","// Metronic example — Orders.\n// A full data-grid page on top of the klun-ui Table (selection + bulk actions,\n// column filters, sorting, CSV export, pagination, client-side search) wired to\n// a complete CRUD flow: create / edit in a modal, a details drawer with status\n// transitions and refunds, duplicate, and delete behind Confirm.\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n Avatar,\n Badge,\n Button,\n Confirm,\n Drawer,\n Dropdown,\n Input,\n Label,\n Modal,\n Money,\n RelativeTime,\n Select,\n Table,\n Textarea,\n useMessage,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { PageHeader } from \"./i18n\";\n\ntype OrderStatus = \"Fulfilled\" | \"Processing\" | \"Pending\" | \"Refunded\";\nconst ORDER_STATUSES: OrderStatus[] = [\"Fulfilled\", \"Processing\", \"Pending\", \"Refunded\"];\n\ntype OrderChannel = \"Storefront\" | \"Marketplace\" | \"Manual\";\nconst ORDER_CHANNELS: OrderChannel[] = [\"Storefront\", \"Marketplace\", \"Manual\"];\n\nconst PAYMENTS = [\"Visa •• 4242\", \"Visa •• 1881\", \"Mastercard •• 5501\", \"PayPal\", \"Apple Pay\", \"Bank transfer\"];\n\ninterface Order {\n id: string;\n /** ISO datetime. */\n date: string;\n customer: string;\n email: string;\n items: number;\n status: OrderStatus;\n payment: string;\n channel: OrderChannel;\n total: number;\n note?: string;\n}\n\nconst INITIAL_ORDERS: Order[] = [\n { id: \"#A-1042\", date: \"2026-09-16T09:12:00Z\", customer: \"Anna Krause\", email: \"anna@acme.io\", items: 3, status: \"Fulfilled\", payment: \"Visa •• 4242\", channel: \"Storefront\", total: 420.0, note: \"Gift wrap requested.\" },\n { id: \"#A-1041\", date: \"2026-09-16T07:48:00Z\", customer: \"Ben Ortiz\", email: \"ben@acme.io\", items: 1, status: \"Pending\", payment: \"PayPal\", channel: \"Marketplace\", total: 215.5 },\n { id: \"#A-1040\", date: \"2026-09-15T16:03:00Z\", customer: \"Chloe Lin\", email: \"chloe@acme.io\", items: 6, status: \"Fulfilled\", payment: \"Visa •• 1881\", channel: \"Storefront\", total: 980.0 },\n { id: \"#A-1039\", date: \"2026-09-15T11:27:00Z\", customer: \"Dmitri Volkov\", email: \"dmitri@acme.io\", items: 2, status: \"Refunded\", payment: \"Mastercard •• 5501\", channel: \"Storefront\", total: 120.0, note: \"Damaged in transit — refunded in full.\" },\n { id: \"#A-1038\", date: \"2026-09-14T18:40:00Z\", customer: \"Erin Walsh\", email: \"erin@acme.io\", items: 1, status: \"Fulfilled\", payment: \"Apple Pay\", channel: \"Storefront\", total: 66.0 },\n { id: \"#A-1037\", date: \"2026-09-14T13:15:00Z\", customer: \"Farid Haddad\", email: \"farid@acme.io\", items: 4, status: \"Processing\", payment: \"Visa •• 9034\", channel: \"Manual\", total: 512.4 },\n { id: \"#A-1036\", date: \"2026-09-13T09:55:00Z\", customer: \"Grace Miller\", email: \"grace@acme.io\", items: 2, status: \"Fulfilled\", payment: \"PayPal\", channel: \"Marketplace\", total: 148.0 },\n { id: \"#A-1035\", date: \"2026-09-12T20:31:00Z\", customer: \"Hugo Silva\", email: \"hugo@acme.io\", items: 5, status: \"Processing\", payment: \"Mastercard •• 2210\", channel: \"Storefront\", total: 764.9 },\n { id: \"#A-1034\", date: \"2026-09-12T08:22:00Z\", customer: \"Ivy Chen\", email: \"ivy@acme.io\", items: 1, status: \"Pending\", payment: \"Visa •• 7742\", channel: \"Storefront\", total: 89.0 },\n { id: \"#A-1033\", date: \"2026-09-11T15:09:00Z\", customer: \"Jonas Weber\", email: \"jonas@acme.io\", items: 3, status: \"Fulfilled\", payment: \"Bank transfer\", channel: \"Manual\", total: 355.0 },\n { id: \"#A-1032\", date: \"2026-09-10T12:44:00Z\", customer: \"Karla Novak\", email: \"karla@acme.io\", items: 2, status: \"Refunded\", payment: \"PayPal\", channel: \"Marketplace\", total: 210.0 },\n { id: \"#A-1031\", date: \"2026-09-10T07:18:00Z\", customer: \"Liam Byrne\", email: \"liam@acme.io\", items: 7, status: \"Fulfilled\", payment: \"Visa •• 3360\", channel: \"Storefront\", total: 1284.0 },\n];\n\nconst STATUS_COLOR: Record<OrderStatus, \"green\" | \"blue\" | \"yellow\" | \"gray\"> = {\n Fulfilled: \"green\",\n Processing: \"blue\",\n Pending: \"yellow\",\n Refunded: \"gray\",\n};\n\n/** Happy-path progression shown in the details drawer timeline. */\nconst TIMELINE: OrderStatus[] = [\"Pending\", \"Processing\", \"Fulfilled\"];\n\n/** Next status when stepping an order forward, `null` when it can't advance. */\nconst NEXT_STATUS: Record<OrderStatus, OrderStatus | null> = {\n Pending: \"Processing\",\n Processing: \"Fulfilled\",\n Fulfilled: null,\n Refunded: null,\n};\n\nconst initials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nconst emptyForm = () => ({\n customer: \"\",\n email: \"\",\n items: \"1\",\n total: \"\",\n status: \"Pending\" as OrderStatus,\n payment: PAYMENTS[0],\n channel: \"Storefront\" as OrderChannel,\n note: \"\",\n});\n\nexport interface OrdersScreenProps {\n /** Bump this counter to pop the create dialog (used by the shell's top bar). */\n createRequest?: number;\n}\n\nexport function OrdersScreen({ createRequest = 0 }: OrdersScreenProps) {\n const [message, holder] = useMessage();\n const [orders, setOrders] = useState<Order[]>(INITIAL_ORDERS);\n const [query, setQuery] = useState(\"\");\n const [selected, setSelected] = useState<Array<string | number>>([]);\n const [detailId, setDetailId] = useState<string | null>(null);\n const [editor, setEditor] = useState<{ mode: \"create\" | \"edit\"; order?: Order } | null>(null);\n const [form, setForm] = useState(emptyForm);\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n const openCreate = () => {\n setForm(emptyForm());\n setErrors({});\n setEditor({ mode: \"create\" });\n };\n\n // The top bar's \"New order\" button bumps `createRequest`.\n useEffect(() => {\n if (createRequest > 0) openCreate();\n }, [createRequest]);\n\n const openEdit = (order: Order) => {\n setForm({\n customer: order.customer,\n email: order.email,\n items: String(order.items),\n total: String(order.total),\n status: order.status,\n payment: order.payment,\n channel: order.channel,\n note: order.note ?? \"\",\n });\n setErrors({});\n setEditor({ mode: \"edit\", order });\n };\n\n const rows = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return orders;\n return orders.filter(\n (o) =>\n o.id.toLowerCase().includes(q) ||\n o.customer.toLowerCase().includes(q) ||\n o.email.toLowerCase().includes(q),\n );\n }, [orders, query]);\n\n const detail = detailId ? orders.find((o) => o.id === detailId) ?? null : null;\n\n /* ---- mutations ---- */\n\n const nextId = () => {\n const max = orders.reduce((acc, o) => Math.max(acc, Number(o.id.replace(\"#A-\", \"\")) || 0), 1000);\n return `#A-${max + 1}`;\n };\n\n const save = () => {\n const errs: Record<string, string> = {};\n if (!form.customer.trim()) errs.customer = \"Customer name is required.\";\n if (!form.email.trim()) errs.email = \"Email is required.\";\n else if (!EMAIL_RE.test(form.email)) errs.email = \"Enter a valid email address.\";\n const total = Number(form.total);\n if (!form.total.trim() || Number.isNaN(total) || total <= 0) errs.total = \"Enter an amount above 0.\";\n setErrors(errs);\n if (Object.keys(errs).length) {\n message.error({ content: \"Fix the highlighted fields.\", key: \"order\" });\n return;\n }\n\n const payload = {\n customer: form.customer.trim(),\n email: form.email.trim(),\n items: Math.max(1, Number(form.items) || 1),\n total,\n status: form.status,\n payment: form.payment,\n channel: form.channel,\n note: form.note.trim() || undefined,\n };\n\n if (editor?.mode === \"edit\" && editor.order) {\n const id = editor.order.id;\n setOrders((prev) => prev.map((o) => (o.id === id ? { ...o, ...payload } : o)));\n message.success({ content: `Order ${id} updated.`, key: \"order\" });\n } else {\n const id = nextId();\n setOrders((prev) => [{ id, date: new Date().toISOString(), ...payload }, ...prev]);\n message.success({ content: `Order ${id} created.`, key: \"order\" });\n }\n setEditor(null);\n };\n\n const duplicate = (order: Order) => {\n const id = nextId();\n setOrders((prev) => [\n { ...order, id, date: new Date().toISOString(), status: \"Pending\", note: undefined },\n ...prev,\n ]);\n message.success({ content: `Order ${id} duplicated from ${order.id}.`, key: \"order\" });\n };\n\n const advance = (order: Order) => {\n const next = NEXT_STATUS[order.status];\n if (!next) return;\n setOrders((prev) => prev.map((o) => (o.id === order.id ? { ...o, status: next } : o)));\n message.success({ content: `${order.id} marked as ${next}.`, key: \"order\" });\n };\n\n const refund = async (order: Order) => {\n const res = await Confirm({\n title: `Refund ${order.id}?`,\n description: `${order.customer} will be refunded ${order.total.toFixed(2)} USD on ${order.payment}.`,\n intent: \"warning\",\n confirmText: \"Refund order\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setOrders((prev) => prev.map((o) => (o.id === order.id ? { ...o, status: \"Refunded\" } : o)));\n message.warning({ content: `${order.id} refunded.`, key: \"order\" });\n }\n };\n\n const remove = async (order: Order) => {\n const res = await Confirm({\n title: `Delete ${order.id}?`,\n description: \"The order record is removed from this list. This can't be undone.\",\n intent: \"danger\",\n confirmText: \"Delete order\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setOrders((prev) => prev.filter((o) => o.id !== order.id));\n setSelected((prev) => prev.filter((x) => x !== order.id));\n if (detailId === order.id) setDetailId(null);\n message.info({ content: `${order.id} deleted.`, key: \"order\" });\n }\n };\n\n const bulkStatus = (status: OrderStatus) => {\n const ids = new Set(selected.map(String));\n setOrders((prev) => prev.map((o) => (ids.has(o.id) ? { ...o, status } : o)));\n message.success({ content: `${ids.size} order${ids.size === 1 ? \"\" : \"s\"} marked as ${status}.`, key: \"order\" });\n setSelected([]);\n };\n\n /* ---- table ---- */\n\n const columns: TableColumn<Order>[] = [\n {\n key: \"id\",\n header: \"Order\",\n sortable: true,\n render: (r) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.id}</span>\n ),\n },\n {\n key: \"date\",\n header: \"Date\",\n sortable: true,\n render: (r) => <span>{r.date.slice(0, 10)}</span>,\n },\n {\n key: \"customer\",\n header: \"Customer\",\n render: (r) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <Avatar size=\"24\" initials={initials(r.customer)} color=\"blue\" />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{r.customer}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{r.email}</span>\n </span>\n </span>\n ),\n },\n { key: \"items\", header: \"Items\", align: \"center\", sortable: true },\n {\n key: \"status\",\n header: \"Status\",\n filters: ORDER_STATUSES.map((s) => ({ label: s, value: s })),\n render: (r) => (\n <Badge color={STATUS_COLOR[r.status]} variant=\"light\" size=\"small\" dot>\n {r.status}\n </Badge>\n ),\n },\n {\n key: \"channel\",\n header: \"Channel\",\n filters: ORDER_CHANNELS.map((c) => ({ label: c, value: c })),\n render: (r) => <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>{r.channel}</span>,\n },\n { key: \"payment\", header: \"Payment\" },\n {\n key: \"total\",\n header: \"Total\",\n align: \"right\",\n sortable: true,\n render: (r) => (\n <Money\n value={r.total}\n currency=\"USD\"\n locale=\"en-US\"\n tone={r.status === \"Refunded\" ? \"refund\" : \"default\"}\n style={{ font: \"var(--klun-text-label-sm)\" }}\n />\n ),\n },\n {\n key: \"actions\",\n header: \"\",\n width: 60,\n align: \"right\",\n exportable: false,\n render: (r) => (\n <Dropdown\n align=\"right\"\n width={200}\n trigger={\n <Button\n kind=\"compact\"\n appearance=\"ghost\"\n icon={<i className=\"ri-more-2-line\" />}\n aria-label={`Actions for ${r.id}`}\n />\n }\n items={[\n { label: \"View details\", icon: <i className=\"ri-eye-line\" />, onClick: () => setDetailId(r.id) },\n { label: \"Edit order\", icon: <i className=\"ri-edit-line\" />, onClick: () => openEdit(r) },\n { label: \"Duplicate\", icon: <i className=\"ri-file-copy-line\" />, onClick: () => duplicate(r) },\n ...(NEXT_STATUS[r.status]\n ? [\n {\n label: `Mark as ${NEXT_STATUS[r.status]}`,\n icon: <i className=\"ri-arrow-right-circle-line\" />,\n onClick: () => advance(r),\n },\n ]\n : []),\n { label: \"Refund\", icon: <i className=\"ri-refund-2-line\" />, onClick: () => void refund(r) },\n { divider: true, label: \"\" },\n { label: \"Delete order\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void remove(r) },\n ]}\n />\n ),\n },\n ];\n\n return (\n <>\n {holder}\n\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"orders\"\n extra={\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button\n variant=\"neutral\"\n appearance=\"stroke\"\n size=\"small\"\n leadingIcon={<i className=\"ri-download-2-line\" />}\n onClick={() => message.success({ content: `orders.csv exported (${rows.length} rows).`, key: \"order\" })}\n >\n Export\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />} onClick={openCreate}>\n New order\n </Button>\n </div>\n }\n />\n\n <Table\n columns={columns}\n rows={rows}\n getRowId={(r) => r.id}\n title={`All orders (${rows.length})`}\n toolbar={\n <div style={{ width: 240 }}>\n <Input\n size=\"small\"\n placeholder=\"Search order, customer or email…\"\n leadingIcon={<i className=\"ri-search-line\" />}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n }\n empty={\n <div style={{ padding: 40, textAlign: \"center\", color: \"var(--klun-text-soft-400)\", font: \"var(--klun-text-paragraph-sm)\" }}>\n <i className=\"ri-inbox-line\" style={{ display: \"block\", fontSize: 32, marginBottom: 8 }} />\n No orders match “{query}”.\n </div>\n }\n selectable\n selected={selected}\n onSelectRow={(id) =>\n setSelected((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]))\n }\n onSelectAll={(ids) => setSelected(ids)}\n selectionActions={(_rowsSelected, clear) => (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {selected.length} selected\n </span>\n <Button\n size=\"tiny\"\n variant=\"neutral\"\n appearance=\"stroke\"\n leadingIcon={<i className=\"ri-check-line\" />}\n onClick={() => bulkStatus(\"Fulfilled\")}\n >\n Mark fulfilled\n </Button>\n <Button\n size=\"tiny\"\n variant=\"neutral\"\n appearance=\"stroke\"\n leadingIcon={<i className=\"ri-refund-2-line\" />}\n onClick={() => bulkStatus(\"Refunded\")}\n >\n Refund\n </Button>\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"ghost\" onClick={clear}>\n Clear\n </Button>\n </div>\n )}\n sortable\n exportable={{ filename: \"orders.csv\" }}\n pagination={{ defaultPageSize: 6, pageSizeOptions: [6, 12] }}\n onRowClick={(r) => setDetailId(r.id)}\n />\n </div>\n\n {/* create / edit */}\n <Modal\n open={editor !== null}\n onClose={() => setEditor(null)}\n title={editor?.mode === \"edit\" ? `Edit ${editor.order?.id}` : \"New order\"}\n description={\n editor?.mode === \"edit\"\n ? \"Changes are applied to the order immediately.\"\n : \"Create an order manually — useful for phone and wholesale sales.\"\n }\n okText={editor?.mode === \"edit\" ? \"Save changes\" : \"Create order\"}\n onOk={save}\n width={560}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Customer</Label>\n <Input\n placeholder=\"Jane Cooper\"\n value={form.customer}\n error={Boolean(errors.customer)}\n onChange={(e) => setForm((f) => ({ ...f, customer: e.target.value }))}\n />\n {errors.customer ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-state-error-base)\" }}>\n {errors.customer}\n </span>\n ) : null}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Email</Label>\n <Input\n type=\"email\"\n placeholder=\"jane@acme.io\"\n leadingIcon={<i className=\"ri-mail-line\" />}\n value={form.email}\n error={Boolean(errors.email)}\n onChange={(e) => setForm((f) => ({ ...f, email: e.target.value }))}\n />\n {errors.email ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-state-error-base)\" }}>\n {errors.email}\n </span>\n ) : null}\n </div>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Items</Label>\n <Input\n type=\"number\"\n min={1}\n value={form.items}\n onChange={(e) => setForm((f) => ({ ...f, items: e.target.value }))}\n />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Total (USD)</Label>\n <Input\n type=\"number\"\n min={0}\n step=\"0.01\"\n placeholder=\"249.00\"\n value={form.total}\n error={Boolean(errors.total)}\n onChange={(e) => setForm((f) => ({ ...f, total: e.target.value }))}\n />\n {errors.total ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-state-error-base)\" }}>\n {errors.total}\n </span>\n ) : null}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Status</Label>\n <Select value={form.status} onChange={(e) => setForm((f) => ({ ...f, status: e.target.value as OrderStatus }))}>\n {ORDER_STATUSES.map((s) => (\n <option key={s} value={s}>\n {s}\n </option>\n ))}\n </Select>\n </div>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Payment method</Label>\n <Select value={form.payment} onChange={(e) => setForm((f) => ({ ...f, payment: e.target.value }))}>\n {PAYMENTS.map((p) => (\n <option key={p} value={p}>\n {p}\n </option>\n ))}\n </Select>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Channel</Label>\n <Select value={form.channel} onChange={(e) => setForm((f) => ({ ...f, channel: e.target.value as OrderChannel }))}>\n {ORDER_CHANNELS.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </Select>\n </div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Internal note</Label>\n <Textarea\n rows={2}\n placeholder=\"Optional — packing instructions, delivery window…\"\n value={form.note}\n onChange={(e) => setForm((f) => ({ ...f, note: e.target.value }))}\n />\n </div>\n </div>\n </Modal>\n\n {/* details */}\n <Drawer\n open={detail !== null}\n onClose={() => setDetailId(null)}\n title={detail ? `Order ${detail.id}` : \"\"}\n placement=\"right\"\n width={420}\n extra={\n detail ? (\n <Badge color={STATUS_COLOR[detail.status]} variant=\"light\" size=\"small\" dot>\n {detail.status}\n </Badge>\n ) : null\n }\n footer={\n detail ? (\n <>\n <Button variant=\"neutral\" appearance=\"ghost\" onClick={() => void remove(detail)}>\n Delete\n </Button>\n <Button variant=\"neutral\" appearance=\"stroke\" onClick={() => openEdit(detail)}>\n Edit\n </Button>\n {NEXT_STATUS[detail.status] ? (\n <Button onClick={() => advance(detail)}>Mark as {NEXT_STATUS[detail.status]}</Button>\n ) : detail.status === \"Processing\" || detail.status === \"Fulfilled\" ? (\n <Button variant=\"error\" appearance=\"stroke\" onClick={() => void refund(detail)}>\n Refund\n </Button>\n ) : null}\n </>\n ) : null\n }\n >\n {detail ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 18 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <Avatar size=\"40\" initials={initials(detail.customer)} color=\"blue\" />\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {detail.customer}\n </div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {detail.email}\n </div>\n </div>\n <span style={{ marginLeft: \"auto\" }}>\n <Money value={detail.total} size=\"md\" locale=\"en-US\" />\n </span>\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: 12,\n padding: 14,\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-bg-weak-50)\",\n }}\n >\n {[\n { label: \"Placed\", value: <RelativeTime date={detail.date} live={false} /> },\n { label: \"Items\", value: `${detail.items}` },\n { label: \"Payment\", value: detail.payment },\n { label: \"Channel\", value: detail.channel },\n ].map((row) => (\n <div key={row.label} style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{row.label}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{row.value}</span>\n </div>\n ))}\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Timeline</span>\n {TIMELINE.map((step, i) => {\n const reached = detail.status === \"Refunded\" ? i < 2 : TIMELINE.indexOf(detail.status) >= i;\n return (\n <div key={step} style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <i\n className={reached ? \"ri-checkbox-circle-fill\" : \"ri-circle-line\"}\n style={{\n fontSize: 16,\n color: reached ? \"var(--klun-state-success-base)\" : \"var(--klun-text-soft-400)\",\n }}\n />\n <span\n style={{\n font: \"var(--klun-text-label-sm)\",\n color: reached ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-soft-400)\",\n }}\n >\n {step}\n </span>\n </div>\n );\n })}\n {detail.status === \"Refunded\" ? (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <i className=\"ri-refund-2-line\" style={{ fontSize: 16, color: \"var(--klun-state-warning-base)\" }} />\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Refunded</span>\n </div>\n ) : null}\n </div>\n\n {detail.note ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Internal note</span>\n <div\n style={{\n padding: \"10px 12px\",\n borderRadius: \"var(--klun-radius-lg)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n font: \"var(--klun-text-paragraph-sm)\",\n color: \"var(--klun-text-sub-600)\",\n }}\n >\n {detail.note}\n </div>\n </div>\n ) : null}\n\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button\n size=\"small\"\n variant=\"neutral\"\n appearance=\"stroke\"\n leadingIcon={<i className=\"ri-file-copy-line\" />}\n onClick={() => duplicate(detail)}\n >\n Duplicate\n </Button>\n <Button\n size=\"small\"\n variant=\"neutral\"\n appearance=\"ghost\"\n leadingIcon={<i className=\"ri-mail-send-line\" />}\n onClick={() => message.success({ content: `Receipt sent to ${detail.email}.`, key: \"order\" })}\n >\n Email receipt\n </Button>\n </div>\n </div>\n ) : null}\n </Drawer>\n </>\n );\n}\n\n","// Metronic example — shared product model for the CRUD screens.\n// The list, the modal quick-edit and the route-style wizard all share these\n// types and helpers.\n\nexport type ProductStatus = \"Active\" | \"Low stock\" | \"Out of stock\";\n\nexport interface Product {\n id: string;\n name: string;\n sku: string;\n category: string;\n price: number;\n stock: number;\n capacity: number;\n status: ProductStatus;\n description?: string;\n}\n\n/** Everything an editor form edits (id is assigned on create). */\nexport type ProductDraft = Omit<Product, \"id\">;\n\nexport const CATEGORIES = [\"Peripherals\", \"Displays\", \"Accessories\", \"Audio\", \"Office\", \"Video\"] as const;\n\nexport const STATUS_COLOR = { Active: \"green\", \"Low stock\": \"yellow\", \"Out of stock\": \"gray\" } as const;\n\n/** Status follows stock level — editors never set it directly. */\nexport const deriveStatus = (stock: number, capacity: number): ProductStatus =>\n stock === 0 ? \"Out of stock\" : stock / capacity < 0.25 ? \"Low stock\" : \"Active\";\n\nexport function emptyDraft(): ProductDraft {\n return {\n name: \"\",\n sku: \"\",\n category: \"Accessories\",\n price: 0,\n stock: 0,\n capacity: 100,\n status: \"Active\",\n description: \"\",\n };\n}\n","// Metronic example — Products: route-style editor.\n// The full-page alternative to the modal quick-edit: a three-step wizard\n// (basics → pricing & stock → review) built on the klun-ui Wizard component.\n// With a router, mount this at /products/new and /products/:id/edit.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n Badge,\n Breadcrumb,\n Button,\n Card,\n CounterInput,\n Input,\n Label,\n Money,\n Select,\n Wizard,\n} from \"../../index\";\nimport type { WizardStep } from \"../../index\";\nimport { CATEGORIES, STATUS_COLOR, deriveStatus } from \"./productModel\";\nimport type { ProductDraft } from \"./productModel\";\n\nexport interface ProductWizardPageProps {\n mode: \"create\" | \"edit\";\n initial: ProductDraft;\n onCancel: () => void;\n onSave: (draft: ProductDraft) => void;\n}\n\nfunction Field({\n label,\n hint,\n children,\n}: {\n label: string;\n hint?: ReactNode;\n children: ReactNode;\n}) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>{label}</Label>\n {children}\n {hint ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>{hint}</span>\n ) : null}\n </div>\n );\n}\n\nfunction ReviewRow({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16, padding: \"10px 0\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-soft-400)\" }}>{label}</span>\n <span\n style={{\n font: \"var(--klun-text-label-sm)\",\n color: \"var(--klun-text-strong-950)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n }}\n >\n {children}\n </span>\n </div>\n );\n}\n\nexport function ProductWizardPage({ mode, initial, onCancel, onSave }: ProductWizardPageProps) {\n const [draft, setDraft] = useState<ProductDraft>(initial);\n const [step, setStep] = useState(0);\n const [triedNext, setTriedNext] = useState(false);\n\n const set = (patch: Partial<ProductDraft>) => setDraft((d) => ({ ...d, ...patch }));\n\n const nameError = triedNext && step === 0 && draft.name.trim().length === 0;\n const skuError = triedNext && step === 0 && draft.sku.trim().length === 0;\n const stockError = triedNext && step === 1 && (draft.stock < 0 || draft.stock > draft.capacity);\n\n const nextStatus = deriveStatus(draft.stock, draft.capacity);\n const title = mode === \"create\" ? \"New product\" : \"Edit product\";\n\n const steps: WizardStep[] = [\n {\n title: \"Basics\",\n content: (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"2fr 1fr\", gap: 16 }}>\n <Field label=\"Name\" hint={nameError ? \"A product name is required.\" : undefined}>\n <Input\n error={nameError}\n value={draft.name}\n placeholder=\"Aero Wireless Keyboard\"\n onChange={(e) => set({ name: e.target.value })}\n />\n </Field>\n <Field label=\"SKU\" hint={skuError ? \"A unique SKU is required.\" : undefined}>\n <Input\n error={skuError}\n value={draft.sku}\n placeholder=\"KB-1042\"\n onChange={(e) => set({ sku: e.target.value })}\n />\n </Field>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 16 }}>\n <Field label=\"Category\">\n <Select value={draft.category} onChange={(e) => set({ category: e.target.value })}>\n {CATEGORIES.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </Select>\n </Field>\n </div>\n <Field label=\"Description\" hint=\"Shown to teammates in the inventory — not on the storefront.\">\n <Input\n value={draft.description ?? \"\"}\n placeholder=\"Short internal description\"\n onChange={(e) => set({ description: e.target.value })}\n />\n </Field>\n </div>\n ),\n },\n {\n title: \"Pricing & stock\",\n content: (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 16 }}>\n <Field label=\"Price (USD)\">\n <Input\n type=\"number\"\n value={String(draft.price)}\n leadingIcon={<i className=\"ri-money-dollar-circle-line\" />}\n onChange={(e) => set({ price: Number(e.target.value) || 0 })}\n />\n </Field>\n <Field label=\"Capacity\" hint=\"Used for the stock bar — how many units fit.\">\n <CounterInput value={draft.capacity} min={1} max={1000} step={10} onChange={(v) => set({ capacity: v })} />\n </Field>\n </div>\n <Field\n label=\"Stock on hand\"\n hint={stockError ? \"Stock must be between 0 and capacity.\" : \"Status is derived from this level.\"}\n >\n <CounterInput value={draft.stock} min={0} max={draft.capacity} onChange={(v) => set({ stock: v })} />\n </Field>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"12px 14px\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n }}\n >\n <i className=\"ri-information-line\" style={{ fontSize: 18, color: \"var(--klun-icon-sub-600)\" }} />\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n With this stock level the product will be saved as\n </span>\n <Badge color={STATUS_COLOR[nextStatus]} variant=\"light\" size=\"small\" dot>\n {nextStatus}\n </Badge>\n </div>\n </div>\n ),\n },\n {\n title: \"Review\",\n content: (\n <div>\n <div style={{ boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <ReviewRow label=\"Name\">{draft.name || \"—\"}</ReviewRow>\n <ReviewRow label=\"SKU\">{draft.sku || \"—\"}</ReviewRow>\n <ReviewRow label=\"Category\">{draft.category}</ReviewRow>\n <ReviewRow label=\"Description\">{draft.description || \"—\"}</ReviewRow>\n </div>\n <div style={{ boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\" }}>\n <ReviewRow label=\"Price\">\n <Money value={draft.price} currency=\"USD\" locale=\"en-US\" />\n </ReviewRow>\n <ReviewRow label=\"Stock\">\n {draft.stock} of {draft.capacity}\n </ReviewRow>\n <ReviewRow label=\"Status\">\n <Badge color={STATUS_COLOR[nextStatus]} variant=\"light\" size=\"small\" dot>\n {nextStatus}\n </Badge>\n </ReviewRow>\n </div>\n <span\n style={{\n display: \"block\",\n marginTop: 14,\n font: \"var(--klun-text-paragraph-xs)\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n Click Finish to save — the product {mode === \"create\" ? \"is added to\" : \"is updated in\"} the inventory.\n </span>\n </div>\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div>\n <Breadcrumb\n items={[\n { label: \"Products\" },\n { label: mode === \"create\" ? \"New product\" : draft.name || \"Edit product\" },\n ]}\n />\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n gap: 16,\n marginTop: 8,\n flexWrap: \"wrap\",\n }}\n >\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n {title}\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n Route-style editor — three steps, saved at the end.\n </p>\n </div>\n <Button\n variant=\"neutral\"\n appearance=\"stroke\"\n size=\"small\"\n leadingIcon={<i className=\"ri-arrow-left-line\" />}\n onClick={onCancel}\n >\n Back to list\n </Button>\n </div>\n </div>\n\n <Card variant=\"stroke\" padding={20}>\n <Wizard\n steps={steps}\n current={step}\n onStepChange={(n) => {\n // gate forward navigation on the current step's validation\n if (n > step) {\n setTriedNext(true);\n if (step === 0 && (draft.name.trim() === \"\" || draft.sku.trim() === \"\")) return;\n if (step === 1 && (draft.stock < 0 || draft.stock > draft.capacity)) return;\n }\n setTriedNext(false);\n setStep(n);\n }}\n onFinish={() => onSave({ ...draft, status: nextStatus })}\n />\n </Card>\n </div>\n );\n}\n","// Metronic example — Products: full CRUD with two editor flows.\n// – list (filters / sort / column settings / export) + detail drawer\n// – quick add/edit in a MODAL, and a route-style full-page WIZARD editor\n// (mount `ProductWizardPage` at /products/new · /products/:id/edit with a\n// router — here the \"route\" is local state)\n// Deletes run through the imperative Confirm dialog. Local state only — wire\n// the handlers to your API.\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n Badge,\n Button,\n Confirm,\n CounterInput,\n Drawer,\n Dropdown,\n Input,\n Label,\n Modal,\n Money,\n ProgressBar,\n Select,\n Table,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { PageHeader } from \"./i18n\";\nimport { MiniStat } from \"./widgets\";\nimport { ProductWizardPage } from \"./ProductWizardPage\";\nimport { CATEGORIES, STATUS_COLOR, deriveStatus, emptyDraft } from \"./productModel\";\nimport type { Product, ProductDraft } from \"./productModel\";\n\nconst INITIAL_PRODUCTS: Product[] = [\n { id: \"p1\", name: \"Aero Wireless Keyboard\", sku: \"KB-1042\", category: \"Peripherals\", price: 129.0, stock: 84, capacity: 120, status: \"Active\" },\n { id: \"p2\", name: \"Lumen 27\\\" 4K Monitor\", sku: \"MN-2210\", category: \"Displays\", price: 549.0, stock: 12, capacity: 80, status: \"Low stock\" },\n { id: \"p3\", name: \"Pulse USB-C Dock\", sku: \"DK-3301\", category: \"Accessories\", price: 89.5, stock: 0, capacity: 60, status: \"Out of stock\" },\n { id: \"p4\", name: \"Nimbus Laptop Stand\", sku: \"ST-1187\", category: \"Accessories\", price: 45.0, stock: 132, capacity: 200, status: \"Active\" },\n { id: \"p5\", name: \"Vertex Mechanical Mouse\", sku: \"MS-2205\", category: \"Peripherals\", price: 79.0, stock: 18, capacity: 100, status: \"Low stock\" },\n { id: \"p6\", name: \"Echo Conference Speaker\", sku: \"SP-4402\", category: \"Audio\", price: 219.0, stock: 47, capacity: 90, status: \"Active\" },\n { id: \"p7\", name: \"Flux Desk Lamp\", sku: \"LP-0913\", category: \"Office\", price: 64.0, stock: 0, capacity: 40, status: \"Out of stock\" },\n { id: \"p8\", name: \"Orbit Webcam 4K\", sku: \"WC-5520\", category: \"Video\", price: 149.0, stock: 63, capacity: 120, status: \"Active\" },\n];\n\nconst CATEGORY_TONE: Record<string, { bg: string; fg: string; icon: string }> = {\n Peripherals: { bg: \"var(--klun-state-feature-lighter)\", fg: \"var(--klun-state-feature-base)\", icon: \"ri-keyboard-line\" },\n Displays: { bg: \"var(--klun-state-information-lighter)\", fg: \"var(--klun-state-information-base)\", icon: \"ri-computer-line\" },\n Accessories: { bg: \"var(--klun-state-success-lighter)\", fg: \"var(--klun-state-success-base)\", icon: \"ri-plug-line\" },\n Audio: { bg: \"var(--klun-state-warning-lighter)\", fg: \"var(--klun-state-warning-base)\", icon: \"ri-volume-up-line\" },\n Office: { bg: \"var(--klun-state-error-lighter)\", fg: \"var(--klun-state-error-base)\", icon: \"ri-lightbulb-line\" },\n Video: { bg: \"var(--klun-primary-lighter)\", fg: \"var(--klun-primary-base)\", icon: \"ri-vidicon-line\" },\n};\n\nconst stockColor = (p: Product) =>\n p.stock === 0 ? \"error\" : p.stock / p.capacity < 0.25 ? \"warning\" : \"success\";\n\nfunction Field({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>{label}</Label>\n {children}\n </div>\n );\n}\n\n/* ---- create / edit (modal form) ---- */\n\ninterface ProductEditorProps {\n open: boolean;\n mode: \"create\" | \"edit\";\n draft: ProductDraft;\n onChange: (patch: Partial<ProductDraft>) => void;\n onClose: () => void;\n onSave: () => void;\n}\n\nfunction ProductEditor({ open, mode, draft, onChange, onClose, onSave }: ProductEditorProps) {\n const valid = draft.name.trim().length > 0 && draft.sku.trim().length > 0;\n return (\n <Modal\n open={open}\n onClose={onClose}\n title={mode === \"create\" ? \"New product\" : \"Edit product\"}\n description={\n mode === \"create\"\n ? \"The product appears in the inventory as soon as you save it.\"\n : draft.sku\n }\n okText={mode === \"create\" ? \"Create product\" : \"Save changes\"}\n okButtonProps={{ disabled: !valid }}\n onOk={() => valid && onSave()}\n width={560}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"2fr 1fr\", gap: 14 }}>\n <Field label=\"Name\">\n <Input\n value={draft.name}\n placeholder=\"Aero Wireless Keyboard\"\n onChange={(e) => onChange({ name: e.target.value })}\n />\n </Field>\n <Field label=\"SKU\">\n <Input\n value={draft.sku}\n placeholder=\"KB-1042\"\n onChange={(e) => onChange({ sku: e.target.value })}\n />\n </Field>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <Field label=\"Category\">\n <Select value={draft.category} onChange={(e) => onChange({ category: e.target.value })}>\n {CATEGORIES.map((c) => (\n <option key={c} value={c}>\n {c}\n </option>\n ))}\n </Select>\n </Field>\n <Field label=\"Price (USD)\">\n <Input\n type=\"number\"\n value={String(draft.price)}\n leadingIcon={<i className=\"ri-money-dollar-circle-line\" />}\n onChange={(e) => onChange({ price: Number(e.target.value) || 0 })}\n />\n </Field>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <Field label=\"Stock on hand\">\n <CounterInput value={draft.stock} min={0} max={draft.capacity} onChange={(v) => onChange({ stock: v })} />\n </Field>\n <Field label=\"Capacity\">\n <CounterInput value={draft.capacity} min={1} max={1000} step={10} onChange={(v) => onChange({ capacity: v })} />\n </Field>\n </div>\n <Field label=\"Description\">\n <Input\n value={draft.description ?? \"\"}\n placeholder=\"Short internal description\"\n onChange={(e) => onChange({ description: e.target.value })}\n />\n </Field>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Status follows stock: 0 = out of stock, below 25% of capacity = low stock.\n </span>\n </div>\n </Modal>\n );\n}\n\n/* ---- read (detail drawer) ---- */\n\nfunction DetailRow({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-soft-400)\" }}>{label}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{children}</span>\n </div>\n );\n}\n\ninterface ProductDetailProps {\n product: Product | null;\n onClose: () => void;\n onEdit: (p: Product) => void;\n onOpenPage: (p: Product) => void;\n onDelete: (p: Product) => void;\n}\n\nfunction ProductDetail({ product, onClose, onEdit, onOpenPage, onDelete }: ProductDetailProps) {\n return (\n <Drawer\n open={product !== null}\n onClose={onClose}\n title=\"Product details\"\n width={420}\n footer={\n product ? (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: 8, width: \"100%\" }}>\n <Button\n size=\"small\"\n variant=\"error\"\n appearance=\"lighter\"\n leadingIcon={<i className=\"ri-delete-bin-line\" />}\n onClick={() => onDelete(product)}\n >\n Delete\n </Button>\n <span style={{ display: \"flex\", gap: 8 }}>\n <Button size=\"small\" variant=\"neutral\" appearance=\"ghost\" onClick={() => onOpenPage(product)}>\n Full editor\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-edit-line\" />} onClick={() => onEdit(product)}>\n Edit product\n </Button>\n </span>\n </div>\n ) : null\n }\n >\n {product ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <Thumb category={product.category} />\n <div style={{ minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>\n {product.name}\n </div>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {product.sku}\n </div>\n </div>\n <span style={{ marginLeft: \"auto\" }}>\n <Badge color={STATUS_COLOR[product.status]} variant=\"light\" size=\"small\" dot>\n {product.status}\n </Badge>\n </span>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n <DetailRow label=\"Category\">{product.category}</DetailRow>\n <DetailRow label=\"Price\">\n <Money value={product.price} currency=\"USD\" locale=\"en-US\" />\n </DetailRow>\n <DetailRow label=\"Stock\">\n {product.stock} of {product.capacity}\n </DetailRow>\n </div>\n\n <ProgressBar value={product.stock} max={product.capacity} color={stockColor(product)} />\n\n {product.description ? (\n <span\n style={{\n font: \"var(--klun-text-paragraph-sm)\",\n color: \"var(--klun-text-sub-600)\",\n boxShadow: \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n paddingTop: 16,\n }}\n >\n {product.description}\n </span>\n ) : null}\n </div>\n ) : null}\n </Drawer>\n );\n}\n\nfunction Thumb({ category }: { category: string }) {\n const tone = CATEGORY_TONE[category] ?? CATEGORY_TONE.Accessories;\n return (\n <span\n style={{\n width: 34,\n height: 34,\n borderRadius: \"var(--klun-radius-md)\",\n background: tone.bg,\n color: tone.fg,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 17,\n flexShrink: 0,\n }}\n >\n <i className={tone.icon} />\n </span>\n );\n}\n\nexport function ProductsScreen() {\n const [products, setProducts] = useState<Product[]>(INITIAL_PRODUCTS);\n const [editor, setEditor] = useState<{ mode: \"create\" | \"edit\"; product?: Product } | null>(null);\n const [draft, setDraft] = useState<ProductDraft>(emptyDraft);\n const [detail, setDetail] = useState<Product | null>(null);\n // \"Route\" state — swap for real routes (/products/new · /products/:id/edit)\n // when the app has a router; the wizard page renders instead of the list.\n const [route, setRoute] = useState<{ name: \"list\" | \"create\" | \"edit\"; product?: Product }>({\n name: \"list\",\n });\n\n const toDraft = (p: Product): ProductDraft => {\n const { id: _id, ...rest } = p;\n return rest;\n };\n\n /** Shared save path for the modal editor and the wizard page. */\n const upsert = (d: ProductDraft, mode: \"create\" | \"edit\", id?: string) => {\n if (mode === \"create\") {\n setProducts((prev) => [{ id: `p${Date.now()}`, ...d }, ...prev]);\n return;\n }\n if (id) {\n setProducts((prev) => prev.map((p) => (p.id === id ? { ...p, ...d } : p)));\n setDetail((x) => (x && x.id === id ? { ...x, ...d } : x));\n }\n };\n\n if (route.name !== \"list\") {\n const mode = route.name;\n const editing = mode === \"edit\" ? route.product : undefined;\n return (\n <ProductWizardPage\n mode={mode}\n initial={editing ? toDraft(editing) : emptyDraft()}\n onCancel={() => setRoute({ name: \"list\" })}\n onSave={(d) => {\n upsert(d, mode, editing?.id);\n setRoute({ name: \"list\" });\n }}\n />\n );\n }\n\n const totals = {\n skus: products.length,\n low: products.filter((p) => p.status === \"Low stock\").length,\n out: products.filter((p) => p.status === \"Out of stock\").length,\n value: products.reduce((sum, p) => sum + p.price * p.stock, 0),\n };\n\n const openCreate = () => {\n setDraft(emptyDraft());\n setEditor({ mode: \"create\" });\n };\n\n const openEdit = (p: Product) => {\n setDraft(toDraft(p));\n setEditor({ mode: \"edit\", product: p });\n };\n\n const saveDraft = () => {\n const status = deriveStatus(draft.stock, draft.capacity);\n upsert({ ...draft, status }, editor?.mode ?? \"create\", editor?.product?.id);\n setEditor(null);\n };\n\n const removeProduct = async (p: Product) => {\n const res = await Confirm({\n title: `Delete ${p.name}?`,\n description: `${p.sku} will be removed from the inventory. This can't be undone.`,\n intent: \"danger\",\n confirmText: \"Delete product\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setProducts((prev) => prev.filter((x) => x.id !== p.id));\n setDetail((d) => (d && d.id === p.id ? null : d));\n }\n };\n\n const columns: TableColumn<Product>[] = [\n {\n key: \"name\",\n header: \"Product\",\n render: (p) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10 }}>\n <Thumb category={p.category} />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{p.name}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{p.sku}</span>\n </span>\n </span>\n ),\n },\n { key: \"category\", header: \"Category\" },\n {\n key: \"price\",\n header: \"Price\",\n align: \"right\",\n render: (p) => <Money value={p.price} currency=\"USD\" locale=\"en-US\" style={{ font: \"var(--klun-text-label-sm)\" }} />,\n },\n {\n key: \"stock\",\n header: \"Stock\",\n width: 190,\n render: (p) => (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 150 }}>\n <span style={{ flex: 1 }}>\n <ProgressBar value={p.stock} max={p.capacity} color={stockColor(p)} />\n </span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\", width: 32, textAlign: \"right\" }}>\n {p.stock}\n </span>\n </span>\n ),\n },\n {\n key: \"status\",\n header: \"Status\",\n filters: [\n { label: \"Active\", value: \"Active\" },\n { label: \"Low stock\", value: \"Low stock\" },\n { label: \"Out of stock\", value: \"Out of stock\" },\n ],\n render: (p) => (\n <Badge color={STATUS_COLOR[p.status]} variant=\"light\" size=\"small\" dot>\n {p.status}\n </Badge>\n ),\n },\n {\n key: \"actions\",\n header: \"\",\n width: 56,\n align: \"right\",\n exportable: false,\n render: (p) => (\n <Dropdown\n align=\"right\"\n width={190}\n trigger={\n <Button\n kind=\"compact\"\n appearance=\"ghost\"\n icon={<i className=\"ri-more-2-line\" />}\n aria-label={`Actions for ${p.name}`}\n />\n }\n items={[\n { label: \"View details\", icon: <i className=\"ri-eye-line\" />, onClick: () => setDetail(p) },\n { label: \"Quick edit — modal\", icon: <i className=\"ri-edit-line\" />, onClick: () => openEdit(p) },\n { label: \"Edit in page\", icon: <i className=\"ri-layout-top-line\" />, onClick: () => setRoute({ name: \"edit\", product: p }) },\n { label: \"Duplicate\", icon: <i className=\"ri-file-copy-line\" />, onClick: () => openCreate() },\n { divider: true },\n { label: \"Delete product\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void removeProduct(p) },\n ]}\n />\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"products\"\n extra={\n <Dropdown\n align=\"right\"\n width={220}\n trigger={\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />}>\n Add product\n </Button>\n }\n items={[\n { label: \"Quick add — modal\", icon: <i className=\"ri-add-box-line\" />, onClick: openCreate },\n {\n label: \"Full-page editor\",\n icon: <i className=\"ri-layout-top-line\" />,\n onClick: () => setRoute({ name: \"create\" }),\n },\n ]}\n />\n }\n />\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\", gap: 16 }}>\n <MiniStat label=\"SKUs\" value={totals.skus} hint=\"across 6 categories\" />\n <MiniStat label=\"Low stock\" value={totals.low} hint=\"needs restocking\" tone=\"warning\" />\n <MiniStat label=\"Out of stock\" value={totals.out} hint=\"not purchasable\" tone=\"danger\" />\n <MiniStat label=\"Inventory value\" value={<Money value={totals.value} currency=\"USD\" locale=\"en-US\" size=\"lg\" />} hint=\"at cost price\" tone=\"success\" />\n </div>\n\n <Table\n columns={columns}\n rows={products}\n getRowId={(p) => p.id}\n title=\"Inventory\"\n toolbar={\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-filter-3-line\" />}>\n Filters\n </Button>\n }\n sortable\n columnSettings\n exportable={{ filename: \"products.csv\" }}\n />\n\n <ProductEditor\n open={editor !== null}\n mode={editor?.mode ?? \"create\"}\n draft={draft}\n onChange={(patch) => setDraft((d) => ({ ...d, ...patch }))}\n onClose={() => setEditor(null)}\n onSave={saveDraft}\n />\n\n <ProductDetail\n product={detail}\n onClose={() => setDetail(null)}\n onEdit={(p) => {\n setDetail(null);\n openEdit(p);\n }}\n onOpenPage={(p) => {\n setDetail(null);\n setRoute({ name: \"edit\", product: p });\n }}\n onDelete={(p) => void removeProduct(p)}\n />\n </div>\n );\n}\n","// Metronic example — Customers: CRM-style list with segments, lifetime spend\n// and live relative times, plus a summary strip.\nimport { Avatar, Button, Chip, Money, RelativeTime, Table } from \"../../index\";\nimport type { ChipColor, TableColumn } from \"../../index\";\nimport { PageHeader } from \"./i18n\";\nimport { MiniStat } from \"./widgets\";\n\ninterface Customer {\n id: string;\n name: string;\n email: string;\n segment: \"VIP\" | \"Regular\" | \"New\";\n orders: number;\n spend: number;\n lastSeen: string;\n country: string;\n}\n\nconst CUSTOMERS: Customer[] = [\n { id: \"c1\", name: \"Anna Krause\", email: \"anna@acme.io\", segment: \"VIP\", orders: 42, spend: 18420.0, lastSeen: \"2026-09-16T08:30:00Z\", country: \"Germany\" },\n { id: \"c2\", name: \"Ben Ortiz\", email: \"ben@northwind.co\", segment: \"Regular\", orders: 17, spend: 5210.5, lastSeen: \"2026-09-16T06:10:00Z\", country: \"Mexico\" },\n { id: \"c3\", name: \"Chloe Lin\", email: \"chloe@lumen.dev\", segment: \"VIP\", orders: 55, spend: 24980.0, lastSeen: \"2026-09-15T19:45:00Z\", country: \"Singapore\" },\n { id: \"c4\", name: \"Dmitri Volkov\", email: \"dmitri@volk.io\", segment: \"New\", orders: 2, spend: 340.0, lastSeen: \"2026-09-15T12:05:00Z\", country: \"Georgia\" },\n { id: \"c5\", name: \"Erin Walsh\", email: \"erin@walsh.ie\", segment: \"Regular\", orders: 23, spend: 7690.0, lastSeen: \"2026-09-14T16:20:00Z\", country: \"Ireland\" },\n { id: \"c6\", name: \"Farid Haddad\", email: \"farid@levant.sa\", segment: \"Regular\", orders: 11, spend: 3980.0, lastSeen: \"2026-09-14T09:00:00Z\", country: \"Saudi Arabia\" },\n { id: \"c7\", name: \"Grace Miller\", email: \"grace@miller.us\", segment: \"New\", orders: 1, spend: 148.0, lastSeen: \"2026-09-13T20:12:00Z\", country: \"United States\" },\n { id: \"c8\", name: \"Hugo Silva\", email: \"hugo@silva.br\", segment: \"VIP\", orders: 38, spend: 15340.0, lastSeen: \"2026-09-13T10:40:00Z\", country: \"Brazil\" },\n];\n\nconst SEGMENT_COLOR: Record<Customer[\"segment\"], ChipColor> = {\n VIP: \"purple\",\n Regular: \"blue\",\n New: \"green\",\n};\n\nconst initials = (name: string) =>\n name\n .split(\" \")\n .map((s) => s[0])\n .join(\"\");\n\nexport function CustomersScreen() {\n const totalSpend = CUSTOMERS.reduce((sum, c) => sum + c.spend, 0);\n\n const columns: TableColumn<Customer>[] = [\n {\n key: \"name\",\n header: \"Customer\",\n render: (c) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"32\" initials={initials(c.name)} color=\"blue\" />\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{c.name}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{c.email}</span>\n </span>\n </span>\n ),\n },\n {\n key: \"segment\",\n header: \"Segment\",\n filters: [\n { label: \"VIP\", value: \"VIP\" },\n { label: \"Regular\", value: \"Regular\" },\n { label: \"New\", value: \"New\" },\n ],\n render: (c) => (\n <Chip color={SEGMENT_COLOR[c.segment]} dot>\n {c.segment}\n </Chip>\n ),\n },\n { key: \"country\", header: \"Country\" },\n { key: \"orders\", header: \"Orders\", align: \"center\" },\n {\n key: \"spend\",\n header: \"Lifetime spend\",\n align: \"right\",\n render: (c) => (\n <Money\n value={c.spend}\n currency=\"USD\"\n locale=\"en-US\"\n tone={c.segment === \"VIP\" ? \"increase\" : \"default\"}\n style={{ font: \"var(--klun-text-label-sm)\" }}\n />\n ),\n },\n {\n key: \"lastSeen\",\n header: \"Last active\",\n render: (c) => (\n <RelativeTime\n date={c.lastSeen}\n live={false}\n style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}\n />\n ),\n },\n ];\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"customers\"\n extra={\n <Button size=\"small\" leadingIcon={<i className=\"ri-user-add-line\" />}>\n Invite customer\n </Button>\n }\n />\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\", gap: 16 }}>\n <MiniStat label=\"Customers\" value=\"9,402\" hint=\"+2.3% this month\" />\n <MiniStat label=\"New (30d)\" value=\"384\" hint=\"+12.4% vs last month\" tone=\"success\" />\n <MiniStat label=\"Repeat rate\" value=\"46%\" hint=\"+1.8 pts\" tone=\"success\" />\n <MiniStat label=\"Lifetime value shown\" value={<Money value={totalSpend} currency=\"USD\" locale=\"en-US\" size=\"lg\" />} hint=\"top 8 customers\" tone=\"feature\" />\n </div>\n\n <Table\n columns={columns}\n rows={CUSTOMERS}\n getRowId={(c) => c.id}\n title=\"All customers\"\n sortable\n exportable={{ filename: \"customers.csv\" }}\n pagination={{ defaultPageSize: 8 }}\n />\n </div>\n );\n}\n","// Metronic example — department filter.\n// A thin adapter over the design-system `Cascader`: the organisation tree is\n// mapped to cascader options, each row gets a member count (branch-wide) via\n// `renderOption`, and picking any level filters that whole branch because\n// `changeOnSelect` is on. `×` clears back to \"all departments\".\nimport { Cascader } from \"../../index\";\nimport type { CascaderOption } from \"../../index\";\nimport {\n departmentChildren,\n departmentIdPath,\n departmentIdsWithChildren,\n} from \"./usersModel\";\nimport type { DemoUser } from \"./usersModel\";\n\nexport interface DepartmentFilterProps {\n /** Active department id, or `\"all\"`. */\n value: string;\n onChange: (id: string) => void;\n /** Members used for the per-branch counters. */\n users: DemoUser[];\n}\n\nexport function DepartmentFilter({ value, onChange, users }: DepartmentFilterProps) {\n /** Branch-wide member count (the department plus every descendant). */\n const countIn = (id: string) => {\n const ids = new Set(departmentIdsWithChildren(id));\n return users.filter((u) => ids.has(u.department)).length;\n };\n\n const buildOptions = (parentId: string | null): CascaderOption[] =>\n departmentChildren(parentId).map((d) => {\n const kids = buildOptions(d.id);\n return { value: d.id, label: d.name, children: kids.length ? kids : undefined };\n });\n\n return (\n <Cascader\n options={buildOptions(null)}\n value={departmentIdPath(value)}\n onChange={(path) => onChange(path.length ? path[path.length - 1] : \"all\")}\n changeOnSelect\n clearable\n placeholder=\"All departments\"\n separator=\" / \"\n renderOption={(option) => (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 8, width: \"100%\" }}>\n <span style={{ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\n {option.label}\n </span>\n <span\n style={{\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-soft-400)\",\n background: \"var(--klun-bg-weak-50)\",\n borderRadius: \"var(--klun-radius-pill)\",\n padding: \"0 6px\",\n }}\n >\n {countIn(option.value)}\n </span>\n </span>\n )}\n />\n );\n}\n","// Metronic example — user detail drawer.\n// Four tabs that tie the whole admin suite together: profile (people), access\n// (roles + direct permission overrides), security (2FA, password, account state,\n// sessions) and activity (that user's slice of the audit trail).\nimport { useEffect, useState } from \"react\";\nimport {\n Avatar,\n Badge,\n Button,\n Checkbox,\n Chip,\n Confirm,\n Divider,\n Drawer,\n Input,\n Label,\n RelativeTime,\n Select,\n Switch,\n Tabs,\n useMessage,\n} from \"../../index\";\nimport {\n ALL_PERMISSIONS,\n ROLE_COLOR,\n ROLE_IDS,\n ROLE_PERMISSIONS,\n USER_STATUS_COLOR,\n departmentName,\n departmentPath,\n effectivePermissions,\n initialsOf,\n rolePermissions,\n} from \"./usersModel\";\nimport type { DemoUser, PermissionOverride, RoleId, UserActivity, UserSession } from \"./usersModel\";\n\nconst ACTION_COLOR: Record<UserActivity[\"action\"], \"green\" | \"blue\" | \"red\" | \"purple\" | \"orange\" | \"teal\"> = {\n create: \"green\",\n update: \"blue\",\n delete: \"red\",\n login: \"purple\",\n export: \"orange\",\n permission: \"teal\",\n};\n\nconst RESULT_COLOR: Record<UserActivity[\"result\"], \"green\" | \"red\" | \"gray\"> = {\n success: \"green\",\n failed: \"red\",\n blocked: \"gray\",\n};\n\nexport interface UserDetailDrawerProps {\n user: DemoUser | null;\n onClose: () => void;\n /** Persist changes back into the list. */\n onChange: (user: DemoUser) => void;\n /** Jump to the audit log filtered by this user. */\n onOpenAudit?: (actor: string) => void;\n /** Jump to the roles & permissions matrix. */\n onOpenRoles?: () => void;\n /** Jump to the departments tree. */\n onOpenDepartments?: () => void;\n}\n\nfunction Meta({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, minWidth: 0 }}>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{label}</span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{children}</span>\n </div>\n );\n}\n\nfunction Panel({ title, desc, children, tone }: { title: string; desc?: string; children: React.ReactNode; tone?: \"danger\" }) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n padding: 14,\n borderRadius: \"var(--klun-radius-xl)\",\n border: `1px solid ${tone === \"danger\" ? \"var(--klun-state-error-light)\" : \"var(--klun-stroke-soft-200)\"}`,\n background: tone === \"danger\" ? \"var(--klun-state-error-lighter)\" : \"var(--klun-bg-white-0)\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{title}</b>\n {desc ? <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{desc}</span> : null}\n </div>\n {children}\n </div>\n );\n}\n\nexport function UserDetailDrawer({ user, onClose, onChange, onOpenAudit, onOpenRoles, onOpenDepartments }: UserDetailDrawerProps) {\n const [message, holder] = useMessage();\n const [tab, setTab] = useState(\"profile\");\n\n /* profile form */\n const [form, setForm] = useState({ name: \"\", email: \"\", title: \"\", department: \"\", manager: \"\", location: \"\", timezone: \"\" });\n const [dirty, setDirty] = useState(false);\n\n /* override composer */\n const [newPermission, setNewPermission] = useState(ALL_PERMISSIONS[0]);\n const [newEffect, setNewEffect] = useState<\"allow\" | \"deny\">(\"allow\");\n\n useEffect(() => {\n if (!user) return;\n setTab(\"profile\");\n setForm({\n name: user.name,\n email: user.email,\n title: user.title,\n department: user.department,\n manager: user.manager,\n location: user.location,\n timezone: user.timezone,\n });\n setDirty(false);\n }, [user?.id]); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (!user) return <Drawer open={false} onClose={onClose} />;\n\n const patch = (next: Partial<DemoUser>, toast?: string) => {\n onChange({ ...user, ...next });\n if (toast) message.success({ content: toast, key: \"user\" });\n };\n\n const saveProfile = () => {\n if (!form.name.trim() || !form.email.trim()) {\n message.error({ content: \"Name and email are required.\", key: \"user\" });\n return;\n }\n patch({ ...form, name: form.name.trim(), email: form.email.trim() }, \"Profile updated.\");\n setDirty(false);\n };\n\n const toggleRole = (role: RoleId, checked: boolean) => {\n const roles = checked ? [...user.roles, role] : user.roles.filter((r) => r !== role);\n if (roles.length === 0) {\n message.error({ content: \"Every member needs at least one role.\", key: \"user\" });\n return;\n }\n patch({ roles }, `${role} ${checked ? \"assigned\" : \"removed\"}.`);\n };\n\n const addOverride = () => {\n if (user.overrides.some((o) => o.permission === newPermission)) {\n message.warning({ content: `${newPermission} already has an override.`, key: \"user\" });\n return;\n }\n const override: PermissionOverride = { id: `o${Date.now()}`, permission: newPermission, effect: newEffect };\n patch({ overrides: [...user.overrides, override] }, `${newEffect === \"allow\" ? \"Allowed\" : \"Denied\"} ${newPermission}.`);\n };\n\n const removeOverride = (id: string) => {\n const target = user.overrides.find((o) => o.id === id);\n patch({ overrides: user.overrides.filter((o) => o.id !== id) }, `Override for ${target?.permission} removed.`);\n };\n\n const toggleTwoFA = async (on: boolean) => {\n if (!on) {\n const res = await Confirm({\n title: `Reset two-factor for ${user.name}?`,\n description: \"They'll sign in with a password only until they enrol a new device.\",\n intent: \"danger\",\n confirmText: \"Reset 2FA\",\n });\n if (!(res === true || (typeof res === \"object\" && res.confirmed))) return;\n patch({ twoFA: false, forcePasswordChange: true }, \"Two-factor reset — they must re-enrol.\");\n return;\n }\n patch({ twoFA: true }, \"Two-factor enabled.\");\n };\n\n const setStatus = async (status: DemoUser[\"status\"]) => {\n if (status === \"Suspended\" || status === \"Locked\") {\n const res = await Confirm({\n title: status === \"Locked\" ? `Lock ${user.name} out?` : `Suspend ${user.name}?`,\n description:\n status === \"Locked\"\n ? \"Active sessions are revoked immediately and sign-in is blocked until you unlock the account.\"\n : \"They keep their data but lose access until you restore the account.\",\n intent: \"warning\",\n confirmText: status === \"Locked\" ? \"Lock account\" : \"Suspend member\",\n });\n if (!(res === true || (typeof res === \"object\" && res.confirmed))) return;\n }\n patch({ status, sessions: status === \"Active\" ? user.sessions : [] }, `Account ${status.toLowerCase()}.`);\n };\n\n const revokeSession = async (session: UserSession) => {\n const res = await Confirm({\n title: `Revoke ${session.device}?`,\n description: `${session.browser} · ${session.ip}`,\n intent: \"danger\",\n confirmText: \"Revoke session\",\n });\n if (!(res === true || (typeof res === \"object\" && res.confirmed))) return;\n patch({ sessions: user.sessions.filter((s) => s.id !== session.id) }, `${session.device} signed out.`);\n };\n\n const signOutEverywhere = async () => {\n const res = await Confirm({\n title: `Sign ${user.name} out everywhere?`,\n description: `${user.sessions.length} active session${user.sessions.length === 1 ? \"\" : \"s\"} will be revoked.`,\n intent: \"danger\",\n confirmText: \"Sign out all\",\n });\n if (!(res === true || (typeof res === \"object\" && res.confirmed))) return;\n patch({ sessions: [] }, \"All sessions revoked.\");\n };\n\n /* ---- derived ---- */\n const fromRoles = rolePermissions(user.roles);\n const effective = effectivePermissions(user);\n const denied = user.overrides.filter((o) => o.effect === \"deny\").length;\n const allowed = user.overrides.filter((o) => o.effect === \"allow\").length;\n const risk = [\n !user.twoFA ? \"2FA off\" : null,\n user.failedLogins >= 3 ? `${user.failedLogins} failed sign-ins` : null,\n user.status === \"Locked\" ? \"Locked\" : null,\n user.forcePasswordChange ? \"Password change pending\" : null,\n ].filter(Boolean) as string[];\n\n return (\n <>\n {holder}\n\n <Drawer\n open\n onClose={onClose}\n placement=\"right\"\n width={560}\n title={\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"32\" initials={initialsOf(user.name)} color={user.avatarColor} />\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>{user.name}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{user.email}</span>\n </span>\n </span>\n }\n extra={\n <Badge color={USER_STATUS_COLOR[user.status]} variant=\"light\" size=\"small\" dot>\n {user.status}\n </Badge>\n }\n footer={\n tab === \"profile\" ? (\n <>\n <Button variant=\"neutral\" appearance=\"ghost\" onClick={onClose}>\n Close\n </Button>\n <Button\n disabled={!dirty}\n onClick={saveProfile}\n >\n Save changes\n </Button>\n </>\n ) : tab === \"access\" ? (\n <>\n <Button variant=\"neutral\" appearance=\"ghost\" onClick={onOpenDepartments}>\n Departments\n </Button>\n <Button variant=\"neutral\" appearance=\"stroke\" onClick={onOpenRoles}>\n Open permission matrix\n </Button>\n </>\n ) : tab === \"security\" ? (\n <>\n <Button variant=\"neutral\" appearance=\"ghost\" onClick={() => void signOutEverywhere()}>\n Sign out everywhere\n </Button>\n <Button\n variant=\"neutral\"\n appearance=\"stroke\"\n leadingIcon={<i className=\"ri-mail-send-line\" />}\n onClick={() => message.success({ content: `Password reset link sent to ${user.email}.`, key: \"user\" })}\n >\n Send reset link\n </Button>\n </>\n ) : (\n <Button variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-file-shield-2-line\" />} onClick={() => onOpenAudit?.(user.name)}>\n Open in audit log\n </Button>\n )\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16, marginTop: -4 }}>\n <Tabs\n variant=\"pill\"\n value={tab}\n onChange={setTab}\n items={[\n { value: \"profile\", label: \"Profile\" },\n { value: \"access\", label: \"Access\", badge: effective.length },\n { value: \"security\", label: \"Security\", badge: risk.length || undefined },\n { value: \"activity\", label: \"Activity\", badge: user.activity.length },\n ]}\n />\n\n {/* ---------------- profile ---------------- */}\n {tab === \"profile\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: 12,\n padding: 14,\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-bg-weak-50)\",\n }}\n >\n <Meta label=\"Department\">\n <button\n type=\"button\"\n onClick={onOpenDepartments}\n style={{ border: \"none\", background: \"none\", padding: 0, color: \"var(--klun-primary-base)\", cursor: \"pointer\", font: \"inherit\", textAlign: \"left\" }}\n >\n {departmentName(user.department)}\n </button>\n </Meta>\n <Meta label=\"Manager\">{user.manager}</Meta>\n <Meta label=\"Member since\">\n <RelativeTime date={user.createdAt} live={false} />\n </Meta>\n <Meta label=\"Last active\">\n <RelativeTime date={user.lastActive} />\n </Meta>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 12 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Full name</Label>\n <Input value={form.name} onChange={(e) => { setForm((f) => ({ ...f, name: e.target.value })); setDirty(true); }} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Email</Label>\n <Input value={form.email} onChange={(e) => { setForm((f) => ({ ...f, email: e.target.value })); setDirty(true); }} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Job title</Label>\n <Input value={form.title} onChange={(e) => { setForm((f) => ({ ...f, title: e.target.value })); setDirty(true); }} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Department</Label>\n <Select value={form.department} onChange={(e) => { setForm((f) => ({ ...f, department: e.target.value })); setDirty(true); }}>\n {[\"hq\", \"eng\", \"fe\", \"platform\", \"product\", \"design\", \"research\", \"gtm\", \"sales\", \"cs\"].map((id) => (\n <option key={id} value={id}>\n {departmentPath(id)}\n </option>\n ))}\n </Select>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Location</Label>\n <Input value={form.location} onChange={(e) => { setForm((f) => ({ ...f, location: e.target.value })); setDirty(true); }} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Timezone</Label>\n <Select value={form.timezone} onChange={(e) => { setForm((f) => ({ ...f, timezone: e.target.value })); setDirty(true); }}>\n {[\"CET — Berlin\", \"GMT — London\", \"PST — America/Los_Angeles\", \"JST — Asia/Tokyo\"].map((z) => (\n <option key={z} value={z}>\n {z}\n </option>\n ))}\n </Select>\n </div>\n </div>\n\n <Divider />\n\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, flexWrap: \"wrap\" }}>\n <span style={{ display: \"flex\", gap: 6, flexWrap: \"wrap\" }}>\n {user.roles.map((r) => (\n <Chip key={r} color={ROLE_COLOR[r]} dot>\n {r}\n </Chip>\n ))}\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {effective.length} effective permissions · {user.sessions.length} active session{user.sessions.length === 1 ? \"\" : \"s\"}\n </span>\n </div>\n\n {risk.length ? (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"10px 12px\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-state-warning-lighter)\",\n border: \"1px solid var(--klun-state-warning-light)\",\n font: \"var(--klun-text-paragraph-xs)\",\n color: \"var(--klun-text-sub-600)\",\n }}\n >\n <i className=\"ri-shield-keyhole-line\" style={{ color: \"var(--klun-state-warning-base)\" }} />\n Needs attention: {risk.join(\" · \")}\n </div>\n ) : null}\n </div>\n ) : null}\n\n {/* ---------------- access ---------------- */}\n {tab === \"access\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Panel title=\"Roles\" desc=\"Roles stack — the member gets the union of everything below.\">\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n {ROLE_IDS.map((role) => {\n const on = user.roles.includes(role);\n return (\n <label\n key={role}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"8px 10px\",\n borderRadius: \"var(--klun-radius-lg)\",\n border: `1px solid ${on ? \"var(--klun-primary-base)\" : \"var(--klun-stroke-soft-200)\"}`,\n background: on ? \"var(--klun-primary-lighter)\" : \"transparent\",\n cursor: \"pointer\",\n }}\n >\n <Checkbox size=\"small\" checked={on} onChange={(checked) => toggleRole(role, checked)} />\n <Chip color={ROLE_COLOR[role]} dot>\n {role}\n </Chip>\n <span style={{ marginLeft: \"auto\", font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {ROLE_PERMISSIONS[role].length} permissions\n </span>\n </label>\n );\n })}\n </div>\n </Panel>\n\n <Panel title=\"Direct overrides\" desc=\"Exceptions on top of the roles — grants or denies for this member only.\">\n {user.overrides.length ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n {user.overrides.map((o) => (\n <div key={o.id} style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <Chip color={o.effect === \"allow\" ? \"green\" : \"red\"} dot>\n {o.effect}\n </Chip>\n <code style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-strong-950)\" }}>{o.permission}</code>\n <Button\n kind=\"compact\"\n appearance=\"ghost\"\n icon={<i className=\"ri-close-line\" />}\n aria-label={`Remove override for ${o.permission}`}\n onClick={() => removeOverride(o.id)}\n />\n </div>\n ))}\n </div>\n ) : (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n No overrides — the roles decide everything.\n </span>\n )}\n <div style={{ display: \"flex\", gap: 8, alignItems: \"flex-end\", flexWrap: \"wrap\" }}>\n <div style={{ flex: 1, minWidth: 170, display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Permission</Label>\n <Select size=\"small\" value={newPermission} onChange={(e) => setNewPermission(e.target.value)}>\n {ALL_PERMISSIONS.map((p) => (\n <option key={p} value={p}>\n {p}\n </option>\n ))}\n </Select>\n </div>\n <div style={{ width: 120, display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Effect</Label>\n <Select size=\"small\" value={newEffect} onChange={(e) => setNewEffect(e.target.value as \"allow\" | \"deny\")}>\n <option value=\"allow\">allow</option>\n <option value=\"deny\">deny</option>\n </Select>\n </div>\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />} onClick={addOverride}>\n Add\n </Button>\n </div>\n </Panel>\n\n <Panel title={`Effective permissions (${effective.length})`} desc={`${fromRoles.length} from roles · ${allowed} allowed · ${denied} denied`}>\n <span style={{ display: \"flex\", flexWrap: \"wrap\", gap: 4 }}>\n {effective.map((p) => {\n const overridden = user.overrides.find((o) => o.permission === p);\n return (\n <Chip key={p} color={overridden ? (overridden.effect === \"allow\" ? \"green\" : \"purple\") : \"gray\"}>\n {p}\n </Chip>\n );\n })}\n </span>\n {fromRoles.some((p) => !effective.includes(p)) ? (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Denied by override: {fromRoles.filter((p) => !effective.includes(p)).join(\", \")}\n </span>\n ) : null}\n </Panel>\n </div>\n ) : null}\n\n {/* ---------------- security ---------------- */}\n {tab === \"security\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Panel\n title=\"Account state\"\n desc={\n user.status === \"Locked\"\n ? `Locked after ${user.failedLogins} failed sign-ins.`\n : user.status === \"Suspended\"\n ? \"Suspended — sign-in blocked until restored.\"\n : \"Active — the member can sign in.\"\n }\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flexWrap: \"wrap\" }}>\n <Badge color={USER_STATUS_COLOR[user.status]} variant=\"light\" size=\"small\" dot>\n {user.status}\n </Badge>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n {user.failedLogins} failed sign-in{user.failedLogins === 1 ? \"\" : \"s\"} ·{\" \"}\n {user.sessions.length} active session{user.sessions.length === 1 ? \"\" : \"s\"}\n </span>\n <span style={{ marginLeft: \"auto\", display: \"flex\", gap: 8 }}>\n {user.status === \"Active\" ? (\n <>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" onClick={() => void setStatus(\"Suspended\")}>\n Suspend\n </Button>\n <Button size=\"small\" variant=\"error\" appearance=\"stroke\" onClick={() => void setStatus(\"Locked\")}>\n Lock\n </Button>\n </>\n ) : (\n <Button size=\"small\" onClick={() => void setStatus(\"Active\")}>\n {user.status === \"Locked\" ? \"Unlock account\" : \"Restore access\"}\n </Button>\n )}\n </span>\n </div>\n </Panel>\n\n <Panel title=\"Two-factor authentication\" desc={user.twoFA ? \"TOTP app enrolled.\" : \"Not enrolled — password only.\"}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12 }}>\n <Badge color={user.twoFA ? \"green\" : \"orange\"} variant=\"light\" size=\"small\" dot>\n {user.twoFA ? \"Enabled\" : \"Off\"}\n </Badge>\n <Switch checked={user.twoFA} onChange={(v) => void toggleTwoFA(v)} />\n </div>\n </Panel>\n\n <Panel title=\"Password\" desc={`Last changed ${new Date(user.passwordChangedAt).toISOString().slice(0, 10)}.`}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n Force change on next sign-in\n </b>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n They'll be asked to pick a new password before continuing.\n </span>\n </div>\n <Switch\n checked={user.forcePasswordChange}\n onChange={(v) => patch({ forcePasswordChange: v }, v ? \"Password change required.\" : \"Password change requirement cleared.\")}\n />\n </div>\n </Panel>\n\n <Panel title={`Sessions (${user.sessions.length})`} desc=\"Every device currently signed in as this member.\">\n {user.sessions.length ? (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {user.sessions.map((s, i) => (\n <div\n key={s.id}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"10px 0\",\n boxShadow: i === 0 ? \"none\" : \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n }}\n >\n <i className={s.icon} style={{ color: \"var(--klun-icon-sub-600)\", fontSize: 16 }} />\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{s.device}</b>\n {s.current ? (\n <Badge color=\"blue\" variant=\"lighter\" size=\"small\">\n Current\n </Badge>\n ) : null}\n </div>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {s.browser} · {s.ip} · {s.location}\n </span>\n </div>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\", whiteSpace: \"nowrap\" }}>\n <RelativeTime date={s.lastActive} />\n </span>\n <Button size=\"xsmall\" variant=\"neutral\" appearance=\"ghost\" disabled={s.current} onClick={() => void revokeSession(s)}>\n Revoke\n </Button>\n </div>\n ))}\n </div>\n ) : (\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n No active sessions — they'll have to sign in again.\n </span>\n )}\n </Panel>\n </div>\n ) : null}\n\n {/* ---------------- activity ---------------- */}\n {tab === \"activity\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n {user.activity.length ? (\n user.activity.map((ev) => (\n <div\n key={ev.id}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"10px 12px\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-lg)\",\n }}\n >\n <Chip color={ACTION_COLOR[ev.action]} dot>\n {ev.action}\n </Chip>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{ev.target}</div>\n <div style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {ev.ip} · <RelativeTime date={ev.at} live={false} />\n </div>\n </div>\n <Badge color={RESULT_COLOR[ev.result]} variant=\"lighter\" size=\"small\">\n {ev.result}\n </Badge>\n </div>\n ))\n ) : (\n <span style={{ font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-soft-400)\" }}>\n No activity recorded yet — invites show up here once they sign in.\n </span>\n )}\n </div>\n ) : null}\n </div>\n </Drawer>\n </>\n );\n}\n","// Metronic example — user management.\n// A complete people directory: searchable + filterable list (department, role,\n// status, security risk), row selection with bulk actions (activate, suspend,\n// reset 2FA, assign role, move department), CSV export, and a detail drawer\n// that ties together access (roles + overrides), security (2FA, sessions,\n// account state) and that member's slice of the audit trail.\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n Avatar,\n Badge,\n Button,\n Checkbox,\n Chip,\n Confirm,\n Dropdown,\n Input,\n Label,\n Modal,\n ProgressBar,\n RelativeTime,\n SegmentedControl,\n Select,\n Switch,\n Table,\n useMessage,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { PageHeader, useDemoText } from \"./i18n\";\nimport {\n DEPARTMENTS,\n INITIAL_USERS,\n ROLE_COLOR,\n ROLE_IDS,\n USER_STATUSES,\n USER_STATUS_COLOR,\n departmentIdsWithChildren,\n departmentName,\n departmentPath,\n effectivePermissions,\n initialsOf,\n} from \"./usersModel\";\nimport type { DemoUser, RoleId, UserStatus } from \"./usersModel\";\nimport { DepartmentFilter } from \"./DepartmentFilter\";\nimport { UserDetailDrawer } from \"./UserDetailDrawer\";\n\ntype SecurityFilter = \"all\" | \"no2fa\" | \"locked\" | \"failed5\" | \"pending-password\";\n\nconst SECURITY_OPTIONS: Array<{ value: string; label: string }> = [\n { value: \"all\", label: \"All\" },\n { value: \"no2fa\", label: \"2FA off\" },\n { value: \"locked\", label: \"Locked\" },\n { value: \"failed5\", label: \"Failed sign-ins\" },\n { value: \"pending-password\", label: \"Password pending\" },\n];\n\nconst STATUS_TABS: Array<{ value: string; label: string }> = [\n { value: \"all\", label: \"All\" },\n ...USER_STATUSES.map((s) => ({ value: s, label: s })),\n];\n\n/** Security posture of a member — drives the badge and the risk filter. */\nfunction riskOf(u: DemoUser): { tone: \"green\" | \"orange\" | \"red\" | \"gray\"; label: string } {\n if (u.status === \"Locked\") return { tone: \"red\", label: \"Locked\" };\n if (!u.twoFA && u.failedLogins >= 3) return { tone: \"red\", label: \"No 2FA · failed sign-ins\" };\n if (!u.twoFA) return { tone: \"orange\", label: \"2FA off\" };\n if (u.failedLogins >= 3) return { tone: \"orange\", label: `${u.failedLogins} failed sign-ins` };\n return { tone: \"green\", label: \"Healthy\" };\n}\n\nconst emptyForm = () => ({\n name: \"\",\n email: \"\",\n title: \"\",\n department: \"eng\",\n roles: [\"Viewer\"] as RoleId[],\n twoFA: false,\n});\n\nexport interface UsersScreenProps {\n /** Pre-filter the list by department (used by the departments screen). */\n initialDepartment?: string;\n /** Open the audit log filtered by this member. */\n onOpenAudit?: (actor: string) => void;\n /** Jump to the roles & permissions matrix. */\n onOpenRoles?: () => void;\n /** Jump to the departments tree. */\n onOpenDepartments?: () => void;\n}\n\nexport function UsersScreen({ initialDepartment, onOpenAudit, onOpenRoles, onOpenDepartments }: UsersScreenProps = {}) {\n const t = useDemoText();\n const [message, holder] = useMessage();\n\n const [users, setUsers] = useState<DemoUser[]>(INITIAL_USERS);\n const [query, setQuery] = useState(\"\");\n const [department, setDepartment] = useState(initialDepartment ?? \"all\");\n const [role, setRole] = useState(\"all\");\n const [status, setStatus] = useState(\"all\");\n const [security, setSecurity] = useState<SecurityFilter>(\"all\");\n const [selected, setSelected] = useState<Array<string | number>>([]);\n const [detailId, setDetailId] = useState<string | null>(null);\n const [editor, setEditor] = useState<{ mode: \"create\" | \"edit\"; user?: DemoUser } | null>(null);\n const [form, setForm] = useState(emptyForm);\n\n // The departments screen can hand us a department to focus on.\n useEffect(() => {\n if (initialDepartment) setDepartment(initialDepartment);\n }, [initialDepartment]);\n\n const detail = detailId ? users.find((u) => u.id === detailId) ?? null : null;\n\n const rows = useMemo(() => {\n const q = query.trim().toLowerCase();\n // Picking a parent department filters its whole branch.\n const branch = department === \"all\" ? null : new Set(departmentIdsWithChildren(department));\n return users.filter((u) => {\n if (branch && !branch.has(u.department)) return false;\n if (role !== \"all\" && !u.roles.includes(role as RoleId)) return false;\n if (status !== \"all\" && u.status !== status) return false;\n if (security === \"no2fa\" && u.twoFA) return false;\n if (security === \"locked\" && u.status !== \"Locked\") return false;\n if (security === \"failed5\" && u.failedLogins < 3) return false;\n if (security === \"pending-password\" && !u.forcePasswordChange) return false;\n if (!q) return true;\n return u.name.toLowerCase().includes(q) || u.email.toLowerCase().includes(q) || u.title.toLowerCase().includes(q);\n });\n }, [users, query, department, role, status, security]);\n\n const filtersActive = query !== \"\" || department !== \"all\" || role !== \"all\" || status !== \"all\" || security !== \"all\";\n\n const resetFilters = () => {\n setQuery(\"\");\n setDepartment(\"all\");\n setRole(\"all\");\n setStatus(\"all\");\n setSecurity(\"all\");\n };\n\n /* ---- summary ---- */\n const total = users.length;\n const withTwoFA = users.filter((u) => u.twoFA).length;\n const twoFAPct = total ? Math.round((withTwoFA / total) * 100) : 0;\n const risky = users.filter((u) => riskOf(u).tone !== \"green\").length;\n const pending = users.filter((u) => u.status === \"Invited\").length;\n\n const stats = [\n { label: \"Members\", value: String(total), hint: `${users.filter((u) => u.status === \"Active\").length} active`, icon: \"ri-team-line\", tone: \"primary\" as const },\n { label: \"2FA coverage\", value: `${twoFAPct}%`, hint: `${withTwoFA}/${total} enrolled`, icon: \"ri-shield-check-line\", tone: \"success\" as const, progress: twoFAPct },\n { label: \"Need attention\", value: String(risky), hint: \"security flags\", icon: \"ri-alert-line\", tone: \"error\" as const },\n { label: \"Pending invites\", value: String(pending), hint: \"waiting to accept\", icon: \"ri-mail-add-line\", tone: \"info\" as const },\n ];\n\n /* ---- mutations ---- */\n const patchUser = (next: DemoUser) => setUsers((prev) => prev.map((u) => (u.id === next.id ? next : u)));\n\n const openCreate = () => {\n setForm(emptyForm());\n setEditor({ mode: \"create\" });\n };\n\n const openEdit = (u: DemoUser) => {\n setForm({ name: u.name, email: u.email, title: u.title, department: u.department, roles: [...u.roles], twoFA: u.twoFA });\n setEditor({ mode: \"edit\", user: u });\n };\n\n const save = () => {\n if (!form.name.trim() || !form.email.trim()) {\n message.error({ content: \"Name and email are required.\", key: \"user\" });\n return;\n }\n if (!form.roles.length) {\n message.error({ content: \"Pick at least one role.\", key: \"user\" });\n return;\n }\n if (editor?.mode === \"edit\" && editor.user) {\n patchUser({\n ...editor.user,\n name: form.name.trim(),\n email: form.email.trim(),\n title: form.title.trim(),\n department: form.department,\n roles: form.roles,\n twoFA: form.twoFA,\n });\n message.success({ content: `${form.name.trim()} updated.`, key: \"user\" });\n } else {\n const created: DemoUser = {\n id: `u${Date.now()}`,\n name: form.name.trim(),\n email: form.email.trim(),\n title: form.title.trim() || \"Team member\",\n avatarColor: \"blue\",\n department: form.department,\n manager: \"Anna Krause\",\n location: \"Berlin, DE\",\n timezone: \"CET — Berlin\",\n roles: form.roles,\n status: \"Invited\",\n twoFA: form.twoFA,\n forcePasswordChange: false,\n failedLogins: 0,\n lastActive: new Date().toISOString(),\n createdAt: new Date().toISOString(),\n passwordChangedAt: new Date().toISOString(),\n overrides: [],\n sessions: [],\n activity: [],\n };\n setUsers((prev) => [created, ...prev]);\n message.success({ content: `Invite sent to ${created.email}.`, key: \"user\" });\n }\n setEditor(null);\n };\n\n const setUserStatus = async (u: DemoUser, next: UserStatus) => {\n if (next === \"Active\") {\n patchUser({ ...u, status: \"Active\", failedLogins: 0 });\n message.success({ content: `${u.name} restored.`, key: \"user\" });\n return;\n }\n const res = await Confirm({\n title: `${next === \"Locked\" ? \"Lock\" : \"Suspend\"} ${u.name}?`,\n description:\n next === \"Locked\"\n ? \"All sessions are revoked and sign-in is blocked until you unlock the account.\"\n : \"They keep their data but lose access until you restore the account.\",\n intent: \"warning\",\n confirmText: next === \"Locked\" ? \"Lock account\" : \"Suspend member\",\n });\n if (!(res === true || (typeof res === \"object\" && res.confirmed))) return;\n patchUser({ ...u, status: next, sessions: [] });\n message.warning({ content: `${u.name} ${next.toLowerCase()}.`, key: \"user\" });\n };\n\n const remove = async (u: DemoUser) => {\n const res = await Confirm({\n title: `Remove ${u.name}?`,\n description: `${u.email} loses access immediately. Audit history is kept. This can't be undone.`,\n intent: \"danger\",\n confirmText: \"Remove member\",\n });\n if (!(res === true || (typeof res === \"object\" && res.confirmed))) return;\n setUsers((prev) => prev.filter((x) => x.id !== u.id));\n setSelected((prev) => prev.filter((id) => id !== u.id));\n if (detailId === u.id) setDetailId(null);\n message.info({ content: `${u.name} removed.`, key: \"user\" });\n };\n\n /* ---- bulk ---- */\n const selectedUsers = () => users.filter((u) => selected.includes(u.id));\n\n const bulkStatus = (next: UserStatus) => {\n const ids = new Set(selectedUsers().map((u) => u.id));\n setUsers((prev) =>\n prev.map((u) =>\n ids.has(u.id) ? { ...u, status: next, sessions: next === \"Active\" ? u.sessions : [], failedLogins: next === \"Active\" ? 0 : u.failedLogins } : u,\n ),\n );\n message.success({ content: `${ids.size} member${ids.size === 1 ? \"\" : \"s\"} set to ${next}.`, key: \"user\" });\n setSelected([]);\n };\n\n const bulkResetTwoFA = () => {\n const ids = new Set(selectedUsers().map((u) => u.id));\n setUsers((prev) => prev.map((u) => (ids.has(u.id) ? { ...u, twoFA: false, forcePasswordChange: true } : u)));\n message.warning({ content: `2FA reset for ${ids.size} member${ids.size === 1 ? \"\" : \"s\"} — they must re-enrol.`, key: \"user\" });\n setSelected([]);\n };\n\n const bulkRole = (next: RoleId) => {\n const ids = new Set(selectedUsers().map((u) => u.id));\n setUsers((prev) => prev.map((u) => (ids.has(u.id) && !u.roles.includes(next) ? { ...u, roles: [...u.roles, next] } : u)));\n message.success({ content: `${next} assigned to ${ids.size} member${ids.size === 1 ? \"\" : \"s\"}.`, key: \"user\" });\n setSelected([]);\n };\n\n const bulkDepartment = (next: string) => {\n const ids = new Set(selectedUsers().map((u) => u.id));\n setUsers((prev) => prev.map((u) => (ids.has(u.id) ? { ...u, department: next } : u)));\n message.success({ content: `${ids.size} member${ids.size === 1 ? \"\" : \"s\"} moved to ${departmentName(next)}.`, key: \"user\" });\n setSelected([]);\n };\n\n /* ---- table ---- */\n const columns: TableColumn<DemoUser>[] = [\n {\n key: \"name\",\n header: \"Member\",\n render: (u) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"32\" initials={initialsOf(u.name)} color={u.avatarColor} />\n <span style={{ display: \"flex\", flexDirection: \"column\", minWidth: 0 }}>\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{u.name}</b>\n {u.status === \"Invited\" ? (\n <Badge color=\"blue\" variant=\"lighter\" size=\"small\">\n Invite pending\n </Badge>\n ) : null}\n </span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n {u.email} · {u.title}\n </span>\n </span>\n </span>\n ),\n },\n {\n key: \"department\",\n header: \"Department\",\n render: (u) => (\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{departmentName(u.department)}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{departmentPath(u.department)}</span>\n </span>\n ),\n },\n {\n key: \"roles\",\n header: \"Roles\",\n render: (u) => (\n <span style={{ display: \"inline-flex\", flexWrap: \"wrap\", gap: 4 }}>\n {u.roles.map((r) => (\n <Chip key={r} color={ROLE_COLOR[r]} dot>\n {r}\n </Chip>\n ))}\n {u.overrides.length ? (\n <Chip color=\"purple\">{u.overrides.length} override{u.overrides.length === 1 ? \"\" : \"s\"}</Chip>\n ) : null}\n </span>\n ),\n },\n {\n key: \"status\",\n header: \"Status\",\n filters: USER_STATUSES.map((s) => ({ label: s, value: s })),\n render: (u) => (\n <Badge color={USER_STATUS_COLOR[u.status]} variant=\"light\" size=\"small\" dot>\n {u.status}\n </Badge>\n ),\n },\n {\n key: \"security\",\n header: \"Security\",\n render: (u) => {\n const risk = riskOf(u);\n return (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6 }}>\n <Badge color={risk.tone} variant=\"lighter\" size=\"small\" dot>\n {risk.label}\n </Badge>\n {u.twoFA ? <i className=\"ri-lock-2-line\" style={{ color: \"var(--klun-state-success-base)\" }} /> : null}\n </span>\n );\n },\n },\n {\n key: \"permissions\",\n header: \"Access\",\n align: \"center\",\n render: (u) => (\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {effectivePermissions(u).length}\n </span>\n ),\n },\n {\n key: \"lastActive\",\n header: \"Last active\",\n sortable: true,\n sortAccessor: (u) => u.lastActive,\n render: (u) => <RelativeTime date={u.lastActive} style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }} />,\n },\n {\n key: \"actions\",\n header: \"\",\n width: 60,\n align: \"right\",\n exportable: false,\n render: (u) => (\n <Dropdown\n align=\"right\"\n width={220}\n trigger={<Button kind=\"compact\" appearance=\"ghost\" icon={<i className=\"ri-more-2-line\" />} aria-label={`Actions for ${u.name}`} />}\n items={[\n { label: \"View profile\", icon: <i className=\"ri-eye-line\" />, onClick: () => setDetailId(u.id) },\n { label: \"Edit member\", icon: <i className=\"ri-edit-line\" />, onClick: () => openEdit(u) },\n { label: \"Audit trail\", icon: <i className=\"ri-file-shield-2-line\" />, onClick: () => onOpenAudit?.(u.name) },\n { divider: true, label: \"\" },\n ...(u.twoFA\n ? [{ label: \"Reset 2FA\", icon: <i className=\"ri-shield-flash-line\" />, onClick: () => patchUser({ ...u, twoFA: false, forcePasswordChange: true }) }]\n : []),\n {\n label: u.status === \"Active\" ? \"Suspend member\" : \"Restore access\",\n icon: <i className={u.status === \"Active\" ? \"ri-pause-circle-line\" : \"ri-play-circle-line\"} />,\n onClick: () => void setUserStatus(u, u.status === \"Active\" ? \"Suspended\" : \"Active\"),\n },\n ...(u.status === \"Active\"\n ? [{ label: \"Lock account\", icon: <i className=\"ri-lock-line\" />, onClick: () => void setUserStatus(u, \"Locked\") }]\n : []),\n { divider: true, label: \"\" },\n { label: \"Remove member\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void remove(u) },\n ]}\n />\n ),\n },\n ];\n\n return (\n <>\n {holder}\n\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader\n page=\"users\"\n extra={\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-node-tree\" />} onClick={onOpenDepartments}>\n Departments\n </Button>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-shield-keyhole-line\" />} onClick={onOpenRoles}>\n Roles\n </Button>\n <Button size=\"small\" leadingIcon={<i className=\"ri-user-add-line\" />} onClick={openCreate}>\n Invite member\n </Button>\n </div>\n }\n />\n\n {/* security / status summary */}\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\", gap: 12 }}>\n {stats.map((s) => {\n const token = s.tone === \"primary\" ? \"primary\" : s.tone === \"info\" ? \"information\" : s.tone === \"error\" ? \"error\" : \"success\";\n return (\n <div\n key={s.label}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n padding: \"14px 16px\",\n background: \"var(--klun-bg-white-0)\",\n border: \"1px solid var(--klun-stroke-soft-200)\",\n borderRadius: \"var(--klun-radius-xl)\",\n }}\n >\n <span\n style={{\n width: 34,\n height: 34,\n flexShrink: 0,\n borderRadius: \"var(--klun-radius-lg)\",\n background: `var(--klun-state-${token}-lighter)`,\n color: `var(--klun-state-${token}-base)`,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 17,\n }}\n >\n <i className={s.icon} />\n </span>\n <div style={{ minWidth: 0, flex: 1 }}>\n <div style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>{s.label}</div>\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 6 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{s.value}</span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\" }}>{s.hint}</span>\n </div>\n {s.progress != null ? <ProgressBar value={s.progress} color={s.progress >= 80 ? \"success\" : \"warning\"} style={{ marginTop: 6 }} /> : null}\n </div>\n </div>\n );\n })}\n </div>\n\n {/* filters */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, flexWrap: \"wrap\" }}>\n <div style={{ width: 230 }}>\n <Input\n size=\"small\"\n placeholder=\"Search name, email or title…\"\n leadingIcon={<i className=\"ri-search-line\" />}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n <div style={{ width: 280 }} title=\"Filters the selected department and all of its sub-departments\">\n <DepartmentFilter value={department} onChange={setDepartment} users={users} />\n </div>\n <div style={{ width: 140 }}>\n <Select size=\"small\" value={role} onChange={(e) => setRole(e.target.value)}>\n <option value=\"all\">All roles</option>\n {ROLE_IDS.map((r) => (\n <option key={r} value={r}>\n {r}\n </option>\n ))}\n </Select>\n </div>\n <div style={{ width: 165 }}>\n <Select size=\"small\" value={security} onChange={(e) => setSecurity(e.target.value as SecurityFilter)}>\n {SECURITY_OPTIONS.map((o) => (\n <option key={o.value} value={o.value}>\n {o.value === \"all\" ? \"All security\" : o.label}\n </option>\n ))}\n </Select>\n </div>\n <SegmentedControl items={STATUS_TABS} value={status} onChange={(v) => setStatus(String(v))} />\n {filtersActive ? (\n <Button size=\"small\" variant=\"neutral\" appearance=\"ghost\" leadingIcon={<i className=\"ri-close-line\" />} onClick={resetFilters}>\n Clear filters\n </Button>\n ) : null}\n </div>\n\n <Table\n columns={columns}\n rows={rows}\n getRowId={(u) => u.id}\n title={`Members (${rows.length}${filtersActive ? ` of ${users.length}` : \"\"})${department !== \"all\" ? ` · ${departmentName(department)} incl. sub-departments` : \"\"}`}\n selectable\n selected={selected}\n onSelectRow={(id) => setSelected((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]))}\n onSelectAll={(ids) => setSelected(ids)}\n selectionActions={(_rowsSelected, clear) => (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flexWrap: \"wrap\" }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>{selected.length} selected</span>\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-play-circle-line\" />} onClick={() => bulkStatus(\"Active\")}>\n Activate\n </Button>\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-pause-circle-line\" />} onClick={() => bulkStatus(\"Suspended\")}>\n Suspend\n </Button>\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-shield-flash-line\" />} onClick={bulkResetTwoFA}>\n Reset 2FA\n </Button>\n <Dropdown\n width={180}\n trigger={<Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-shield-keyhole-line\" />}>Assign role</Button>}\n items={ROLE_IDS.map((r) => ({ label: r, icon: <i className=\"ri-add-line\" />, onClick: () => bulkRole(r) }))}\n />\n <Dropdown\n width={220}\n trigger={<Button size=\"tiny\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-node-tree\" />}>Move to…</Button>}\n items={DEPARTMENTS.map((d) => ({ label: d.name, icon: <i className=\"ri-arrow-right-s-line\" />, onClick: () => bulkDepartment(d.id) }))}\n />\n <Button size=\"tiny\" variant=\"neutral\" appearance=\"ghost\" onClick={clear}>\n Clear\n </Button>\n </div>\n )}\n sortable\n exportable={{ filename: \"members.csv\" }}\n pagination={{ defaultPageSize: 8, pageSizeOptions: [8, 20] }}\n onRowClick={(u) => setDetailId(u.id)}\n empty={\n <div style={{ padding: 40, textAlign: \"center\", color: \"var(--klun-text-soft-400)\", font: \"var(--klun-text-paragraph-sm)\" }}>\n <i className=\"ri-user-search-line\" style={{ display: \"block\", fontSize: 32, marginBottom: 8 }} />\n No members match these filters.\n </div>\n }\n />\n </div>\n\n <Modal\n open={editor !== null}\n onClose={() => setEditor(null)}\n title={editor?.mode === \"create\" ? \"Invite member\" : `Edit ${editor?.user?.name}`}\n description={\n editor?.mode === \"create\"\n ? \"They'll get an email with a link to set their password. Roles decide what they can do.\"\n : \"Changes apply immediately — the member may need to sign in again.\"\n }\n okText={editor?.mode === \"create\" ? \"Send invite\" : \"Save changes\"}\n onOk={save}\n width={560}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 14 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Full name</Label>\n <Input placeholder=\"Jane Cooper\" value={form.name} onChange={(e) => setForm((f) => ({ ...f, name: e.target.value }))} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Email</Label>\n <Input\n type=\"email\"\n placeholder=\"jane@acme.io\"\n leadingIcon={<i className=\"ri-mail-line\" />}\n value={form.email}\n onChange={(e) => setForm((f) => ({ ...f, email: e.target.value }))}\n />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Job title</Label>\n <Input placeholder=\"Product designer\" value={form.title} onChange={(e) => setForm((f) => ({ ...f, title: e.target.value }))} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <Label>Department</Label>\n <Select value={form.department} onChange={(e) => setForm((f) => ({ ...f, department: e.target.value }))}>\n {DEPARTMENTS.map((d) => (\n <option key={d.id} value={d.id}>\n {d.path}\n </option>\n ))}\n </Select>\n </div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <Label>Roles</Label>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 8 }}>\n {ROLE_IDS.map((r) => {\n const on = form.roles.includes(r);\n return (\n <label\n key={r}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"8px 10px\",\n borderRadius: \"var(--klun-radius-lg)\",\n border: `1px solid ${on ? \"var(--klun-primary-base)\" : \"var(--klun-stroke-soft-200)\"}`,\n background: on ? \"var(--klun-primary-lighter)\" : \"transparent\",\n cursor: \"pointer\",\n }}\n >\n <Checkbox\n size=\"small\"\n checked={on}\n onChange={(checked) =>\n setForm((f) => ({ ...f, roles: checked ? [...f.roles, r] : f.roles.filter((x) => x !== r) }))\n }\n />\n <Chip color={ROLE_COLOR[r]} dot>\n {r}\n </Chip>\n </label>\n );\n })}\n </div>\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16, paddingTop: 2 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Require two-factor</b>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-sub-600)\" }}>\n They'll be asked to enrol an authenticator app on first sign-in.\n </span>\n </div>\n <Switch checked={form.twoFA} onChange={(v) => setForm((f) => ({ ...f, twoFA: v }))} />\n </div>\n </div>\n </Modal>\n\n <UserDetailDrawer\n user={detail}\n onClose={() => setDetailId(null)}\n onChange={patchUser}\n onOpenAudit={onOpenAudit}\n onOpenRoles={onOpenRoles}\n onOpenDepartments={onOpenDepartments}\n />\n </>\n );\n}\n","// Metronic example — RBAC: roles & permissions.\n// Role list on the left, a module × action permission matrix on the right.\n// Edits are local state (Save marks the baseline); wire `onSave` to your API.\nimport { useState } from \"react\";\nimport { Badge, Button, Card, Checkbox } from \"../../index\";\nimport { PageHeader } from \"./i18n\";\n\ninterface Role {\n id: string;\n name: string;\n description: string;\n members: number;\n}\n\nconst ROLES: Role[] = [\n { id: \"owner\", name: \"Owner\", description: \"Full access including billing and workspace settings.\", members: 1 },\n { id: \"admin\", name: \"Admin\", description: \"Manages people, roles and everything in the workspace.\", members: 3 },\n { id: \"manager\", name: \"Manager\", description: \"Runs day-to-day operations across orders and products.\", members: 8 },\n { id: \"editor\", name: \"Editor\", description: \"Creates and edits content; cannot delete or manage users.\", members: 14 },\n { id: \"viewer\", name: \"Viewer\", description: \"Read-only access to dashboards and reports.\", members: 46 },\n];\n\nconst MODULES = [\"Dashboard\", \"Orders\", \"Products\", \"Customers\", \"Reports\", \"Users\", \"Billing\"] as const;\nconst ACTIONS = [\"View\", \"Create\", \"Edit\", \"Delete\", \"Manage\"] as const;\n\ntype ModuleName = (typeof MODULES)[number];\ntype Action = (typeof ACTIONS)[number];\ntype PermKey = `${ModuleName}:${Action}`;\ntype RolePerms = Record<PermKey, boolean>;\n\nconst key = (m: ModuleName, a: Action): PermKey => `${m}:${a}`;\n\nfunction seed(fn: (m: ModuleName, a: Action) => boolean): RolePerms {\n const out = {} as RolePerms;\n for (const m of MODULES) for (const a of ACTIONS) out[key(m, a)] = fn(m, a);\n return out;\n}\n\nconst OPERATIONS: ModuleName[] = [\"Orders\", \"Products\", \"Customers\"];\n\nconst INITIAL: Record<string, RolePerms> = {\n owner: seed(() => true),\n admin: seed(() => true),\n manager: seed((m, a) => (OPERATIONS.includes(m) ? a !== \"Manage\" : a === \"View\")),\n editor: seed((m, a) => (OPERATIONS.includes(m) ? a === \"View\" || a === \"Create\" || a === \"Edit\" : a === \"View\")),\n viewer: seed((m, a) => (OPERATIONS.includes(m) ? a === \"View\" : false)),\n};\n\nexport function RolesScreen() {\n const [roleId, setRoleId] = useState(\"manager\");\n const [perms, setPerms] = useState<RolePerms[]>(() => ROLES.map((r) => ({ ...INITIAL[r.id] })));\n const [baseline, setBaseline] = useState<RolePerms[]>(() => ROLES.map((r) => ({ ...INITIAL[r.id] })));\n\n const roleIndex = ROLES.findIndex((r) => r.id === roleId);\n const current = perms[roleIndex];\n const base = baseline[roleIndex];\n const dirty = JSON.stringify(current) !== JSON.stringify(base);\n const role = ROLES[roleIndex];\n\n const setCell = (m: ModuleName, a: Action, value: boolean) => {\n setPerms((prev) => prev.map((p, i) => (i === roleIndex ? { ...p, [key(m, a)]: value } : p)));\n };\n\n const setRow = (m: ModuleName, value: boolean) => {\n setPerms((prev) =>\n prev.map((p, i) => {\n if (i !== roleIndex) return p;\n const next = { ...p };\n for (const a of ACTIONS) next[key(m, a)] = value;\n return next;\n }),\n );\n };\n\n const granted = MODULES.filter((m) => ACTIONS.every((a) => current[key(m, a)])).length;\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader page=\"roles\" />\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"300px minmax(0, 1fr)\", gap: 20, alignItems: \"start\" }}>\n {/* role list */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {ROLES.map((r) => {\n const on = r.id === roleId;\n return (\n <button\n key={r.id}\n onClick={() => setRoleId(r.id)}\n style={{\n textAlign: \"left\",\n padding: \"12px 14px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-xl)\",\n cursor: \"pointer\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"inset 0 0 0 1px var(--klun-stroke-soft-200), var(--klun-shadow-xs)\" : \"none\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {r.name}\n </span>\n <Badge color=\"gray\" variant=\"lighter\" size=\"small\">\n {r.members}\n </Badge>\n </span>\n <span\n style={{\n display: \"block\",\n marginTop: 2,\n font: \"var(--klun-text-paragraph-xs)\",\n color: \"var(--klun-text-soft-400)\",\n }}\n >\n {r.description}\n </span>\n </button>\n );\n })}\n </div>\n\n {/* permission matrix */}\n <Card variant=\"stroke\" padding={0}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"16px 20px\",\n boxShadow: \"inset 0 -1px 0 var(--klun-stroke-soft-200)\",\n flexWrap: \"wrap\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ font: \"var(--klun-text-label-md)\", color: \"var(--klun-text-strong-950)\" }}>\n {role.name} permissions\n </span>\n <Badge color=\"blue\" variant=\"light\" size=\"small\">\n {role.members} {role.members === 1 ? \"member\" : \"members\"}\n </Badge>\n {dirty ? (\n <Badge color=\"yellow\" variant=\"light\" size=\"small\" dot>\n Unsaved changes\n </Badge>\n ) : null}\n </div>\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button\n size=\"small\"\n variant=\"neutral\"\n appearance=\"ghost\"\n disabled={!dirty}\n onClick={() =>\n setPerms((prev) => prev.map((p, i) => (i === roleIndex ? { ...base } : p)))\n }\n >\n Reset\n </Button>\n <Button\n size=\"small\"\n disabled={!dirty}\n onClick={() =>\n setBaseline((prev) => prev.map((p, i) => (i === roleIndex ? { ...current } : p)))\n }\n >\n Save changes\n </Button>\n </div>\n </div>\n\n <div style={{ padding: \"8px 20px 20px\" }}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(140px, 1fr) repeat(5, 74px) 64px\",\n alignItems: \"center\",\n gap: 4,\n padding: \"10px 8px\",\n }}\n >\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-soft-400)\", textTransform: \"uppercase\", letterSpacing: \"0.02em\" }}>\n Module\n </span>\n {ACTIONS.map((a) => (\n <span\n key={a}\n style={{\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-soft-400)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n textAlign: \"center\",\n }}\n >\n {a}\n </span>\n ))}\n <span\n style={{\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-soft-400)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n textAlign: \"center\",\n }}\n >\n All\n </span>\n </div>\n\n {MODULES.map((m, i) => {\n const all = ACTIONS.every((a) => current[key(m, a)]);\n const some = !all && ACTIONS.some((a) => current[key(m, a)]);\n return (\n <div\n key={m}\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(140px, 1fr) repeat(5, 74px) 64px\",\n alignItems: \"center\",\n gap: 4,\n padding: \"10px 8px\",\n boxShadow: \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n }}\n >\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>{m}</span>\n {ACTIONS.map((a) => (\n <span key={a} style={{ display: \"flex\", justifyContent: \"center\" }}>\n <Checkbox\n size=\"small\"\n checked={current[key(m, a)]}\n onChange={(c) => setCell(m, a, c)}\n />\n </span>\n ))}\n <span style={{ display: \"flex\", justifyContent: \"center\" }}>\n <Checkbox size=\"small\" checked={all} indeterminate={some} onChange={(c) => setRow(m, c)} />\n </span>\n </div>\n );\n })}\n\n <div\n style={{\n marginTop: 14,\n paddingTop: 14,\n boxShadow: \"inset 0 1px 0 var(--klun-stroke-soft-200)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n flexWrap: \"wrap\",\n }}\n >\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Full access to {granted} of {MODULES.length} modules\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Owner role is always unrestricted\n </span>\n </div>\n </div>\n </Card>\n </div>\n </div>\n );\n}\n","// Metronic example — Reports: analytics page with a range switcher, KPI tiles,\n// a large area chart, a donut breakdown, a \"top\" list and a detail table.\n// `view` switches between the Sales and Traffic report variants.\nimport { useState } from \"react\";\nimport { Card, Money, ProgressBar, SegmentedControl, Table } from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { PageHeader } from \"./i18n\";\nimport { AreaChart, DonutChart } from \"./charts\";\nimport { Kpi } from \"./widgets\";\n\nexport type ReportsView = \"sales\" | \"traffic\";\n\ntype Range = \"7d\" | \"30d\" | \"90d\";\n\nconst RANGES: Array<{ value: Range; label: string }> = [\n { value: \"7d\", label: \"7d\" },\n { value: \"30d\", label: \"30d\" },\n { value: \"90d\", label: \"90d\" },\n];\n\ninterface Series {\n data: number[];\n labels: string[];\n}\n\nconst SALES_SERIES: Record<Range, Series> = {\n \"7d\": { data: [8200, 9100, 7800, 10400, 12600, 11200, 14800], labels: [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"] },\n \"30d\": { data: [38200, 41600, 39800, 47400, 52100], labels: [\"W1\", \"W2\", \"W3\", \"W4\", \"W5\"] },\n \"90d\": { data: [98200, 110400, 106800, 121600, 134200, 148900], labels: [\"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\"] },\n};\n\nconst TRAFFIC_SERIES: Record<Range, Series> = {\n \"7d\": { data: [12400, 13800, 12950, 15600, 17200, 14900, 18600], labels: [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"] },\n \"30d\": { data: [58600, 61200, 59400, 66800, 72300], labels: [\"W1\", \"W2\", \"W3\", \"W4\", \"W5\"] },\n \"90d\": { data: [142000, 156800, 149500, 168200, 178400, 192600], labels: [\"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\"] },\n};\n\ninterface Row {\n key: string;\n label: string;\n value: number;\n share: number;\n}\n\nconst SALES_REGIONS: Array<{ region: string; orders: number; revenue: number; share: number }> = [\n { region: \"Europe\", orders: 512, revenue: 42860, share: 50 },\n { region: \"North America\", orders: 388, revenue: 26400, share: 31 },\n { region: \"Asia Pacific\", orders: 241, revenue: 11240, share: 13 },\n { region: \"Rest of world\", orders: 143, revenue: 4420, share: 6 },\n];\n\nconst TRAFFIC_DEVICES: Array<{ device: string; sessions: number; share: number }> = [\n { device: \"Desktop\", sessions: 73420, share: 57 },\n { device: \"Mobile\", sessions: 44180, share: 34 },\n { device: \"Tablet\", sessions: 9420, share: 7 },\n { device: \"Other\", sessions: 2520, share: 2 },\n];\n\nconst SALES_TOP: Row[] = [\n { key: \"1\", label: \"Lumen 27\\\" 4K Monitor\", value: 24860, share: 100 },\n { key: \"2\", label: \"Aero Wireless Keyboard\", value: 18240, share: 73 },\n { key: \"3\", label: \"Echo Conference Speaker\", value: 12980, share: 52 },\n { key: \"4\", label: \"Orbit Webcam 4K\", value: 9640, share: 39 },\n { key: \"5\", label: \"Pulse USB-C Dock\", value: 6210, share: 25 },\n];\n\nconst TRAFFIC_TOP: Row[] = [\n { key: \"1\", label: \"/pricing\", value: 12480, share: 100 },\n { key: \"2\", label: \"/docs/getting-started\", value: 9860, share: 79 },\n { key: \"3\", label: \"/blog/design-tokens\", value: 7420, share: 59 },\n { key: \"4\", label: \"/changelog\", value: 5140, share: 41 },\n { key: \"5\", label: \"/contact\", value: 2380, share: 19 },\n];\n\nexport function ReportsScreen({ view = \"sales\" }: { view?: ReportsView }) {\n const [range, setRange] = useState<Range>(\"7d\");\n const sales = view === \"sales\";\n const series = (sales ? SALES_SERIES : TRAFFIC_SERIES)[range];\n\n const regionColumns: TableColumn<(typeof SALES_REGIONS)[number]>[] = [\n { key: \"region\", header: \"Region\" },\n { key: \"orders\", header: \"Orders\", align: \"center\" },\n {\n key: \"revenue\",\n header: \"Revenue\",\n align: \"right\",\n render: (r) => <Money value={r.revenue} currency=\"USD\" locale=\"en-US\" style={{ font: \"var(--klun-text-label-sm)\" }} />,\n },\n {\n key: \"share\",\n header: \"Share\",\n width: 170,\n render: (r) => (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 140 }}>\n <span style={{ flex: 1 }}>\n <ProgressBar value={r.share} />\n </span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\", width: 34, textAlign: \"right\" }}>\n {r.share}%\n </span>\n </span>\n ),\n },\n ];\n\n const deviceColumns: TableColumn<(typeof TRAFFIC_DEVICES)[number]>[] = [\n { key: \"device\", header: \"Device\" },\n {\n key: \"sessions\",\n header: \"Sessions\",\n align: \"center\",\n render: (r) => r.sessions.toLocaleString(\"en-US\"),\n },\n {\n key: \"share\",\n header: \"Share\",\n width: 170,\n render: (r) => (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 140 }}>\n <span style={{ flex: 1 }}>\n <ProgressBar value={r.share} color=\"primary\" />\n </span>\n <span style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-sub-600)\", width: 34, textAlign: \"right\" }}>\n {r.share}%\n </span>\n </span>\n ),\n },\n ];\n\n const top = sales ? SALES_TOP : TRAFFIC_TOP;\n\n return (\n <div style={{ padding: 24, display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n <PageHeader page={sales ? \"sales\" : \"traffic\"} extra={<SegmentedControl items={RANGES} value={range} onChange={(v) => setRange(v as Range)} />} />\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(240px, 1fr))\", gap: 16 }}>\n {sales ? (\n <>\n <Kpi label=\"Revenue\" value=\"$84,920\" delta=\"12.4%\" tone=\"primary\" icon={<i className=\"ri-money-dollar-circle-line\" />} spark={[10, 14, 12, 18, 16, 24, 22, 30]} />\n <Kpi label=\"Orders\" value=\"1,284\" delta=\"6.1%\" tone=\"success\" icon={<i className=\"ri-shopping-bag-line\" />} spark={[8, 10, 9, 14, 13, 16, 18, 22]} />\n <Kpi label=\"Avg. order value\" value=\"$66.10\" delta=\"1.2%\" tone=\"warning\" icon={<i className=\"ri-shopping-cart-2-line\" />} spark={[60, 62, 61, 64, 63, 65, 66, 66]} />\n <Kpi label=\"Conversion\" value=\"3.6%\" delta=\"0.8%\" tone=\"info\" icon={<i className=\"ri-percent-line\" />} spark={[2, 3, 2.5, 3.2, 3, 3.4, 3.5, 3.6]} />\n </>\n ) : (\n <>\n <Kpi label=\"Sessions\" value=\"128,540\" delta=\"8.2%\" tone=\"primary\" icon={<i className=\"ri-line-chart-line\" />} spark={[12, 14, 13, 16, 15, 18, 17, 20]} />\n <Kpi label=\"Users\" value=\"84,210\" delta=\"5.4%\" tone=\"success\" icon={<i className=\"ri-group-line\" />} spark={[8, 9, 8, 10, 9, 11, 10, 12]} />\n <Kpi label=\"Bounce rate\" value=\"32.4%\" delta=\"1.1%\" trend=\"down\" tone=\"danger\" icon={<i className=\"ri-logout-box-r-line\" />} spark={[40, 38, 39, 36, 35, 34, 33, 32]} />\n <Kpi label=\"Avg. session\" value=\"4m 12s\" delta=\"2.0%\" tone=\"info\" icon={<i className=\"ri-timer-line\" />} spark={[3.4, 3.5, 3.7, 3.6, 3.9, 4.0, 4.1, 4.2]} />\n </>\n )}\n </div>\n\n <Card variant=\"stroke\" padding={20}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, marginBottom: 16 }}>\n <span style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\" }}>\n {sales ? \"Revenue over time\" : \"Sessions over time\"}\n </span>\n <span style={{ font: \"var(--klun-text-paragraph-xs)\", color: \"var(--klun-text-soft-400)\" }}>\n Last {range}\n </span>\n </div>\n <AreaChart\n data={series.data}\n labels={series.labels}\n tone={sales ? \"primary\" : \"info\"}\n height={220}\n formatValue={sales ? (v) => `$${v >= 1000 ? `${Math.round(v / 100) / 10}k` : Math.round(v)}` : undefined}\n />\n </Card>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"minmax(0, 1fr) minmax(0, 1fr)\", gap: 16, alignItems: \"start\" }}>\n <Card variant=\"stroke\" padding={20}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 16 }}>\n {sales ? \"Sales by channel\" : \"Traffic sources\"}\n </div>\n <DonutChart\n centerValue={sales ? \"52%\" : \"48%\"}\n centerLabel={sales ? \"Online\" : \"Organic\"}\n data={\n sales\n ? [\n { label: \"Online\", value: 52 },\n { label: \"Retail\", value: 28 },\n { label: \"Partner\", value: 14 },\n { label: \"Other\", value: 6 },\n ]\n : [\n { label: \"Organic\", value: 48 },\n { label: \"Direct\", value: 22 },\n { label: \"Referral\", value: 18 },\n { label: \"Social\", value: 12 },\n ]\n }\n />\n </Card>\n\n <Card variant=\"stroke\" padding={20}>\n <div style={{ font: \"var(--klun-text-label-lg)\", color: \"var(--klun-text-strong-950)\", marginBottom: 16 }}>\n {sales ? \"Top products\" : \"Top pages\"}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n {top.map((row) => (\n <div key={row.key} style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", justifyContent: \"space-between\", gap: 12 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>\n {row.label}\n </span>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {sales ? `$${row.value.toLocaleString(\"en-US\")}` : `${row.value.toLocaleString(\"en-US\")} views`}\n </span>\n </div>\n <ProgressBar value={row.share} color={sales ? \"primary\" : \"success\"} />\n </div>\n ))}\n </div>\n </Card>\n </div>\n\n {sales ? (\n <Table columns={regionColumns} rows={SALES_REGIONS} getRowId={(r) => r.region} title=\"Regional breakdown\" />\n ) : (\n <Table columns={deviceColumns} rows={TRAFFIC_DEVICES} getRowId={(r) => r.device} title=\"Devices\" />\n )}\n </div>\n );\n}\n","// Klun UI · Metronic settings — shared building blocks.\n// Small presentational pieces reused by every settings section: the two-column\n// page shell lives in `index.tsx`, these are the card + field primitives.\nimport type { ReactNode } from \"react\";\nimport { Label, Switch } from \"../../index\";\n\n/** Tabs of the settings page. */\nexport type SettingsSectionKey = \"profile\" | \"account\" | \"notifications\" | \"billing\" | \"api\";\n\nexport interface SettingsNavItem {\n key: SettingsSectionKey;\n label: string;\n /** Remix Icon class. */\n icon: string;\n /** One-liner used by the page header. */\n description: string;\n}\n\nexport const SETTINGS_NAV: SettingsNavItem[] = [\n { key: \"profile\", label: \"Profile\", icon: \"ri-user-line\", description: \"Your photo, name and public details.\" },\n { key: \"account\", label: \"Account\", icon: \"ri-shield-user-line\", description: \"Password, two-factor and active sessions.\" },\n { key: \"notifications\", label: \"Notifications\", icon: \"ri-notification-3-line\", description: \"Pick the channels for each event.\" },\n { key: \"billing\", label: \"Billing\", icon: \"ri-bank-card-line\", description: \"Plan, payment methods and invoices.\" },\n { key: \"api\", label: \"API keys\", icon: \"ri-key-2-line\", description: \"Programmatic access to your workspace.\" },\n];\n\n/* ---- typography shorthands ---- */\n\nexport const T_LABEL_SM = \"var(--klun-text-label-sm)\";\nexport const T_LABEL_XS = \"var(--klun-text-label-xs)\";\nexport const T_PARA_XS = \"var(--klun-text-paragraph-xs)\";\nexport const T_PARA_SM = \"var(--klun-text-paragraph-sm)\";\nexport const C_STRONG = \"var(--klun-text-strong-950)\";\nexport const C_SUB = \"var(--klun-text-sub-600)\";\nexport const C_SOFT = \"var(--klun-text-soft-400)\";\nexport const C_ERROR = \"var(--klun-state-error-base)\";\nexport const HAIRLINE = \"var(--klun-stroke-soft-200)\";\n\n/* ---- form field ---- */\n\nexport interface FieldProps {\n label: ReactNode;\n /** Small helper line under the control. */\n hint?: ReactNode;\n /** Error message — replaces the hint and turns the copy red. */\n error?: string;\n children: ReactNode;\n /** Stretch the control to the full grid cell. */\n style?: React.CSSProperties;\n}\n\nexport function Field({ label, hint, error, children, style }: FieldProps) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6, minWidth: 0, ...style }}>\n <Label>{label}</Label>\n {children}\n {error ? (\n <span style={{ font: T_PARA_XS, color: C_ERROR, display: \"inline-flex\", alignItems: \"center\", gap: 4 }}>\n <i className=\"ri-error-warning-line\" />\n {error}\n </span>\n ) : hint ? (\n <span style={{ font: T_PARA_XS, color: C_SOFT }}>{hint}</span>\n ) : null}\n </div>\n );\n}\n\n/** Two-up grid used by the settings forms. */\nexport function Grid2({ children }: { children: ReactNode }) {\n return <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 16 }}>{children}</div>;\n}\n\n/* ---- card sections ---- */\n\nexport interface SectionProps {\n title: ReactNode;\n subtitle?: ReactNode;\n /** Red-tinted card for destructive actions. */\n tone?: \"default\" | \"danger\";\n /** Header-adjacent slot (badges, switches…). */\n extra?: ReactNode;\n children: ReactNode;\n /** Footer slot — right-aligned by default. */\n footer?: ReactNode;\n /** Left-align the footer instead (for explanatory text). */\n footerAlign?: \"left\" | \"right\";\n}\n\n/** Settings card: header with title + subtitle, body, optional right-aligned footer. */\nexport function Section({ title, subtitle, tone = \"default\", extra, children, footer, footerAlign = \"right\" }: SectionProps) {\n const danger = tone === \"danger\";\n return (\n <div\n style={{\n background: danger ? \"var(--klun-state-error-lighter)\" : \"var(--klun-bg-white-0)\",\n border: `1px solid ${danger ? \"var(--klun-state-error-light)\" : HAIRLINE}`,\n borderRadius: \"var(--klun-radius-xl)\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n padding: \"14px 20px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n boxShadow: `inset 0 -1px 0 ${danger ? \"var(--klun-state-error-light)\" : HAIRLINE}`,\n }}\n >\n <div style={{ minWidth: 0 }}>\n <div style={{ font: T_LABEL_SM, color: danger ? C_ERROR : C_STRONG }}>{title}</div>\n {subtitle ? <div style={{ marginTop: 2, font: T_PARA_XS, color: C_SUB }}>{subtitle}</div> : null}\n </div>\n {extra}\n </div>\n <div style={{ padding: 20 }}>{children}</div>\n {footer ? (\n <div\n style={{\n padding: \"12px 20px\",\n boxShadow: `inset 0 1px 0 ${danger ? \"var(--klun-state-error-light)\" : HAIRLINE}`,\n display: \"flex\",\n justifyContent: footerAlign === \"right\" ? \"flex-end\" : \"flex-start\",\n alignItems: \"center\",\n gap: 8,\n }}\n >\n {footer}\n </div>\n ) : null}\n </div>\n );\n}\n\n/* ---- toggle row ---- */\n\nexport interface ToggleRowProps {\n title: ReactNode;\n desc?: ReactNode;\n checked: boolean;\n disabled?: boolean;\n onChange: (checked: boolean) => void;\n /** Hide the top hairline on the first row of a stack. */\n first?: boolean;\n}\n\nexport function ToggleRow({ title, desc, checked, disabled, onChange, first }: ToggleRowProps) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 16,\n padding: \"12px 0\",\n boxShadow: first ? \"none\" : `inset 0 1px 0 ${HAIRLINE}`,\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, minWidth: 0 }}>\n <b style={{ font: T_LABEL_SM, color: C_STRONG }}>{title}</b>\n {desc ? <span style={{ font: T_PARA_XS, color: C_SUB }}>{desc}</span> : null}\n </div>\n <Switch checked={checked} disabled={disabled} onChange={onChange} />\n </div>\n );\n}\n","// Klun UI · Metronic settings — Profile tab.\n// Profile photo upload (local object-URL preview), personal information with\n// validation + dirty tracking, and regional preferences. All handlers are\n// local-only — point them at your API.\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Avatar, Button, Input, Select, Textarea, useMessage } from \"../../index\";\nimport { C_SOFT, Field, Grid2, Section, T_LABEL_XS, T_PARA_XS } from \"./shared\";\n\ninterface Personal {\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n jobTitle: string;\n bio: string;\n}\n\ninterface Regional {\n language: string;\n timezone: string;\n dateFormat: string;\n weekStart: string;\n}\n\nconst INITIAL_PERSONAL: Personal = {\n firstName: \"Anna\",\n lastName: \"Krause\",\n email: \"anna@acme.io\",\n phone: \"+49 151 2345 6789\",\n jobTitle: \"Product designer\",\n bio: \"Product designer focused on design systems and tooling.\",\n};\n\nconst INITIAL_REGIONAL: Regional = {\n language: \"en-US\",\n timezone: \"cet\",\n dateFormat: \"dmy\",\n weekStart: \"mon\",\n};\n\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport interface ProfileSectionProps {\n /** Fired whenever the amount of unsaved work changes. */\n onDirtyChange?: (dirty: boolean) => void;\n}\n\nexport function ProfileSection({ onDirtyChange }: ProfileSectionProps) {\n const [message, holder] = useMessage();\n\n const [photo, setPhoto] = useState<string | null>(null);\n const fileRef = useRef<HTMLInputElement | null>(null);\n\n const [personal, setPersonal] = useState<Personal>(INITIAL_PERSONAL);\n const [savedPersonal, setSavedPersonal] = useState<Personal>(INITIAL_PERSONAL);\n const [errors, setErrors] = useState<Partial<Record<keyof Personal, string>>>({});\n\n const [regional, setRegional] = useState<Regional>(INITIAL_REGIONAL);\n const [savedRegional, setSavedRegional] = useState<Regional>(INITIAL_REGIONAL);\n\n const personalDirty = useMemo(\n () => (Object.keys(personal) as Array<keyof Personal>).some((k) => personal[k] !== savedPersonal[k]),\n [personal, savedPersonal],\n );\n const regionalDirty = useMemo(\n () => (Object.keys(regional) as Array<keyof Regional>).some((k) => regional[k] !== savedRegional[k]),\n [regional, savedRegional],\n );\n\n useEffect(() => {\n onDirtyChange?.(personalDirty || regionalDirty);\n }, [personalDirty, regionalDirty, onDirtyChange]);\n\n // Release the object URL when it is replaced / unmounted.\n useEffect(() => () => { if (photo) URL.revokeObjectURL(photo); }, [photo]);\n\n const pickPhoto = () => fileRef.current?.click();\n\n const onPhotoPicked = (file: File | undefined) => {\n if (!file) return;\n setPhoto(URL.createObjectURL(file));\n message.success({ content: `${file.name} uploaded.`, key: \"photo\" });\n };\n\n const savePersonal = () => {\n const next: Partial<Record<keyof Personal, string>> = {};\n if (!personal.firstName.trim()) next.firstName = \"First name is required.\";\n if (!personal.lastName.trim()) next.lastName = \"Last name is required.\";\n if (!personal.email.trim()) next.email = \"Email is required.\";\n else if (!EMAIL_RE.test(personal.email)) next.email = \"Enter a valid email address.\";\n setErrors(next);\n if (Object.keys(next).length) {\n message.error({ content: \"Fix the highlighted fields.\", key: \"profile\" });\n return;\n }\n setSavedPersonal(personal);\n message.success({ content: \"Profile updated.\", key: \"profile\" });\n };\n\n const saveRegional = () => {\n setSavedRegional(regional);\n message.success({ content: \"Preferences saved.\", key: \"regional\" });\n };\n\n return (\n <>\n {holder}\n\n <Section title=\"Profile photo\" subtitle=\"PNG or JPG, at least 200×200px.\">\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 20, flexWrap: \"wrap\" }}>\n <div style={{ position: \"relative\", width: 76, height: 76, flexShrink: 0 }}>\n <Avatar size=\"72\" initials=\"AK\" color=\"blue\" src={photo ?? undefined} alt=\"Profile photo\" />\n <button\n type=\"button\"\n aria-label=\"Change photo\"\n onClick={pickPhoto}\n style={{\n position: \"absolute\",\n right: 0,\n bottom: 0,\n width: 26,\n height: 26,\n borderRadius: \"var(--klun-radius-pill)\",\n border: \"2px solid var(--klun-bg-white-0)\",\n background: \"var(--klun-primary-base)\",\n color: \"var(--klun-text-white-0)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n fontSize: 13,\n padding: 0,\n }}\n >\n <i className=\"ri-camera-line\" />\n </button>\n <input\n ref={fileRef}\n type=\"file\"\n accept=\"image/png,image/jpeg,image/webp\"\n hidden\n onChange={(e) => onPhotoPicked(e.target.files?.[0])}\n />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <div style={{ display: \"flex\", gap: 8 }}>\n <Button size=\"small\" leadingIcon={<i className=\"ri-upload-2-line\" />} onClick={pickPhoto}>\n Upload new\n </Button>\n <Button\n size=\"small\"\n variant=\"neutral\"\n appearance=\"ghost\"\n disabled={!photo}\n onClick={() => {\n setPhoto(null);\n message.info({ content: \"Photo removed.\", key: \"photo\" });\n }}\n >\n Remove\n </Button>\n </div>\n <span style={{ font: T_PARA_XS, color: C_SOFT }}>Recommended 400×400px, max 2MB.</span>\n </div>\n </div>\n </Section>\n\n <Section\n title=\"Personal information\"\n subtitle=\"Shown to teammates across the workspace.\"\n extra={\n personalDirty ? (\n <span style={{ font: T_LABEL_XS, color: \"var(--klun-state-warning-base)\" }}>Unsaved changes</span>\n ) : undefined\n }\n footer={\n <>\n <Button\n variant=\"neutral\"\n appearance=\"ghost\"\n disabled={!personalDirty}\n onClick={() => {\n setPersonal(savedPersonal);\n setErrors({});\n }}\n >\n Cancel\n </Button>\n <Button disabled={!personalDirty} onClick={savePersonal}>\n Save changes\n </Button>\n </>\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Grid2>\n <Field label=\"First name\" error={errors.firstName}>\n <Input value={personal.firstName} error={Boolean(errors.firstName)} onChange={(e) => setPersonal((p) => ({ ...p, firstName: e.target.value }))} />\n </Field>\n <Field label=\"Last name\" error={errors.lastName}>\n <Input value={personal.lastName} error={Boolean(errors.lastName)} onChange={(e) => setPersonal((p) => ({ ...p, lastName: e.target.value }))} />\n </Field>\n </Grid2>\n <Field label=\"Email\" error={errors.email}>\n <Input\n type=\"email\"\n leadingIcon={<i className=\"ri-mail-line\" />}\n value={personal.email}\n error={Boolean(errors.email)}\n onChange={(e) => setPersonal((p) => ({ ...p, email: e.target.value }))}\n />\n </Field>\n <Grid2>\n <Field label=\"Phone\" hint=\"Used for security alerts only.\">\n <Input\n leadingIcon={<i className=\"ri-phone-line\" />}\n value={personal.phone}\n onChange={(e) => setPersonal((p) => ({ ...p, phone: e.target.value }))}\n />\n </Field>\n <Field label=\"Job title\">\n <Input value={personal.jobTitle} onChange={(e) => setPersonal((p) => ({ ...p, jobTitle: e.target.value }))} />\n </Field>\n </Grid2>\n <Field\n label=\"Bio\"\n hint={`${personal.bio.length}/240 characters — a short line shown on your profile card.`}\n >\n <Textarea\n rows={3}\n maxLength={240}\n value={personal.bio}\n onChange={(e) => setPersonal((p) => ({ ...p, bio: e.target.value }))}\n />\n </Field>\n </div>\n </Section>\n\n <Section\n title=\"Regional preferences\"\n subtitle=\"Language, timezone and how dates are formatted for you.\"\n footer={\n <>\n <Button variant=\"neutral\" appearance=\"ghost\" disabled={!regionalDirty} onClick={() => setRegional(savedRegional)}>\n Reset\n </Button>\n <Button disabled={!regionalDirty} onClick={saveRegional}>\n Save preferences\n </Button>\n </>\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Grid2>\n <Field label=\"Language\">\n <Select value={regional.language} onChange={(e) => setRegional((r) => ({ ...r, language: e.target.value }))}>\n <option value=\"en-US\">English (US)</option>\n <option value=\"en-GB\">English (UK)</option>\n <option value=\"de-DE\">Deutsch</option>\n <option value=\"fr-FR\">Français</option>\n <option value=\"zh-CN\">简体中文</option>\n <option value=\"ja-JP\">日本語</option>\n </Select>\n </Field>\n <Field label=\"Timezone\">\n <Select value={regional.timezone} onChange={(e) => setRegional((r) => ({ ...r, timezone: e.target.value }))}>\n <option value=\"cet\">CET — Berlin</option>\n <option value=\"gmt\">GMT — London</option>\n <option value=\"pst\">PST — San Francisco</option>\n <option value=\"jst\">JST — Tokyo</option>\n <option value=\"cst\">CST — Shanghai</option>\n </Select>\n </Field>\n </Grid2>\n <Grid2>\n <Field label=\"Date format\">\n <Select value={regional.dateFormat} onChange={(e) => setRegional((r) => ({ ...r, dateFormat: e.target.value }))}>\n <option value=\"dmy\">DD/MM/YYYY — 16/09/2026</option>\n <option value=\"mdy\">MM/DD/YYYY — 09/16/2026</option>\n <option value=\"ymd\">YYYY-MM-DD — 2026-09-16</option>\n </Select>\n </Field>\n <Field label=\"Week starts on\">\n <Select value={regional.weekStart} onChange={(e) => setRegional((r) => ({ ...r, weekStart: e.target.value }))}>\n <option value=\"mon\">Monday</option>\n <option value=\"sun\">Sunday</option>\n <option value=\"sat\">Saturday</option>\n </Select>\n </Field>\n </Grid2>\n </div>\n </Section>\n </>\n );\n}\n","// Klun UI · Metronic settings — Account tab.\n// Security centre: password change with a live strength meter, two-factor\n// enrolment (secret + one-time-code verification), active sessions with revoke\n// actions and the danger zone (deactivate / delete with typed confirmation).\nimport { useMemo, useState } from \"react\";\nimport {\n Badge,\n Button,\n Confirm,\n CopyButton,\n DigitInput,\n Input,\n Modal,\n ProgressBar,\n RelativeTime,\n Switch,\n useMessage,\n} from \"../../index\";\nimport { C_SOFT, C_SUB, Field, Grid2, HAIRLINE, Section, T_LABEL_SM, T_PARA_XS } from \"./shared\";\n\ninterface Session {\n id: string;\n device: string;\n icon: string;\n browser: string;\n location: string;\n ip: string;\n lastActive: string;\n current?: boolean;\n}\n\nconst INITIAL_SESSIONS: Session[] = [\n {\n id: \"s1\",\n device: \"MacBook Pro 16″\",\n icon: \"ri-macbook-line\",\n browser: \"Chrome 129 · macOS 15\",\n location: \"Berlin, Germany\",\n ip: \"84.117.22.8\",\n lastActive: new Date().toISOString(),\n current: true,\n },\n {\n id: \"s2\",\n device: \"iPhone 15 Pro\",\n icon: \"ri-smartphone-line\",\n browser: \"Klun app · iOS 18.1\",\n location: \"Berlin, Germany\",\n ip: \"84.117.22.8\",\n lastActive: new Date(Date.now() - 1000 * 60 * 95).toISOString(),\n },\n {\n id: \"s3\",\n device: \"Windows 11 desktop\",\n icon: \"ri-computer-line\",\n browser: \"Edge 128 · Windows 11\",\n location: \"Munich, Germany\",\n ip: \"91.64.180.44\",\n lastActive: new Date(Date.now() - 1000 * 60 * 60 * 50).toISOString(),\n },\n {\n id: \"s4\",\n device: \"iPad Air\",\n icon: \"ri-tablet-line\",\n browser: \"Safari 18 · iPadOS 18\",\n location: \"Vienna, Austria\",\n ip: \"178.189.7.19\",\n lastActive: new Date(Date.now() - 1000 * 60 * 60 * 24 * 12).toISOString(),\n },\n];\n\nconst RECOVERY_CODES = [\"4F2K-9QLM\", \"XR7T-2BWN\", \"M8JD-55PA\", \"QK39-1ZVF\", \"N6CY-7RTH\", \"B2PG-0WXS\"];\n\nconst TOTP_SECRET = \"JBSWY3DPEHPK3PXP4F2K9QLMXR7T2BWN\";\n\ntype Strength = { score: number; label: string; color: \"error\" | \"warning\" | \"success\" };\n\nfunction scorePassword(pw: string): Strength {\n let score = 0;\n if (pw.length >= 8) score += 1;\n if (pw.length >= 12) score += 1;\n if (/[a-z]/.test(pw) && /[A-Z]/.test(pw)) score += 1;\n if (/\\d/.test(pw)) score += 1;\n if (/[^A-Za-z0-9]/.test(pw)) score += 1;\n if (!pw) return { score: 0, label: \"Empty\", color: \"error\" };\n if (score <= 2) return { score, label: \"Weak\", color: \"error\" };\n if (score <= 3) return { score, label: \"Fair\", color: \"warning\" };\n return { score, label: \"Strong\", color: \"success\" };\n}\n\nexport function AccountSection() {\n const [message, holder] = useMessage();\n\n /* ---- password ---- */\n const [current, setCurrent] = useState(\"\");\n const [next, setNext] = useState(\"\");\n const [repeat, setRepeat] = useState(\"\");\n const [show, setShow] = useState(false);\n\n const strength = useMemo(() => scorePassword(next), [next]);\n const rules = [\n { label: \"At least 12 characters\", ok: next.length >= 12 },\n { label: \"Upper and lower case letters\", ok: /[a-z]/.test(next) && /[A-Z]/.test(next) },\n { label: \"At least one number\", ok: /\\d/.test(next) },\n { label: \"At least one symbol\", ok: /[^A-Za-z0-9]/.test(next) },\n ];\n const canUpdate = current.length > 0 && rules.every((r) => r.ok) && next === repeat;\n\n const updatePassword = () => {\n setCurrent(\"\");\n setNext(\"\");\n setRepeat(\"\");\n message.success({ content: \"Password updated. Other sessions stay signed in.\", key: \"pw\" });\n };\n\n /* ---- two-factor ---- */\n const [twoFA, setTwoFA] = useState(true);\n const [setupOpen, setSetupOpen] = useState(false);\n const [code, setCode] = useState(\"\");\n const [showRecovery, setShowRecovery] = useState(false);\n\n const enableTwoFA = async (checked: boolean) => {\n if (checked) {\n setCode(\"\");\n setSetupOpen(true);\n return;\n }\n const res = await Confirm({\n title: \"Turn off two-factor authentication?\",\n description: \"Your account will only be protected by your password. This makes it easier for an attacker to get in.\",\n intent: \"danger\",\n confirmText: \"Turn off 2FA\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setTwoFA(false);\n setShowRecovery(false);\n message.warning({ content: \"Two-factor authentication disabled.\", key: \"2fa\" });\n }\n };\n\n const finishSetup = () => {\n setTwoFA(true);\n setSetupOpen(false);\n setShowRecovery(true);\n message.success({ content: \"Two-factor authentication enabled.\", key: \"2fa\" });\n };\n\n /* ---- sessions ---- */\n const [sessions, setSessions] = useState<Session[]>(INITIAL_SESSIONS);\n\n const revoke = async (session: Session) => {\n const res = await Confirm({\n title: `Sign out ${session.device}?`,\n description: `${session.browser} · ${session.location}`,\n intent: \"danger\",\n confirmText: \"Sign out\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setSessions((prev) => prev.filter((s) => s.id !== session.id));\n message.success({ content: `${session.device} signed out.`, key: \"session\" });\n }\n };\n\n const revokeOthers = async () => {\n const others = sessions.filter((s) => !s.current).length;\n const res = await Confirm({\n title: \"Sign out all other sessions?\",\n description: `${others} device${others === 1 ? \"\" : \"s\"} will need to sign in again.`,\n intent: \"danger\",\n confirmText: \"Sign out others\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setSessions((prev) => prev.filter((s) => s.current));\n message.success({ content: \"All other sessions signed out.\", key: \"session\" });\n }\n };\n\n /* ---- danger zone ---- */\n const deactivate = async () => {\n const res = await Confirm({\n title: \"Deactivate account?\",\n description: \"You'll be signed out everywhere and your workspace will be hidden until you sign back in.\",\n intent: \"warning\",\n confirmText: \"Deactivate\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n message.info({ content: \"Account deactivated — sign back in any time.\", key: \"danger\" });\n }\n };\n\n const removeAccount = async () => {\n const res = await Confirm({\n title: \"Delete this account?\",\n description: \"This permanently erases your profile, sessions and API keys. Invoices are kept for legal reasons.\",\n intent: \"danger\",\n confirmText: \"Delete account\",\n requireInput: { label: \"Type anna@acme.io to confirm\", placeholder: \"anna@acme.io\", match: \"anna@acme.io\" },\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n message.error({ content: \"Deletion requested — check anna@acme.io for the confirmation link.\", key: \"danger\" });\n }\n };\n\n return (\n <>\n {holder}\n\n <Section\n title=\"Password\"\n subtitle=\"Use a long, unique password — a passphrase works great.\"\n extra={\n <span style={{ font: T_PARA_XS, color: C_SUB }}>\n Last changed <RelativeTime date={new Date(Date.now() - 1000 * 60 * 60 * 24 * 84)} live={false} />\n </span>\n }\n footer={<Button disabled={!canUpdate} onClick={updatePassword}>Update password</Button>}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Field label=\"Current password\">\n <Input\n type={show ? \"text\" : \"password\"}\n placeholder=\"••••••••••••\"\n leadingIcon={<i className=\"ri-lock-2-line\" />}\n value={current}\n onChange={(e) => setCurrent(e.target.value)}\n />\n </Field>\n <Grid2>\n <Field label=\"New password\">\n <Input\n type={show ? \"text\" : \"password\"}\n placeholder=\"At least 12 characters\"\n value={next}\n onChange={(e) => setNext(e.target.value)}\n trailingIcon={\n <button\n type=\"button\"\n aria-label={show ? \"Hide passwords\" : \"Show passwords\"}\n onClick={() => setShow((s) => !s)}\n style={{ border: \"none\", background: \"none\", padding: 0, cursor: \"pointer\", color: \"inherit\", display: \"inline-flex\" }}\n >\n <i className={show ? \"ri-eye-off-line\" : \"ri-eye-line\"} />\n </button>\n }\n />\n </Field>\n <Field label=\"Confirm new password\" error={repeat && repeat !== next ? \"Passwords don't match.\" : undefined}>\n <Input\n type={show ? \"text\" : \"password\"}\n placeholder=\"Repeat the password\"\n value={repeat}\n error={Boolean(repeat) && repeat !== next}\n onChange={(e) => setRepeat(e.target.value)}\n />\n </Field>\n </Grid2>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <ProgressBar value={strength.score} max={5} color={strength.color} style={{ flex: 1 }} />\n <span style={{ font: T_PARA_XS, color: C_SOFT, width: 52, textAlign: \"right\" }}>{strength.label}</span>\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: \"6px 16px\" }}>\n {rules.map((rule) => (\n <span\n key={rule.label}\n style={{\n font: T_PARA_XS,\n color: rule.ok ? \"var(--klun-state-success-base)\" : C_SOFT,\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 6,\n }}\n >\n <i className={rule.ok ? \"ri-checkbox-circle-fill\" : \"ri-circle-line\"} />\n {rule.label}\n </span>\n ))}\n </div>\n </div>\n </div>\n </Section>\n\n <Section\n title=\"Two-factor authentication\"\n subtitle=\"Ask for a one-time code from your authenticator app on every new sign-in.\"\n extra={\n twoFA ? (\n <Badge color=\"green\" variant=\"light\" size=\"small\" dot>\n Enabled\n </Badge>\n ) : (\n <Badge color=\"orange\" variant=\"light\" size=\"small\" dot>\n Off\n </Badge>\n )\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>\n Authenticator app\n </b>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>\n 1Password, Google Authenticator, Authy — any TOTP app works.\n </span>\n </div>\n <Switch checked={twoFA} onChange={(checked) => void enableTwoFA(checked)} />\n </div>\n\n {twoFA && showRecovery ? (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"10px 12px\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-state-warning-lighter)\",\n border: \"1px solid var(--klun-state-warning-light)\",\n }}\n >\n <span style={{ font: T_PARA_XS, color: C_SUB }}>\n Save your recovery codes — they're the only way back in without your phone.\n </span>\n <CopyButton size=\"sm\" variant=\"stroke\" value={RECOVERY_CODES.join(\" \")} onCopied={() => message.success({ content: \"Recovery codes copied.\", key: \"2fa\" })}>\n Copy codes\n </CopyButton>\n </div>\n ) : null}\n </div>\n </Section>\n\n <Section\n title=\"Active sessions\"\n subtitle=\"Devices currently signed in to your account.\"\n extra={\n <Button size=\"xsmall\" variant=\"neutral\" appearance=\"stroke\" onClick={() => void revokeOthers()}>\n Sign out others\n </Button>\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {sessions.map((s, i) => (\n <div\n key={s.id}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 14,\n padding: \"12px 0\",\n boxShadow: i === 0 ? \"none\" : `inset 0 1px 0 ${HAIRLINE}`,\n }}\n >\n <span\n style={{\n width: 36,\n height: 36,\n flexShrink: 0,\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-icon-sub-600)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 17,\n }}\n >\n <i className={s.icon} />\n </span>\n <div style={{ minWidth: 0, flex: 1 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, flexWrap: \"wrap\" }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>{s.device}</b>\n {s.current ? (\n <Badge color=\"blue\" variant=\"lighter\" size=\"small\">\n This device\n </Badge>\n ) : null}\n </div>\n <div style={{ font: T_PARA_XS, color: C_SUB }}>\n {s.browser} · {s.location} · {s.ip}\n </div>\n </div>\n <span style={{ font: T_PARA_XS, color: C_SOFT, whiteSpace: \"nowrap\" }}>\n <RelativeTime date={s.lastActive} />\n </span>\n <Button\n size=\"xsmall\"\n variant=\"neutral\"\n appearance=\"ghost\"\n disabled={s.current}\n onClick={() => void revoke(s)}\n >\n Sign out\n </Button>\n </div>\n ))}\n {sessions.length === 1 ? (\n <div style={{ paddingTop: 12, font: T_PARA_XS, color: C_SOFT }}>\n Only this device is signed in.\n </div>\n ) : null}\n </div>\n </Section>\n\n <Section\n title=\"Danger zone\"\n subtitle=\"Destructive actions — they can't be undone.\"\n tone=\"danger\"\n >\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 16,\n paddingBottom: 14,\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>Deactivate account</b>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>\n Hide the workspace and sign out everywhere. You can come back later.\n </span>\n </div>\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" onClick={() => void deactivate()}>\n Deactivate\n </Button>\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 16,\n paddingTop: 14,\n boxShadow: `inset 0 1px 0 var(--klun-state-error-light)`,\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>Delete account</b>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>\n Permanently remove your profile, sessions and API keys.\n </span>\n </div>\n <Button size=\"small\" variant=\"error\" onClick={() => void removeAccount()}>\n Delete account\n </Button>\n </div>\n </div>\n </Section>\n\n <Modal\n open={setupOpen}\n onClose={() => setSetupOpen(false)}\n title=\"Set up two-factor authentication\"\n description=\"Scan the secret in your authenticator app, then enter the 6-digit code it shows.\"\n okText=\"Verify & enable\"\n okButtonProps={{ disabled: code.length !== 6 }}\n onOk={finishSetup}\n width={460}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>Setup key</span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <code\n style={{\n flex: 1,\n padding: \"8px 10px\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-weak-50)\",\n border: `1px solid ${HAIRLINE}`,\n font: \"var(--klun-text-label-sm)\",\n letterSpacing: \"0.06em\",\n color: \"var(--klun-text-strong-950)\",\n overflowWrap: \"anywhere\",\n }}\n >\n {TOTP_SECRET}\n </code>\n <CopyButton size=\"md\" variant=\"stroke\" value={TOTP_SECRET} onCopied={() => message.success({ content: \"Setup key copied.\", key: \"2fa\" })} />\n </div>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8, alignItems: \"center\" }}>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>Enter the 6-digit code</span>\n <DigitInput length={6} value={code} onChange={setCode} />\n </div>\n </div>\n </Modal>\n </>\n );\n}\n","// Klun UI · Metronic settings — Notifications tab.\n// Channel matrix (email / push / SMS × event), column-level select-all with\n// indeterminate state, digest cadence, quiet hours and a test send. State is\n// local — swap the handlers for your preferences API.\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Button, Checkbox, Select, Switch, useMessage } from \"../../index\";\nimport { C_SOFT, C_SUB, Field, Grid2, HAIRLINE, Section, T_LABEL_SM, T_PARA_XS } from \"./shared\";\n\ntype Channel = \"email\" | \"push\" | \"sms\";\n\ninterface EventDef {\n key: string;\n title: string;\n desc: string;\n}\n\nconst EVENTS: EventDef[] = [\n { key: \"orders\", title: \"Order updates\", desc: \"New orders, cancellations and refunds.\" },\n { key: \"mentions\", title: \"Mentions\", desc: \"When someone @mentions you in a comment.\" },\n { key: \"comments\", title: \"Comments\", desc: \"Replies on items you follow.\" },\n { key: \"security\", title: \"Security alerts\", desc: \"New sign-ins, password and 2FA changes.\" },\n { key: \"digest\", title: \"Weekly digest\", desc: \"A Monday-morning summary of your workspace.\" },\n { key: \"product\", title: \"Product news\", desc: \"Occasional announcements about new features.\" },\n];\n\nconst CHANNELS: Array<{ key: Channel; label: string }> = [\n { key: \"email\", label: \"Email\" },\n { key: \"push\", label: \"Push\" },\n { key: \"sms\", label: \"SMS\" },\n];\n\ntype Prefs = Record<string, Record<Channel, boolean>>;\n\nconst INITIAL_PREFS: Prefs = {\n orders: { email: true, push: true, sms: false },\n mentions: { email: true, push: true, sms: false },\n comments: { email: true, push: false, sms: false },\n security: { email: true, push: true, sms: true },\n digest: { email: true, push: false, sms: false },\n product: { email: false, push: false, sms: false },\n};\n\nexport interface NotificationsSectionProps {\n /** Fired whenever the amount of unsaved work changes. */\n onDirtyChange?: (dirty: boolean) => void;\n}\n\nexport function NotificationsSection({ onDirtyChange }: NotificationsSectionProps) {\n const [message, holder] = useMessage();\n const [prefs, setPrefs] = useState<Prefs>(INITIAL_PREFS);\n const [saved, setSaved] = useState<Prefs>(INITIAL_PREFS);\n const [digest, setDigest] = useState(\"weekly\");\n const [quiet, setQuiet] = useState(true);\n const [quietFrom, setQuietFrom] = useState(\"22:00\");\n const [quietTo, setQuietTo] = useState(\"07:00\");\n\n const dirty = useMemo(() => JSON.stringify(prefs) !== JSON.stringify(saved), [prefs, saved]);\n\n useEffect(() => {\n onDirtyChange?.(dirty);\n }, [dirty, onDirtyChange]);\n\n const setCell = (event: string, channel: Channel, checked: boolean) =>\n setPrefs((prev) => ({ ...prev, [event]: { ...prev[event], [channel]: checked } }));\n\n const columnState = (channel: Channel) => {\n const on = EVENTS.filter((e) => prefs[e.key][channel]).length;\n return { all: on === EVENTS.length, some: on > 0 && on < EVENTS.length };\n };\n\n const setColumn = (channel: Channel, checked: boolean) =>\n setPrefs((prev) => {\n const next: Prefs = { ...prev };\n for (const e of EVENTS) next[e.key] = { ...next[e.key], [channel]: checked };\n return next;\n });\n\n const save = () => {\n setSaved(prefs);\n message.success({ content: \"Notification preferences saved.\", key: \"prefs\" });\n };\n\n const sendTest = () => {\n message.success({ content: \"Test notification sent to anna@acme.io.\", key: \"test\" });\n };\n\n return (\n <>\n {holder}\n\n <Section\n title=\"Delivery per event\"\n subtitle=\"Choose where each kind of notification reaches you.\"\n extra={\n dirty ? <span style={{ font: T_PARA_XS, color: \"var(--klun-state-warning-base)\" }}>Unsaved changes</span> : undefined\n }\n footer={\n <>\n <Button\n variant=\"neutral\"\n appearance=\"ghost\"\n disabled={!dirty}\n onClick={() => {\n setPrefs(saved);\n message.info({ content: \"Reset to the last saved preferences.\", key: \"prefs\" });\n }}\n >\n Reset\n </Button>\n <Button disabled={!dirty} onClick={save}>\n Save preferences\n </Button>\n </>\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {/* header */}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 1fr) 88px 88px 88px\",\n alignItems: \"center\",\n gap: 8,\n paddingBottom: 10,\n boxShadow: `inset 0 -1px 0 ${HAIRLINE}`,\n }}\n >\n <span style={{ font: \"var(--klun-text-label-xs)\", color: C_SOFT, textTransform: \"uppercase\", letterSpacing: \"0.04em\" }}>\n Event\n </span>\n {CHANNELS.map((c) => {\n const state = columnState(c.key);\n return (\n <span key={c.key} style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 4 }}>\n <Checkbox\n size=\"small\"\n checked={state.all}\n indeterminate={state.some}\n aria-label={`Toggle all ${c.label} notifications`}\n onChange={(checked) => setColumn(c.key, checked)}\n />\n <span style={{ font: T_PARA_XS, color: C_SUB }}>{c.label}</span>\n </span>\n );\n })}\n </div>\n\n {/* rows */}\n {EVENTS.map((e, i) => (\n <div\n key={e.key}\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 1fr) 88px 88px 88px\",\n alignItems: \"center\",\n gap: 8,\n padding: \"12px 0\",\n boxShadow: i === EVENTS.length - 1 ? \"none\" : `inset 0 -1px 0 ${HAIRLINE}`,\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, minWidth: 0 }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>{e.title}</b>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>{e.desc}</span>\n </div>\n {CHANNELS.map((c) => (\n <span key={c.key} style={{ display: \"flex\", justifyContent: \"center\" }}>\n <Checkbox\n checked={prefs[e.key][c.key]}\n aria-label={`${e.title} via ${c.label}`}\n onChange={(checked) => setCell(e.key, c.key, checked)}\n />\n </span>\n ))}\n </div>\n ))}\n </div>\n </Section>\n\n <Section\n title=\"Digest & quiet hours\"\n subtitle=\"Batch low-priority notifications and silence the rest at night.\"\n footer={\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-send-plane-line\" />} onClick={sendTest}>\n Send test notification\n </Button>\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Grid2>\n <Field label=\"Digest frequency\" hint=\"Non-urgent items are collected into one message.\">\n <Select value={digest} onChange={(e) => setDigest(e.target.value)}>\n <option value=\"realtime\">As they happen</option>\n <option value=\"daily\">Daily</option>\n <option value=\"weekly\">Weekly — Mondays 09:00</option>\n <option value=\"off\">Never</option>\n </Select>\n </Field>\n <Field label=\"Language for notifications\">\n <Select defaultValue=\"en\">\n <option value=\"en\">English</option>\n <option value=\"de\">Deutsch</option>\n <option value=\"zh\">简体中文</option>\n </Select>\n </Field>\n </Grid2>\n\n <div style={{ boxShadow: `inset 0 1px 0 ${HAIRLINE}`, paddingTop: 16 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 16 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>Quiet hours</b>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>\n Pause push and SMS in this window. Security alerts always break through.\n </span>\n </div>\n <Switch checked={quiet} onChange={setQuiet} />\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, marginTop: 12, opacity: quiet ? 1 : 0.5 }}>\n <Select size=\"small\" value={quietFrom} disabled={!quiet} onChange={(e) => setQuietFrom(e.target.value)} style={{ width: 110 }}>\n {[\"21:00\", \"22:00\", \"23:00\", \"00:00\"].map((t) => (\n <option key={t} value={t}>\n {t}\n </option>\n ))}\n </Select>\n <span style={{ font: T_PARA_XS, color: C_SOFT }}>to</span>\n <Select size=\"small\" value={quietTo} disabled={!quiet} onChange={(e) => setQuietTo(e.target.value)} style={{ width: 110 }}>\n {[\"06:00\", \"07:00\", \"08:00\", \"09:00\"].map((t) => (\n <option key={t} value={t}>\n {t}\n </option>\n ))}\n </Select>\n <span style={{ font: T_PARA_XS, color: C_SOFT }}>CET — Berlin</span>\n </div>\n </div>\n </div>\n </Section>\n </>\n );\n}\n","// Klun UI · Metronic settings — Billing tab.\n// Current plan with usage meters, payment methods (add / make default / remove),\n// billing details and the invoice history table. Handlers are local-only.\nimport { useState } from \"react\";\nimport {\n Badge,\n Button,\n Chip,\n Confirm,\n Dropdown,\n Input,\n Modal,\n Money,\n ProgressBar,\n RelativeTime,\n Select,\n Table,\n useMessage,\n} from \"../../index\";\nimport type { ChipColor, TableColumn } from \"../../index\";\nimport { C_SOFT, C_SUB, Field, Grid2, HAIRLINE, Section, T_LABEL_SM, T_PARA_XS } from \"./shared\";\n\ntype PlanId = \"starter\" | \"growth\" | \"scale\";\n\nconst PLANS: Record<PlanId, { name: string; price: number; seats: number; apiCalls: number; storage: number }> = {\n starter: { name: \"Starter\", price: 19, seats: 3, apiCalls: 25_000, storage: 10 },\n growth: { name: \"Growth\", price: 49, seats: 10, apiCalls: 100_000, storage: 100 },\n scale: { name: \"Scale\", price: 99, seats: 50, apiCalls: 1_000_000, storage: 1_000 },\n};\n\nconst USAGE = { seats: 8, apiCalls: 62_500, storage: 41 };\n\ninterface Card {\n id: string;\n brand: string;\n icon: string;\n last4: string;\n exp: string;\n isDefault: boolean;\n}\n\nconst INITIAL_CARDS: Card[] = [\n { id: \"pm1\", brand: \"Visa\", icon: \"ri-visa-line\", last4: \"4242\", exp: \"09/28\", isDefault: true },\n { id: \"pm2\", brand: \"Mastercard\", icon: \"ri-mastercard-line\", last4: \"5555\", exp: \"03/27\", isDefault: false },\n];\n\ninterface Invoice {\n id: string;\n number: string;\n date: string;\n amount: number;\n status: \"Paid\" | \"Pending\" | \"Failed\";\n method: string;\n}\n\nconst INVOICES: Invoice[] = [\n { id: \"i1\", number: \"INV-2026-0916\", date: \"2026-09-16T06:00:00Z\", amount: 49, status: \"Pending\", method: \"Visa •••• 4242\" },\n { id: \"i2\", number: \"INV-2026-0816\", date: \"2026-08-16T06:00:00Z\", amount: 49, status: \"Paid\", method: \"Visa •••• 4242\" },\n { id: \"i3\", number: \"INV-2026-0716\", date: \"2026-07-16T06:00:00Z\", amount: 49, status: \"Paid\", method: \"Visa •••• 4242\" },\n { id: \"i4\", number: \"INV-2026-0616\", date: \"2026-06-16T06:00:00Z\", amount: 49, status: \"Paid\", method: \"Mastercard •••• 5555\" },\n { id: \"i5\", number: \"INV-2026-0516\", date: \"2026-05-16T06:00:00Z\", amount: 29, status: \"Failed\", method: \"Mastercard •••• 5555\" },\n { id: \"i6\", number: \"INV-2026-0416\", date: \"2026-04-16T06:00:00Z\", amount: 29, status: \"Paid\", method: \"Mastercard •••• 5555\" },\n { id: \"i7\", number: \"INV-2026-0316\", date: \"2026-03-16T06:00:00Z\", amount: 29, status: \"Paid\", method: \"Visa •••• 4242\" },\n { id: \"i8\", number: \"INV-2026-0216\", date: \"2026-02-16T06:00:00Z\", amount: 29, status: \"Paid\", method: \"Visa •••• 4242\" },\n];\n\nconst STATUS_COLOR: Record<Invoice[\"status\"], ChipColor> = { Paid: \"green\", Pending: \"orange\", Failed: \"red\" };\n\nconst formatCardNumber = (raw: string) =>\n raw.replace(/\\D/g, \"\").slice(0, 16).replace(/(.{4})/g, \"$1 \").trim();\n\nconst formatExpiry = (raw: string) => {\n const d = raw.replace(/\\D/g, \"\").slice(0, 4);\n return d.length > 2 ? `${d.slice(0, 2)}/${d.slice(2)}` : d;\n};\n\nconst brandOf = (num: string): { brand: string; icon: string } => {\n const digits = num.replace(/\\D/g, \"\");\n if (digits.startsWith(\"4\")) return { brand: \"Visa\", icon: \"ri-visa-line\" };\n if (digits.startsWith(\"5\")) return { brand: \"Mastercard\", icon: \"ri-mastercard-line\" };\n if (digits.startsWith(\"3\")) return { brand: \"Amex\", icon: \"ri-bank-card-line\" };\n return { brand: \"Card\", icon: \"ri-bank-card-line\" };\n};\n\nexport function BillingSection() {\n const [message, holder] = useMessage();\n\n const [plan, setPlan] = useState<PlanId>(\"growth\");\n const [cards, setCards] = useState<Card[]>(INITIAL_CARDS);\n const [cardOpen, setCardOpen] = useState(false);\n const [form, setForm] = useState({ number: \"\", name: \"Anna Krause\", exp: \"\", cvc: \"\" });\n\n const active = PLANS[plan];\n const pct = (used: number, total: number) => Math.round((used / total) * 100);\n const tone = (p: number): \"primary\" | \"warning\" | \"error\" => (p >= 95 ? \"error\" : p >= 80 ? \"warning\" : \"primary\");\n\n const changePlan = (next: PlanId) => {\n setPlan(next);\n message.success({ content: `Switched to the ${PLANS[next].name} plan — prorated on your next invoice.`, key: \"plan\" });\n };\n\n const cancelPlan = async () => {\n const res = await Confirm({\n title: \"Cancel your subscription?\",\n description: `The ${active.name} plan stays active until Oct 16, 2026, then your workspace drops to the free tier.`,\n intent: \"danger\",\n confirmText: \"Cancel subscription\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n message.warning({ content: \"Subscription cancelled — active until Oct 16, 2026.\", key: \"plan\" });\n }\n };\n\n const addCard = () => {\n const { brand, icon } = brandOf(form.number);\n const digits = form.number.replace(/\\D/g, \"\");\n setCards((prev) => [\n { id: `pm${Date.now()}`, brand, icon, last4: digits.slice(-4) || \"0000\", exp: form.exp || \"01/29\", isDefault: prev.length === 0 },\n ...prev,\n ]);\n setCardOpen(false);\n setForm({ number: \"\", name: \"Anna Krause\", exp: \"\", cvc: \"\" });\n message.success({ content: `${brand} •••• ${digits.slice(-4) || \"0000\"} added.`, key: \"card\" });\n };\n\n const makeDefault = (card: Card) => {\n setCards((prev) => prev.map((c) => ({ ...c, isDefault: c.id === card.id })));\n message.success({ content: `${card.brand} •••• ${card.last4} is now the default.`, key: \"card\" });\n };\n\n const removeCard = async (card: Card) => {\n const res = await Confirm({\n title: `Remove ${card.brand} •••• ${card.last4}?`,\n description: card.isDefault\n ? \"This is your default card — the next invoice will use the remaining card.\"\n : \"You can add it again at any time.\",\n intent: \"danger\",\n confirmText: \"Remove card\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setCards((prev) => {\n const next = prev.filter((c) => c.id !== card.id);\n if (card.isDefault && next.length && !next.some((c) => c.isDefault)) next[0] = { ...next[0], isDefault: true };\n return next;\n });\n message.info({ content: `${card.brand} •••• ${card.last4} removed.`, key: \"card\" });\n }\n };\n\n const download = (invoice: Invoice) => message.success({ content: `${invoice.number}.pdf downloaded.`, key: \"invoice\" });\n\n const columns: TableColumn<Invoice>[] = [\n {\n key: \"number\",\n header: \"Invoice\",\n render: (inv) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <i className=\"ri-file-text-line\" style={{ color: \"var(--klun-icon-sub-600)\" }} />\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>{inv.number}</b>\n </span>\n ),\n },\n {\n key: \"date\",\n header: \"Date\",\n sortable: true,\n render: (inv) => (\n <RelativeTime date={inv.date} live={false} style={{ font: T_LABEL_SM, color: C_SUB }} />\n ),\n },\n {\n key: \"amount\",\n header: \"Amount\",\n align: \"right\",\n sortable: true,\n render: (inv) => <Money value={inv.amount} size=\"sm\" />,\n },\n {\n key: \"status\",\n header: \"Status\",\n filters: ([\"Paid\", \"Pending\", \"Failed\"] as Invoice[\"status\"][]).map((s) => ({ label: s, value: s })),\n render: (inv) => (\n <Chip color={STATUS_COLOR[inv.status]} dot>\n {inv.status}\n </Chip>\n ),\n },\n {\n key: \"method\",\n header: \"Method\",\n render: (inv) => <span style={{ font: T_LABEL_SM, color: C_SUB }}>{inv.method}</span>,\n },\n {\n key: \"actions\",\n header: \"\",\n width: 60,\n align: \"right\",\n exportable: false,\n render: (inv) => (\n <Button\n kind=\"compact\"\n appearance=\"ghost\"\n icon={<i className=\"ri-download-2-line\" />}\n aria-label={`Download ${inv.number}`}\n onClick={() => download(inv)}\n />\n ),\n },\n ];\n\n return (\n <>\n {holder}\n\n <Section\n title=\"Current plan\"\n subtitle=\"Renews automatically on Oct 16, 2026 · Visa •••• 4242\"\n extra={\n <Dropdown\n align=\"right\"\n width={220}\n trigger={<Button size=\"small\">Change plan</Button>}\n items={[\n { label: \"Starter — $19 / mo\", icon: <i className=\"ri-seedling-line\" />, onClick: () => changePlan(\"starter\") },\n { label: \"Growth — $49 / mo\", icon: <i className=\"ri-line-chart-line\" />, onClick: () => changePlan(\"growth\") },\n { label: \"Scale — $99 / mo\", icon: <i className=\"ri-rocket-line\" />, onClick: () => changePlan(\"scale\") },\n { divider: true, label: \"\" },\n { label: \"Compare all plans\", icon: <i className=\"ri-scales-3-line\" /> },\n ]}\n />\n }\n footer={\n <>\n <span style={{ font: T_PARA_XS, color: C_SOFT, marginRight: \"auto\" }}>\n Need more? Add seats or usage in the workspace settings.\n </span>\n <Button size=\"small\" variant=\"neutral\" appearance=\"ghost\" onClick={() => void cancelPlan()}>\n Cancel subscription\n </Button>\n </>\n }\n footerAlign=\"left\"\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 18 }}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 10, flexWrap: \"wrap\" }}>\n <span style={{ font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>{active.name}</span>\n <Badge color=\"blue\" variant=\"light\" size=\"small\">\n Current\n </Badge>\n <span style={{ marginLeft: \"auto\", font: T_LABEL_SM, color: C_SUB }}>\n <Money value={active.price} size=\"md\" period=\"month\" />\n </span>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(3, minmax(0, 1fr))\", gap: 16 }}>\n {[\n { label: \"Team seats\", used: USAGE.seats, total: active.seats, format: (n: number) => `${n}` },\n { label: \"API calls / mo\", used: USAGE.apiCalls, total: active.apiCalls, format: (n: number) => n.toLocaleString(\"en-US\") },\n { label: \"Storage\", used: USAGE.storage, total: active.storage, format: (n: number) => `${n} GB` },\n ].map((meter) => {\n const p = pct(meter.used, meter.total);\n return (\n <div key={meter.label} style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 8 }}>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>{meter.label}</span>\n <span style={{ font: T_PARA_XS, color: C_SOFT }}>\n {meter.format(meter.used)} / {meter.format(meter.total)}\n </span>\n </div>\n <ProgressBar value={p} color={tone(p)} />\n </div>\n );\n })}\n </div>\n </div>\n </Section>\n\n <Section\n title=\"Payment methods\"\n subtitle=\"Charged automatically on each renewal.\"\n footer={\n <Button size=\"small\" variant=\"neutral\" appearance=\"stroke\" leadingIcon={<i className=\"ri-add-line\" />} onClick={() => setCardOpen(true)}>\n Add payment method\n </Button>\n }\n footerAlign=\"left\"\n >\n {cards.length === 0 ? (\n <div style={{ font: T_PARA_XS, color: C_SOFT }}>No payment methods yet — add one to keep the subscription active.</div>\n ) : (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {cards.map((card, i) => (\n <div\n key={card.id}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 14,\n padding: \"12px 0\",\n boxShadow: i === 0 ? \"none\" : `inset 0 1px 0 ${HAIRLINE}`,\n }}\n >\n <span\n style={{\n width: 40,\n height: 28,\n borderRadius: \"var(--klun-radius-md)\",\n border: `1px solid ${HAIRLINE}`,\n background: \"var(--klun-bg-white-0)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 18,\n color: \"var(--klun-icon-sub-600)\",\n }}\n >\n <i className={card.icon} />\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>\n {card.brand} •••• {card.last4}\n </b>\n {card.isDefault ? (\n <Badge color=\"green\" variant=\"lighter\" size=\"small\">\n Default\n </Badge>\n ) : null}\n </div>\n <div style={{ font: T_PARA_XS, color: C_SUB }}>Expires {card.exp}</div>\n </div>\n {!card.isDefault ? (\n <Button size=\"xsmall\" variant=\"neutral\" appearance=\"ghost\" onClick={() => makeDefault(card)}>\n Make default\n </Button>\n ) : null}\n <Button size=\"xsmall\" variant=\"neutral\" appearance=\"ghost\" onClick={() => void removeCard(card)}>\n Remove\n </Button>\n </div>\n ))}\n </div>\n )}\n </Section>\n\n <Section\n title=\"Billing details\"\n subtitle=\"Shown on every invoice and receipt.\"\n footer={\n <Button size=\"small\" onClick={() => message.success({ content: \"Billing details saved.\", key: \"billing\" })}>\n Save details\n </Button>\n }\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <Grid2>\n <Field label=\"Billing email\" hint=\"Invoices and receipts go here.\">\n <Input type=\"email\" leadingIcon={<i className=\"ri-mail-line\" />} defaultValue=\"billing@acme.io\" />\n </Field>\n <Field label=\"Company\">\n <Input defaultValue=\"Acme GmbH\" />\n </Field>\n </Grid2>\n <Grid2>\n <Field label=\"VAT / Tax ID\">\n <Input placeholder=\"DE123456789\" defaultValue=\"DE811907980\" />\n </Field>\n <Field label=\"Country\">\n <Select defaultValue=\"de\">\n <option value=\"de\">Germany</option>\n <option value=\"at\">Austria</option>\n <option value=\"ch\">Switzerland</option>\n <option value=\"us\">United States</option>\n <option value=\"cn\">China</option>\n </Select>\n </Field>\n </Grid2>\n <Grid2>\n <Field label=\"Address line\">\n <Input defaultValue=\"Torstraße 140\" />\n </Field>\n <Field label=\"City / Postal code\">\n <Input defaultValue=\"10119 Berlin\" />\n </Field>\n </Grid2>\n </div>\n </Section>\n\n <Table\n columns={columns}\n rows={INVOICES}\n getRowId={(inv) => inv.id}\n title=\"Invoice history\"\n sortable\n exportable={{ filename: \"invoices.csv\" }}\n pagination={{ defaultPageSize: 6 }}\n />\n\n <Modal\n open={cardOpen}\n onClose={() => setCardOpen(false)}\n title=\"Add payment method\"\n description=\"Card details are tokenised — this demo never stores them.\"\n okText=\"Add card\"\n okButtonProps={{ disabled: form.number.replace(/\\D/g, \"\").length < 16 || form.exp.length < 5 || form.cvc.length < 3 }}\n onOk={addCard}\n width={460}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <Field label=\"Card number\">\n <Input\n inputMode=\"numeric\"\n placeholder=\"4242 4242 4242 4242\"\n leadingIcon={<i className=\"ri-bank-card-line\" />}\n value={form.number}\n onChange={(e) => setForm((f) => ({ ...f, number: formatCardNumber(e.target.value) }))}\n />\n </Field>\n <Field label=\"Name on card\">\n <Input value={form.name} onChange={(e) => setForm((f) => ({ ...f, name: e.target.value }))} />\n </Field>\n <Grid2>\n <Field label=\"Expiry\">\n <Input\n inputMode=\"numeric\"\n placeholder=\"MM/YY\"\n value={form.exp}\n onChange={(e) => setForm((f) => ({ ...f, exp: formatExpiry(e.target.value) }))}\n />\n </Field>\n <Field label=\"CVC\">\n <Input\n inputMode=\"numeric\"\n placeholder=\"123\"\n value={form.cvc}\n onChange={(e) => setForm((f) => ({ ...f, cvc: e.target.value.replace(/\\D/g, \"\").slice(0, 4) }))}\n />\n </Field>\n </Grid2>\n </div>\n </Modal>\n </>\n );\n}\n","// Klun UI · Metronic settings — API keys tab.\n// Workspace API keys: usage summary, create dialog with scope picker, the\n// one-time secret reveal (copy-to-clipboard), rotate and revoke actions.\nimport { useMemo, useState } from \"react\";\nimport {\n Badge,\n Button,\n Checkbox,\n Chip,\n Confirm,\n CopyButton,\n Dropdown,\n Input,\n Modal,\n RelativeTime,\n Select,\n Table,\n useMessage,\n} from \"../../index\";\nimport type { TableColumn } from \"../../index\";\nimport { C_SOFT, C_SUB, Field, Grid2, HAIRLINE, Section, T_LABEL_SM, T_PARA_XS } from \"./shared\";\n\ninterface ApiKey {\n id: string;\n name: string;\n description: string;\n masked: string;\n secret: string;\n scopes: string[];\n created: string;\n lastUsed: string | null;\n revoked: boolean;\n}\n\nconst SCOPES = [\n { id: \"read:orders\", label: \"read:orders\", desc: \"List orders and read their details.\" },\n { id: \"write:orders\", label: \"write:orders\", desc: \"Create, update and cancel orders.\" },\n { id: \"read:customers\", label: \"read:customers\", desc: \"List customers and their segments.\" },\n { id: \"write:customers\", label: \"write:customers\", desc: \"Create and update customers.\" },\n { id: \"admin\", label: \"admin\", desc: \"Manage webhooks, settings and other keys.\" },\n];\n\nconst randomSecret = () => {\n const chars = \"abcdef0123456789\";\n let out = \"\";\n for (let i = 0; i < 32; i += 1) out += chars[Math.floor(Math.random() * chars.length)];\n return `sk_live_${out}`;\n};\n\nconst mask = (secret: string) => `${secret.slice(0, 8)}••••••••••••${secret.slice(-4)}`;\n\nconst INITIAL_KEYS: ApiKey[] = [\n {\n id: \"k1\",\n name: \"Production storefront\",\n description: \"Server-side key for acme.io checkout.\",\n masked: mask(\"sk_live_9f2c4a71d0e83b56a1c7f4d29e0b8836\"),\n secret: \"sk_live_9f2c4a71d0e83b56a1c7f4d29e0b8836\",\n scopes: [\"read:orders\", \"write:orders\", \"read:customers\"],\n created: \"2026-03-04T09:12:00Z\",\n lastUsed: new Date(Date.now() - 1000 * 60 * 7).toISOString(),\n revoked: false,\n },\n {\n id: \"k2\",\n name: \"Analytics pipeline\",\n description: \"Read-only export for the BI warehouse.\",\n masked: mask(\"sk_live_31be77a0cc94dd12f8e5a6b30c4419aa\"),\n secret: \"sk_live_31be77a0cc94dd12f8e5a6b30c4419aa\",\n scopes: [\"read:orders\", \"read:customers\"],\n created: \"2026-05-21T14:40:00Z\",\n lastUsed: new Date(Date.now() - 1000 * 60 * 60 * 3).toISOString(),\n revoked: false,\n },\n {\n id: \"k3\",\n name: \"Staging sandbox\",\n description: \"Full access for the staging environment.\",\n masked: mask(\"sk_live_c40d9e21b7f3a8850d6c2e14b9a7f302\"),\n secret: \"sk_live_c40d9e21b7f3a8850d6c2e14b9a7f302\",\n scopes: [\"read:orders\", \"write:orders\", \"read:customers\", \"write:customers\", \"admin\"],\n created: \"2026-07-02T11:05:00Z\",\n lastUsed: null,\n revoked: false,\n },\n {\n id: \"k4\",\n name: \"Legacy Zapier hook\",\n description: \"Replaced by the Zapier integration.\",\n masked: mask(\"sk_live_7a1f0b93e6d24c88a3f5b7901d2e6c44\"),\n secret: \"sk_live_7a1f0b93e6d24c88a3f5b7901d2e6c44\",\n scopes: [\"read:orders\"],\n created: \"2025-11-18T08:30:00Z\",\n lastUsed: \"2026-01-09T17:22:00Z\",\n revoked: true,\n },\n];\n\nfunction Stat({ label, value, hint, icon, tone }: { label: string; value: string; hint?: string; icon: string; tone: \"primary\" | \"success\" | \"information\" }) {\n const bg = tone === \"primary\" ? \"var(--klun-primary-lighter)\" : `var(--klun-state-${tone === \"success\" ? \"success\" : \"information\"}-lighter)`;\n const fg = tone === \"primary\" ? \"var(--klun-primary-base)\" : `var(--klun-state-${tone === \"success\" ? \"success\" : \"information\"}-base)`;\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n padding: \"14px 16px\",\n background: \"var(--klun-bg-white-0)\",\n border: `1px solid ${HAIRLINE}`,\n borderRadius: \"var(--klun-radius-xl)\",\n }}\n >\n <span\n style={{\n width: 34,\n height: 34,\n borderRadius: \"var(--klun-radius-lg)\",\n background: bg,\n color: fg,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 17,\n }}\n >\n <i className={icon} />\n </span>\n <div style={{ minWidth: 0 }}>\n <div style={{ font: T_PARA_XS, color: C_SUB }}>{label}</div>\n <div style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>\n {value}\n {hint ? <span style={{ font: T_PARA_XS, color: C_SOFT, marginLeft: 6 }}>{hint}</span> : null}\n </div>\n </div>\n </div>\n );\n}\n\nexport function ApiKeysSection() {\n const [message, holder] = useMessage();\n const [keys, setKeys] = useState<ApiKey[]>(INITIAL_KEYS);\n const [createOpen, setCreateOpen] = useState(false);\n const [form, setForm] = useState({ name: \"\", description: \"\", scopes: [\"read:orders\"] as string[], expiry: \"90\" });\n const [freshSecret, setFreshSecret] = useState<{ name: string; secret: string } | null>(null);\n\n const activeCount = useMemo(() => keys.filter((k) => !k.revoked).length, [keys]);\n\n const openCreate = () => {\n setForm({ name: \"\", description: \"\", scopes: [\"read:orders\"], expiry: \"90\" });\n setCreateOpen(true);\n };\n\n const create = () => {\n const secret = randomSecret();\n const name = form.name.trim() || \"Untitled key\";\n setKeys((prev) => [\n {\n id: `k${Date.now()}`,\n name,\n description: form.description.trim() || \"No description.\",\n masked: mask(secret),\n secret,\n scopes: form.scopes.length ? form.scopes : [\"read:orders\"],\n created: new Date().toISOString(),\n lastUsed: null,\n revoked: false,\n },\n ...prev,\n ]);\n setCreateOpen(false);\n setFreshSecret({ name, secret });\n message.success({ content: `${name} created — copy the key now.`, key: \"key\" });\n };\n\n const rotate = async (key: ApiKey) => {\n const res = await Confirm({\n title: `Rotate “${key.name}”?`,\n description: \"The current key stops working immediately. Update your integration with the new secret.\",\n intent: \"warning\",\n confirmText: \"Rotate key\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n const secret = randomSecret();\n setKeys((prev) => prev.map((k) => (k.id === key.id ? { ...k, secret, masked: mask(secret) } : k)));\n setFreshSecret({ name: key.name, secret });\n message.success({ content: `${key.name} rotated.`, key: \"key\" });\n }\n };\n\n const revoke = async (key: ApiKey) => {\n const res = await Confirm({\n title: `Revoke “${key.name}”?`,\n description: \"Requests using this key will fail with 401 until you issue a new one.\",\n intent: \"danger\",\n confirmText: \"Revoke key\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setKeys((prev) => prev.map((k) => (k.id === key.id ? { ...k, revoked: true } : k)));\n message.warning({ content: `${key.name} revoked.`, key: \"key\" });\n }\n };\n\n const remove = async (key: ApiKey) => {\n const res = await Confirm({\n title: `Delete “${key.name}”?`,\n description: \"The key record is removed from the list. This can't be undone.\",\n intent: \"danger\",\n confirmText: \"Delete key\",\n });\n if (res === true || (typeof res === \"object\" && res.confirmed)) {\n setKeys((prev) => prev.filter((k) => k.id !== key.id));\n message.info({ content: `${key.name} deleted.`, key: \"key\" });\n }\n };\n\n const columns: TableColumn<ApiKey>[] = [\n {\n key: \"name\",\n header: \"Key\",\n render: (k) => (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2, minWidth: 0 }}>\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>{k.name}</b>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>{k.description}</span>\n </div>\n ),\n },\n {\n key: \"masked\",\n header: \"Secret\",\n render: (k) => (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6 }}>\n <code style={{ font: \"var(--klun-text-label-xs)\", color: C_SUB, letterSpacing: \"0.02em\" }}>{k.masked}</code>\n <CopyButton\n size=\"sm\"\n variant=\"ghost\"\n value={k.secret}\n onCopied={() => message.success({ content: \"Key copied to the clipboard.\", key: \"key\" })}\n />\n </span>\n ),\n },\n {\n key: \"scopes\",\n header: \"Scopes\",\n render: (k) => (\n <span style={{ display: \"inline-flex\", flexWrap: \"wrap\", gap: 4 }}>\n {k.scopes.map((s) => (\n <Chip key={s} color={s === \"admin\" ? \"purple\" : s.startsWith(\"write\") ? \"orange\" : \"blue\"}>\n {s}\n </Chip>\n ))}\n </span>\n ),\n },\n {\n key: \"created\",\n header: \"Created\",\n sortable: true,\n render: (k) => <RelativeTime date={k.created} live={false} style={{ font: T_LABEL_SM, color: C_SUB }} />,\n },\n {\n key: \"lastUsed\",\n header: \"Last used\",\n render: (k) =>\n k.lastUsed ? (\n <RelativeTime date={k.lastUsed} style={{ font: T_LABEL_SM, color: C_SUB }} />\n ) : (\n <span style={{ font: T_LABEL_SM, color: C_SOFT }}>Never</span>\n ),\n },\n {\n key: \"status\",\n header: \"Status\",\n filters: [\n { label: \"Active\", value: \"active\" },\n { label: \"Revoked\", value: \"revoked\" },\n ],\n onFilter: (value, k) => (value === \"active\" ? !k.revoked : k.revoked),\n render: (k) =>\n k.revoked ? (\n <Badge color=\"gray\" variant=\"light\" size=\"small\" dot>\n Revoked\n </Badge>\n ) : (\n <Badge color=\"green\" variant=\"light\" size=\"small\" dot>\n Active\n </Badge>\n ),\n },\n {\n key: \"actions\",\n header: \"\",\n width: 60,\n align: \"right\",\n exportable: false,\n render: (k) => (\n <Dropdown\n align=\"right\"\n width={200}\n trigger={\n <Button kind=\"compact\" appearance=\"ghost\" icon={<i className=\"ri-more-2-line\" />} aria-label={`Actions for ${k.name}`} />\n }\n items={\n k.revoked\n ? [\n { label: \"Copy key\", icon: <i className=\"ri-file-copy-line\" /> },\n { divider: true, label: \"\" },\n { label: \"Delete record\", icon: <i className=\"ri-delete-bin-line\" />, danger: true, onClick: () => void remove(k) },\n ]\n : [\n { label: \"Copy key\", icon: <i className=\"ri-file-copy-line\" />, onClick: () => message.success({ content: \"Key copied.\", key: \"key\" }) },\n { label: \"Rotate key\", icon: <i className=\"ri-refresh-line\" />, onClick: () => void rotate(k) },\n { divider: true, label: \"\" },\n { label: \"Revoke key\", icon: <i className=\"ri-forbid-2-line\" />, danger: true, onClick: () => void revoke(k) },\n ]\n }\n />\n ),\n },\n ];\n\n return (\n <>\n {holder}\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(3, minmax(0, 1fr))\", gap: 12 }}>\n <Stat label=\"Active keys\" value={`${activeCount}`} hint={`of ${keys.length}`} icon=\"ri-key-2-line\" tone=\"primary\" />\n <Stat label=\"Requests this month\" value=\"1.24M\" icon=\"ri-pulse-line\" tone=\"information\" />\n <Stat label=\"Rate limit\" value=\"600 / min\" icon=\"ri-speed-up-line\" tone=\"success\" />\n </div>\n\n {freshSecret ? (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 10,\n padding: \"14px 16px\",\n borderRadius: \"var(--klun-radius-xl)\",\n background: \"var(--klun-state-success-lighter)\",\n border: \"1px solid var(--klun-state-success-light)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <i className=\"ri-shield-keyhole-line\" style={{ color: \"var(--klun-state-success-base)\", fontSize: 16 }} />\n <b style={{ font: T_LABEL_SM, color: \"var(--klun-text-strong-950)\" }}>\n “{freshSecret.name}” — copy your key now\n </b>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>It won't be shown again.</span>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <code\n style={{\n flex: 1,\n padding: \"8px 10px\",\n borderRadius: \"var(--klun-radius-lg)\",\n background: \"var(--klun-bg-white-0)\",\n border: `1px solid ${HAIRLINE}`,\n font: \"var(--klun-text-label-xs)\",\n color: \"var(--klun-text-strong-950)\",\n overflowWrap: \"anywhere\",\n }}\n >\n {freshSecret.secret}\n </code>\n <CopyButton size=\"md\" variant=\"stroke\" value={freshSecret.secret} onCopied={() => message.success({ content: \"Key copied.\", key: \"key\" })} />\n <Button size=\"small\" variant=\"neutral\" appearance=\"ghost\" onClick={() => setFreshSecret(null)}>\n Done\n </Button>\n </div>\n </div>\n ) : null}\n\n <Section\n title=\"Workspace keys\"\n subtitle=\"Keys inherit the permissions in their scopes — treat them like passwords.\"\n extra={\n <Button size=\"small\" leadingIcon={<i className=\"ri-add-line\" />} onClick={openCreate}>\n Create key\n </Button>\n }\n >\n <Table\n columns={columns}\n rows={keys}\n getRowId={(k) => k.id}\n sortable\n exportable={{ filename: \"api-keys.csv\" }}\n pagination={{ defaultPageSize: 6 }}\n />\n <div style={{ marginTop: 12, font: T_PARA_XS, color: C_SOFT }}>\n Rotate keys every 90 days and scope them to the minimum permissions a service needs.{\" \"}\n <a href=\"#api-docs\" style={{ color: \"var(--klun-primary-base)\" }}>\n Read the API docs\n </a>\n </div>\n </Section>\n\n <Modal\n open={createOpen}\n onClose={() => setCreateOpen(false)}\n title=\"Create API key\"\n description=\"Name the key after the system that will use it.\"\n okText=\"Create key\"\n onOk={create}\n width={520}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <Grid2>\n <Field label=\"Name\">\n <Input placeholder=\"Production storefront\" value={form.name} onChange={(e) => setForm((f) => ({ ...f, name: e.target.value }))} />\n </Field>\n <Field label=\"Expires\">\n <Select value={form.expiry} onChange={(e) => setForm((f) => ({ ...f, expiry: e.target.value }))}>\n <option value=\"30\">In 30 days</option>\n <option value=\"90\">In 90 days</option>\n <option value=\"365\">In a year</option>\n <option value=\"never\">Never</option>\n </Select>\n </Field>\n </Grid2>\n <Field label=\"Description\">\n <Input placeholder=\"Where will this key be used?\" value={form.description} onChange={(e) => setForm((f) => ({ ...f, description: e.target.value }))} />\n </Field>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <span style={{ font: \"var(--klun-text-label-sm)\", color: \"var(--klun-text-strong-950)\" }}>Scopes</span>\n {SCOPES.map((s) => {\n const on = form.scopes.includes(s.id);\n return (\n <label\n key={s.id}\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 10,\n padding: \"8px 10px\",\n borderRadius: \"var(--klun-radius-lg)\",\n border: `1px solid ${on ? \"var(--klun-primary-base)\" : HAIRLINE}`,\n background: on ? \"var(--klun-primary-lighter)\" : \"transparent\",\n cursor: \"pointer\",\n }}\n >\n <Checkbox\n size=\"small\"\n checked={on}\n onChange={(checked) =>\n setForm((f) => ({\n ...f,\n scopes: checked ? [...f.scopes, s.id] : f.scopes.filter((x) => x !== s.id),\n }))\n }\n />\n <span style={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\n <code style={{ font: \"var(--klun-text-label-xs)\", color: \"var(--klun-text-strong-950)\" }}>{s.label}</code>\n <span style={{ font: T_PARA_XS, color: C_SUB }}>{s.desc}</span>\n </span>\n </label>\n );\n })}\n </div>\n </div>\n </Modal>\n </>\n );\n}\n","// Klun UI · Metronic example — settings.\n// Port of the design-system `design-system/metronic/examples/` settings card:\n// breadcrumb + left nav column with five fully interactive tabs — profile,\n// security, notifications, billing and API keys. Root carries\n// `data-mode=\"metronic\"` (the Metronic 9.0 skin); remove it to fall back to\n// the default theme.\nimport { useEffect, useState } from \"react\";\nimport { Badge, Breadcrumb } from \"../../index\";\nimport { SETTINGS_NAV } from \"./shared\";\nimport type { SettingsSectionKey } from \"./shared\";\nimport { ProfileSection } from \"./ProfileSection\";\nimport { AccountSection } from \"./AccountSection\";\nimport { NotificationsSection } from \"./NotificationsSection\";\nimport { BillingSection } from \"./BillingSection\";\nimport { ApiKeysSection } from \"./ApiKeysSection\";\n\nexport interface MetronicSettingsTemplateProps {\n /** Controlled active tab. */\n section?: SettingsSectionKey;\n /** Initial tab in uncontrolled mode. Default `\"profile\"`. */\n defaultSection?: SettingsSectionKey;\n /** Fired when the user picks another tab (controlled mode). */\n onSectionChange?: (section: SettingsSectionKey) => void;\n /** Cap the page column — `\"none\"` (default) fills the host width. */\n maxWidth?: number | string;\n}\n\nexport function MetronicSettingsTemplate({\n section,\n defaultSection = \"profile\",\n onSectionChange,\n maxWidth = \"none\",\n}: MetronicSettingsTemplateProps = {}) {\n const [internal, setInternal] = useState<SettingsSectionKey>(defaultSection);\n const active = section ?? internal;\n const [dirty, setDirty] = useState(false);\n\n // Switching tabs throws away the previous tab's unsaved edits.\n useEffect(() => setDirty(false), [active]);\n\n const meta = SETTINGS_NAV.find((n) => n.key === active) ?? SETTINGS_NAV[0];\n\n const pick = (key: SettingsSectionKey) => {\n setInternal(key);\n onSectionChange?.(key);\n };\n\n return (\n <div\n data-mode=\"metronic\"\n data-density=\"compact\"\n style={{\n minHeight: \"100%\",\n overflow: \"auto\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n <div\n style={{\n maxWidth,\n margin: \"0 auto\",\n padding: 24,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 20,\n }}\n >\n <div>\n <Breadcrumb items={[{ label: \"Home\" }, { label: \"Settings\" }]} />\n <div style={{ display: \"flex\", alignItems: \"flex-end\", justifyContent: \"space-between\", gap: 16, marginTop: 8 }}>\n <div>\n <h1 style={{ margin: 0, font: \"var(--klun-text-title-h4)\", color: \"var(--klun-text-strong-950)\" }}>\n Settings\n </h1>\n <p style={{ margin: \"4px 0 0\", font: \"var(--klun-text-paragraph-sm)\", color: \"var(--klun-text-sub-600)\" }}>\n {meta.description}\n </p>\n </div>\n {dirty ? (\n <Badge color=\"orange\" variant=\"light\" dot>\n Unsaved changes\n </Badge>\n ) : (\n <Badge color=\"green\" variant=\"light\" dot>\n All changes saved\n </Badge>\n )}\n </div>\n </div>\n\n <div style={{ display: \"grid\", gridTemplateColumns: \"220px minmax(0, 1fr)\", gap: 20, alignItems: \"start\" }}>\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: 2, position: \"sticky\", top: 24 }}>\n {SETTINGS_NAV.map((item) => {\n const on = active === item.key;\n return (\n <button\n key={item.key}\n type=\"button\"\n aria-current={on ? \"page\" : undefined}\n onClick={() => pick(item.key)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n height: 36,\n padding: \"0 12px\",\n border: \"none\",\n borderRadius: \"var(--klun-radius-lg)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n background: on ? \"var(--klun-bg-white-0)\" : \"transparent\",\n boxShadow: on ? \"inset 0 0 0 1px var(--klun-stroke-soft-200)\" : \"none\",\n color: on ? \"var(--klun-text-strong-950)\" : \"var(--klun-text-sub-600)\",\n font: \"var(--klun-text-label-sm)\",\n }}\n >\n <i\n className={item.icon}\n style={{ fontSize: 16, color: on ? \"var(--klun-primary-base)\" : \"var(--klun-icon-sub-600)\" }}\n />\n {item.label}\n </button>\n );\n })}\n </nav>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 20 }}>\n {active === \"profile\" ? <ProfileSection onDirtyChange={setDirty} /> : null}\n {active === \"account\" ? <AccountSection /> : null}\n {active === \"notifications\" ? <NotificationsSection onDirtyChange={setDirty} /> : null}\n {active === \"billing\" ? <BillingSection /> : null}\n {active === \"api\" ? <ApiKeysSection /> : null}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport { ProfileSection } from \"./ProfileSection\";\nexport type { ProfileSectionProps } from \"./ProfileSection\";\nexport { AccountSection } from \"./AccountSection\";\nexport { NotificationsSection } from \"./NotificationsSection\";\nexport type { NotificationsSectionProps } from \"./NotificationsSection\";\nexport { BillingSection } from \"./BillingSection\";\nexport { ApiKeysSection } from \"./ApiKeysSection\";\nexport { SETTINGS_NAV } from \"./shared\";\nexport type { SettingsSectionKey, SettingsNavItem } from \"./shared\";\n","// Klun UI · Metronic example — admin app shell.\n// Port of the design-system Metronic examples onto klun-ui components, inside\n// the Metronic 9.0 skin (`data-mode=\"metronic\"`). The sidebar drives a set of\n// business screens: dashboard, orders, products, customers, reports\n// (sales / traffic) and settings. Copy this folder as a starting point and\n// drop the attribute to fall back to the default theme.\nimport { useEffect, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { CommandMenu, ConfigProvider, useMessage } from \"../../index\";\nimport type { CommandGroup, CommandItem } from \"../../index\";\nimport { MetronicSidebar } from \"./Sidebar\";\nimport { MetronicTopBar } from \"./TopBar\";\nimport type { DemoNotification, DemoSkin } from \"./TopBar\";\nimport { RTL_LOCALES, demoTextFor, localeByCode } from \"./i18n\";\nimport { DepartmentsScreen } from \"./DepartmentsScreen\";\nimport { RoleTreeScreen } from \"./RoleTreeScreen\";\nimport { TasksScreen } from \"./TasksScreen\";\nimport { AuditScreen } from \"./AuditScreen\";\nimport { DEPARTMENTS } from \"./usersModel\";\nimport { DashboardScreen } from \"./DashboardScreen\";\nimport { OrdersScreen } from \"./OrdersScreen\";\nimport { ProductsScreen } from \"./ProductsScreen\";\nimport { CustomersScreen } from \"./CustomersScreen\";\nimport { UsersScreen } from \"./UsersScreen\";\nimport { RolesScreen } from \"./RolesScreen\";\nimport { ReportsScreen } from \"./ReportsScreen\";\nimport { MetronicSettingsTemplate } from \"../metronic-settings\";\n\nexport { MetronicSidebar } from \"./Sidebar\";\nexport type { MetronicSidebarProps, MetronicNavItem, MetronicNavChild } from \"./Sidebar\";\nexport { MetronicTopBar } from \"./TopBar\";\nexport type { DemoSkin, DemoNotification, MetronicTopBarProps } from \"./TopBar\";\nexport { DEMO_SKINS } from \"./TopBar\";\nexport { DashboardScreen } from \"./DashboardScreen\";\nexport type { DashboardScreenProps } from \"./DashboardScreen\";\nexport { OrdersScreen } from \"./OrdersScreen\";\nexport type { OrdersScreenProps } from \"./OrdersScreen\";\nexport { ProductsScreen } from \"./ProductsScreen\";\nexport { ProductWizardPage } from \"./ProductWizardPage\";\nexport type { ProductWizardPageProps } from \"./ProductWizardPage\";\nexport { CATEGORIES, STATUS_COLOR, deriveStatus, emptyDraft } from \"./productModel\";\nexport type { Product, ProductDraft, ProductStatus } from \"./productModel\";\nexport { CustomersScreen } from \"./CustomersScreen\";\nexport { UsersScreen } from \"./UsersScreen\";\nexport { RolesScreen } from \"./RolesScreen\";\nexport { ReportsScreen } from \"./ReportsScreen\";\nexport type { ReportsView } from \"./ReportsScreen\";\nexport { DepartmentsScreen } from \"./DepartmentsScreen\";\nexport type { DepartmentsScreenProps } from \"./DepartmentsScreen\";\nexport { RoleTreeScreen } from \"./RoleTreeScreen\";\nexport type { RoleTreeScreenProps } from \"./RoleTreeScreen\";\nexport { TasksScreen } from \"./TasksScreen\";\nexport { AuditScreen } from \"./AuditScreen\";\nexport type { AuditScreenProps } from \"./AuditScreen\";\nexport { UserDetailDrawer } from \"./UserDetailDrawer\";\nexport type { UserDetailDrawerProps } from \"./UserDetailDrawer\";\nexport { DepartmentFilter } from \"./DepartmentFilter\";\nexport type { DepartmentFilterProps } from \"./DepartmentFilter\";\nexport {\n ALL_PERMISSIONS,\n DEPARTMENTS,\n INITIAL_USERS,\n ROLE_COLOR,\n ROLE_IDS,\n ROLE_PERMISSIONS,\n USER_STATUSES,\n USER_STATUS_COLOR,\n departmentChildren,\n departmentDepth,\n departmentIdsWithChildren,\n departmentName,\n departmentPath,\n effectivePermissions,\n rolePermissions,\n} from \"./usersModel\";\nexport type { DemoUser, DepartmentOption, PermissionOverride, RoleId, UserActivity, UserSession, UserStatus } from \"./usersModel\";\nexport { PageHeader, useDemoText, demoTextFor, DEMO_TEXT, LOCALE_OPTIONS, RTL_LOCALES } from \"./i18n\";\nexport type { DemoText, DemoPageCopy, PageHeaderProps } from \"./i18n\";\nexport { Kpi, MiniStat } from \"./widgets\";\nexport type { KpiProps, MiniStatProps } from \"./widgets\";\nexport { Sparkline, BarChart, DonutChart, AreaChart } from \"./charts\";\nexport type { SparklineProps, BarChartProps, DonutChartProps, AreaChartProps, ChartTone } from \"./charts\";\n\nconst NAV_KEYS = [\n \"dashboard\",\n \"orders\",\n \"products\",\n \"customers\",\n \"users\",\n \"roles\",\n \"roleTree\",\n \"departments\",\n \"tasks\",\n \"audit\",\n \"sales\",\n \"traffic\",\n \"settings\",\n];\n\nconst NAV_ICONS: Record<string, string> = {\n dashboard: \"ri-dashboard-line\",\n orders: \"ri-shopping-bag-line\",\n products: \"ri-archive-line\",\n customers: \"ri-team-line\",\n users: \"ri-user-3-line\",\n roles: \"ri-shield-keyhole-line\",\n roleTree: \"ri-git-branch-line\",\n departments: \"ri-node-tree\",\n tasks: \"ri-timer-2-line\",\n audit: \"ri-file-shield-2-line\",\n sales: \"ri-bar-chart-box-line\",\n traffic: \"ri-line-chart-line\",\n settings: \"ri-settings-3-line\",\n};\n\nconst INITIAL_NOTIFICATIONS: DemoNotification[] = [\n {\n id: \"n1\",\n title: \"New order #A-1043\",\n body: \"Priya Nair placed a $264.00 order.\",\n time: new Date(Date.now() - 1000 * 60 * 4).toISOString(),\n icon: \"ri-shopping-bag-3-line\",\n tone: \"primary\",\n read: false,\n },\n {\n id: \"n2\",\n title: \"Payment failed\",\n body: \"Card declined on order #A-1035.\",\n time: new Date(Date.now() - 1000 * 60 * 42).toISOString(),\n icon: \"ri-error-warning-line\",\n tone: \"error\",\n read: false,\n },\n {\n id: \"n3\",\n title: \"Stock running low\",\n body: \"Aurora desk lamp — 4 units left.\",\n time: new Date(Date.now() - 1000 * 60 * 60 * 3).toISOString(),\n icon: \"ri-alert-line\",\n tone: \"warning\",\n read: false,\n },\n {\n id: \"n4\",\n title: \"Weekly report ready\",\n body: \"Revenue is up 12.4% week over week.\",\n time: new Date(Date.now() - 1000 * 60 * 60 * 26).toISOString(),\n icon: \"ri-line-chart-line\",\n tone: \"success\",\n read: true,\n },\n];\n\nfunction Placeholder({ name }: { name: string }) {\n return (\n <div\n style={{\n padding: 64,\n textAlign: \"center\",\n color: \"var(--klun-text-soft-400)\",\n font: \"var(--klun-text-paragraph-lg)\",\n }}\n >\n <i className=\"ri-inbox-line\" style={{ fontSize: 40, display: \"block\", marginBottom: 12 }} />\n “{name}” isn't part of this demo.\n </div>\n );\n}\n\n/** Platform-appropriate shortcut label for the palette. */\nconst IS_MAC =\n typeof navigator !== \"undefined\" && /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent);\nconst PALETTE_HINT = IS_MAC ? \"⌘K\" : \"Ctrl K\";\n\nexport function MetronicDashboardTemplate() {\n const [message, holder] = useMessage();\n const [active, setActive] = useState(\"dashboard\");\n\n /* ---- appearance (theme / density / skin) ---- */\n const [theme, setTheme] = useState<\"light\" | \"dark\">(\"light\");\n const [density, setDensity] = useState<\"default\" | \"compact\">(\"compact\");\n const [skin, setSkin] = useState<DemoSkin>(\"metronic\");\n\n /* ---- notification centre ---- */\n const [notifications, setNotifications] = useState<DemoNotification[]>(INITIAL_NOTIFICATIONS);\n\n /* ---- locale (component packs + demo copy) ---- */\n const [localeCode, setLocaleCode] = useState(\"en-US\");\n const dir = RTL_LOCALES.includes(localeCode) ? \"rtl\" : \"ltr\";\n const t = useMemo(() => demoTextFor(localeCode), [localeCode]);\n\n /* ---- command palette ---- */\n const [paletteOpen, setPaletteOpen] = useState(false);\n\n /* ---- \"New order\" bounced from the top bar into the orders screen ---- */\n const [orderRequest, setOrderRequest] = useState(0);\n\n /* ---- cross-screen drill-downs: departments → team → audit ---- */\n const [usersDepartment, setUsersDepartment] = useState<string | undefined>();\n const [auditActor, setAuditActor] = useState<string | undefined>();\n\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\n e.preventDefault();\n setPaletteOpen(true);\n }\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, []);\n\n const newOrder = () => {\n setActive(\"orders\");\n setOrderRequest((n) => n + 1);\n };\n\n const unread = notifications.filter((n) => !n.read).length;\n\n const commandGroups: CommandGroup[] = useMemo(\n () => [\n {\n label: \"Navigate\",\n items: NAV_KEYS.map((key) => ({\n id: `go:${key}`,\n label: t.nav[key] ?? key,\n icon: <i className={NAV_ICONS[key]} />,\n })),\n },\n {\n label: \"Actions\",\n items: [\n { id: \"act:new-order\", label: t.shell.newOrder, icon: <i className=\"ri-add-line\" />, shortcut: \"O\" },\n { id: \"act:new-product\", label: \"Add product\", icon: <i className=\"ri-archive-line\" />, shortcut: \"P\" },\n { id: \"act:invite\", label: \"Invite teammate\", icon: <i className=\"ri-user-add-line\" />, shortcut: \"I\" },\n {\n id: \"act:theme\",\n label: theme === \"dark\" ? t.shell.lightTheme : t.shell.darkTheme,\n icon: <i className=\"ri-contrast-2-line\" />,\n },\n {\n id: \"act:density\",\n label: density === \"compact\" ? t.shell.comfortable : t.shell.compact,\n icon: <i className=\"ri-ruler-2-line\" />,\n },\n { id: \"act:signout\", label: t.shell.signOut, icon: <i className=\"ri-logout-box-r-line\" /> },\n ],\n },\n {\n label: \"Recent\",\n items: [\n { id: \"go:orders\", label: \"#A-1042 · Anna Krause\", icon: <i className=\"ri-history-line\" /> },\n { id: \"go:products\", label: \"Aurora desk lamp\", icon: <i className=\"ri-history-line\" /> },\n ],\n },\n ],\n [theme, density, t],\n );\n\n const runCommand = (item: CommandItem) => {\n const id = item.id;\n if (id.startsWith(\"go:\")) {\n // Recent entries reuse the screen keys — jump straight to the screen.\n setActive(id.slice(3));\n return;\n }\n switch (id) {\n case \"act:new-order\":\n newOrder();\n break;\n case \"act:new-product\":\n setActive(\"products\");\n message.info({ content: \"Use “Add product” on the products page.\", key: \"palette\" });\n break;\n case \"act:invite\":\n setActive(\"users\");\n message.info({ content: \"Use “Invite user” on the team page.\", key: \"palette\" });\n break;\n case \"act:theme\":\n setTheme((t) => (t === \"dark\" ? \"light\" : \"dark\"));\n break;\n case \"act:density\":\n setDensity((d) => (d === \"compact\" ? \"default\" : \"compact\"));\n break;\n case \"act:signout\":\n message.success({ content: \"Signed out of the demo workspace.\", key: \"auth\" });\n break;\n default:\n break;\n }\n };\n\n const renderScreen = (): ReactNode => {\n switch (active) {\n case \"orders\":\n return <OrdersScreen createRequest={orderRequest} />;\n case \"departments\":\n return (\n <DepartmentsScreen\n onOpenTeam={(name) => {\n setUsersDepartment(DEPARTMENTS.find((d) => d.name === name)?.id ?? \"all\");\n setActive(\"users\");\n }}\n />\n );\n case \"roleTree\":\n return <RoleTreeScreen onOpenRoles={() => setActive(\"roles\")} />;\n case \"tasks\":\n return <TasksScreen />;\n case \"audit\":\n return <AuditScreen initialActor={auditActor} />;\n case \"users\":\n return (\n <UsersScreen\n initialDepartment={usersDepartment}\n onOpenAudit={(actor) => {\n setAuditActor(actor);\n setActive(\"audit\");\n }}\n onOpenRoles={() => setActive(\"roles\")}\n onOpenDepartments={() => setActive(\"departments\")}\n />\n );\n case \"products\":\n return <ProductsScreen />;\n case \"customers\":\n return <CustomersScreen />;\n case \"roles\":\n return <RolesScreen />;\n case \"reports\":\n case \"sales\":\n return <ReportsScreen view=\"sales\" />;\n case \"traffic\":\n return <ReportsScreen view=\"traffic\" />;\n case \"settings\":\n return <MetronicSettingsTemplate />;\n case \"dashboard\":\n return <DashboardScreen onViewAllOrders={() => setActive(\"orders\")} />;\n default:\n return <Placeholder name={active} />;\n }\n };\n\n return (\n <ConfigProvider locale={localeByCode(localeCode)} dir={dir}>\n <div\n data-mode={skin}\n data-density={density}\n data-theme={theme}\n style={{\n display: \"flex\",\n height: \"100%\",\n background: \"var(--klun-bg-weak-50)\",\n color: \"var(--klun-text-strong-950)\",\n }}\n >\n {holder}\n <MetronicSidebar active={active} onNavigate={setActive} />\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\" }}>\n <MetronicTopBar\n onOpenPalette={() => setPaletteOpen(true)}\n paletteHint={PALETTE_HINT}\n theme={theme}\n onThemeChange={setTheme}\n density={density}\n onDensityChange={setDensity}\n skin={skin}\n onSkinChange={setSkin}\n localeCode={localeCode}\n onLocaleChange={(code) => {\n setLocaleCode(code);\n message.success({ content: `Locale switched to ${code}.`, key: \"locale\" });\n }}\n notifications={notifications}\n onNotificationClick={(n) => {\n setNotifications((prev) => prev.map((x) => (x.id === n.id ? { ...x, read: true } : x)));\n if (n.id === \"n1\") setActive(\"orders\");\n if (n.id === \"n3\") setActive(\"products\");\n }}\n onMarkAllRead={() => {\n setNotifications((prev) => prev.map((n) => ({ ...n, read: true })));\n message.success({ content: \"All notifications marked as read.\", key: \"notify\" });\n }}\n onNavigate={setActive}\n onNewOrder={newOrder}\n onSignOut={() => message.success({ content: \"Signed out of the demo workspace.\", key: \"auth\" })}\n />\n <main style={{ flex: 1, overflow: \"auto\" }}>{renderScreen()}</main>\n </div>\n\n <CommandMenu\n open={paletteOpen}\n onClose={() => setPaletteOpen(false)}\n groups={commandGroups}\n placeholder={`${t.shell.search} (${PALETTE_HINT}${unread ? ` · ${unread} unread` : \"\"})`}\n onSelect={runCommand}\n />\n </div>\n </ConfigProvider>\n );\n}\n"]}