Obra shadcn/ui Pro Figma + React

Go from components to complete pages

Everything in the Community kit, plus 100+ Pro Blocks, all 8 shadcn/ui styles, React equivalents and two plugins that connect your designs to code.

One-time purchase with lifetime access and all future updates. View all plans

The e-commerce home Pro Block: a sports store with a hero photo and product sections

100+ Pro Blocks

Pro blocks in 3 categories: marketing, application UI and e-commerce, built from the kit's own components and variables so they follow your theme.

CSS Export plugin

Export your Figma variables to shadcn/ui-ready CSS and design tokens, including W3C Design Tokens 1.0. Read more.

React Pro Blocks

All Pro Blocks are also available as React code. Buying the Figma kit gives you access to our private shadcn/ui registry. About React Pro Blocks.

All 8 shadcn/⁠ui styles

Community includes Nova; Pro gives you all of them: Nova, Vega, Rhea, Luma, Mira, Lyra, Sera and Maia, each in its own file, in light and dark mode.

All shadcn/⁠ui components

Every shadcn/ui component recreated in Figma, with deep use of component properties and slots — including the newest ones like Message, Questionnaire, Trace and Code Block.

Swap icon sets automatically

Easily switch to other icon sets like Phosphor and Tabler Icons with our shadcn/ui Create plugin.

Included

Pro Blocks in Figma & React

Get your work done faster with Pro Blocks across 3 categories. Here's a preview; the kit includes many more blocks ready to use.

A file meant to be used as a working design library, not a demo

Figma's Local variables window on the shadcn colors collection: each semantic color aliases a theme color, with a light (shadcn) and a dark (shadcn-dark) mode side by side

CSS Export plugin

Your Figma theme, straight to code

Turn your Figma variables into a globals.css file that drops straight into your shadcn/ui project. Also exports design tokens as JSON and Style Dictionary.

Included with every Pro license.

Obra shadcn/ui Pro CSS Export 2.0

Base shadcn (globals.css)

  • shadcn
  • shadcn

Obra Extended

  • shadcn
  • Enable the typography collection above to use this option.

@import "tailwindcss";
@import "tw-animate-css";
@import "shadcn/tailwind.css";

@custom-variant dark (&:is(.dark *));

@theme inline {
    --font-heading: Geist, sans-serif;
    --font-sans: Geist, sans-serif;
    --font-mono: "Geist Mono", monospace;
    --color-sidebar-ring: var(--sidebar-ring);
    --color-sidebar-border: var(--sidebar-border);
    --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
    --color-sidebar-accent: var(--sidebar-accent);
    --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
    --color-sidebar-primary: var(--sidebar-primary);
    --color-sidebar-foreground: var(--sidebar-foreground);
    --color-sidebar: var(--sidebar);
    --color-ring: var(--ring);
    --color-input: var(--input);
    --color-border: var(--border);
    --color-destructive: var(--destructive);
    --color-accent-foreground: var(--accent-foreground);
    --color-accent: var(--accent);
    --color-muted-foreground: var(--muted-foreground);
    --color-muted: var(--muted);
    --color-secondary-foreground: var(--secondary-foreground);
    --color-secondary: var(--secondary);
    --color-primary-foreground: var(--primary-foreground);
    --color-primary: var(--primary);
    --color-popover-foreground: var(--popover-foreground);
    --color-popover: var(--popover);
    --color-card-foreground: var(--card-foreground);
    --color-card: var(--card);
    --color-foreground: var(--foreground);
    --color-background: var(--background);
    --radius-sm: calc(var(--radius) * 0.6);
    --radius-md: calc(var(--radius) * 0.8);
    --radius-lg: var(--radius);
    --radius-xl: calc(var(--radius) * 1.4);
    --radius-2xl: calc(var(--radius) * 1.8);
    --radius-3xl: calc(var(--radius) * 2.2);
    --radius-4xl: calc(var(--radius) * 2.6);
}

:root {
    --background: oklch(1 0 0);
    --foreground: oklch(0 0 0);
    --card: oklch(1 0 0);
    --card-foreground: oklch(0.145 0 0);
    --popover: oklch(1 0 0);
    --popover-foreground: oklch(0.145 0 0);
    --primary: oklch(0.205 0 0);
    --primary-foreground: oklch(1 0 0);
    --secondary: oklch(0.97 0 0);
    --secondary-foreground: oklch(0.205 0 0);
    --muted: oklch(0.97 0 0);
    --muted-foreground: oklch(0.556 0 0);
    --accent: oklch(0.97 0 0);
    --accent-foreground: oklch(0 0 0);
    --destructive: oklch(0.577 0.215 27.325);
    --border: oklch(0.922 0 0);
    --input: oklch(0.922 0 0);
    --ring: oklch(0.87 0 0);
    --radius: 0.625rem;
    --sidebar: oklch(0.985 0 0);
    --sidebar-foreground: oklch(0.371 0 0);
    --sidebar-primary: oklch(0.371 0 0);
    --sidebar-primary-foreground: oklch(1 0 0);
    --sidebar-accent: oklch(0.97 0 0);
    --sidebar-accent-foreground: oklch(0.205 0 0);
    --sidebar-border: oklch(0.922 0 0);
    --sidebar-ring: oklch(0.87 0 0);
}

