Skip to content

ShadcnStore Create Plugin for Figma

Bring the shadcn/ui Create customization experience straight into Figma. Pick your base color, accent theme, font, icon library, and border radius, then hit Apply. The plugin does the rest, writing Figma Variables for both light and dark mode so your entire file stays in sync instantly.

Compatibility

This plugin only works with the ShadcnStore Figma Design System. It will not work with other Figma files or generic design systems. Make sure you're using the official ShadcnStore file before continuing.


Getting Started

Prerequisites

Before you launch the plugin, make sure you have the following ready:

  1. ShadcnStore Figma Design System: Download the design system file from your Purchases dashboard
  2. Edit permissions: You must be an Editor on the file, not Viewer
  3. Fonts installed: Install any fonts you want to use. At minimum, install Inter (the default). The full list: Inter, Noto Sans, Nunito Sans, Figtree, Roboto, Raleway, DM Sans, Public Sans, Outfit, JetBrains Mono
  4. Choose your icon library: See Recommended Icon Workflow before getting started

Installing the Plugin

The plugin is available on the Figma Community. Open that page, click Install, then relaunch your ShadcnStore design system file.

Launching the Plugin

  1. Open your ShadcnStore Figma Design System file
  2. Go to Plugins → ShadcnStore Create in the menu
  3. The plugin window opens. If you've used it before, your previous settings load automatically

Works offline

The plugin has no network access and runs entirely offline once installed. No account or internet connection needed.


Plugin Interface

The plugin is a single panel with five customization sections stacked vertically, plus action buttons in the footer.

AreaPurpose
Base ColorThe neutral palette: backgrounds, borders, muted areas
ThemePrimary accent color applied on top of the base
FontFont family for font-sans
Icon LibraryWhich icon library is active across the file
RadiusCorner rounding scale for all components
FooterShuffle, Reset, Cancel, and Apply buttons

Customization Options

Base Color

The base color is your neutral "gray scale" foundation. It controls backgrounds, cards, borders, muted text, and more.

OptionDescription
NeutralPure neutral gray, no color cast
GraySlight cool-blue cast
ZincSubtle purple-gray undertone
StoneWarm beige-brown undertone
SlateProminent cool-blue tint

Each base color defines values for 19 semantic tokens (background, foreground, card, popover, primary, secondary, muted, accent, destructive, border, input, ring) in both light and dark modes.


Theme

The theme sets your primary accent color, overriding just three tokens: primary, primary-foreground, and ring. Choose Neutral to use your base color without any accent overrides.

18 available themes: Neutral, Amber, Blue, Cyan, Emerald, Fuchsia, Green, Indigo, Lime, Orange, Pink, Purple, Red, Rose, Sky, Teal, Violet, Yellow

How Base + Theme interact

The base color builds your entire neutral palette. The theme then layers just three tokens on top. For example, Base = Slate + Theme = Blue gives you a cool-gray foundation with blue buttons and focus rings.


Font

Selects the font-sans font family. Each option is rendered in its own typeface in the dropdown so you can preview before applying.

FontStyle
InterSans-serif
Noto SansSans-serif
Nunito SansSans-serif
FigtreeSans-serif
RobotoSans-serif
RalewaySans-serif
DM SansSans-serif
Public SansSans-serif
OutfitSans-serif
JetBrains MonoMonospace

Font must be installed

The plugin updates a Figma Variable. It does not update individual text layers. The ShadcnStore design system components are pre-bound to the font-family/font-sans variable and will update automatically. For custom text layers, you'll need to bind the font yourself or update them manually. Make sure the font is installed on your system or added to your Figma team fonts.


Icon Library

Determines which icon library is active across your entire file. Switching libraries updates boolean variables that control icon visibility inside switchable icon components.

Librarynpm Package
Lucide (default)lucide-react
Tabler Icons@tabler/icons-react
HugeIcons@hugeicons/react
Phosphor@phosphor-icons/react
Remix Icon@remixicon/react

Read more about how icons work in the Switchable Icons documentation.


Radius

Controls the border radius scale across all components. Eight variables scale proportionally based on your selection.

Optionradius value
None0 px
Small8 px
Default10 px
Medium13 px
Large15 px

The full set of radius variables at Default (1× scale):

