Satria
Notebook
Lab

Our smallest site moves to Base UI first

satria.ai uses four components. Taskaid uses thirty-seven. We're moving the small one first, to learn the new rules where mistakes are cheap.

Taskaid uses shadcn's Maia style, built on Radix. shadcn also ships Maia on Base UI, with the same classes on different primitives underneath. satria.ai now uses that version, so on paper the two sites should look the same.

The first real difference showed up before we wrote any code. On Radix, a link that looks like a button is a Button with asChild. Base UI's docs say links shouldn't be rendered through Button at all: a link keeps its link semantics, and borrows the button's styles instead.

// Before, on Radix
<Button asChild>
  <Link href="/blog">Read the notebook</Link>
</Button>

// After, on Base UI
<Link href="/blog" className={buttonVariants()}>
  Read the notebook
</Link>

Every call to action on satria.ai is a link, so the site exercises this pattern everywhere. Taskaid has 34 places that use asChild. What satria.ai can't tell us is how dialogs, menus and popovers behave, because it has none. That part of the move stays with Taskaid.