SmoothUI is a collection of beautifully designed components with smooth animations built with React, Tailwind CSS, and Motion. This project aims to provide developers with a set of reusable UI components that enhance user experience through delightful animations and modern design patterns.
- Modern Design System: A cohesive and contemporary design language with a new mascot called Smoothy
- Smooth Animations: Built-in animations powered by Motion for delightful user experiences
- Responsive Design: Fully responsive components designed with Tailwind CSS
- Dark Mode Support: Components support both light and dark themes out of the box
- Color Customization: Dynamic color switcher for easy theme customization
- Documentation: Comprehensive documentation with props, examples, and usage guidelines
- Accessibility: Enhanced accessibility features across all components
- TypeScript Support: Full TypeScript support with type definitions
- Easy Integration: Simple API for integrating components into your projects
- shadcn CLI v3 Support: Full compatibility with the new shadcn CLI v3 namespace system
Get started with SmoothUI in just a few steps:
- Add the registry to your
components.json:
{
"registries": {
"@smoothui": "https://smoothui.dev/r/{name}.json"
}
}- Install a component:
npx shadcn@latest add @smoothui/siri-orb- Use the component:
import { SiriOrb } from "@/components/smoothui/ui/SiriOrb"
export default function App() {
return <SiriOrb size="200px" />
}SmoothUI is fully compatible with the new shadcn CLI v3 namespace system. This is the easiest way to install and manage SmoothUI components.
Add the SmoothUI registry to your components.json file:
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "src/app/globals.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui"
},
"registries": {
"@smoothui": "https://smoothui.dev/r/{name}.json"
}
}Install components using the namespace:
# Install a single component
npx shadcn@latest add @smoothui/siri-orb
# Install multiple components
npx shadcn@latest add @smoothui/rich-popover @smoothui/animated-input
# Install components with dependencies
npx shadcn@latest add @smoothui/scrollable-card-stackImport and use the installed components:
import { RichPopover } from "@/components/smoothui/ui/RichPopover"
import { SiriOrb } from "@/components/smoothui/ui/SiriOrb"
export default function App() {
return (
<div>
<SiriOrb size="200px" />
<RichPopover />
</div>
)
}# View all available components
npx shadcn@latest search @smoothui
# View component details before installation
npx shadcn@latest view @smoothui/siri-orb
# Install components
npx shadcn@latest add @smoothui/component-nameIf you prefer to install components manually, you can copy the component files directly:
- Install dependencies:
pnpm add motion tailwindcss lucide-react clsx tailwind-merge-
Copy component files from the components directory
-
Set up utilities:
# Create lib/utils/cn.ts
mkdir -p lib/utils// lib/utils/cn.ts
import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}import { SiriOrb } from "@/components/smoothui/ui/SiriOrb"
export default function App() {
return (
<div className="flex min-h-screen items-center justify-center">
<SiriOrb
size="200px"
colors={{
bg: "oklch(95% 0.02 264.695)",
c1: "oklch(75% 0.15 350)",
c2: "oklch(80% 0.12 200)",
c3: "oklch(78% 0.14 280)",
}}
animationDuration={20}
/>
</div>
)
}import { RichPopover } from "@/components/smoothui/ui/RichPopover"
import { ScrollableCardStack } from "@/components/smoothui/ui/ScrollableCardStack"
export default function Dashboard() {
const cards = [
{
id: "1",
name: "John Doe",
handle: "@johndoe",
avatar: "/avatars/john.jpg",
video: "/videos/john.mp4",
href: "https://twitter.com/johndoe",
},
// ... more cards
]
return (
<div className="space-y-8">
<RichPopover />
<ScrollableCardStack items={cards} />
</div>
)
}SmoothUI includes a wide variety of components:
- SiriOrb - Animated orb with smooth color transitions
- RichPopover - Advanced popover with rich content
- ScrollableCardStack - Interactive card stack with smooth scrolling
- AnimatedInput - Input field with smooth animations
- DynamicIsland - iOS-style dynamic island component
- FluidMorph - Fluid morphing animations
- MatrixCard - Matrix-style card with particle effects
- CursorFollow - Custom cursor following component
- ScrambleHover - Text scramble effect on hover
- WaveText - Animated wave text effect
- TypewriterText - Typewriter text animation
- ExpandableCards - Expandable card layout
- ScrollableCardStack - Stack of scrollable cards
- AppDownloadStack - App download showcase
- ButtonCopy - Copy button with feedback
- ClipCornersButton - Button with clipped corners
- DotMorphButton - Button with morphing dot animation
SmoothUI is fully compatible with the shadcn MCP server, enabling AI assistants to discover and install components automatically.
With MCP support, AI assistants like Claude, Cursor, and GitHub Copilot can:
- Discover Components: Browse all available SmoothUI components
- Install Components: Automatically install components with dependencies
- Provide Usage Examples: Get code examples and integration help
- Smart Suggestions: Receive intelligent component recommendations
- Configure your registry in
components.json:
{
"registries": {
"@smoothui": "https://smoothui.dev/r/{name}.json"
}
}- Install MCP server:
npx shadcn@latest mcp init --client claude
# or for Cursor: npx shadcn@latest mcp init --client cursor
# or for VS Code: npx shadcn@latest mcp init --client vscode- Try these prompts:
- "Show me the components in the smoothui registry"
- "Install the SiriOrb component from smoothui"
- "Create a landing page using smoothui components"
Learn more about MCP support β
SmoothUI uses a custom registry system compatible with shadcn CLI v3. Each component includes:
- Package Dependencies: Required npm packages are automatically included
- Utility Files: Shared utilities like
cnare automatically bundled - Import Paths: All import paths are automatically resolved
When you install a component, you get:
components/smoothui/ui/
βββ ComponentName.tsx # Main component file
lib/utils/
βββ cn.ts # Utility functions (if needed)
- Self-contained: Each component includes all necessary dependencies
- Type-safe: Full TypeScript support with proper types
- Optimized: Components are optimized for performance
- Accessible: Built-in accessibility features
Error: You are not authorized to access the item
Solution: This usually happens with Vercel preview deployments. Use the production URL:
{
"registries": {
"@smoothui": "https://smoothui.dev/r/{name}.json"
}
}Error: The item at https://smoothui.dev/r/registry.json was not found
Solution: The search command might not work as expected. Install components directly:
npx shadcn@latest add @smoothui/siri-orbError: Cannot find module '@/lib/utils/cn'
Solution: Make sure your tsconfig.json includes the path alias:
{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
}
}Error: Cannot find module 'clsx'
Solution: Install missing dependencies:
pnpm add clsx tailwind-merge motion- Documentation: Visit smoothui.dev for detailed documentation
- Issues: Report bugs on GitHub Issues
- Discussions: Join discussions on GitHub Discussions
We welcome contributions! Please see our Contributing Guide for details.
- Clone the repository:
git clone https://github.com/educlopez/smoothui.git
cd smoothui- Install dependencies:
pnpm install- Start development server:
pnpm dev- Build registry:
pnpm run build:registryThis project is licensed under the MIT License - see the LICENSE file for details.