VariableValue
radius/xs2 px
radius/sm6 px
radius/md8 px
radius/radius10 px
radius/xl14 px
radius/2xl16 px
radius/3xl24 px
radius/4xl32 px

TIP

None gives a sharp, angular feel. Large creates a softer, rounder look. Most apps land somewhere in the middle. Default is a safe starting point.


Applying Changes

Click Apply in the footer. A progress overlay shows each step as it runs:

  1. Finding collections: Locates or creates the Themes variable collection
  2. Theme updated: Writes light and dark color variables
  3. Fonts updated: Updates the font-family/font-sans string variable
  4. Border radius updated: Writes all 8 radius float variables
  5. Icon library updated: Toggles boolean icon library variables
  6. Configuration saved: Saves your selections for next time

Each step shows a live status icon (pending, in-progress, complete, or failed). Once all steps finish, click Done to dismiss.

Smart change detection

The plugin only processes what actually changed. If you only updated the font, the theme and radius steps are skipped entirely. Re-applying small incremental tweaks is fast.

Icon propagation delay

If you changed your icon library, updates can take up to 2 minutes to fully propagate across all pages. This is a Figma rendering constraint on large files, not a plugin issue.


Quick Actions

Two utility buttons sit on the left side of the footer:

Shuffle

Randomly picks a base color, theme, font, icon library, and radius. Great for quickly exploring combinations and finding unexpected ideas. Remember: Shuffle doesn't apply your changes. You still need to click Apply.

Reset

Returns all selections to factory defaults:

  • Base Color: Neutral
  • Theme: Neutral
  • Font: Inter
  • Icon Library: Lucide
  • Radius: Default

For the best Figma performance, choose one icon library and remove the others. Five libraries loaded simultaneously increases file size, slows component search, and adds unnecessary complexity.

