Skip to main content

Substrate UI is open source — Star on GitHub

94+ Components

Neobrutalist UI. Unapologetically bold.

The component library built for neobrutalist design. 80+ accessible Radix primitives with hard shadows, bold borders, and zero configuration.

$ npm i @mikenotthepope/substrateui
94+
Components
WAI-ARIA
Compliant
1 CSS
Import to Start
100%
TypeScript

Get started in seconds

Install the package, import the styles, and use any component.

  1. Add the dependency

    "dependencies": { "@mikenotthepope/substrateui": "latest" }
  2. Import styles

    import "@mikenotthepope/substrateui/styles"
  3. Use components

    import { Button } from "@mikenotthepope/substrateui"

Why Substrate UI?

Built for developers who want strong visual identity without sacrificing accessibility or developer experience.

Radix Primitives

Every interactive component wraps a Radix UI primitive for keyboard navigation, screen reader support, and WAI-ARIA compliance out of the box.

Neobrutalist Design

Hard shadows, bold borders, and sharp corners create a distinctive visual identity that stands out. Rounded corners available via opt-in.

Tailwind CSS v4

Styled with CSS custom properties and Tailwind v4. No Tailwind config needed — just import one CSS file and go.

Dark Mode

Full light and dark theme support via CSS custom properties. Seamless switching with no flash of unstyled content.

TypeScript First

Every component is fully typed with strict TypeScript. Autocomplete for all props, variants, and event handlers.

Copy & Customize

Use the npm package for quick setup, or copy individual components into your project for full control.

/

Primitives (25)

Small, composable building blocks.

Avatar

User photo with fallback initials.

Radix Avatar

Badge

Small status label with color variants and retro styling.

Button

Clickable action with size and variant options.

Card

Container with header, body, and footer slots.

IconButton

Icon-only button with retro shadow, sized to fit SVG icons.

Link

Styled anchor with variant support and asChild for Next.js Link.

Loader

Bouncing dots loader with configurable count and speed.

Text

Typography primitives for headings, body, small text, and code.

Menu

Dropdown menu for contextual actions.

Radix

Tabs

Tabbed interface with overflow dropdown.

Radix Tabs

Accordion

Collapsible content sections for FAQs and grouped info.

Radix Accordion

Breadcrumb

Navigation trail showing the current page hierarchy.

Collapsible

Toggle visibility of a content section.

Radix Collapsible

ContextMenu

Right-click menu with nested items and shortcuts.

Radix Context Menu

DropdownMenu

Full-featured dropdown with checkboxes, radios, and submenus.

Radix Dropdown Menu

HoverCard

Popup card triggered by hovering over an element.

Radix Hover Card

ImageCard

Card with image, title, and description for media content.

Marquee

Scrolling horizontal content for logos or announcements.

Menubar

Desktop-style menu bar with nested dropdowns.

Radix Menubar

NavigationMenu

Site navigation with dropdown panels and indicators.

Radix Navigation Menu

Popover

Floating panel anchored to a trigger element.

Radix Popover

Progress

Visual indicator of completion or loading progress.

Radix Progress

ScrollArea

Custom scrollbar container for overflowing content.

Radix Scroll Area

Skeleton

Placeholder loading animation for content.

Tooltip

Brief informational popup on hover or focus.

Radix Tooltip

Form (13)

Inputs, selects, and controls for collecting data.

Layout (23)

Page structure and responsive containers.

CardGrid

Responsive grid for cards with configurable columns.

Container

Centered, max-width wrapper with responsive horizontal padding.

Dialog

Modal dialog with header, body, footer, and overlay.

Radix Dialog

Divider

Horizontal or vertical separator with optional label.

Drawer

Slide-in panel from the left or right edge.

Flex

General-purpose flexbox container with direction, wrap, and gap.

FormLayout

Form shell with sections, field wrappers, inline rows, and action bar.

Grid

CSS grid layout with configurable column count and gap.

NavBar

Responsive navigation with auth states and mobile drawer.

SectionNav

Sticky horizontal anchor navigation between page sections.

SimplePage

Page shell with header, title, actions slot, and content area.

Stack

Vertical or horizontal flex layout with consistent spacing.

TwoColumnLayout

Side-by-side panels on desktop, drawer on mobile.

AlertDialog

Confirmation dialog for destructive or important actions.

Radix Alert Dialog

Carousel

Swipeable content carousel with prev/next controls.

Embla Carousel

Chart

Themed chart container for recharts visualizations.

Recharts

DataTable

Feature-rich table with sorting, filtering, and pagination.

TanStack Table

Pagination

Page navigation controls with previous, next, and ellipsis.

Resizable

Resizable split panels with draggable handles.

react-resizable-panels

Sheet

Slide-in overlay panel from any edge of the screen.

Radix Dialog

Sidebar

Collapsible sidebar navigation with nested menus.

Sonner

Toast notifications with neobrutalism styling.

Sonner

Table

Styled HTML table with header, body, and footer sections.

Landing (12)

Sections and blocks for marketing and landing pages.

Demos (21)

Full-page compositions showing components working together.

Ready to build?

Install Substrate UI and start shipping bold, accessible interfaces today.