markora-ui 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 +497 -0
- package/dist/index.js +8312 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +8128 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +81 -0
package/README.md
ADDED
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
# ✨ Markora UI - Premium React Component Library
|
|
2
|
+
|
|
3
|
+
A production-ready React and Next.js UI library featuring beautifully crafted components, advanced templates, and a modern design system built with TypeScript, Tailwind CSS, and React.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/markora-ui)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
[](https://reactjs.org)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 🎯 Why Markora UI?
|
|
13
|
+
|
|
14
|
+
- **60+ Professional Components** - Production-ready instead of disconnected snippets
|
|
15
|
+
- **Fully Type-Safe** - Complete TypeScript support with IntelliSense
|
|
16
|
+
- **Accessibility First** - WCAG 2.1 compliant, keyboard navigation built-in
|
|
17
|
+
- **Theme System** - Light & dark mode with customizable design tokens
|
|
18
|
+
- **Zero Runtime** - Tailwind CSS based, styles ship as CSS only
|
|
19
|
+
- **Tree-Shakeable** - Import only what you need, optimize bundle size
|
|
20
|
+
- **Interactive Docs** - Live component showcase with copy-paste code
|
|
21
|
+
- **Built for Teams** - Works seamlessly with React, Next.js, and modern tooling
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 📦 Installation
|
|
26
|
+
|
|
27
|
+
### Prerequisites
|
|
28
|
+
- React 18.2+ or 19.0+
|
|
29
|
+
- Tailwind CSS 3.0+
|
|
30
|
+
- Node.js 16+
|
|
31
|
+
|
|
32
|
+
### Quick Install
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install markora-ui
|
|
36
|
+
# or
|
|
37
|
+
yarn add markora-ui
|
|
38
|
+
# or
|
|
39
|
+
pnpm add markora-ui
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 🚀 Getting Started
|
|
45
|
+
|
|
46
|
+
### Step 1: Configure Tailwind CSS
|
|
47
|
+
|
|
48
|
+
If you haven't already, set up Tailwind CSS:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm install -D tailwindcss postcss autoprefixer
|
|
52
|
+
npx tailwindcss init -p
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 2: Update `tailwind.config.ts`
|
|
56
|
+
|
|
57
|
+
Include Aether UI in your Tailwind config:
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import type { Config } from 'tailwindcss';
|
|
61
|
+
|
|
62
|
+
export default {
|
|
63
|
+
content: [
|
|
64
|
+
'./index.html',
|
|
65
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
66
|
+
'./node_modules/markora-ui/**/*.{js,mjs,ts,mts}',
|
|
67
|
+
],
|
|
68
|
+
theme: {
|
|
69
|
+
extend: {},
|
|
70
|
+
},
|
|
71
|
+
plugins: [],
|
|
72
|
+
} satisfies Config;
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Step 3: Import Styles
|
|
76
|
+
|
|
77
|
+
In your app's entry point:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import 'aether-ui/styles.css';
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Step 4: Start Using Components
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
import { Button, Card, CardContent, CardHeader, CardTitle } from 'aether-ui';
|
|
87
|
+
|
|
88
|
+
export default function App() {
|
|
89
|
+
return (
|
|
90
|
+
<div className="p-8">
|
|
91
|
+
<Card>
|
|
92
|
+
<CardHeader>
|
|
93
|
+
<CardTitle>Welcome to Markora UI</CardTitle>
|
|
94
|
+
</CardHeader>
|
|
95
|
+
<CardContent>
|
|
96
|
+
<Button variant="primary" size="lg">
|
|
97
|
+
Get Started
|
|
98
|
+
</Button>
|
|
99
|
+
</CardContent>
|
|
100
|
+
</Card>
|
|
101
|
+
</div>
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 📚 Component Library
|
|
109
|
+
|
|
110
|
+
### Form Components (16)
|
|
111
|
+
- **Input** - Text, email, password inputs with validation
|
|
112
|
+
- **InputField** - Labeled input with helper text and error states
|
|
113
|
+
- **Textarea** - Multi-line text input
|
|
114
|
+
- **TextareaField** - Textarea with labels and validation
|
|
115
|
+
- **Select** - Single and multi-select dropdowns
|
|
116
|
+
- **Combobox** - Searchable select component
|
|
117
|
+
- **Checkbox** - Standalone and groups
|
|
118
|
+
- **Radio** - Radio button groups
|
|
119
|
+
- **FileUpload** - File upload component
|
|
120
|
+
- **Switch** - Toggle switches
|
|
121
|
+
- **DatePicker** - Calendar date selection
|
|
122
|
+
- **InputGroup** - Grouped inputs with addons
|
|
123
|
+
- **NumberInput** - Number input with increment/decrement
|
|
124
|
+
- **InputOTP** - One-time password inputs
|
|
125
|
+
- **NativeSelect** - Native select element
|
|
126
|
+
- **SegmentedControl** - Segmented control component
|
|
127
|
+
|
|
128
|
+
### Button Components (5)
|
|
129
|
+
- **Button** - Primary, secondary, outline, destructive, ghost variants
|
|
130
|
+
- **IconButton** - Compact button for icons only
|
|
131
|
+
- **ButtonGroup** - Group related buttons
|
|
132
|
+
- **MarkoriButton** - Premium styled button variant
|
|
133
|
+
- **ActionBar** - Toolbar for grouped actions
|
|
134
|
+
|
|
135
|
+
### Data Display (15)
|
|
136
|
+
- **Table** - Basic data table
|
|
137
|
+
- **DataTable** - Advanced table with sorting/filtering
|
|
138
|
+
- **Card** - Container with header, content, footer
|
|
139
|
+
- **Badge** - Labels and status indicators
|
|
140
|
+
- **Stat** - Metric display with trends
|
|
141
|
+
- **Rating** - Star rating component
|
|
142
|
+
- **Avatar** - User profile pictures
|
|
143
|
+
- **AvatarGroup** - Multiple avatars grouped
|
|
144
|
+
- **Progress** - Progress bars
|
|
145
|
+
- **ProgressCircle** - Circular progress indicator
|
|
146
|
+
- **Timeline** - Event timeline
|
|
147
|
+
- **Pagination** - Page navigation
|
|
148
|
+
- **Divider** - Visual separator
|
|
149
|
+
- **Typography** - Text styles and variants
|
|
150
|
+
- **Chart** - Data visualization (bar, line, area)
|
|
151
|
+
|
|
152
|
+
### Navigation (8)
|
|
153
|
+
- **Tabs** - Tab navigation
|
|
154
|
+
- **Breadcrumb** - Breadcrumb navigation
|
|
155
|
+
- **Navigation** - Navigation menu
|
|
156
|
+
- **NavigationMenu** - Complex navigation structures
|
|
157
|
+
- **Sidebar** - Collapsible sidebar
|
|
158
|
+
- **Menubar** - Menu bar component
|
|
159
|
+
- **Dock** - Floating dock navigation
|
|
160
|
+
- **TreeView** - Hierarchical tree navigation
|
|
161
|
+
|
|
162
|
+
### Overlay Components (8)
|
|
163
|
+
- **Dialog** - Modal dialog
|
|
164
|
+
- **Sheet** - Drawer/slide-out dialog
|
|
165
|
+
- **Popover** - Floating popover
|
|
166
|
+
- **Tooltip** - Tooltip with placements
|
|
167
|
+
- **DropdownMenu** - Dropdown menu
|
|
168
|
+
- **ContextMenu** - Right-click context menu
|
|
169
|
+
- **HoverCard** - Hover reveal card
|
|
170
|
+
- **Modal** - Modal dialog variant
|
|
171
|
+
|
|
172
|
+
### Feedback (6)
|
|
173
|
+
- **Toast** - Toast notifications (via Sonner)
|
|
174
|
+
- **Callout** - Alert callout boxes
|
|
175
|
+
- **Banner** - Top/bottom banners
|
|
176
|
+
- **AlertDialog** - Alert dialogs
|
|
177
|
+
- **Skeleton** - Loading skeleton
|
|
178
|
+
- **Spinner** - Loading spinner
|
|
179
|
+
|
|
180
|
+
### Special Components (12+)
|
|
181
|
+
- **Accordion** - Collapsible sections
|
|
182
|
+
- **Carousel** - Image carousel
|
|
183
|
+
- **Clipboard** - Copy to clipboard
|
|
184
|
+
- **Collapsible** - Collapsible content
|
|
185
|
+
- **Command** - Command palette
|
|
186
|
+
- **EmptyState** - Empty state UI
|
|
187
|
+
- **Label** - Form labels
|
|
188
|
+
- **Kbd** - Keyboard key display
|
|
189
|
+
- **Marquee** - Scrolling marquee
|
|
190
|
+
- **Separator** - Visual separator
|
|
191
|
+
- **Slider** - Range slider
|
|
192
|
+
- **ScrollArea** - Scrollable container
|
|
193
|
+
|
|
194
|
+
### Premium Effects (8+)
|
|
195
|
+
- **BorderBeam** - Animated border beam
|
|
196
|
+
- **Meteors** - Meteor rain effect
|
|
197
|
+
- **OrbitingCircles** - Orbiting circles animation
|
|
198
|
+
- **SpotlightCard** - Spotlight hover effect
|
|
199
|
+
- **BackgroundGradient** - Gradient backgrounds
|
|
200
|
+
- **CelestialPulse** - Pulsing celestial effect
|
|
201
|
+
- **GradientText** - Gradient text
|
|
202
|
+
- **HolographicDataDeck** - Holographic data display
|
|
203
|
+
|
|
204
|
+
### Templates & Layouts (5+)
|
|
205
|
+
- **PricingCard** - Pricing tier cards
|
|
206
|
+
- **FeatureCard** - Feature showcase cards
|
|
207
|
+
- **ProductShowcaseCarousel** - Product showcase
|
|
208
|
+
- **InteractiveOrbNavigation** - Interactive orb nav
|
|
209
|
+
- **SocialPulseWidget** - Social metrics widget
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 💡 Usage Examples
|
|
214
|
+
|
|
215
|
+
### Basic Form
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
import { InputField, Select, Button } from 'markora-ui';
|
|
219
|
+
import { useState } from 'react';
|
|
220
|
+
|
|
221
|
+
export default function ContactForm() {
|
|
222
|
+
const [email, setEmail] = useState('');
|
|
223
|
+
|
|
224
|
+
return (
|
|
225
|
+
<form className="space-y-4 max-w-md">
|
|
226
|
+
<InputField
|
|
227
|
+
label="Email Address"
|
|
228
|
+
type="email"
|
|
229
|
+
placeholder="you@example.com"
|
|
230
|
+
value={email}
|
|
231
|
+
onChange={(e) => setEmail(e.target.value)}
|
|
232
|
+
hint="We'll never share your email"
|
|
233
|
+
/>
|
|
234
|
+
<Select
|
|
235
|
+
label="Subject"
|
|
236
|
+
options={[
|
|
237
|
+
{ label: 'Support', value: 'support' },
|
|
238
|
+
{ label: 'Sales', value: 'sales' },
|
|
239
|
+
{ label: 'General', value: 'general' },
|
|
240
|
+
]}
|
|
241
|
+
/>
|
|
242
|
+
<Button fullWidth variant="primary">
|
|
243
|
+
Submit
|
|
244
|
+
</Button>
|
|
245
|
+
</form>
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### With Next.js 14+
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
// app/layout.tsx
|
|
254
|
+
import 'markora-ui/styles.css';
|
|
255
|
+
import { ThemeProvider } from 'markora-ui';
|
|
256
|
+
|
|
257
|
+
export default function RootLayout({ children }) {
|
|
258
|
+
return (
|
|
259
|
+
<html>
|
|
260
|
+
<body>
|
|
261
|
+
<ThemeProvider>{children}</ThemeProvider>
|
|
262
|
+
</body>
|
|
263
|
+
</html>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// app/page.tsx
|
|
268
|
+
'use client';
|
|
269
|
+
|
|
270
|
+
import { Button, Card, CardContent, CardHeader, CardTitle } from 'aether-ui';
|
|
271
|
+
|
|
272
|
+
export default function Page() {
|
|
273
|
+
return (
|
|
274
|
+
<Card>
|
|
275
|
+
<CardHeader>
|
|
276
|
+
<CardTitle>Launch faster</CardTitle>
|
|
277
|
+
</CardHeader>
|
|
278
|
+
<CardContent>
|
|
279
|
+
<Button variant="primary">Ship with Markora UI</Button>
|
|
280
|
+
</CardContent>
|
|
281
|
+
</Card>
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Dark Mode
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
import { ThemeProvider, ThemeToggle, Button } from 'markora-ui';
|
|
290
|
+
|
|
291
|
+
export default function App() {
|
|
292
|
+
return (
|
|
293
|
+
<ThemeProvider defaultTheme="light" storageKey="theme">
|
|
294
|
+
<div className="p-8">
|
|
295
|
+
<ThemeToggle />
|
|
296
|
+
<Button>Hello World</Button>
|
|
297
|
+
</div>
|
|
298
|
+
</ThemeProvider>
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Custom Styling
|
|
304
|
+
|
|
305
|
+
All components support Tailwind classes:
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
<Button
|
|
309
|
+
variant="primary"
|
|
310
|
+
className="shadow-lg hover:shadow-xl transition-shadow duration-300"
|
|
311
|
+
>
|
|
312
|
+
Enhanced Button
|
|
313
|
+
</Button>
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 🎨 Theming
|
|
319
|
+
|
|
320
|
+
### Available Theme Variables
|
|
321
|
+
|
|
322
|
+
```css
|
|
323
|
+
--background /* Page background */
|
|
324
|
+
--foreground /* Text foreground */
|
|
325
|
+
--card /* Card background */
|
|
326
|
+
--card-foreground /* Card text */
|
|
327
|
+
--primary /* Primary accent */
|
|
328
|
+
--primary-foreground
|
|
329
|
+
--secondary /* Secondary accent */
|
|
330
|
+
--secondary-foreground
|
|
331
|
+
--destructive /* Danger state */
|
|
332
|
+
--destructive-foreground
|
|
333
|
+
--muted /* Muted text */
|
|
334
|
+
--muted-foreground
|
|
335
|
+
--accent /* Accent color */
|
|
336
|
+
--accent-foreground
|
|
337
|
+
--border /* Border color */
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Light & Dark Mode
|
|
341
|
+
|
|
342
|
+
The library automatically supports system preferences. Override with:
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
<ThemeProvider attribute="class" defaultTheme="dark" storageKey="app-theme">
|
|
346
|
+
{children}
|
|
347
|
+
</ThemeProvider>
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## 📖 Interactive Docs
|
|
353
|
+
|
|
354
|
+
Run the development server to explore all components:
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
npm run dev
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
Navigate to `http://localhost:5173` to see:
|
|
361
|
+
- Live component previews
|
|
362
|
+
- Editable examples
|
|
363
|
+
- Copy-paste code snippets
|
|
364
|
+
- All variants for each component
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 🔧 Advanced Usage
|
|
369
|
+
|
|
370
|
+
### Extending Components
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
import { Button, type ButtonProps } from 'markora-ui';
|
|
374
|
+
|
|
375
|
+
interface CustomButtonProps extends ButtonProps {
|
|
376
|
+
analytics?: string;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export function CustomButton({ analytics, ...props }: CustomButtonProps) {
|
|
380
|
+
return (
|
|
381
|
+
<Button
|
|
382
|
+
{...props}
|
|
383
|
+
onClick={(e) => {
|
|
384
|
+
// Track analytics
|
|
385
|
+
console.log('Clicked:', analytics);
|
|
386
|
+
props.onClick?.(e);
|
|
387
|
+
}}
|
|
388
|
+
/>
|
|
389
|
+
);
|
|
390
|
+
}
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### With CSS Modules
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
import styles from './page.module.css';
|
|
397
|
+
import { Button } from 'markora-ui';
|
|
398
|
+
|
|
399
|
+
export default function Page() {
|
|
400
|
+
return (
|
|
401
|
+
<Button variant="primary" className={styles.button}>
|
|
402
|
+
Styled Button
|
|
403
|
+
</Button>
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## 📦 Bundle Size
|
|
411
|
+
|
|
412
|
+
Minified and tree-shaken:
|
|
413
|
+
|
|
414
|
+
| Format | Size | Gzipped |
|
|
415
|
+
|--------|------|---------|
|
|
416
|
+
| ESM | ~45KB | ~12KB |
|
|
417
|
+
| CJS | ~48KB | ~13KB |
|
|
418
|
+
| CSS | ~8KB | ~2KB |
|
|
419
|
+
|
|
420
|
+
<details>
|
|
421
|
+
<summary><strong>Size breakdown by category</strong></summary>
|
|
422
|
+
|
|
423
|
+
- Form Components: ~8KB
|
|
424
|
+
- Buttons: ~2KB
|
|
425
|
+
- Data Display: ~12KB
|
|
426
|
+
- Navigation: ~6KB
|
|
427
|
+
- Overlays: ~8KB
|
|
428
|
+
- Effects & Templates: ~9KB
|
|
429
|
+
|
|
430
|
+
</details>
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
## ✅ Browser Support
|
|
435
|
+
|
|
436
|
+
| Browser | Minimum Version |
|
|
437
|
+
|---------|-----------------|
|
|
438
|
+
| Chrome | Latest |
|
|
439
|
+
| Firefox | Latest |
|
|
440
|
+
| Safari | 13+ |
|
|
441
|
+
| Edge | Latest |
|
|
442
|
+
| iOS Safari | 13+ |
|
|
443
|
+
| Android Chrome | 81+ |
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
## 🤝 Contributing
|
|
448
|
+
|
|
449
|
+
We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
450
|
+
|
|
451
|
+
### Development
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
# Install dependencies
|
|
455
|
+
npm install
|
|
456
|
+
|
|
457
|
+
# Start dev server
|
|
458
|
+
npm run dev
|
|
459
|
+
|
|
460
|
+
# Build for production
|
|
461
|
+
npm run build
|
|
462
|
+
|
|
463
|
+
# Run tests
|
|
464
|
+
npm run test
|
|
465
|
+
|
|
466
|
+
# Lint code
|
|
467
|
+
npm run lint
|
|
468
|
+
|
|
469
|
+
# Format code
|
|
470
|
+
npm run format
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## 📄 License
|
|
476
|
+
|
|
477
|
+
MIT © 2024 Markora UI
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## 🙋 Support & Community
|
|
482
|
+
|
|
483
|
+
- 📖 [Full Documentation](https://markora-ui.dev)
|
|
484
|
+
- 🐛 [Report Issues](https://github.com/yourusername/markora-ui/issues)
|
|
485
|
+
- 💬 [Discussions](https://github.com/yourusername/markora-ui/discussions)
|
|
486
|
+
- 📧 Email: support@markora-ui.dev
|
|
487
|
+
- 🐦 Twitter: [@markora_ui](https://twitter.com/markora_ui)
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
## 🎉 Changelog
|
|
492
|
+
|
|
493
|
+
See [CHANGELOG.md](CHANGELOG.md) for version history and breaking changes.
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
**Made with ❤️ by the Markora UI Team**
|