Here's what we recommend:

  1. Pick your library: Choose from Lucide, Tabler, HugeIcons, Phosphor, or Remix Icon
  2. Switch via the plugin: Select it from the Icon Library dropdown and click Apply
  3. Delete unused library pages: In the Pages panel, delete the four icon pages you won't need
  4. Keep Icons Switchable: This page must always stay. Every block uses switchable/* components from it
  5. Clean up variables: In the Variables panel, delete the boolean variables for removed libraries

Refer to the Switchable Icons doc for the full step-by-step on this process.


Variables Reference

The plugin creates and manages two variable collections in your file.

Themes Collection

All color, font, and radius variables live here. Colors use -light and -dark suffixes for mode support.

Color variables (19 tokens × 2 modes = 38 variables):

VariableDescription
colors/background-light / colors/background-darkPage/canvas background
colors/foreground-light / colors/foreground-darkPrimary text
colors/card-light / colors/card-darkCard surface
colors/card-foreground-light / colors/card-foreground-darkCard text
colors/popover-light / colors/popover-darkPopover surface
colors/popover-foreground-light / colors/popover-foreground-darkPopover text
colors/primary-light / colors/primary-darkPrimary accent
colors/primary-foreground-light / colors/primary-foreground-darkText on primary
colors/secondary-light / colors/secondary-darkSecondary surface
colors/secondary-foreground-light / colors/secondary-foreground-darkText on secondary
colors/muted-light / colors/muted-darkMuted surface
colors/muted-foreground-light / colors/muted-foreground-darkMuted text
colors/accent-light / colors/accent-darkAccent surface
colors/accent-foreground-light / colors/accent-foreground-darkText on accent
colors/destructive-light / colors/destructive-darkDestructive/error actions
colors/destructive-foreground-light / colors/destructive-foreground-darkText on destructive
colors/border-light / colors/border-darkDefault border
colors/input-light / colors/input-darkInput border
colors/ring-light / colors/ring-darkFocus ring

All colors are converted from shadcn's native OKLCH format to Figma-compatible RGB using perceptually accurate conversion.

Font variable:

VariableTypeDescription
font-family/font-sansSTRINGFont family name, e.g. "Inter", "Figtree"

Radius variables:

VariableType
radius/xsFLOAT
radius/smFLOAT
radius/mdFLOAT
radius/radiusFLOAT
radius/xlFLOAT
radius/2xlFLOAT
radius/3xlFLOAT
radius/4xlFLOAT

Icon Library Collection

VariableTypeWhen true
lib-lucideBOOLEANLucide is active
lib-tablerBOOLEANTabler is active
lib-hugeiconsBOOLEANHugeIcons is active
lib-phosphorBOOLEANPhosphor is active
lib-remixBOOLEANRemix Icon is active

The plugin enforces that exactly one of these is true at a time.


Binding Variables to Your Designs

The ShadcnStore design system components are pre-bound to these variables and update automatically when you apply changes. For custom components and frames you've created yourself:

  1. Select a layer
  2. Click the fill, stroke, or text color chip in the Design panel
  3. Click the variable icon (⬡) and choose from the Themes collection
  4. For border radius: select a frame → corner radius field → click the variable icon → choose from radius/

Common Workflows

First-Time Setup

  1. Open your ShadcnStore Figma Design System from your Purchases dashboard
  2. Follow the Recommended Icon Workflow to simplify your file
  3. Open the plugin and configure your Base Color, Theme, Font, Icon Library, and Radius
  4. Click Apply
  5. Your design system is ready. All pre-built components update automatically

Trying Different Themes

  1. Reopen the plugin. Your current settings load automatically
  2. Change just the Theme dropdown to try a new accent color
  3. Click Apply. Only the theme step runs, so it's nearly instant
  4. All layers bound to primary, primary-foreground, and ring update everywhere

Exploring Combinations Fast

  1. Click Shuffle to randomize everything
  2. Review the combination shown in the dropdowns
  3. Like it? Click Apply. Otherwise, shuffle again or tweak individual options
  4. Click Reset to return to defaults at any time

Troubleshooting

Variables not appearing after Apply
  • Check permissions: You must be an Editor on the file, not a Viewer
  • Check the collection name: The plugin looks for a collection named Themes. If you renamed it, the plugin creates a new one instead of updating yours
  • Refresh the Variables panel: Close and reopen it to see the latest state
Colors look slightly different from shadcn/ui website

OKLCH to RGB conversion is mathematically accurate, but Figma's color rendering can have subtle differences from how browsers render OKLCH natively. This is expected and generally imperceptible in designs.

Font isn't changing on text layers

Remember: the plugin updates the font-family/font-sans variable, not individual text layers directly. If a text layer isn't updating, it either isn't bound to the variable, or the font isn't installed. Bind the layer to the variable in the Design panel, and make sure the font is installed on your system or added to your Figma team fonts.

Icon library switch doesn't seem to work
  • Make sure you're using switchable icon components (switchable/*) from the Icons Switchable page, not raw icon instances from individual library pages
  • Check that the Icon Library boolean variables exist in the Variables panel
  • On large files, visibility changes can take up to 2 minutes to propagate across all pages
Icons disappear after switching library

The target library has no instance in that switchable icon component. This usually happens if you deleted a library page before switching, or the icon wasn't pre-mapped for that library.

If you're using a single library, follow the Recommended Icon Workflow to simplify things and avoid this entirely.

Progress panel shows a failed step

The error message next to the failed step explains what went wrong. Common causes:

StepCommon cause
CollectionsConflicting collection name or restricted permissions
FontsSelected font isn't installed. Install it and try again
IconsIcon Library variable collection is missing or corrupted
Plugin window is blank or not loading

Close the plugin, refresh the Figma page (browser) or restart Figma (desktop app), then run the plugin again.


FAQ

Does this plugin work with any Figma file?

No. It's designed exclusively for the ShadcnStore Figma Design System. It won't work with other Figma files.

Does it require an internet connection?

No. The plugin runs entirely offline with no network access.

Does it work in the browser and the desktop app?

Yes, both are supported.

Will it modify my existing components or frames?

No. It only creates or updates Figma Variables. Your designs are untouched unless they're already bound to those variables.

Can I use it with a file that already has a `Themes` collection?

Yes. The plugin updates variables in your existing collection without deleting anything it doesn't manage.

Why are there 8 radius variables instead of just one?

shadcn/ui uses a proportional radius scale so different elements can have appropriately sized corners. An input might use radius/sm while a dialog uses radius/xl.

What happens if I click Apply without changing anything?

The plugin detects no changes and only runs the "Finding collections" and "Configuration saved" steps. It's nearly instant.

Should I use all 5 icon libraries at once?

No. For best performance, choose one and delete the others. See the Recommended Icon Workflow.