Blog
Notes on building cascivo: the AI layer, signal-driven reactivity, modern CSS, and what shipping an owned-code design system actually looks like.
- Giving your AI coding agent a component library it can’t hallucinate — AI agents write plausible-looking UI code that invents props, colors, and class names that don’t exist. cascivo ships a machine-readable manifest per component so agents can select, scaffold, and validate their own output instead of guessing.
- Signals vs. useState: what actually changes — cascivo components use signals instead of useState — not as a style preference, but because it changes what re-renders. Here’s what that means in practice, and where the line for "genuine internal state" actually sits.
- Owned-code components: what shadcn got right, and where we took it further — shadcn/ui’s biggest idea wasn’t a component set — it was making you own the code instead of depending on it. cascivo keeps that idea and builds the rest of what you’d otherwise have to hand-roll on top of it.
- Do you still need a component library with modern CSS? — @layer, @container, and :has() close real gaps that used to require a utility framework or JavaScript. Here’s what they replace, in code, and why "modern CSS is enough" and "you still want a component library" aren’t actually in tension.
- Building an accessible command palette in React — A Cmd/Ctrl+K command palette looks simple until you get to focus trapping, screen-reader announcements, and keyboard navigation. Here’s what actually has to be right, and a working example.
- Theming a React app with CSS custom properties, no build step — No config file, no build plugin, no CSS-in-JS runtime. A three-tier token system and a data-theme attribute — here’s how far you can get with plain CSS custom properties.
- cascivo vs IBM Carbon: same enterprise bar, different architecture — IBM Carbon is a mature, genuinely accessible enterprise design system — it sets a real bar. cascivo tries to clear the same bar with a different architecture: copy-in ownership and native CSS instead of an npm dependency and SCSS.