Skip to main content

Command Palette

Search for a command to run...

I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned

SoftUI — soft shadows, dark mode, RTL, accessibility, and zero dependencies

Updated
4 min read
I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned

Every CSS library looks the same. Flat cards, sharp shadows, the same Bootstrap-inspired look. I wanted something different — something that felt tactile and premium. So I built SoftUI, a neumorphic CSS component library.

No React. No Vue. No build tools. Just CSS + optional vanilla JS. Drop in two files and start building.

What is Neumorphism?

Neumorphism uses soft, diffused shadows to make elements look like they're gently raised from or pressed into the surface. Think of it as the middle ground between flat design and skeuomorphism — subtle depth without being heavy.

The problem? Most neumorphic demos are just buttons and cards. Nobody built a complete library with forms, data tables, modals, charts, and everything you actually need for real apps. Until now.

77+ Components

SoftUI covers everything:

Forms — styled selects (no native browser dropdowns), toggles, radios, checkboxes, sliders, colour picker, file upload, OTP input, date picker, segmented control, editable text, radio/checkbox cards

Data — sortable/filterable data tables with built-in pagination, bar/donut/line charts, stat cards, timeline, tree view, countdown, skeleton loaders

Navigation — navbar, sidebar, tabs, breadcrumbs, stepper, dock, speed dial, mega-menu with sub-menus, scrollspy

Overlays — modals, bottom drawers with drag-to-dismiss and snap points, dropdowns, popovers, tooltips, command palette, context menus

Media — carousel, lightbox, image diff slider, chat bubbles, browser/phone mockups, marquee, typewriter, text rotate

Utilities — 12-column responsive grid, spacing, flex, shadows, mask shapes (circle, star, heart, hexagon), and more

Browse all components →

Dark Mode in One Attribute

<html data-theme="dark">

Every component adapts. No extra CSS file, no JavaScript required. All colours are CSS custom properties:

:root {
  --sui-primary: #7C5CFC;
  --sui-bg: #F0F2F5;
  --sui-radius: 12px;
}

Override them to match your brand in seconds.

Zero Native Browser UI

This is the decision I'm most proud of. Every <select> is a custom styled dropdown. Number inputs hide native arrows. Date pickers use our own calendar. Data table filters and per-page selectors are all custom.

The result: pixel-perfect consistency across Chrome, Firefox, Safari, and Edge. No more fighting browser defaults.

Accessibility Done Right

Neumorphism has a bad reputation for accessibility. Low contrast, no focus indicators, style over substance. SoftUI fixes all of that:

  • WCAG AA contrast on all text

  • :focus-visible on every interactive element

  • prefers-reduced-motion disables all animations

  • ARIA roles on modals, tabs, dropdowns, accordions

  • Keyboard navigation everywhere (arrow keys, Escape, Tab trapping)

  • RTL support for Arabic, Hebrew, Farsi

  • Print styles that actually work

The Data Table

Worth highlighting on its own. Add data-sort to column headers for sorting, wrap in .sui-datatable for search + filter + pagination. Everything works together with zero custom JavaScript:

  • Click headers to sort (asc → desc → reset)

  • Styled dropdown filters by data attributes

  • Auto-generated pagination

  • Real-time search

  • Styled per-page selector

All plug-and-play.

A Real Demo App

I built a full CloudMetrics demo — a SaaS dashboard with 9 pages:

  • Dashboard with charts, stat cards, activity feed

  • Analytics with bar/donut/radial charts

  • Customers with searchable data table + detail sheets

  • Orders with timeline tracking

  • Invoices with calendar date pickers

  • Settings with form validation + notification toggles

  • Team management with avatar cards

  • Upgrade page with selectable pricing

Every form uses styled selects. Every dropdown works. Every page is responsive with a hamburger menu on mobile. It proves SoftUI works for real applications, not just component demos.

Interactive Playground

The Playground has 110 drag-and-drop snippets. Click a component name, it inserts the code, and you see it rendered instantly. Dark mode preview toggle included.

What I'd Do Differently

Ship with fewer components, iterate faster. I built 77 before launching. 20 solid ones would have been enough to get feedback.

Structure design tokens from day one. The tokens.json file was an afterthought. Should have been the foundation.

Write content earlier. The library was done for weeks before I wrote a single article. Content is distribution. Code alone doesn't get discovered.

Get Started

npm install softui-css

Or CDN:

<link rel="stylesheet" href="https://unpkg.com/softui-css/dist/softui.min.css">
<script src="https://unpkg.com/softui-css/dist/softui.min.js"></script>

Links:

MIT licensed, free forever. A GitHub star or coffee would mean a lot if you find it useful.


What would you build with neumorphic components? I'd love to see it — drop a comment or share in the GitHub discussions.