saha-ui 1.11.1 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -2
- package/bin/cli.js +346 -261
- package/dist/components/Accordion/index.d.ts.map +1 -1
- package/dist/components/Alert/index.d.ts.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.styles.d.ts +1 -1
- package/dist/components/AspectRatio/index.d.ts.map +1 -1
- package/dist/components/Autocomplete/index.d.ts.map +1 -1
- package/dist/components/Avatar/index.d.ts.map +1 -1
- package/dist/components/AvatarGroup/index.d.ts.map +1 -1
- package/dist/components/Badge/index.d.ts +1 -1
- package/dist/components/Badge/index.d.ts.map +1 -1
- package/dist/components/Badge/index.js +33 -56
- package/dist/components/Breadcrumb/index.d.ts +1 -1
- package/dist/components/Breadcrumb/index.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js +26 -42
- package/dist/components/ButtonGroup/index.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.styles.d.ts +2 -2
- package/dist/components/Calendar/index.d.ts.map +1 -1
- package/dist/components/Card/Card.styles.d.ts +1 -1
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +51 -78
- package/dist/components/Carousel/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Chip/index.d.ts.map +1 -1
- package/dist/components/Chip/index.js +45 -76
- package/dist/components/CodeEditor/variants.d.ts +10 -10
- package/dist/components/Collapsible/index.d.ts.map +1 -1
- package/dist/components/ContextMenu/index.d.ts.map +1 -1
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DatePicker/index.d.ts.map +1 -1
- package/dist/components/DatePicker/index.js +214 -277
- package/dist/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.js +125 -234
- package/dist/components/Dialog/Dialog.styles.d.ts +1 -1
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +30 -32
- package/dist/components/Dropdown/index.d.ts.map +1 -1
- package/dist/components/Field/Field.styles.d.ts +1 -1
- package/dist/components/FloatingActionButton/index.d.ts.map +1 -1
- package/dist/components/FloatingActionButton/index.js +41 -72
- package/dist/components/Form/index.d.ts.map +1 -1
- package/dist/components/HoverCard/index.d.ts.map +1 -1
- package/dist/components/Image/index.d.ts.map +1 -1
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/InputOTP/index.d.ts.map +1 -1
- package/dist/components/Item/index.d.ts.map +1 -1
- package/dist/components/Kbd/index.d.ts.map +1 -1
- package/dist/components/Kbd/index.js +73 -117
- package/dist/components/Label/index.d.ts.map +1 -1
- package/dist/components/Link/index.d.ts.map +1 -1
- package/dist/components/Link/index.js +35 -64
- package/dist/components/List/index.d.ts.map +1 -1
- package/dist/components/List/index.js +42 -65
- package/dist/components/Menubar/index.d.ts.map +1 -1
- package/dist/components/NativeSelect/index.d.ts.map +1 -1
- package/dist/components/Pagination/index.d.ts.map +1 -1
- package/dist/components/PlayButton/index.d.ts.map +1 -1
- package/dist/components/Popover/index.d.ts.map +1 -1
- package/dist/components/Popover/index.js +3 -2
- package/dist/components/Progress/index.d.ts.map +1 -1
- package/dist/components/Progress/index.js +65 -124
- package/dist/components/Radio/index.d.ts.map +1 -1
- package/dist/components/Rating/index.d.ts.map +1 -1
- package/dist/components/ScrollArea/index.d.ts.map +1 -1
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Separator/Separator.styles.d.ts +1 -1
- package/dist/components/Separator/index.d.ts.map +1 -1
- package/dist/components/Separator/index.js +41 -83
- package/dist/components/Skeleton/index.d.ts.map +1 -1
- package/dist/components/Skeleton/index.js +44 -72
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Sonner/index.d.ts.map +1 -1
- package/dist/components/Spinner/index.d.ts.map +1 -1
- package/dist/components/Spinner/index.js +166 -236
- package/dist/components/Steps/index.d.ts.map +1 -1
- package/dist/components/Switch/index.d.ts.map +1 -1
- package/dist/components/Tab/index.d.ts.map +1 -1
- package/dist/components/Table/index.d.ts.map +1 -1
- package/dist/components/Tag/Tag.styles.d.ts +1 -1
- package/dist/components/Tag/index.d.ts.map +1 -1
- package/dist/components/TagInput/TagInput.styles.d.ts +1 -1
- package/dist/components/TagInput/index.d.ts.map +1 -1
- package/dist/components/TextArea/TextArea.styles.d.ts +1 -1
- package/dist/components/TextArea/index.d.ts.map +1 -1
- package/dist/components/TextEditor/TextEditor.styles.d.ts +4 -4
- package/dist/components/TextEditor/index.d.ts.map +1 -1
- package/dist/components/ThemeProvider/NextThemeProvider.d.ts +9 -0
- package/dist/components/ThemeProvider/NextThemeProvider.d.ts.map +1 -0
- package/dist/components/ThemeProvider/NextThemeProvider.js +8 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +6 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts.map +1 -0
- package/dist/components/ThemeProvider/ThemeProvider.js +34 -0
- package/dist/components/ThemeProvider/ThemeProvider.types.d.ts +2 -1
- package/dist/components/ThemeProvider/ThemeProvider.types.d.ts.map +1 -1
- package/dist/components/ThemeProvider/index.d.ts +2 -5
- package/dist/components/ThemeProvider/index.d.ts.map +1 -1
- package/dist/components/ThemeProvider/index.js +5 -32
- package/dist/components/ThemeToggle/ThemeToggle.styles.d.ts +17 -0
- package/dist/components/ThemeToggle/ThemeToggle.styles.d.ts.map +1 -0
- package/dist/components/ThemeToggle/ThemeToggle.styles.js +90 -0
- package/dist/components/ThemeToggle/ThemeToggle.types.d.ts +1 -0
- package/dist/components/ThemeToggle/ThemeToggle.types.d.ts.map +1 -1
- package/dist/components/ThemeToggle/index.d.ts.map +1 -1
- package/dist/components/ThemeToggle/index.js +67 -30
- package/dist/components/Timeline/index.d.ts.map +1 -1
- package/dist/components/Toast/ToastItem.d.ts.map +1 -1
- package/dist/components/Toast/ToastProvider.d.ts.map +1 -1
- package/dist/components/Toggle/Toggle.styles.d.ts +1 -1
- package/dist/components/Toggle/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.styles.d.ts +1 -1
- package/dist/components/ToggleGroup/index.d.ts.map +1 -1
- package/dist/components/Tooltip/index.d.ts.map +1 -1
- package/dist/components/Tree/index.d.ts.map +1 -1
- package/dist/components/Typography/Typography.styles.d.ts +1 -1
- package/dist/components/Upload/ImageEditor.d.ts.map +1 -1
- package/dist/components/Upload/Upload.styles.d.ts +1 -1
- package/dist/components/Upload/index.d.ts.map +1 -1
- package/dist/hooks/useMediaQuery.d.ts.map +1 -1
- package/dist/index.d.ts +68 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +723 -415
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -11,13 +11,15 @@
|
|
|
11
11
|
|
|
12
12
|
<p>
|
|
13
13
|
A beautiful, accessible, and type-safe React component library built with<br/>
|
|
14
|
-
<strong>TypeScript</strong> • <strong>Tailwind CSS v4</strong> • <strong>OKLCH Colors</strong> • <strong>Glass Morphism</strong
|
|
14
|
+
<strong>TypeScript</strong> • <strong>Tailwind CSS v4</strong> • <strong>OKLCH Colors</strong> • <strong>Glass Morphism</strong><br/>
|
|
15
|
+
✅ <strong>Next.js 15/16 Ready</strong> • <strong>App Router</strong> • <strong>Server Components</strong>
|
|
15
16
|
</p>
|
|
16
17
|
|
|
17
18
|
<p>
|
|
18
19
|
<a href="#-installation">Installation</a> •
|
|
19
20
|
<a href="#-features">Features</a> •
|
|
20
21
|
<a href="#-components">Components</a> •
|
|
22
|
+
<a href="#-nextjs-1516-compatibility">Next.js Guide</a> •
|
|
21
23
|
<a href="#-quick-examples">Quick Examples</a> •
|
|
22
24
|
<a href="#-documentation">Documentation</a>
|
|
23
25
|
</p>
|
|
@@ -27,7 +29,8 @@
|
|
|
27
29
|
|
|
28
30
|
## ✨ Features
|
|
29
31
|
|
|
30
|
-
- 🎨 **73 Modern Components** - Accordion, Alert, AspectRatio, Autocomplete, Avatar, AvatarGroup, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Carousel, Checkbox, Chip, CodeEditor, Collapsible, Combobox, Command, ContextMenu, DataTable, DatePicker, Dialog, Drawer, Dropdown, Empty, Field, FloatingActionButton, Form, HoverCard, Image, Input, InputOTP, Item, Kbd, Label, Link, List, Menubar, NativeSelect, NavigationMenu, Pagination, PlayButton, Popover, Progress, Radio, Rating, Resizable, ScrollArea, Select, Separator, Skeleton, Slider, Sonner, Spinner, Steps, Switch, Tab, Table, Tag, TagInput, TextArea, TextEditor, ThemeProvider, ThemeToggle, Timeline, Toast, Toggle, ToggleGroup, Tooltip, Tree, Typography, Upload
|
|
32
|
+
- 🎨 **73 Modern Components** - Accordion, Alert, AspectRatio, Autocomplete, Avatar, AvatarGroup, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Carousel, Chart, Checkbox, Chip, CodeEditor, Collapsible, Combobox, Command, ContextMenu, DataTable, DatePicker, Dialog, Drawer, Dropdown, Empty, Field, FloatingActionButton, Form, HoverCard, Image, Input, InputOTP, Item, Kbd, Label, Link, List, Menubar, NativeSelect, NavigationMenu, Pagination, PlayButton, Popover, Progress, Radio, Rating, Resizable, ScrollArea, Select, Separator, Skeleton, Slider, Sonner, Spinner, Steps, Switch, Tab, Table, Tag, TagInput, TextArea, TextEditor, ThemeProvider, ThemeToggle, Timeline, Toast, Toggle, ToggleGroup, Tooltip, Tree, Typography, Upload
|
|
33
|
+
- ⚡ **Next.js 15/16 Ready** - Full App Router support with Server & Client Components
|
|
31
34
|
- 🌓 **Dark Mode** - Seamless theme switching with full dark mode support
|
|
32
35
|
- 🔮 **Glass Morphism** - Beautiful backdrop blur effects across components
|
|
33
36
|
- 🎯 **Type-Safe** - Full TypeScript support with comprehensive prop types
|
|
@@ -44,6 +47,8 @@
|
|
|
44
47
|
|
|
45
48
|
## 📦 Installation
|
|
46
49
|
|
|
50
|
+
### Step 1: Install the package
|
|
51
|
+
|
|
47
52
|
```bash
|
|
48
53
|
# npm
|
|
49
54
|
npm install saha-ui
|
|
@@ -55,14 +60,43 @@ yarn add saha-ui
|
|
|
55
60
|
pnpm add saha-ui
|
|
56
61
|
```
|
|
57
62
|
|
|
63
|
+
### Step 2: Initialize Saha UI (REQUIRED)
|
|
64
|
+
|
|
65
|
+
Run this command in your project root to setup CSS and Tailwind configuration:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npx saha-ui init
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
This will automatically:
|
|
72
|
+
|
|
73
|
+
- ✅ Inject CSS variables and design tokens
|
|
74
|
+
- ✅ Configure Tailwind to scan Saha UI components in `node_modules`
|
|
75
|
+
- ✅ Install required dependencies
|
|
76
|
+
- ✅ Detect your Tailwind version (v3 or v4) and configure accordingly
|
|
77
|
+
|
|
78
|
+
**Without this step, the components will not be styled properly!**
|
|
79
|
+
|
|
80
|
+
See [CSS_DISTRIBUTION_SOLUTION.md](./CSS_DISTRIBUTION_SOLUTION.md) for detailed explanation.
|
|
81
|
+
|
|
58
82
|
### Peer Dependencies
|
|
59
83
|
|
|
60
84
|
Saha UI requires React 18+ or React 19+:
|
|
61
85
|
|
|
86
|
+
```bash
|
|
87
|
+
npm install react@^18.0.0 react-dom@^18.0.0
|
|
88
|
+
# or
|
|
89
|
+
npm install react@^19.0.0 react-dom@^19.0.0
|
|
90
|
+
```
|
|
91
|
+
|
|
62
92
|
### Optional Dependencies
|
|
63
93
|
|
|
64
94
|
For icons (if using Link or ThemeToggle components):
|
|
65
95
|
|
|
96
|
+
```bash
|
|
97
|
+
npm install lucide-react
|
|
98
|
+
```
|
|
99
|
+
|
|
66
100
|
## 🚀 Quick Start
|
|
67
101
|
|
|
68
102
|
### 1. Wrap your app with ThemeProvider
|
|
@@ -136,6 +170,93 @@ import { cn } from "saha-ui/lib/utils";
|
|
|
136
170
|
|
|
137
171
|
---
|
|
138
172
|
|
|
173
|
+
## 🚀 Next.js 15/16 Compatibility
|
|
174
|
+
|
|
175
|
+
Saha UI is **fully compatible** with Next.js 15 and 16 App Router!
|
|
176
|
+
|
|
177
|
+
### Quick Setup
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
npm install saha-ui
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
```tsx
|
|
184
|
+
// app/providers.tsx
|
|
185
|
+
"use client";
|
|
186
|
+
|
|
187
|
+
import { ThemeProvider } from "saha-ui";
|
|
188
|
+
|
|
189
|
+
export function Providers({ children }: { children: React.ReactNode }) {
|
|
190
|
+
return (
|
|
191
|
+
<ThemeProvider defaultTheme="system" storageKey="my-app-theme">
|
|
192
|
+
{children}
|
|
193
|
+
</ThemeProvider>
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
```tsx
|
|
199
|
+
// app/layout.tsx
|
|
200
|
+
import { Providers } from "./providers";
|
|
201
|
+
import "./globals.css";
|
|
202
|
+
|
|
203
|
+
export default function RootLayout({ children }) {
|
|
204
|
+
return (
|
|
205
|
+
<html lang="en" suppressHydrationWarning>
|
|
206
|
+
<body>
|
|
207
|
+
<Providers>{children}</Providers>
|
|
208
|
+
</body>
|
|
209
|
+
</html>
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Component Classification
|
|
215
|
+
|
|
216
|
+
- **58 Client Components** (require `"use client"`) - All interactive components (forms, modals, charts, etc.)
|
|
217
|
+
- **15 Flexible Components** (work as Server or Client) - Pure display components (cards, badges, avatars, etc.)
|
|
218
|
+
|
|
219
|
+
### Usage Examples
|
|
220
|
+
|
|
221
|
+
**Server Component with Client Interaction:**
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
// app/page.tsx (Server Component)
|
|
225
|
+
import { Card, Badge } from "saha-ui";
|
|
226
|
+
import { InteractiveButton } from "./interactive-button";
|
|
227
|
+
|
|
228
|
+
export default async function Page() {
|
|
229
|
+
const data = await fetch("https://api.example.com/data");
|
|
230
|
+
|
|
231
|
+
return (
|
|
232
|
+
<Card>
|
|
233
|
+
<Badge variant="success">New</Badge>
|
|
234
|
+
<InteractiveButton /> {/* Client Component */}
|
|
235
|
+
</Card>
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
```tsx
|
|
241
|
+
// app/interactive-button.tsx (Client Component)
|
|
242
|
+
"use client";
|
|
243
|
+
|
|
244
|
+
import { Button } from "saha-ui";
|
|
245
|
+
|
|
246
|
+
export function InteractiveButton() {
|
|
247
|
+
return <Button onClick={() => alert("Clicked!")}>Click Me</Button>;
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Full Documentation:**
|
|
252
|
+
|
|
253
|
+
- 📘 [NEXTJS_15_16_COMPATIBILITY.md](./NEXTJS_15_16_COMPATIBILITY.md) - Complete integration guide
|
|
254
|
+
- 📗 [NEXTJS_CLIENT_DIRECTIVE_GUIDE.md](./NEXTJS_CLIENT_DIRECTIVE_GUIDE.md) - "use client" reference
|
|
255
|
+
- 📙 [NEXTJS_READINESS_SUMMARY.md](./NEXTJS_READINESS_SUMMARY.md) - Component analysis
|
|
256
|
+
- 📕 [QUICK_REFERENCE_NEXTJS.md](./QUICK_REFERENCE_NEXTJS.md) - Quick reference card
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
139
260
|
## 🎨 Components
|
|
140
261
|
|
|
141
262
|
### Overview
|