diff --git a/.claude/rules/emcn-components.md b/.claude/rules/emcn-components.md index 50e7684363f..cab88b47f67 100644 --- a/.claude/rules/emcn-components.md +++ b/.claude/rules/emcn-components.md @@ -20,7 +20,7 @@ The menu surface intentionally diverges from the pill: `dropdown-menu.tsx` items ## Component catalogue -- **`Chip` / `ChipLink`** — the pill button (` - )} - - ) : ( - - )} - +
+ {item.index ? ( + { + if (drawerOpen) { + setManualOpen(null) + setOpen(false) + } else if (active && hasChildren) { + event.preventDefault() + toggleOpen() + } else { + setManualOpen(null) + } + }} + > + {item.name} + + ) : ( + + {item.name} + + )} {hasChildren && (
-
{children}
-
    {children}
+
{children}
)} @@ -160,33 +121,19 @@ export function SidebarFolder({ item, children }: { item: Folder; children: Reac ) } -/** - * Group label. Mirrors the app sidebar's section header: a 12px `--text-muted` - * row at normal weight in sentence case, with the group's 16px top gap carried - * by the label itself (the app's `SIDEBAR_SECTION_GAP_CLASS`). Groups are told - * apart by that gap alone — the app draws no rule between them. - */ -export function SidebarSeparator({ item }: { item: Separator }) { +export function SidebarSeparator({ item }: SidebarSeparatorProps) { return (
-

{item.name}

+

{item.name}

) } -function checkHasActiveChild(node: Folder, pathname: string): boolean { - if (node.index && isActive(node.index.url, pathname)) { - return true - } - - for (const child of node.children) { - if (child.type === 'page' && isActive(child.url, pathname)) { - return true - } - if (child.type === 'folder' && checkHasActiveChild(child, pathname)) { - return true - } - } - - return false +function hasActiveDescendant(node: Folder, pathname: string): boolean { + if (node.index?.url === pathname) return true + return node.children.some((child) => + child.type === 'page' + ? child.url === pathname + : child.type === 'folder' && hasActiveDescendant(child, pathname) + ) } diff --git a/apps/docs/components/footer/footer.tsx b/apps/docs/components/footer/footer.tsx index 4009cc1de72..342f0b733ab 100644 --- a/apps/docs/components/footer/footer.tsx +++ b/apps/docs/components/footer/footer.tsx @@ -12,7 +12,7 @@ import { SIM_SITE_URL } from '@/lib/urls' */ const LINK_CLASS = - 'text-sm text-[var(--text-muted)] transition-colors hover:text-[var(--text-primary)]' + 'text-sm text-[var(--text-secondary)] transition-colors hover:text-[var(--text-primary)]' interface FooterItem { label: string @@ -23,7 +23,7 @@ interface FooterItem { const PRODUCT_LINKS: FooterItem[] = [ { label: 'Enterprise', href: `${SIM_SITE_URL}/enterprise`, external: true }, { label: 'Chat', href: '/chat' }, - { label: 'Workflows', href: '/introduction' }, + { label: 'Workflows', href: '/workflows' }, { label: 'Knowledge Base', href: '/knowledgebase' }, { label: 'Tables', href: '/tables' }, { label: 'MCP', href: '/agents/mcp' }, @@ -107,7 +107,7 @@ const LEGAL_LINKS: FooterItem[] = [ function FooterColumn({ title, items }: { title: string; items: FooterItem[] }) { return (
-

{title}

+

{title}

{items.map(({ label, href, external }) => external ? ( @@ -169,7 +169,9 @@ export function Footer() { -

© 2026 Sim. All rights reserved.

+

+ © 2026 Sim. All rights reserved. +

) diff --git a/apps/docs/components/navbar/navbar.tsx b/apps/docs/components/navbar/navbar.tsx index fe62a1df658..f8b0997cc01 100644 --- a/apps/docs/components/navbar/navbar.tsx +++ b/apps/docs/components/navbar/navbar.tsx @@ -71,7 +71,7 @@ export function Navbar() { paddingRight: 'calc(var(--toc-offset) + var(--nav-inset))', }} > - + @@ -106,7 +106,7 @@ export function Navbar() { '-mb-px relative flex items-center border-b text-sm tracking-[-0.01em] transition-colors', isActive ? 'border-[var(--text-muted)] font-medium text-[var(--text-primary)]' - : 'border-transparent font-normal text-[var(--text-muted)] hover:border-[var(--border-1)] hover:text-[var(--text-secondary)]' + : 'border-transparent font-normal text-[var(--text-secondary)] hover:border-[var(--border-1)] hover:text-[var(--text-primary)]' )} > {/* Invisible bold text reserves width to prevent layout shift */} diff --git a/apps/docs/components/ui/block-info-card.tsx b/apps/docs/components/ui/block-info-card.tsx index 39f3c25fbd2..d20380c3d93 100644 --- a/apps/docs/components/ui/block-info-card.tsx +++ b/apps/docs/components/ui/block-info-card.tsx @@ -46,6 +46,7 @@ export function BlockInfoCard({ return (