.dark {
    --background: oklch(0.145 0 0);
    --foreground: oklch(1 0 0);
    --card: oklch(0.269 0 0);
    --card-foreground: oklch(1 0 0);
    --popover: oklch(0.145 0 0);
    --popover-foreground: oklch(1 0 0);
    --primary: oklch(0.922 0 0);
    --primary-foreground: oklch(0.145 0 0);
    --secondary: oklch(0.371 0 0);
    --secondary-foreground: oklch(0.97 0 0);
    --muted: oklch(0.205 0 0);
    --muted-foreground: oklch(0.715 0 0);
    --accent: oklch(0.205 0 0);
    --accent-foreground: oklch(0.97 0 0);
    --destructive: oklch(0.711 0.166 22.216);
    --border: oklch(0.371 0 0);
    --input: oklch(0.371 0 0);
    --ring: oklch(0.371 0 0);
    --sidebar: oklch(0.145 0 0);
    --sidebar-foreground: oklch(0.87 0 0);
    --sidebar-primary: oklch(0.439 0 0);
    --sidebar-primary-foreground: oklch(0.87 0 0);
    --sidebar-accent: oklch(0.205 0 0);
    --sidebar-accent-foreground: oklch(0.97 0 0);
    --sidebar-border: oklch(0.269 0 0);
    --sidebar-ring: oklch(0.371 0 0);
}

@layer base {
  * {
    @apply border-border outline-ring/50;
    }
  body {
    @apply bg-background text-foreground;
    }
  html {
    @apply font-sans;
    }
}
Copied to clipboard

globals.css or plain CSS

A Tailwind v4 globals.css in the shape shadcn/ui expects. No Tailwind in your project? Switch to Vanilla for plain :root and .dark variables.

Light, dark and your brands

Name a mode shadcn-dark or brand-a-dark and the plugin pairs it into a .dark block. Add a mode per brand and export each one from the same file.

Your own type styles

Add a type style to the typography collection, like overline/font-size, and it exports as a text-overline utility next to text-heading-1.

Font loading code

Generates the Google Fonts links for head.html and the next/font setup for a Next.js layout.tsx.

Tokens for other platforms

Exports the same variables as Design Tokens 1.0 (W3C DTCG) JSON and as Style Dictionary JSON.

All 8 shadcn/ui styles

8 styles, each in its own file: a conscious decision

Many kits put all 8 shadcn/ui styles in one Figma file, as variable modes. It looks great in a demo, but in practice it's slow and a pain to work with: every variable carries 8 values, and you end up with far too many of them. So Obra shadcn/ui Pro gives you a separate file per style. As far as we know, we're the only kit that does this, and we firmly believe in that decision.

  • Nova

    Geist · rounded-lg · compact, classic borders

  • Vega

    Inter · rounded-md · classic shadcn, subtle shadows

  • Luma

    Inter · rounded-4xl · pill everything, filled inputs

  • Rhea

    Inter · rounded-2xl · soft fills, no borders

  • Maia

    Inter · rounded-4xl · spacious pill controls

  • Mira

    Inter · rounded-md · dense, compact controls

  • Lyra

    Inter · rounded-none · sharp, boxy edges

  • Sera

    Inter · borderless underline inputs · uppercase tracked buttons

An Obra Pro file

Publishing it as a library

7 min

Items to publish: variables, styles and components

~5,000

Kits with all 8 styles as modes, in our tests

Publishing it as a library

1 h 20 min

And it wouldn't import until we deleted the extra variable modes.

Items to publish: variables, styles and components

45,000

Only the variables you use

Each file holds one style, so the variables panel shows only that style's values. No scrolling past seven other styles to find the one you want to change.

Tested on a MacBook Pro M1: opening the variables panel in a competitor's file locked up the CPU completely.

No extra layer of variables

Switching styles in one file needs a third layer of variables, like button-bg or button-radius. Without it, you edit the component itself, with the variable names your developers see in code.

Deleting 7 modes doesn't clean it up

With all 8 as modes, your first job is deleting the 7 styles you don't use. Even then, the extra layer of style variables stays: every component is bound to it, so you can't remove it without rebuilding them. With Obra, you open your style and start designing.

Easier for AI agents too

An agent reads a kit's variables, styles and components before it changes them. A ninth of the items means less reading on every task: faster, cheaper in tokens and fewer mistakes.

Nine files, kept in sync by us

More work for us, not for you. Our contribution to the open-source Figma Console MCP edits all 9 files at once, so every fix lands everywhere in one pass.

Community vs Pro

What you get in each edition

FeatureCommunityPro
shadcn/ui components released up to June 2026 Included Included
Components released after June 2026: Attachment, Bubble, Marker, Message, Message Scroller, Questionnaire, Trace and Code BlockPreview only Included
Light mode Included Included
Dark mode, with multi-brand theming Not included Included
shadcn/ui stylesNovaAll 8
All Tailwind 4.2 colors and 1800+ Lucide icons Included Included
Auto layout, variables, component properties and slots throughout Included Included
All component properties documented with Autodocs Included Included
Design Pro Blocks for marketing, e-commerce and application Not included Included
React Pro Blocks, published as a shadcn/ui registry Not included Included
CSS Export plugin Not included Included
shadcn/ui Create plugin Included Included
Icon swap: automatically swap icons to other icon sets with the Create plugin Not included Included
PriceFreeOne-time, from $249

FAQ

Kickstart your brand's design system in hours, not weeks

All 8 shadcn/ui styles, 100+ Pro Blocks in Figma and React, and the CSS Export and Create plugins. One-time purchase, lifetime updates.

Get Figma Pro + React