@clidey/ux 0.1.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 +284 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1251 -0
- package/dist/styles.css +120 -0
- package/dist/vite.svg +1 -0
- package/package.json +89 -0
package/README.md
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
# @clidey/ux
|
|
2
|
+
|
|
3
|
+
A modern React UI component library built with Tailwind CSS and Radix UI primitives.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎨 **Modern Design**: Clean, accessible components with a modern aesthetic
|
|
8
|
+
- 🌙 **Dark Mode**: Built-in dark mode support with theme switching
|
|
9
|
+
- ♿ **Accessible**: Built on Radix UI primitives for excellent accessibility
|
|
10
|
+
- 🎯 **TypeScript**: Full TypeScript support with proper type definitions
|
|
11
|
+
- 🚀 **Lightweight**: Optimized bundle size with tree-shaking support
|
|
12
|
+
- 🎨 **Customizable**: Easy to customize with Tailwind CSS classes
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @clidey/ux
|
|
18
|
+
# or
|
|
19
|
+
yarn add @clidey/ux
|
|
20
|
+
# or
|
|
21
|
+
pnpm add @clidey/ux
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Quick Start
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
import { Button, Card, ThemeProvider } from '@clidey/ux'
|
|
28
|
+
import '@clidey/ux/styles'
|
|
29
|
+
|
|
30
|
+
function App() {
|
|
31
|
+
return (
|
|
32
|
+
<ThemeProvider defaultTheme="dark" storageKey="my-app-theme">
|
|
33
|
+
<Card>
|
|
34
|
+
<CardHeader>
|
|
35
|
+
<CardTitle>Welcome to Clidey UX</CardTitle>
|
|
36
|
+
</CardHeader>
|
|
37
|
+
<CardContent>
|
|
38
|
+
<Button>Click me</Button>
|
|
39
|
+
</CardContent>
|
|
40
|
+
</Card>
|
|
41
|
+
</ThemeProvider>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Components
|
|
47
|
+
|
|
48
|
+
### Layout Components
|
|
49
|
+
|
|
50
|
+
- **Card** - Container component with header, content, and footer sections
|
|
51
|
+
- **Skeleton** - Loading state component
|
|
52
|
+
|
|
53
|
+
### Form Components
|
|
54
|
+
|
|
55
|
+
- **Button** - Button component with multiple variants and sizes
|
|
56
|
+
- **Input** - Input field component
|
|
57
|
+
- **Label** - Form label component
|
|
58
|
+
|
|
59
|
+
### Navigation Components
|
|
60
|
+
|
|
61
|
+
- **Breadcrumb** - Hierarchical navigation component
|
|
62
|
+
- **Pagination** - Page navigation component
|
|
63
|
+
- **Tabs** - Tabbed interface component
|
|
64
|
+
|
|
65
|
+
### Data Display Components
|
|
66
|
+
|
|
67
|
+
- **Badge** - Status and label component
|
|
68
|
+
- **Table** - Data table component
|
|
69
|
+
- **Tooltip** - Tooltip component
|
|
70
|
+
|
|
71
|
+
### Overlay Components
|
|
72
|
+
|
|
73
|
+
- **ContextMenu** - Context menu component
|
|
74
|
+
- **Drawer** - Slide-out drawer component
|
|
75
|
+
- **DropdownMenu** - Dropdown menu component
|
|
76
|
+
- **Popover** - Popover component
|
|
77
|
+
|
|
78
|
+
### Feedback Components
|
|
79
|
+
|
|
80
|
+
- **Toaster** - Toast notification component
|
|
81
|
+
|
|
82
|
+
### Theme Components
|
|
83
|
+
|
|
84
|
+
- **ThemeProvider** - Theme context provider
|
|
85
|
+
- **ModeToggle** - Theme toggle button
|
|
86
|
+
|
|
87
|
+
## Usage Examples
|
|
88
|
+
|
|
89
|
+
### Basic Button
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { Button } from '@clidey/ux'
|
|
93
|
+
|
|
94
|
+
function MyComponent() {
|
|
95
|
+
return (
|
|
96
|
+
<div>
|
|
97
|
+
<Button>Default Button</Button>
|
|
98
|
+
<Button variant="secondary">Secondary</Button>
|
|
99
|
+
<Button variant="destructive">Delete</Button>
|
|
100
|
+
<Button variant="outline">Outline</Button>
|
|
101
|
+
<Button variant="ghost">Ghost</Button>
|
|
102
|
+
<Button variant="link">Link</Button>
|
|
103
|
+
</div>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Card with Content
|
|
109
|
+
|
|
110
|
+
```tsx
|
|
111
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@clidey/ux'
|
|
112
|
+
|
|
113
|
+
function MyCard() {
|
|
114
|
+
return (
|
|
115
|
+
<Card>
|
|
116
|
+
<CardHeader>
|
|
117
|
+
<CardTitle>Card Title</CardTitle>
|
|
118
|
+
<CardDescription>Card description goes here</CardDescription>
|
|
119
|
+
</CardHeader>
|
|
120
|
+
<CardContent>
|
|
121
|
+
<p>This is the main content of the card.</p>
|
|
122
|
+
</CardContent>
|
|
123
|
+
<CardFooter>
|
|
124
|
+
<Button>Action</Button>
|
|
125
|
+
</CardFooter>
|
|
126
|
+
</Card>
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Form with Input
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
import { Input, Label, Button } from '@clidey/ux'
|
|
135
|
+
|
|
136
|
+
function MyForm() {
|
|
137
|
+
return (
|
|
138
|
+
<form className="space-y-4">
|
|
139
|
+
<div>
|
|
140
|
+
<Label htmlFor="email">Email</Label>
|
|
141
|
+
<Input id="email" type="email" placeholder="Enter your email" />
|
|
142
|
+
</div>
|
|
143
|
+
<Button type="submit">Submit</Button>
|
|
144
|
+
</form>
|
|
145
|
+
)
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Table with Data
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, Badge } from '@clidey/ux'
|
|
153
|
+
|
|
154
|
+
function MyTable() {
|
|
155
|
+
return (
|
|
156
|
+
<Table>
|
|
157
|
+
<TableHeader>
|
|
158
|
+
<TableRow>
|
|
159
|
+
<TableHead>Name</TableHead>
|
|
160
|
+
<TableHead>Email</TableHead>
|
|
161
|
+
<TableHead>Status</TableHead>
|
|
162
|
+
</TableRow>
|
|
163
|
+
</TableHeader>
|
|
164
|
+
<TableBody>
|
|
165
|
+
<TableRow>
|
|
166
|
+
<TableCell>John Doe</TableCell>
|
|
167
|
+
<TableCell>john@example.com</TableCell>
|
|
168
|
+
<TableCell><Badge>Active</Badge></TableCell>
|
|
169
|
+
</TableRow>
|
|
170
|
+
</TableBody>
|
|
171
|
+
</Table>
|
|
172
|
+
)
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Theme Setup
|
|
177
|
+
|
|
178
|
+
```tsx
|
|
179
|
+
import { ThemeProvider, ModeToggle } from '@clidey/ux'
|
|
180
|
+
|
|
181
|
+
function App() {
|
|
182
|
+
return (
|
|
183
|
+
<ThemeProvider defaultTheme="dark" storageKey="my-app-theme">
|
|
184
|
+
<div>
|
|
185
|
+
<ModeToggle />
|
|
186
|
+
{/* Your app content */}
|
|
187
|
+
</div>
|
|
188
|
+
</ThemeProvider>
|
|
189
|
+
)
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Styling
|
|
194
|
+
|
|
195
|
+
The components are built with Tailwind CSS. To use them properly, make sure you have Tailwind CSS configured in your project.
|
|
196
|
+
|
|
197
|
+
### Required Tailwind CSS Configuration
|
|
198
|
+
|
|
199
|
+
Add the following to your `tailwind.config.js`:
|
|
200
|
+
|
|
201
|
+
```js
|
|
202
|
+
/** @type {import('tailwindcss').Config} */
|
|
203
|
+
module.exports = {
|
|
204
|
+
darkMode: ["class"],
|
|
205
|
+
content: [
|
|
206
|
+
'./pages/**/*.{ts,tsx}',
|
|
207
|
+
'./components/**/*.{ts,tsx}',
|
|
208
|
+
'./app/**/*.{ts,tsx}',
|
|
209
|
+
'./src/**/*.{ts,tsx}',
|
|
210
|
+
'./node_modules/@clidey/ux/**/*.{js,ts,jsx,tsx}',
|
|
211
|
+
],
|
|
212
|
+
theme: {
|
|
213
|
+
extend: {
|
|
214
|
+
colors: {
|
|
215
|
+
border: "hsl(var(--border))",
|
|
216
|
+
input: "hsl(var(--input))",
|
|
217
|
+
ring: "hsl(var(--ring))",
|
|
218
|
+
background: "hsl(var(--background))",
|
|
219
|
+
foreground: "hsl(var(--foreground))",
|
|
220
|
+
primary: {
|
|
221
|
+
DEFAULT: "hsl(var(--primary))",
|
|
222
|
+
foreground: "hsl(var(--primary-foreground))",
|
|
223
|
+
},
|
|
224
|
+
secondary: {
|
|
225
|
+
DEFAULT: "hsl(var(--secondary))",
|
|
226
|
+
foreground: "hsl(var(--secondary-foreground))",
|
|
227
|
+
},
|
|
228
|
+
destructive: {
|
|
229
|
+
DEFAULT: "hsl(var(--destructive))",
|
|
230
|
+
foreground: "hsl(var(--destructive-foreground))",
|
|
231
|
+
},
|
|
232
|
+
muted: {
|
|
233
|
+
DEFAULT: "hsl(var(--muted))",
|
|
234
|
+
foreground: "hsl(var(--muted-foreground))",
|
|
235
|
+
},
|
|
236
|
+
accent: {
|
|
237
|
+
DEFAULT: "hsl(var(--accent))",
|
|
238
|
+
foreground: "hsl(var(--accent-foreground))",
|
|
239
|
+
},
|
|
240
|
+
popover: {
|
|
241
|
+
DEFAULT: "hsl(var(--popover))",
|
|
242
|
+
foreground: "hsl(var(--popover-foreground))",
|
|
243
|
+
},
|
|
244
|
+
card: {
|
|
245
|
+
DEFAULT: "hsl(var(--card))",
|
|
246
|
+
foreground: "hsl(var(--card-foreground))",
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
borderRadius: {
|
|
250
|
+
lg: "var(--radius)",
|
|
251
|
+
md: "calc(var(--radius) - 2px)",
|
|
252
|
+
sm: "calc(var(--radius) - 4px)",
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
plugins: [],
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Dependencies
|
|
261
|
+
|
|
262
|
+
This package has the following peer dependencies:
|
|
263
|
+
|
|
264
|
+
- `react` (^18.0.0 || ^19.0.0)
|
|
265
|
+
- `react-dom` (^18.0.0 || ^19.0.0)
|
|
266
|
+
|
|
267
|
+
And the following dependencies:
|
|
268
|
+
|
|
269
|
+
- `@radix-ui/react-*` - UI primitives
|
|
270
|
+
- `class-variance-authority` - Component variants
|
|
271
|
+
- `clsx` - Conditional classes
|
|
272
|
+
- `lucide-react` - Icons
|
|
273
|
+
- `next-themes` - Theme management
|
|
274
|
+
- `sonner` - Toast notifications
|
|
275
|
+
- `tailwind-merge` - Tailwind class merging
|
|
276
|
+
- `vaul` - Drawer component
|
|
277
|
+
|
|
278
|
+
## License
|
|
279
|
+
|
|
280
|
+
MIT
|
|
281
|
+
|
|
282
|
+
## Contributing
|
|
283
|
+
|
|
284
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {}
|