Auto-highlight navigation links based on scroll position.
Add data-sui-scrollspy to a nav element. Links with href="#id" auto-highlight as the matching section scrolls into view.
SoftUI is a neumorphic CSS component library with soft shadows, muted palettes, and tactile depth. It includes 75+ components, dark mode support, and a small JS module for interactive behaviors. Built for modern web apps that want a distinctive, polished look without sacrificing usability.
Zero dependencies. Pure CSS with optional vanilla JS. Dark mode built in with CSS custom properties. Responsive grid system with 12 columns and breakpoints. Full accessibility support with ARIA attributes, focus-visible states, and prefers-reduced-motion. RTL support with CSS logical properties.
Install via npm with npm install softui-css or use the CDN. No build tools required — just link the CSS and optionally the JS file. Works with React, Vue, Svelte, Astro, Next.js, and any HTML page. Import in your framework or add a link tag in your HTML head.
Add SoftUI classes to your HTML elements. Every component follows the sui- prefix convention. Customize with CSS custom properties — override colors, shadows, radius, fonts, and transitions on :root to theme everything at once. Use the Playground to experiment live.
Interactive components expose a JavaScript API via the global SoftUI object. Open modals with SoftUI.modal('#id').open(), show toasts with SoftUI.toast(), and control sheets, tabs, accordions, and more programmatically. All methods return the component instance for chaining.
<div style="display:flex;gap:24px;">
<nav class="sui-scrollspy" data-sui-scrollspy>
<a href="#intro" class="active">Introduction</a>
<a href="#features">Features</a>
<a href="#install">Installation</a>
<a href="#usage">Usage</a>
<a href="#api">API Reference</a>
</nav>
<div style="flex:1;">
<div id="intro">
<h4>Introduction</h4>
<p>Content here...</p>
</div>
<div id="features">
<h4>Features</h4>
<p>Content here...</p>
</div>
<div id="install">
<h4>Installation</h4>
<p>Content here...</p>
</div>
<div id="usage">
<h4>Usage</h4>
<p>Content here...</p>
</div>
<div id="api">
<h4>API Reference</h4>
<p>Content here...</p>
</div>
</div>
</div>
<!-- Optional: set offset (default 100px) -->
<nav class="sui-scrollspy" data-sui-scrollspy data-sui-scrollspy-offset="80">
...
</nav>A comprehensive overview of the product. This section covers the main features, use cases, and benefits. Designed for teams of all sizes who need a reliable and scalable solution.
Technical specifications including supported browsers, file sizes, performance benchmarks, and compatibility with major frameworks. Minified CSS is under 50KB gzipped.
What developers are saying about the product. Highly rated for ease of use, visual quality, and comprehensive documentation. Used by thousands of developers worldwide.
Frequently asked questions about licensing, support, updates, and customization. The library is MIT licensed and free forever. Community support is available on GitHub.
<nav class="sui-scrollspy sui-scrollspy-horizontal" data-sui-scrollspy> <a href="#overview" class="active">Overview</a> <a href="#specs">Specs</a> <a href="#reviews">Reviews</a> <a href="#faq">FAQ</a> </nav>
We are a team of designers and developers passionate about creating beautiful, accessible user interfaces. Our mission is to make neumorphic design accessible to everyone through open-source tools and comprehensive documentation.
Our distributed team spans multiple time zones and brings together expertise in CSS architecture, JavaScript frameworks, accessibility, and design systems. We believe in shipping fast and iterating based on community feedback.
We are always looking for talented individuals who share our passion for great UI. Check our GitHub for open issues labeled "good first issue" if you'd like to contribute to the project.
Reach out via GitHub issues for bug reports and feature requests. For general questions, join our community discussions. We respond to all inquiries within 48 hours.
<nav class="sui-scrollspy sui-scrollspy-pill" data-sui-scrollspy> <a href="#about" class="active">About</a> <a href="#team">Team</a> <a href="#careers">Careers</a> <a href="#contact">Contact</a> </nav>
This is a neumorphic modal dialog. It features backdrop blur, smooth animations, and focus trap. Press Escape or click outside to close.
Your session will expire in 5 minutes. Would you like to stay signed in?
This action cannot be undone. This will permanently delete the item and remove all associated data.
This modal takes up the entire viewport. Useful for immersive content, editors, or media viewers.
Press Escape or click the close button to dismiss.
By accessing and using this service, you accept and agree to be bound by the terms and provision of this agreement. In addition, when using these particular services, you shall be subject to any posted guidelines or rules applicable to such services. Any participation in this service will constitute acceptance of this agreement.
Permission is granted to temporarily download one copy of the materials on this website for personal, non-commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not modify or copy the materials, use the materials for any commercial purpose, attempt to reverse engineer any software, or remove any copyright notations.
The materials on this website are provided on an 'as is' basis. We make no warranties, expressed or implied, and hereby disclaim and negate all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property.
In no event shall this company or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the materials, even if we have been notified orally or in writing of the possibility of such damage.
The materials appearing on this website could include technical, typographical, or photographic errors. We do not warrant that any of the materials on its website are accurate, complete or current. We may make changes to the materials contained on its website at any time without notice.
We have not reviewed all of the sites linked to this website and are not responsible for the contents of any such linked site. The inclusion of any link does not imply endorsement. Use of any such linked web site is at the user's own risk.
We may revise these terms of service for this website at any time without notice. By using this website you are agreeing to be bound by the then current version of these terms of service. Any changes will be posted on this page with an updated revision date.
These terms and conditions are governed by and construed in accordance with applicable laws and you irrevocably submit to the exclusive jurisdiction of the courts in that location. If any provision of these terms shall be unlawful, void, or unenforceable, then that provision shall be deemed severable and shall not affect the validity of the remaining provisions.
Clicking outside this modal won't close it. Instead, the modal will shake to indicate it requires explicit action. Use the close button or press Escape to dismiss.
This modal has no backdrop blur. The background is visible but dimmed.
A subtle 3px backdrop blur. Content behind is slightly softened.
A heavy 12px backdrop blur. Background is barely recognizable.
Maximum 20px blur. Background is fully frosted.
This is a default right-side sheet. It slides in from the right edge of the screen with a blurred backdrop.
Sheets are great for navigation menus, settings panels, detail views, and forms that don't need to interrupt the main content flow.
This sheet slides down from the top. Great for announcements, notification panels, or search interfaces.
This is a small (280px) right-side sheet.
This is a large (480px) right-side sheet. Great for forms, detail views, or complex content.
Clicking outside this sheet won't close it. The sheet will shake to indicate it requires explicit action. Use the close button or press Escape.